diff --git a/.github/guides/VISUALS.md b/.github/guides/VISUALS.md index 4d8f7d3b585c8..69194004d4c10 100644 --- a/.github/guides/VISUALS.md +++ b/.github/guides/VISUALS.md @@ -406,6 +406,9 @@ There are a few snowflake layers that can be used to accomplish niche goals, alo Floating layers will float "up" the chain of things they're being drawn onto, until they find a real layer. They'll then offset off of that. +Adding `TOPDOWN_LAYER` (actual value `10000`) to another layer forces the appearance into topdown rendering, locally disabling [side map](#side_map-check-the-main-page-too). +We can think of this as applying to planes, since we don't want it interlaying with other non topdown objects. + This allows us to keep relative layer differences while not needing to make all sources static. Often very useful. ## Planes diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 6a40438cf7d9e..e49f699d2d20d 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -86,13 +86,17 @@ jobs: run: ':' - name: Run Grep Checks if: steps.linter-setup.conclusion == 'success' && !cancelled() - run: bash tools/ci/check_grep.sh + run: | + bash tools/ci/check_grep.sh + bash massmeta/tools/massmeta_check_grep.sh # MASSMETA EDIT ADDITION - checking modular_meta code - name: Ticked File Enforcement if: steps.linter-setup.conclusion == 'success' && !cancelled() run: | - bash tools/massmeta_check_grep.sh # MASSMETA EDIT ADDITION - checking modular_meta code tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/tgstation_dme.json tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/unit_tests.json + tools/bootstrap/python massmeta/tools/ticked_file_enforcement/ticked_file_enforcement.py < massmeta/tools/ticked_file_enforcement/schemas/modular_meta_defines.json # MASSMETA EDIT ADDITION - modular defines tick enforcement + tools/bootstrap/python massmeta/tools/ticked_file_enforcement/ticked_file_enforcement.py < massmeta/tools/ticked_file_enforcement/schemas/modular_meta_master.json # MASSMETA EDIT ADDITION - modular master tick enforcement + tools/bootstrap/python massmeta/tools/ticked_file_enforcement/ticked_file_enforcement.py < massmeta/tools/ticked_file_enforcement/schemas/modular_meta.json # MASSMETA EDIT ADDITION - modular tick enforcement - name: Check Define Sanity if: steps.linter-setup.conclusion == 'success' && !cancelled() run: tools/bootstrap/python -m define_sanity.check diff --git a/.gitignore b/.gitignore index 96313b3e930e6..c70ebf608b965 100644 --- a/.gitignore +++ b/.gitignore @@ -8,10 +8,9 @@ /tmp/**/* /cache/**/* -#Ignore config folders. +#Ignore byond config folder. /cfg/**/* - #Ignore IDE files we don't need in the repo. /.vs/**/* /tgstation/FileContentIndex/**/* diff --git a/README.md b/README.md index 2ce17597c3829..fa3b39d82f4b2 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ | Website | Link | |---------------------------|---------------------------------------------------------------------------| | MassMeta Code | [https://github.com/Huz2e/massmeta](https://github.com/Huz2e/massmeta) | -| Guide to Modularization | [./massmeta/readme.md](./massmeta/readme.md) | +| Guide to Modularization | [./massmeta/modularization_guide.md](./massmeta/modularization_guide.md) | | MassMeta Discord | [https://discord.gg/massmeta](https://discord.gg/KBsjSv7Kh9) | | MassMeta Wiki | [https://massmeta.ru](https://massmeta.ru/w/index.php/Заглавная_страница) | | /TG/ Website | [https://www.tgstation13.org](https://www.tgstation13.org) | @@ -43,7 +43,7 @@ Space Station 13 is a paranoia-laden round-based roleplaying game set against th ## Contributors [Guides for Contributors](.github/CONTRIBUTING.md) -[/tg/station HACKMD account(BLOCKED in RU)](https://hackmd.io/@tgstation) - Design documentation here +[/tg/station HACKMD account (BLOCKED in RU)](https://hackmd.io/@tgstation) - Design documentation here ## LICENSE diff --git a/_maps/RandomRuins/AnywhereRuins/golem_ship.dmm b/_maps/RandomRuins/AnywhereRuins/golem_ship.dmm index cddd5a0820659..d910f5d76734c 100644 --- a/_maps/RandomRuins/AnywhereRuins/golem_ship.dmm +++ b/_maps/RandomRuins/AnywhereRuins/golem_ship.dmm @@ -686,7 +686,6 @@ "Ro" = ( /obj/structure/table/wood, /obj/item/bedsheet/rd/royal_cape{ - layer = 3; pixel_x = 5; pixel_y = 9 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm index 8e4b42e823900..5b3efc37d685e 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm @@ -188,7 +188,7 @@ /turf/open/floor/iron, /area/ruin/bughabitat) "sr" = ( -/obj/machinery/plumbing/growing_vat, +/obj/machinery/vatgrower, /turf/open/floor/iron, /area/ruin/bughabitat) "st" = ( @@ -322,14 +322,10 @@ /area/ruin/bughabitat) "Ku" = ( /obj/structure/table, -/obj/item/construction/plumbing/research, /turf/open/floor/plastic, /area/ruin/bughabitat) "Ly" = ( /obj/structure/table, -/obj/item/stack/ducts/fifty{ - amount = 23 - }, /mob/living/basic/butterfly, /turf/open/floor/plastic, /area/ruin/bughabitat) diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm index fd292ec768512..047d4b4c042b1 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm @@ -175,11 +175,11 @@ /area/ruin/smoking_room/room) "E" = ( /obj/item/trash/shrimp_chips, -/obj/item/clothing/mask/cigarette/rollie/trippy{ +/obj/item/cigarette/rollie/trippy{ pixel_x = 3; pixel_y = -1 }, -/obj/item/clothing/mask/cigarette/rollie/trippy{ +/obj/item/cigarette/rollie/trippy{ pixel_x = 3; pixel_y = 5 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_comms_agent.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_comms_agent.dmm index 5e03988f8d3e7..ff3417fefce6d 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_comms_agent.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_comms_agent.dmm @@ -373,9 +373,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/plating/snowed{ - initial_gas_mix = "o2=22;n2=82;TEMP=293.15" - }, +/turf/open/floor/plating/snowed/standard_air, /area/ruin/comms_agent) "uk" = ( /obj/structure/cable, @@ -761,9 +759,7 @@ /obj/structure/cable, /obj/item/cultivator/rake, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating/snowed{ - initial_gas_mix = "o2=22;n2=82;TEMP=293.15" - }, +/turf/open/floor/plating/snowed/standard_air, /area/ruin/comms_agent) "Ll" = ( /obj/effect/mapping_helpers/broken_floor, @@ -867,9 +863,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/plating/snowed{ - initial_gas_mix = "o2=22;n2=82;TEMP=293.15" - }, +/turf/open/floor/plating/snowed/standard_air, /area/ruin/comms_agent) "NJ" = ( /obj/item/storage/medkit/regular, @@ -892,9 +886,7 @@ /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/snowed{ - initial_gas_mix = "o2=22;n2=82;TEMP=293.15" - }, +/turf/open/floor/plating/snowed/standard_air, /area/ruin/comms_agent) "OB" = ( /turf/open/lava/plasma/ice_moon, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_lavaland.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_lavaland.dmm index 22af4367dd9e6..d01b86d5e4649 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_lavaland.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_lavaland.dmm @@ -1,1747 +1,3595 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"b" = ( -/turf/closed/mineral/random/snow, -/area/icemoon/underground/unexplored) -"e" = ( -/obj/structure/trap/cult, +"ab" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 10 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"an" = ( +/turf/open/misc/asteroid{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"cn" = ( +/obj/item/paper/crumpled/bloody/ruins/lavaland_incursion, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"dX" = ( +/obj/structure/stone_tile/slab, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface) +"eP" = ( +/obj/structure/stone_tile/slab, +/turf/open/indestructible/boss{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/lavaland/surface) +"eV" = ( +/turf/closed/mineral/snowmountain/cavern/icemoon, +/area/icemoon/underground/explored) +"fF" = ( +/obj/effect/mob_spawn/corpse/human/skeleton/cultist, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"gd" = ( +/obj/structure/stone_tile/slab, +/obj/structure/stone_tile/surrounding_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"gi" = ( +/obj/structure/necropolis_gate, +/obj/structure/stone_tile/slab, /turf/open/floor/cult, -/area/icemoon/underground) -"h" = ( -/obj/item/paper{ - default_raw_text = "We have managed to seal the beast inside, the last of its kind they say... unfortunately in doing so, it seems we have spawned creatures beyond our power to contain..." +/area/lavaland/surface) +"gE" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"gF" = ( +/obj/effect/mob_spawn/corpse/human/skeleton/cultist, +/turf/open/floor/cult, +/area/lavaland/surface) +"jY" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 }, -/obj/item/pen, /turf/open/misc/asteroid{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"mL" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"na" = ( +/obj/structure/girder/cult, +/turf/open/floor/cult, +/area/lavaland/surface) +"nY" = ( +/obj/item/grown/bananapeel, +/obj/structure/stone_tile/slab, +/turf/open/floor/cult, +/area/lavaland/surface) +"oK" = ( +/obj/structure/stone_tile/slab, +/turf/open/floor/engine/cult{ initial_gas_mix = "LAVALAND_ATMOS" }, -/area/icemoon/underground) -"q" = ( -/turf/open/genturf, -/area/lavaland/surface/outdoors/unexplored/danger/no_ruins) -"w" = ( +/area/lavaland/surface/outdoors) +"oV" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"pw" = ( +/obj/structure/stone_tile/slab, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"qv" = ( +/obj/structure/stone_tile/surrounding/burnt, +/obj/structure/stone_tile/center/burnt, +/turf/open/lava/plasma/ice_moon, +/area/icemoon/underground/explored) +"qN" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"qV" = ( +/turf/open/floor/cult, +/area/lavaland/surface) +"rn" = ( +/obj/item/melee/cultblade/dagger, +/obj/item/paper/crumpled/bloody/ruins/lavaland_incursion/last, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"ry" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"tI" = ( +/turf/template_noop, +/area/template_noop) +"uP" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/burnt, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"uX" = ( +/mob/living/basic/mining/legion/cult_skeleton, +/turf/open/floor/cult, +/area/lavaland/surface) +"vu" = ( +/turf/open/misc/asteroid/lavaland_atmos, +/area/lavaland/surface/outdoors) +"vE" = ( /obj/machinery/door/airlock/cult/friendly{ use_power = 0 }, /turf/open/floor/cult, -/area/icemoon/underground) -"y" = ( -/mob/living/simple_animal/hostile/megafauna/dragon{ - desc = "Hunted to extinction, this icey moon is the final resting place for these creatures."; - name = "\proper the last ash drake" +/area/lavaland/surface) +"wf" = ( +/obj/structure/stone_tile/slab, +/obj/structure/stone_tile/block/burnt{ + dir = 1 }, -/turf/open/floor/mineral/gold, -/area/icemoon/underground) -"A" = ( -/obj/effect/mob_spawn/corpse/human/skeleton, -/turf/open/misc/asteroid{ +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"wP" = ( +/obj/structure/stone_tile/slab/burnt, +/turf/open/floor/engine/cult{ initial_gas_mix = "LAVALAND_ATMOS" }, -/area/icemoon/underground) -"E" = ( -/obj/item/grown/bananapeel, +/area/lavaland/surface/outdoors) +"xo" = ( +/obj/structure/stone_tile/slab, +/obj/structure/stone_tile/surrounding/cracked, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/center, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"xw" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/slab/cracked{ + dir = 10 + }, +/turf/open/misc/asteroid{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"yP" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"zz" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"zC" = ( +/obj/structure/trap/cult, /turf/open/floor/cult, -/area/icemoon/underground) -"J" = ( +/area/lavaland/surface) +"Cb" = ( /turf/closed/wall/mineral/cult, -/area/icemoon/underground) -"P" = ( -/turf/open/floor/mineral/silver, -/area/icemoon/underground) -"R" = ( -/turf/open/floor/mineral/gold, -/area/icemoon/underground) -"T" = ( -/turf/open/floor/cult, -/area/icemoon/underground) -"V" = ( -/obj/item/storage/toolbox/mechanical/old/clean, -/turf/open/misc/asteroid{ +/area/lavaland/surface) +"Ce" = ( +/turf/closed/mineral/volcanic/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/lavaland/surface) +"Cp" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface) +"Dq" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/lava/plasma/ice_moon, +/area/icemoon/underground/explored) +"GN" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/floor/engine/cult{ initial_gas_mix = "LAVALAND_ATMOS" }, -/area/icemoon/underground) -"Z" = ( -/turf/open/misc/asteroid{ +/area/lavaland/surface/outdoors) +"If" = ( +/turf/closed/indestructible/riveted/boss, +/area/lavaland/surface) +"Ja" = ( +/turf/open/lava/plasma/ice_moon, +/area/icemoon/underground/explored) +"JE" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/icemoon/underground/explored) +"Ky" = ( +/turf/closed/mineral/volcanic/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"Nn" = ( +/turf/closed/mineral/random/snow, +/area/icemoon/underground/explored) +"Nr" = ( +/turf/closed/wall/mineral/cult, +/area/lavaland/surface/outdoors) +"NB" = ( +/obj/structure/stone_tile/slab, +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"PT" = ( +/turf/open/floor/mineral/gold{ initial_gas_mix = "LAVALAND_ATMOS" }, -/area/icemoon/underground) +/area/lavaland/surface) +"PV" = ( +/obj/effect/mob_spawn/corpse/human/skeleton/cultist, +/turf/open/indestructible/necropolis/air, +/area/lavaland/surface) +"Qp" = ( +/turf/closed/indestructible/necropolis, +/area/lavaland/surface) +"QC" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/lava/plasma/ice_moon, +/area/icemoon/underground/explored) +"QL" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/structure/stone_tile/surrounding_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"Sw" = ( +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"SX" = ( +/obj/item/melee/cultblade/dagger, +/obj/item/clothing/glasses/hud/health/night/cultblind, +/obj/effect/mob_spawn/corpse/human/skeleton/cultist, +/turf/open/misc/asteroid/lavaland_atmos, +/area/lavaland/surface/outdoors) +"Tr" = ( +/obj/structure/trap/cult, +/obj/effect/mob_spawn/corpse/human/skeleton/cultist, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"Uh" = ( +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding/cracked{ + dir = 5 + }, +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"Uj" = ( +/obj/structure/stone_tile/slab, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface) +"UE" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"UF" = ( +/turf/open/indestructible/necropolis/air, +/area/lavaland/surface) +"UO" = ( +/obj/structure/stone_tile/burnt{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 9 + }, +/turf/open/misc/asteroid{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"UX" = ( +/mob/living/basic/mining/legion/cult_skeleton, +/turf/open/indestructible/necropolis/air, +/area/lavaland/surface) +"UY" = ( +/turf/open/genturf, +/area/lavaland/surface/outdoors/unexplored/danger/no_ruins) +"Vh" = ( +/obj/structure/stone_tile/slab, +/turf/open/floor/cult, +/area/lavaland/surface) +"Vw" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors) +"VX" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/lava/plasma/ice_moon, +/area/icemoon/underground/explored) +"Wm" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"WK" = ( +/obj/item/clothing/head/helmet/skull, +/turf/open/misc/asteroid/lavaland_atmos, +/area/lavaland/surface/outdoors) +"WN" = ( +/obj/structure/stone_tile/slab, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"Xm" = ( +/obj/structure/stone_tile/slab/burnt, +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"XQ" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"Zs" = ( +/turf/open/misc/asteroid{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"ZR" = ( +/obj/structure/stone_tile/slab, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile, +/mob/living/simple_animal/hostile/megafauna/dragon{ + name = "\proper the last ash drake"; + desc = "The sole survivor of its species, hunted to the verge of extinction. This frozen hell is the final resting place for the last of the dragons." + }, +/turf/open/indestructible/boss, +/area/lavaland/surface) (1,1,1) = {" -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b +tI +tI +tI +tI +tI +tI +tI +tI +tI +eV +Wm +Wm +Ja +Ja +Ja +Ja +Ja +Wm +eV +eV +eV +Ja +Ja +Ja +Ja +Ja +Wm +Wm +Nn +Ja +Ja +Ja +Ja +Nn +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI "} (2,1,1) = {" -b -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -w -w -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -b +tI +tI +tI +tI +tI +tI +tI +tI +eV +eV +eV +Ja +Ja +Ja +Ja +Ja +Ja +Ja +Wm +Wm +Wm +Ja +Ja +Ja +Ja +Ja +Ja +Ja +Ja +Zs +XQ +Ky +Ja +Ja +Wm +Ja +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI "} (3,1,1) = {" -b -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -T -e -T -T -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -b +tI +tI +tI +tI +tI +tI +tI +eV +eV +Wm +Wm +Zs +Ja +Ja +Ja +Ja +Ja +Ja +Zs +Zs +Zs +Zs +Zs +Zs +Ja +Ja +Ja +Ja +Zs +Ky +Ky +Ky +XQ +Ja +Ja +Wm +Nn +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI "} (4,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -T -T -E -T -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +tI +tI +eV +eV +Wm +XQ +XQ +XQ +Zs +Zs +Zs +Ja +Zs +Zs +XQ +XQ +XQ +XQ +Zs +Zs +Zs +XQ +XQ +Ja +Ja +Ja +Ky +Zs +Ja +Zs +Zs +Ja +Ja +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI "} (5,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -T -e -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +tI +Nn +Wm +Wm +XQ +Ky +Ky +XQ +Zs +XQ +Ja +Zs +Zs +Zs +Zs +Zs +Zs +XQ +XQ +XQ +XQ +XQ +XQ +XQ +Zs +Ja +Ja +Ja +Ja +Zs +Zs +Zs +Ja +Nn +Nn +Nn +Nn +Nn +tI +tI +tI +tI +Zs +Zs +tI +tI +tI +tI +tI +tI +tI "} (6,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -w -w -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +Nn +XQ +XQ +Ky +Ky +Ky +Ky +Ky +XQ +XQ +XQ +Zs +Zs +Zs +Ky +Ky +Zs +Zs +XQ +Zs +Ky +Zs +Zs +XQ +XQ +XQ +XQ +Zs +Zs +XQ +XQ +XQ +Zs +Ja +Wm +Wm +Nn +Nn +Nn +Nn +eV +Wm +XQ +Ky +Ky +tI +tI +tI +tI +tI +tI "} (7,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +Nn +XQ +Zs +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Zs +Zs +Ky +Ky +Ky +Ky +Ky +Zs +Ky +Ky +XQ +XQ +XQ +XQ +XQ +XQ +XQ +Zs +XQ +XQ +XQ +XQ +XQ +Zs +Zs +Wm +Nn +Nn +eV +eV +XQ +Ky +Ky +XQ +Zs +tI +tI +tI +tI +tI "} (8,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +XQ +XQ +Ky +Ky +Zs +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Zs +XQ +XQ +XQ +Zs +XQ +XQ +Ky +Ky +Ky +Zs +XQ +XQ +Ky +Zs +Nn +eV +eV +eV +Ky +Ky +Ky +Ky +XQ +tI +tI +tI +tI +tI "} (9,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +Wm +XQ +XQ +Wm +Wm +Cb +If +Ce +Ce +Ce +Ce +If +If +If +If +Cb +Cb +Cb +Cb +If +If +If +Cb +vE +vE +Cb +Cb +Cb +Cb +Cb +Cb +Ce +Ce +If +If +Ce +Ce +If +Cb +Cb +Cb +Cb +Ce +Ce +Cb +Ky +XQ +tI +tI +tI +tI +tI "} (10,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +Nn +Nn +Nn +Nn +Wm +Cb +Cb +Cb +Cb +If +If +If +If +If +If +If +If +Cb +Cb +Cb +Cb +If +qV +zC +qV +qV +If +Cb +Cb +If +If +Cp +If +Cb +Cp +Cp +Cp +Cp +If +If +Cb +Cp +Cp +Cb +If +Ky +Wm +Nn +tI +tI +tI +tI "} (11,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +Nn +eV +eV +eV +Cb +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +an +Cb +qV +qV +qV +gF +Cb +zz +zz +an +zz +UY +UY +Vw +Vw +Vw +Vw +UY +UY +UY +UY +UY +UY +Cb +If +eV +Wm +Nn +tI +tI +tI +tI "} (12,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +Nn +eV +eV +eV +eV +Cb +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +an +Cb +Cb +qV +zC +If +If +an +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +If +If +eV +Nn +Nn +tI +tI +tI +tI "} (13,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +Nn +eV +eV +eV +If +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +an +zz +Cb +vE +vE +If +zz +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +If +If +eV +Nn +Nn +tI +tI +tI +tI "} (14,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +tI +Nn +eV +eV +If +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +an +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +If +If +eV +eV +Nn +Nn +tI +tI +tI "} (15,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +tI +Nn +Nn +Ky +If +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +If +eV +eV +Nn +Nn +tI +tI +tI "} (16,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +tI +Nn +Ky +Ky +Ce +Cp +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Cb +eV +eV +eV +Nn +tI +tI +tI "} (17,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -V -Z -Z -Z -Z -Z -Z -Z -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +Nn +Ky +Ky +Ky +Ce +Cp +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Cb +eV +eV +eV +Nn +tI +tI +tI "} (18,1,1) = {" -b -J -J -J -J -q -q -q -q -q -q -q -q -q -q -q -A -J -J -J -J -J -J -Z -q -q -q -q -q -q -q -q -q -q -q -J -J -J -J -b +tI +tI +tI +Nn +Ky +Ky +Ky +Ky +Ce +Cp +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Cb +eV +eV +Nn +Nn +tI +tI +tI "} (19,1,1) = {" -b -J -T -T -J -J -q -q -q -q -q -q -q -q -q -q -h -J -R -P -P -R -J -Z -q -q -q -q -q -q -q -q -q -q -J -J -T -T -J -b +tI +tI +tI +Nn +Ky +Ky +Nn +Ky +If +Cp +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +If +Ky +eV +Nn +Nn +Nn +tI +tI "} (20,1,1) = {" -b -w -e -T -T -w -q -q -q -q -q -q -q -q -q -q -Z -J -P -R -R -P -J -Z -q -q -q -q -q -q -q -q -q -q -w -T -T -e -w -b +tI +tI +tI +Ky +Ky +Nn +Nn +eV +Cb +If +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +If +Ce +Ky +eV +eV +Nn +Nn +tI +tI "} (21,1,1) = {" -b -w -T -E -e -w -q -q -q -q -q -q -q -q -q -q -Z -J -P -R -y -P -J -Z -q -q -q -q -q -q -q -q -q -q -w -e -E -T -w -b +tI +tI +tI +Nn +Ky +Nn +eV +eV +Cb +If +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +If +Ce +Ky +Ky +eV +Nn +Nn +tI +tI "} (22,1,1) = {" -b -J -T -T -J -J -q -q -q -q -q -q -q -q -q -q -Z -J -R -P -P -R -J -Z -q -q -q -q -q -q -q -q -q -q -J -J -T -T -J -b +tI +tI +tI +tI +Nn +Nn +eV +eV +Cb +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cp +Ce +Ky +Ky +Ky +Nn +Nn +Nn +tI "} (23,1,1) = {" -b -J -J -J -J -q -q -q -q -q -q -q -q -q -q -q -Z -J -J -J -J -J -J -Z -q -q -q -q -q -q -q -q -q -q -q -J -J -J -J -b +tI +tI +tI +tI +Nn +eV +Nn +eV +If +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Nr +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cp +Ce +Ky +Ky +Ky +Nn +eV +Nn +Nn "} (24,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -Z -Z -Z -Z -Z -Z -Z -Z -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +Nn +eV +Wm +eV +If +If +Vw +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +vu +zz +GN +Sw +zz +vu +zz +Nr +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cp +Ce +Ky +Ky +Ky +Ky +eV +eV +eV "} (25,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +Nn +Nn +Wm +mL +If +Cp +Vw +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +vu +Sw +zz +oK +wP +vu +Uh +Sw +vu +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +If +If +Ky +XQ +Ky +Ky +Ky +Ky +eV "} (26,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +tI +Nn +Wm +Wm +WN +If +If +Vw +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +zz +SX +cn +Cb +Cb +Cb +Cb +Sw +Sw +vu +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +If +If +If +XQ +XQ +XQ +Zs +Zs +Ky +Wm "} (27,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +Nn +Wm +Wm +XQ +wf +If +Cp +Vw +Vw +zz +UY +UY +UY +UY +UY +UY +UY +UY +Nr +vu +zz +Cb +If +PT +PT +If +Cb +zz +zz +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Qp +Qp +Qp +If +If +If +pw +XQ +XQ +XQ +XQ +Wm +Wm "} (28,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +tI +Nn +Wm +Wm +XQ +Ky +If +Cp +Vw +Tr +zz +UY +UY +UY +UY +UY +UY +UY +UY +UY +Sw +oK +Cb +PT +dX +Uj +PT +Cb +Sw +ry +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +na +PV +Vh +If +eP +Xm +xw +jY +XQ +XQ +Zs +Ja "} (29,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +Nn +Wm +Ja +Wm +XQ +Ky +Ce +Cp +Vw +oK +Sw +UY +UY +UY +UY +UY +UY +UY +UY +UY +Sw +Sw +Cb +PT +Uj +ZR +PT +Cb +gE +Sw +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +vE +qV +qV +nY +gi +eP +qv +UE +VX +UO +XQ +Zs +QC "} (30,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +tI +eV +Ja +Ja +Wm +Ky +Ky +Ce +Cp +Vw +xo +an +UY +UY +UY +UY +UY +UY +UY +UY +Nr +zz +zz +Cb +If +PT +PT +If +Cb +zz +vu +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +vE +zC +UF +Vh +If +eP +NB +QL +Dq +QC +Ja +Ja +Zs "} (31,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +eV +eV +Ja +Ja +Zs +Ky +Ky +Ce +Cp +Vw +Vw +oK +UY +UY +UY +UY +UY +UY +UY +UY +UY +zz +vu +Sw +Cb +Cb +Cb +Cb +ab +fF +vu +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Cb +Qp +Qp +If +If +gd +XQ +XQ +XQ +Ja +Zs +Wm "} (32,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +eV +Wm +Ja +Ja +Ky +Ky +Ky +Ce +Cp +Vw +Vw +zz +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +zz +Sw +vu +Sw +uP +vu +fF +rn +zz +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Qp +If +If +XQ +Zs +Zs +XQ +Zs +Ja +Wm "} (33,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +eV +Wm +Ja +Ja +Ky +Ky +Ky +Ce +Cp +Vw +UY +Vw +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +zz +zz +Sw +qN +zz +WK +vu +Nr +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +If +If +If +XQ +XQ +Zs +Zs +XQ +Ja +Wm "} (34,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +eV +Wm +Ja +Ky +Ky +Ky +Ky +Ce +Cp +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Nr +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cp +If +Zs +XQ +Zs +XQ +XQ +XQ +Wm "} (35,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -w -w -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +eV +Wm +Ja +Ky +Ky +Ky +Ky +If +Cp +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cp +If +Ky +Ky +XQ +XQ +Ky +Ky +Wm "} (36,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -T -e -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +Nn +Ja +Ja +Ky +Ky +Ky +yP +If +If +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cp +Ce +Ky +Ky +Ky +Ky +Ky +Ky +eV "} (37,1,1) = {" -b -J -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -T -T -E -T -J -q -q -q -q -q -q -q -q -q -q -q -q -q -q -J -J -b +tI +Wm +Ja +Ja +Ky +Ky +Ky +oV +If +If +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cp +Ce +Ky +Ky +Ky +Ky +Ky +eV +eV "} (38,1,1) = {" -b -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -T -e -T -T -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -b +tI +Wm +Ja +Ja +Ky +Ky +XQ +Zs +If +If +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cp +Ce +Ky +Ky +Ky +Ky +eV +eV +eV "} (39,1,1) = {" -b -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -w -w -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -b +tI +Wm +Ja +Ky +Ky +XQ +XQ +Zs +Cb +If +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +If +If +Ky +Ky +Nn +Nn +Nn +Nn +tI "} (40,1,1) = {" -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b +tI +Wm +Ja +Ky +Ky +XQ +Zs +Ky +Cb +If +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Cb +eV +eV +Nn +Nn +Nn +tI +tI +"} +(41,1,1) = {" +tI +Wm +Ja +Ky +Ky +XQ +Ky +Ky +Cb +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Cb +eV +eV +Wm +Nn +Nn +tI +tI +"} +(42,1,1) = {" +tI +Wm +Ja +Ja +Ky +XQ +Ky +Ky +Cb +If +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Cb +eV +XQ +XQ +Wm +Wm +Nn +tI +"} +(43,1,1) = {" +tI +Wm +Ja +Ja +Ky +XQ +Ky +Ky +If +Cp +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Cb +Ky +XQ +Zs +Zs +Ja +Wm +Nn +"} +(44,1,1) = {" +tI +Nn +Wm +Ja +Ja +Zs +Ky +Ky +Ce +Cp +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +vE +vE +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Cb +Ky +Ky +Ja +Ja +Zs +Wm +Nn +"} +(45,1,1) = {" +tI +Nn +eV +Ja +Ja +Zs +XQ +Ky +If +If +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Qp +Qp +qV +qV +Cb +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Ce +Ky +Ky +Zs +Zs +Ja +Wm +eV +"} +(46,1,1) = {" +tI +Nn +eV +Ja +Ja +Wm +Zs +XQ +If +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Qp +UX +UF +qV +uX +Cb +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +Cb +Ce +Ky +Ja +Ja +Ja +Ja +Ja +eV +"} +(47,1,1) = {" +tI +Nn +eV +Wm +Ja +Ja +Zs +eV +Cb +Cb +Cb +If +If +If +If +If +Cp +Cp +Cp +If +If +If +If +Qp +Qp +UF +qV +qV +qV +Cb +Cb +Cb +Cp +Cp +Cp +Cp +Cp +Cp +Cp +Cb +Cb +Cb +Cb +Cb +Cb +Cb +Cb +Ce +Ky +Ky +Zs +Ja +Ja +Ja +Wm +"} +(48,1,1) = {" +tI +eV +eV +eV +Ja +Wm +Nn +eV +Cb +Cb +Cb +Cb +If +If +Ce +Ce +Ce +Ce +Ce +Ce +If +If +If +If +Qp +Qp +vE +vE +Cb +Cb +Cb +Ce +Cp +Cp +Cp +Ce +Ce +Ce +Ce +Ce +Ce +Ce +Cb +Cb +Cb +Cb +Cb +Cb +Ky +Zs +Ja +Ja +Ja +Wm +Nn +"} +(49,1,1) = {" +tI +eV +eV +eV +eV +Nn +Nn +Nn +eV +eV +eV +Zs +Ky +Ky +Ky +Ky +Ky +Ky +Ky +XQ +Zs +Ky +Ky +Ky +Ky +XQ +XQ +XQ +XQ +XQ +XQ +Zs +JE +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +XQ +XQ +Zs +Zs +Zs +Ja +Ja +Ky +Nn +Nn +"} +(50,1,1) = {" +tI +Nn +Nn +Nn +Nn +Nn +Nn +Nn +Nn +eV +eV +Zs +Ky +Ky +Ky +Ky +Ky +Ky +Zs +XQ +XQ +Zs +Ky +Ky +XQ +Zs +Zs +Zs +XQ +Zs +XQ +XQ +XQ +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Zs +XQ +XQ +XQ +XQ +Zs +XQ +XQ +Ja +Ky +Ky +Nn +Nn +"} +(51,1,1) = {" +tI +tI +tI +Nn +Nn +Nn +Nn +Nn +Nn +Nn +Nn +eV +Zs +Ky +Ky +Ky +Ky +Zs +Ja +XQ +XQ +XQ +Zs +Zs +Nn +Nn +Nn +Nn +Nn +Zs +Zs +XQ +XQ +Zs +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Zs +Zs +XQ +XQ +XQ +Ky +Ky +Ky +Ky +Nn +Nn +"} +(52,1,1) = {" +tI +tI +tI +tI +tI +tI +Nn +Nn +Nn +Nn +Nn +Nn +XQ +XQ +Ky +Ky +Ky +Ja +Ja +Ja +Zs +Ky +XQ +Nn +Nn +Nn +eV +eV +Nn +Nn +Nn +XQ +XQ +eV +eV +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +eV +Nn +tI +"} +(53,1,1) = {" +tI +tI +tI +tI +tI +tI +tI +tI +Nn +Nn +Nn +Nn +Nn +XQ +Ky +Ky +Ky +Ky +Ja +Ja +Ky +Ky +XQ +eV +Nn +eV +eV +tI +tI +Nn +Nn +Nn +eV +eV +eV +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +eV +eV +eV +tI +tI +"} +(54,1,1) = {" +tI +tI +tI +tI +tI +tI +tI +tI +tI +Nn +Nn +Nn +Nn +Zs +XQ +Ky +Ky +Ky +Ky +Ky +Ky +Ky +eV +eV +eV +tI +tI +tI +tI +tI +tI +Nn +eV +eV +eV +eV +eV +eV +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +Ky +eV +eV +eV +eV +tI +tI +tI +"} +(55,1,1) = {" +tI +tI +tI +tI +tI +tI +tI +tI +tI +Nn +Nn +Nn +Nn +Nn +Nn +XQ +Ky +Ky +Ky +Ky +Ky +eV +eV +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +tI +eV +eV +eV +eV +eV +eV +tI +tI +tI +tI +eV +eV +eV +eV +eV +eV +tI +tI +tI +tI "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 6ceb38619a4c5..82f4d3677800a 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -549,9 +549,7 @@ /turf/open/misc/beach/sand, /area/ruin/powered/beach) "rU" = ( -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, +/obj/item/reagent_containers/condiment/enzyme, /obj/item/reagent_containers/cup/beaker{ pixel_x = 5 }, @@ -920,9 +918,7 @@ /area/ruin/powered/beach) "GA" = ( /obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/chair/stool/directional/south, /obj/item/storage/backpack/duffelbag, /obj/item/clothing/under/shorts/red, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm index 52e9e68ac409c..6156174aaba56 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm @@ -496,7 +496,6 @@ /obj/structure/flora/rock/style_random, /obj/structure/cable, /obj/item/pickaxe{ - layer = 2.5; pixel_x = -8; pixel_y = 5 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 09405b243349c..13a82feee1d21 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -1445,23 +1445,6 @@ /obj/machinery/duct, /turf/open/floor/wood, /area/ruin/syndicate_lava_base/dormitories) -"lk" = ( -/obj/structure/table/wood, -/obj/machinery/light/small/directional/east, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 30 - }, -/obj/structure/window/reinforced/spawner/directional/north{ - pixel_y = 1 - }, -/obj/item/book/manual/chef_recipes{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/item/book/manual/wiki/barman_recipes, -/obj/item/reagent_containers/cup/glass/shaker, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/bar) "lm" = ( /obj/structure/closet/secure_closet/medical1{ req_access = list("syndicate") @@ -1745,6 +1728,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/syndicate_lava_base/engineering) +"nI" = ( +/obj/structure/table/wood, +/obj/machinery/light/small/directional/east, +/obj/structure/window/reinforced/spawner/directional/north{ + pixel_y = 1 + }, +/obj/item/book/manual/chef_recipes{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/book/manual/wiki/barman_recipes, +/obj/item/reagent_containers/cup/glass/shaker, +/obj/machinery/computer/security/telescreen/entertainment/directional/east, +/turf/open/floor/wood, +/area/ruin/syndicate_lava_base/bar) "nK" = ( /obj/machinery/door/airlock/public/glass{ name = "Bar" @@ -2000,16 +1998,6 @@ dir = 1 }, /area/ruin/syndicate_lava_base/medbay) -"qv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/cable, -/turf/open/floor/mineral/plastitanium, -/area/ruin/syndicate_lava_base/cargo) "qA" = ( /obj/structure/reagent_dispensers/beerkeg, /turf/open/floor/iron/dark, @@ -2077,15 +2065,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/ruin/syndicate_lava_base/cargo) -"rI" = ( -/obj/machinery/firealarm/directional/west, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) "rO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /obj/structure/cable, @@ -3176,6 +3155,15 @@ /obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/ruin/syndicate_lava_base/bar) +"GI" = ( +/obj/machinery/firealarm/directional/west, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/syndicate_lava_base/engineering) "GV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -3824,6 +3812,16 @@ }, /turf/open/floor/iron, /area/ruin/syndicate_lava_base/arrivals) +"QG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/syndicate_lava_base/cargo) "QN" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -5664,7 +5662,7 @@ jy ka ue kM -lk +nI lC To TN @@ -6316,7 +6314,7 @@ Bu kV lp Dr -rI +GI mF Cj Lp @@ -6496,7 +6494,7 @@ ab dy dy eE -qv +QG dy gd dy diff --git a/_maps/RandomRuins/SpaceRuins/bus.dmm b/_maps/RandomRuins/SpaceRuins/bus.dmm index 1cd3d0f7ec261..a8a4a968d976d 100644 --- a/_maps/RandomRuins/SpaceRuins/bus.dmm +++ b/_maps/RandomRuins/SpaceRuins/bus.dmm @@ -29,7 +29,6 @@ "ao" = ( /obj/machinery/telecomms/server{ pixel_z = 12; - layer = 2.91; name = "tgsv3"; desc = "It's, uh... pending an upgrade." }, @@ -240,8 +239,7 @@ /area/ruin/space) "ud" = ( /obj/structure/fluff/bus/passable{ - icon_state = "bottomdoor"; - layer = 3 + icon_state = "bottomdoor" }, /turf/open/misc/asteroid/airless, /area/ruin/space) @@ -308,7 +306,6 @@ }, /obj/machinery/telecomms/server{ pixel_z = 12; - layer = 2.91; name = "tgsv3"; desc = "It's, uh... pending an upgrade." }, diff --git a/_maps/RandomRuins/SpaceRuins/clericden.dmm b/_maps/RandomRuins/SpaceRuins/clericden.dmm index c6e6bebddb0be..f274f7a23f563 100644 --- a/_maps/RandomRuins/SpaceRuins/clericden.dmm +++ b/_maps/RandomRuins/SpaceRuins/clericden.dmm @@ -108,9 +108,7 @@ /turf/open/floor/plating/airless, /area/ruin/space) "A" = ( -/obj/structure/table/wood{ - layer = 3.3 - }, +/obj/structure/table/wood, /turf/open/floor/carpet/royalblack/airless, /area/ruin/space) "B" = ( diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index 6ee95f03755dd..f9235a874b054 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -829,12 +829,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden{ dir = 4 }, -/obj/machinery/computer/security/telescreen{ - dir = 1; - name = "Bunker Entrance monitor"; - network = list("bunker1"); - pixel_y = 2 - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/button/door/directional/west{ id = "bunkerexterior"; @@ -853,6 +847,7 @@ pixel_y = 8; req_access = list("away_general") }, +/obj/machinery/computer/security/telescreen/deep_storage/bunker/directional/north, /turf/open/floor/iron, /area/ruin/space/has_grav/deepstorage/airlock) "eL" = ( diff --git a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm index 0853eb15a91a7..7b12e87992c8a 100644 --- a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm +++ b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm @@ -282,6 +282,7 @@ /obj/item/paper, /obj/item/pen, /obj/machinery/light/directional/south, +/obj/machinery/computer/security/telescreen/forgotten_ship/sci/directional/south, /turf/open/floor/carpet/royalblack, /area/ruin/space/has_grav/syndicate_forgotten_ship) "bp" = ( @@ -466,16 +467,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/syndicate_forgotten_ship) -"bT" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen/interrogation{ - name = "Cameras monitor"; - network = list("fsci"); - req_access = list("syndicate"); - screen_loc = "" - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/space/has_grav/syndicate_forgotten_ship) "bV" = ( /obj/structure/table/reinforced, /turf/open/floor/mineral/plastitanium/red, @@ -2067,7 +2058,7 @@ bZ co bZ VF -bT +ah bg aD cF diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm index 65c448e94c426..a81508dbe1f40 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm @@ -477,7 +477,7 @@ /obj/structure/closet/cardboard, /obj/item/toy/plush/snakeplushie, /obj/item/clothing/glasses/eyepatch, -/obj/item/clothing/mask/cigarette/cigar/havana, +/obj/item/cigarette/cigar/havana, /turf/open/floor/plating/dumpsterair, /area/ruin/space/has_grav/garbagetruck/foodwaste) "wR" = ( diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm index 0f2f425fe6293..03a9b87ff4edf 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm @@ -142,7 +142,7 @@ /area/ruin/space/has_grav/garbagetruck/squat) "ih" = ( /obj/item/bedsheet/purple, -/obj/item/clothing/mask/cigarette/space_cigarette, +/obj/item/cigarette/space_cigarette, /obj/structure/bed/maint, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/fuel_pool, @@ -373,7 +373,7 @@ /turf/open/floor/iron/smooth, /area/ruin/space/has_grav/garbagetruck/squat) "tu" = ( -/obj/item/clothing/mask/cigarette/robust, +/obj/item/cigarette/robust, /obj/structure/closet/emcloset, /obj/item/clothing/suit/utility/fire/heavy, /obj/item/clothing/head/utility/hardhat/welding/atmos, @@ -758,7 +758,7 @@ pixel_x = -4; pixel_y = 10 }, -/obj/item/clothing/mask/cigarette/space_cigarette{ +/obj/item/cigarette/space_cigarette{ pixel_x = -5; pixel_y = 7 }, @@ -905,7 +905,7 @@ "Xv" = ( /obj/item/food/deadmouse, /obj/item/clothing/shoes/sneakers/red, -/obj/item/clothing/mask/cigarette/carp, +/obj/item/cigarette/carp, /obj/item/extinguisher/mini, /obj/effect/decal/cleanable/fuel_pool, /turf/open/floor/plating/dumpsterair, diff --git a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm index 542f64d7abd96..512936958ddf3 100644 --- a/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm +++ b/_maps/RandomRuins/SpaceRuins/infested_frigate.dmm @@ -180,6 +180,17 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) +"cI" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor5-old" + }, +/obj/item/ammo_casing/spent, +/obj/item/gun/ballistic/automatic/plastikov, +/obj/effect/mob_spawn/corpse/human/syndicatepilot, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) "cP" = ( /obj/machinery/door/poddoor{ id = "brutus exterior bolts" @@ -348,25 +359,6 @@ /obj/item/ammo_casing/spent, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/infested_frigate) -"er" = ( -/obj/structure/lattice, -/obj/structure/alien/resin/membrane{ - max_integrity = 1600; - desc = "Resin just thin enough to let light pass through, but it's congealing in the same way as the thicker stuff."; - name = "viscous resin membrane" - }, -/obj/item/ammo_casing/spent, -/obj/item/ammo_casing/spent, -/obj/item/ammo_casing/spent, -/obj/item/ammo_casing/spent, -/obj/structure/door_assembly/door_assembly_hatch{ - anchored = 1; - name = "crew quarters"; - desc = "People lived in this place."; - layer = 2.8 - }, -/turf/template_noop, -/area/ruin/space/has_grav/infested_frigate) "eE" = ( /mob/living/basic/alien{ faction = list("syndicate","xenomorph") @@ -374,22 +366,6 @@ /obj/structure/cable, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) -"eX" = ( -/obj/structure/table/glass, -/obj/item/pen{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/phone{ - layer = 3.1 - }, -/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard/rnd_notes{ - default_raw_text = "STERILIZATION ORDERS

Detailed findings:

A biological research lab within the HD-10180 system has suffered from a complete containment failure. The SYN-C Brutus is to deliver a nuclear payload via strike team. Everything inside and outside the facility is to be killed on sight, including any research staff. Nuclear authentication codes have been sent via red phone, as have other detailed orders.

The rest of the documents are maps and mundane information regarding the crew's destination."; - name = "STERILIZATION ORDERS"; - desc = "These are particularly boring for what they entail." - }, -/turf/open/floor/pod/dark, -/area/ruin/space/has_grav/infested_frigate) "eZ" = ( /obj/item/clothing/mask/facehugger/impregnated, /obj/structure/closet/crate/secure/freezer/pizza, @@ -588,6 +564,11 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) +"ir" = ( +/obj/effect/decal/cleanable/glass, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/infested_frigate) "iy" = ( /obj/effect/decal/cleanable/blood/gibs{ icon_state = "u_guilty_l" @@ -637,27 +618,6 @@ }, /turf/open/floor/mineral/plastitanium/airless, /area/ruin/space/has_grav/infested_frigate) -"jx" = ( -/obj/effect/decal/cleanable/glass{ - layer = 3.1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/space/has_grav/infested_frigate) -"jy" = ( -/obj/effect/turf_decal{ - icon_state = "warningline_white" - }, -/obj/structure/showcase/machinery/tv{ - icon_state = "computer_broken"; - desc = "It would have been locked anyway."; - name = "syndicate navigation console" - }, -/obj/effect/decal/cleanable/glass{ - layer = 3.1 - }, -/turf/open/floor/pod/dark, -/area/ruin/space/has_grav/infested_frigate) "kc" = ( /obj/effect/turf_decal{ dir = 8 @@ -745,6 +705,18 @@ /obj/machinery/light/red/dim/directional/north, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) +"ly" = ( +/obj/effect/turf_decal{ + icon_state = "warningline_white" + }, +/obj/structure/showcase/machinery/tv{ + icon_state = "computer_broken"; + desc = "It would have been locked anyway."; + name = "syndicate navigation console" + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) "lU" = ( /obj/effect/decal/cleanable/blood/gibs{ icon_state = "u_madman_l" @@ -815,6 +787,20 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/infested_frigate) +"nb" = ( +/obj/structure/table/glass, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/phone, +/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard/rnd_notes{ + default_raw_text = "STERILIZATION ORDERS

Detailed findings:

A biological research lab within the HD-10180 system has suffered from a complete containment failure. The SYN-C Brutus is to deliver a nuclear payload via strike team. Everything inside and outside the facility is to be killed on sight, including any research staff. Nuclear authentication codes have been sent via red phone, as have other detailed orders.

The rest of the documents are maps and mundane information regarding the crew's destination."; + name = "STERILIZATION ORDERS"; + desc = "These are particularly boring for what they entail." + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) "nk" = ( /obj/item/storage/medkit/o2, /obj/item/storage/medkit/toxin, @@ -856,19 +842,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) -"nU" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood{ - icon_state = "floor5-old" - }, -/obj/item/ammo_casing/spent{ - layer = 3.1 - }, -/obj/item/gun/ballistic/automatic/plastikov, -/obj/effect/mob_spawn/corpse/human/syndicatepilot, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/space/has_grav/infested_frigate) "oj" = ( /obj/structure/fans/tiny, /obj/machinery/door/poddoor{ @@ -974,18 +947,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) -"qu" = ( -/obj/effect/decal/cleanable/blood{ - icon_state = "floor7-old" - }, -/obj/effect/decal/cleanable/glass, -/obj/machinery/button/door/directional/north{ - name = "prisoner isolation shutter"; - id = "captivity"; - layer = 3.4 - }, -/turf/open/floor/pod/dark, -/area/ruin/space/has_grav/infested_frigate) "qC" = ( /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -1236,16 +1197,6 @@ }, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) -"vj" = ( -/obj/machinery/door/poddoor{ - id = "Brutusexterior"; - closingLayer = 2.65 - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - layer = 2.9 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/infested_frigate) "vm" = ( /obj/machinery/door/airlock/external/ruin, /obj/effect/mapping_helpers/airlock/locked, @@ -1456,6 +1407,23 @@ }, /turf/closed/wall/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) +"xc" = ( +/mob/living/basic/bot/firebot{ + faction = list("syndicate","xenomorph"); + name = "Mr. Squirtsky"; + desc = "He seems much happier with the new management!" + }, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 5 + }, +/obj/effect/turf_decal{ + icon_state = "warningline_red"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) "xi" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/spawner/random/trash, @@ -1625,12 +1593,6 @@ /obj/effect/decal/cleanable/plastic, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) -"yZ" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - layer = 2.9 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/infested_frigate) "zg" = ( /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -1916,27 +1878,6 @@ }, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) -"EQ" = ( -/obj/structure/sign/poster/contraband/random/directional/north, -/obj/item/restraints/handcuffs/cable/zipties/used, -/obj/effect/decal/cleanable/blood{ - icon_state = "floor7-old" - }, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/blood/gibs{ - icon_state = "gib1-old" - }, -/obj/machinery/door/window/left/directional/east{ - layer = 3.2 - }, -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "captivity" - }, -/mob/living/carbon/alien/larva{ - faction = list("syndicate","xenomorph") - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/infested_frigate) "ER" = ( /obj/structure/cable, /mob/living/basic/alien/sentinel{ @@ -1979,23 +1920,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) -"Fs" = ( -/mob/living/simple_animal/bot/firebot{ - faction = list("syndicate","xenomorph"); - name = "Mr. Squirtsky"; - desc = "He seems much happier with the new management!" - }, -/obj/effect/turf_decal{ - icon_state = "warningline_red"; - dir = 5 - }, -/obj/effect/turf_decal{ - icon_state = "warningline_red"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/pod/dark, -/area/ruin/space/has_grav/infested_frigate) "FJ" = ( /obj/machinery/suit_storage_unit/open, /obj/effect/turf_decal{ @@ -2104,6 +2028,17 @@ /obj/structure/broken_flooring/singular/directional/south, /turf/template_noop, /area/template_noop) +"HJ" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "floor7-old" + }, +/obj/effect/decal/cleanable/glass, +/obj/machinery/button/door/directional/north{ + name = "prisoner isolation shutter"; + id = "captivity" + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/infested_frigate) "HP" = ( /obj/structure/broken_flooring/plating/directional/north, /obj/structure/broken_flooring/pile/directional/west, @@ -2155,6 +2090,24 @@ /obj/item/ammo_casing/spent, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/infested_frigate) +"Jc" = ( +/obj/structure/lattice, +/obj/structure/alien/resin/membrane{ + max_integrity = 1600; + desc = "Resin just thin enough to let light pass through, but it's congealing in the same way as the thicker stuff."; + name = "viscous resin membrane" + }, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent, +/obj/structure/door_assembly/door_assembly_hatch{ + anchored = 1; + name = "crew quarters"; + desc = "People lived in this place." + }, +/turf/template_noop, +/area/ruin/space/has_grav/infested_frigate) "Jh" = ( /obj/effect/turf_decal{ dir = 4 @@ -2746,6 +2699,25 @@ /obj/effect/spawner/random/trash, /turf/template_noop, /area/template_noop) +"Sm" = ( +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/item/restraints/handcuffs/cable/zipties/used, +/obj/effect/decal/cleanable/blood{ + icon_state = "floor7-old" + }, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/blood/gibs{ + icon_state = "gib1-old" + }, +/obj/machinery/door/window/left/directional/east, +/obj/machinery/door/poddoor/shutters/window/preopen{ + id = "captivity" + }, +/mob/living/carbon/alien/larva{ + faction = list("syndicate","xenomorph") + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) "Sr" = ( /obj/effect/turf_decal{ icon_state = "warningline_white"; @@ -2882,6 +2854,10 @@ }, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/infested_frigate) +"Uk" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) "Ux" = ( /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -3050,6 +3026,13 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/infested_frigate) +"XF" = ( +/obj/machinery/door/poddoor{ + id = "Brutusexterior" + }, +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating, +/area/ruin/space/has_grav/infested_frigate) "XG" = ( /obj/effect/turf_decal{ icon_state = "arrows_red"; @@ -3388,7 +3371,7 @@ fl fl fl wP -EQ +Sm wP hX SM @@ -3415,7 +3398,7 @@ fl fl fl wP -qu +HJ wP Ru df @@ -3478,7 +3461,7 @@ rs AH yt YW -vj +XF fl fl fl @@ -3495,7 +3478,7 @@ fl fl fl fl -vj +XF yJ wP wP @@ -3505,7 +3488,7 @@ Qg ki Zp di -vj +XF fl fl fl @@ -3522,7 +3505,7 @@ fl fl fl fl -vj +XF OC OC qE @@ -3532,7 +3515,7 @@ wP Et KA RG -vj +XF fl fl fl @@ -3549,7 +3532,7 @@ fl fl fl fl -vj +XF xp ab Cm @@ -3559,7 +3542,7 @@ Rw SX xT qC -vj +XF fl fl fl @@ -3576,7 +3559,7 @@ fl fl fl fl -vj +XF Ez Jx Cm @@ -3586,7 +3569,7 @@ Qg Ml hB xB -vj +XF fl fl fl @@ -3739,7 +3722,7 @@ fl Eg fl Qj -er +Jc Qm wP NU @@ -3792,7 +3775,7 @@ fl fl fl fl -vj +XF EL yP Fg @@ -3802,7 +3785,7 @@ mk Jx lU Rx -vj +XF fl fl fl @@ -3819,17 +3802,17 @@ fl fl fl HD -vj +XF ug Nu CE uG pk -Fs +xc Im iy IC -vj +XF fl fl fl @@ -3846,7 +3829,7 @@ fl fl fl fl -vj +XF YV Er wP @@ -3856,7 +3839,7 @@ LF wP iL nm -vj +XF fl fl fl @@ -3878,7 +3861,7 @@ bM Ne wP bE -nU +cI ML wP UX @@ -4036,7 +4019,7 @@ fl fl fl fl -vj +XF Bw ip BA @@ -4044,7 +4027,7 @@ sZ rz Ai KC -vj +XF fl fl fl @@ -4063,7 +4046,7 @@ fl fl fl fl -vj +XF HA Cm Td @@ -4071,7 +4054,7 @@ st MH eE AM -vj +XF fl fl fl @@ -4090,7 +4073,7 @@ fl fl fl fl -vj +XF vM wP wP @@ -4098,7 +4081,7 @@ VV wP wP OK -vj +XF fl fl fl @@ -4117,15 +4100,15 @@ fl fl fl fl -vj +XF cX wP -jy +ly PV Gt wP OK -vj +XF fl fl fl @@ -4144,7 +4127,7 @@ fl fl fl fl -vj +XF iS wP Jp @@ -4152,7 +4135,7 @@ xo wO wP oV -vj +XF fl fl fl @@ -4171,15 +4154,15 @@ fl fl fl fl -vj +XF KK wP -eX +nb aA NX wP oo -vj +XF fl fl fl @@ -4200,11 +4183,11 @@ fl fl wP af -yZ -yZ +Uk +Uk pl -yZ -yZ +Uk +Uk sE wP fl @@ -4256,7 +4239,7 @@ wP Yd hA My -jx +ir yG nG UV diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 6062a970205c6..ade5d068b6ebc 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -59,19 +59,6 @@ /obj/structure/alien/weeds/node, /turf/open/floor/iron/dark, /area/ruin/space/ancientstation/delta/ai) -"ar" = ( -/obj/effect/decal/cleanable/robot_debris, -/obj/structure/alien/weeds, -/obj/structure/closet/crate, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/sheet/plasteel{ - amount = 30 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/ancientstation/delta/ai) "as" = ( /turf/closed/wall, /area/ruin/space/ancientstation/charlie/bridge) @@ -225,16 +212,6 @@ }, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/bridge) -"bh" = ( -/obj/machinery/computer/old{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/door/window/brigdoor/right/directional/east, -/turf/open/floor/iron/dark, -/area/ruin/space/ancientstation/delta/ai) "bi" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -248,6 +225,12 @@ }, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/bridge) +"bl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/beta/atmos) "bm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/blue, @@ -887,6 +870,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/hydro) +"dT" = ( +/obj/machinery/modular_computer/preset/research/away{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/door/window/brigdoor/right/directional/east, +/turf/open/floor/iron/dark, +/area/ruin/space/ancientstation/delta/ai) "dU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -959,12 +952,6 @@ }, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/bridge) -"ek" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/charlie/engie) "el" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -1082,14 +1069,6 @@ "eJ" = ( /turf/closed/wall, /area/ruin/space/ancientstation/charlie/sec) -"eK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/charlie/engie) "eL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -1524,12 +1503,6 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/ruin/space/ancientstation/beta/hall) -"gM" = ( -/obj/machinery/rnd/production/circuit_imprinter/offstation, -/obj/effect/decal/cleanable/dirt, -/obj/item/reagent_containers/dropper, -/turf/open/floor/iron/white, -/area/ruin/space/ancientstation/delta/rnd) "gP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/computer/operating/oldstation{ @@ -1905,14 +1878,6 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/sec) -"io" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/folder/white, -/obj/item/reagent_containers/cup/beaker, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/delta/rnd) "ip" = ( /obj/machinery/chem_master, /obj/effect/decal/cleanable/dirt, @@ -2007,6 +1972,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/ruin/space/ancientstation/delta/rnd) +"iH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/structure/fluff/broken_canister_frame, +/obj/effect/decal/cleanable/plasma, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/beta/atmos) "iI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -2083,6 +2059,16 @@ }, /turf/open/floor/iron, /area/ruin/space/ancientstation/delta/rnd) +"jc" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/beta/atmos) "je" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -2249,14 +2235,6 @@ /obj/machinery/door/window/left/directional/east, /turf/open/floor/iron/white/textured, /area/ruin/space/ancientstation/delta/proto) -"jP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/backpack/duffelbag, -/obj/structure/closet, -/obj/effect/spawner/random/clothing/backpack, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/charlie/dorms) "jU" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/public/glass{ @@ -2671,17 +2649,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/cafeteria, /area/ruin/space/ancientstation/charlie/kitchen) -"lz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/bin, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/effect/spawner/random/trash/garbage, -/obj/effect/spawner/random/trash/garbage, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/charlie/engie) "lB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/east, @@ -2896,14 +2863,6 @@ /obj/structure/cable, /turf/template_noop, /area/ruin/space/solars/ancientstation/charlie/solars) -"mz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/backpack/old, -/obj/structure/closet, -/obj/effect/spawner/random/clothing/backpack, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/charlie/dorms) "mA" = ( /obj/machinery/conveyor{ id = "beta" @@ -2935,12 +2894,6 @@ }, /turf/open/floor/plating, /area/ruin/space/ancientstation/beta/mining) -"mF" = ( -/obj/machinery/shower/directional/west{ - has_water_reclaimer = 0 - }, -/turf/open/floor/vault, -/area/ruin/space/ancientstation/delta/biolab) "mG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -3115,14 +3068,6 @@ }, /turf/open/floor/iron, /area/ruin/space/ancientstation/beta/hall) -"ng" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/pipedispenser/disposal/transit_tube, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/beta/atmos) "nk" = ( /turf/closed/wall, /area/ruin/space/ancientstation/charlie/dorms) @@ -3175,26 +3120,6 @@ }, /turf/open/floor/iron, /area/ruin/space/ancientstation/beta/atmos) -"nC" = ( -/obj/structure/closet/crate, -/obj/item/cautery{ - pixel_x = 4 - }, -/obj/item/hemostat, -/obj/item/circular_saw, -/obj/item/scalpel{ - pixel_y = 12 - }, -/obj/item/retractor, -/obj/item/surgical_drapes, -/obj/machinery/light/small/broken/directional/west, -/obj/item/tank/internals/anesthetic, -/obj/item/clothing/mask/breath/medical, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/airless, -/area/ruin/space/ancientstation/beta/medbay) "nD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/optable, @@ -3202,6 +3127,15 @@ /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron/airless, /area/ruin/space/ancientstation/beta/medbay) +"nG" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/table, +/obj/machinery/door/window/brigdoor/right/directional/east, +/obj/item/computer_disk, +/turf/open/floor/iron/dark, +/area/ruin/space/ancientstation/delta/ai) "nI" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/science, @@ -3260,6 +3194,11 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/ruin/space/ancientstation/delta/rnd) +"nT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/pipedispenser, +/turf/open/floor/iron/airless, +/area/ruin/space/ancientstation/beta/hall) "nU" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/north, @@ -3534,12 +3473,6 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron, /area/ruin/space/ancientstation/beta/atmos) -"pv" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, -/turf/open/floor/engine/n2, -/area/ruin/space/ancientstation/beta/atmos) "pD" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ @@ -3557,6 +3490,14 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/engie) +"pI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/machinery/computer/apc_control/away, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/charlie/engie) "pK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -3623,13 +3564,6 @@ }, /turf/open/floor/iron, /area/ruin/space/ancientstation/beta/mining) -"qk" = ( -/obj/machinery/pipedispenser, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/beta/atmos) "ql" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -3682,11 +3616,6 @@ }, /turf/closed/wall, /area/ruin/space/ancientstation/beta/atmos) -"qH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/plumbing/input, -/turf/open/floor/engine, -/area/ruin/space/ancientstation/delta/biolab) "qK" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/scrubber, @@ -3777,6 +3706,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/hall) +"rw" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/engine/n2, +/area/ruin/space/ancientstation/beta/atmos) "rC" = ( /obj/effect/decal/cleanable/blood/xtracks{ dir = 8 @@ -3864,14 +3797,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/hall) -"se" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/charlie/engie) "si" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, @@ -4206,17 +4131,6 @@ }, /turf/open/floor/iron, /area/ruin/space/ancientstation/beta/hall) -"uC" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - dir = 8; - chamber_id = "beta-n2" - }, -/turf/open/floor/engine/n2, -/area/ruin/space/ancientstation/beta/atmos) "uI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -4289,6 +4203,17 @@ dir = 1 }, /area/ruin/space/ancientstation/delta/biolab) +"vh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/item/tank/internals/oxygen{ + pixel_x = 1 + }, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/beta/atmos) "vk" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -4413,19 +4338,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/hall) -"wg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/structure/closet/crate/secure/weapon{ - req_access = list("away_sec") - }, -/obj/item/knife/combat, -/obj/item/clothing/suit/armor/vest/old, -/obj/item/gun/ballistic/rifle/boltaction, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, -/turf/open/floor/plating, -/area/ruin/space/ancientstation/delta/hall) "wi" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/command{ @@ -4589,6 +4501,15 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating/airless, /area/ruin/space/ancientstation/beta/supermatter) +"xd" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/folder/white, +/obj/item/reagent_containers/cup/beaker, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/dropper, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/delta/rnd) "xi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -4672,6 +4593,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/ruin/space/ancientstation/beta/hall) +"xW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/reagent_containers/condiment/enzyme, +/turf/open/floor/iron/cafeteria, +/area/ruin/space/ancientstation/charlie/kitchen) "xY" = ( /obj/effect/turf_decal/caution/stand_clear, /obj/effect/turf_decal/stripes/line, @@ -5000,6 +4927,13 @@ "Ax" = ( /turf/closed/mineral/plasma, /area/ruin/space/ancientstation/beta/hall) +"Az" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/charlie/engie) "AA" = ( /obj/effect/decal/cleanable/dirt, /obj/item/kirbyplants/random/dead, @@ -5037,6 +4971,13 @@ "AK" = ( /turf/closed/wall, /area/ruin/space/ancientstation/beta/medbay) +"AM" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/stripes/line, +/obj/structure/tank_dispenser/plasma, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/beta/atmos) "AT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5101,14 +5042,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/sec) -"Bq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, -/turf/open/floor/iron/cafeteria, -/area/ruin/space/ancientstation/charlie/kitchen) "Bs" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/engine/o2, @@ -5195,6 +5128,25 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine/airless, /area/ruin/space/ancientstation/beta/supermatter) +"BR" = ( +/obj/machinery/shower/directional/west{ + has_water_reclaimer = 0 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/ancientstation/delta/biolab) +"BS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/obj/structure/closet/crate/secure/weapon{ + req_access = list("away_sec") + }, +/obj/item/spess_knife, +/obj/item/clothing/suit/armor/vest/old, +/obj/item/gun/ballistic/rifle/boltaction, +/obj/item/ammo_box/strilka310, +/obj/item/ammo_box/strilka310, +/turf/open/floor/plating, +/area/ruin/space/ancientstation/delta/hall) "Cc" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -5249,6 +5201,27 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/kitchen) +"Ct" = ( +/obj/structure/closet/crate, +/obj/item/cautery{ + pixel_x = 4 + }, +/obj/item/hemostat, +/obj/item/circular_saw, +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/item/retractor, +/obj/item/surgical_drapes, +/obj/machinery/light/small/broken/directional/west, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath/medical, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/item/tank/internals/anesthetic/pure, +/turf/open/floor/iron/airless, +/area/ruin/space/ancientstation/beta/medbay) "CA" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 @@ -5386,13 +5359,6 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/dorms) -"DC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/beta/atmos) "DI" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/highsecurity, @@ -5584,6 +5550,22 @@ /obj/machinery/space_heater, /turf/open/floor/plating/rust, /area/ruin/space/ancientstation/delta/hall) +"Fm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/tank/internals/oxygen{ + pixel_y = -8; + pixel_x = 8 + }, +/obj/item/tank/internals/oxygen{ + pixel_x = -4; + pixel_y = 4 + }, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/beta/atmos) "Fo" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/glass, @@ -5606,6 +5588,12 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/diagonal, /area/ruin/space/ancientstation/beta/gravity) +"Ft" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vatgrower, +/turf/open/floor/engine, +/area/ruin/space/ancientstation/delta/biolab) "Fv" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -5721,13 +5709,6 @@ /obj/effect/decal/cleanable/food/flour, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/hall) -"Gb" = ( -/obj/effect/decal/cleanable/glass, -/obj/item/stack/rods, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/beta/atmos) "Gd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, @@ -5781,6 +5762,16 @@ "Gz" = ( /turf/closed/wall/rust, /area/ruin/space/ancientstation/delta/hall) +"GA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/binary/tank_compressor{ + dir = 8 + }, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/beta/atmos) "GH" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -5808,13 +5799,6 @@ }, /turf/open/floor/iron/cafeteria, /area/ruin/space/ancientstation/charlie/kitchen) -"GP" = ( -/obj/machinery/pipedispenser/disposal, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/beta/atmos) "GX" = ( /turf/closed/wall/rust, /area/ruin/space/ancientstation/delta/biolab) @@ -5975,6 +5959,15 @@ dir = 4 }, /area/ruin/space/ancientstation/delta/biolab) +"Ib" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/trash/garbage, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/charlie/engie) "Ic" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -6148,6 +6141,14 @@ /obj/structure/lattice, /turf/template_noop, /area/space/nearstation) +"Jk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/storage/backpack/industrial, +/obj/item/storage/backpack/messenger/eng, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/charlie/dorms) "Jo" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -6167,6 +6168,20 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/ruin/space/ancientstation/delta/hall) +"Js" = ( +/obj/effect/decal/cleanable/robot_debris, +/obj/structure/alien/weeds, +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/plasteel{ + amount = 30 + }, +/obj/item/stack/sheet/mineral/diamond, +/turf/open/floor/iron/dark, +/area/ruin/space/ancientstation/delta/ai) "Jw" = ( /obj/effect/decal/cleanable/glass, /obj/structure/closet/firecloset, @@ -6379,6 +6394,13 @@ /obj/effect/mapping_helpers/broken_machine, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/dorms) +"Kr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/storage/backpack/duffelbag/sec, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/charlie/dorms) "Ku" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -6984,6 +7006,14 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/white/textured, /area/ruin/space/ancientstation/delta/proto) +"Oi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/item/storage/backpack/science, +/obj/item/storage/backpack/messenger/science, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/charlie/dorms) "Ol" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc/auto_name/directional/east, @@ -7379,6 +7409,11 @@ }, /turf/open/floor/iron, /area/ruin/space/ancientstation/beta/atmos) +"Rg" = ( +/obj/machinery/rnd/production/circuit_imprinter/offstation, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/ruin/space/ancientstation/delta/rnd) "Rm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -7756,14 +7791,6 @@ /obj/machinery/door/window/brigdoor/right/directional/east, /turf/open/floor/iron, /area/ruin/space/ancientstation/beta/mining) -"TO" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/plumbing/growing_vat{ - dir = 1 - }, -/turf/open/floor/engine, -/area/ruin/space/ancientstation/delta/biolab) "TV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance/two, @@ -8097,6 +8124,15 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron, /area/ruin/space/ancientstation/delta/hall) +"WT" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ + dir = 8; + chamber_id = "beta-n2" + }, +/turf/open/floor/engine/n2, +/area/ruin/space/ancientstation/beta/atmos) "WV" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -8191,14 +8227,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/engine/n2, /area/ruin/space/ancientstation/beta/atmos) -"XB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/ruin/space/ancientstation/beta/atmos) "XD" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Custodial Closet" @@ -8461,6 +8489,18 @@ /obj/machinery/light/small/broken/directional/east, /turf/open/floor/iron/dark, /area/ruin/space/ancientstation/delta/ai) +"YT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/item/chair{ + pixel_y = -8; + pixel_x = 13 + }, +/turf/open/floor/iron, +/area/ruin/space/ancientstation/charlie/engie) "YW" = ( /turf/open/floor/iron/textured_half, /area/ruin/space/ancientstation/beta/supermatter) @@ -9904,8 +9944,8 @@ Rf mH mH mH -qk -GP +bl +jc bJ aa aa @@ -9951,7 +9991,7 @@ zi NP NB oE -nC +Ct Ck aa aa @@ -9961,9 +10001,9 @@ Uu SZ Uu Yp -Gb -XB -Ln +AM +Fm +vh kK Ln ny @@ -9971,7 +10011,7 @@ nz fR nB nK -DC +GA mH aa aa @@ -10037,7 +10077,7 @@ nA UW kW HA -ng +iH bJ nr aa @@ -10159,7 +10199,7 @@ gJ Ax Ax kQ -Cj +nT Sf Cj VF @@ -10233,7 +10273,7 @@ bJ TB Kf zm -uC +WT XA bJ UP @@ -10299,7 +10339,7 @@ bJ CU Lh Zg -pv +rw OS bJ aa @@ -10365,7 +10405,7 @@ bJ Bs Lh Gi -pv +rw Ze bJ nr @@ -11600,7 +11640,7 @@ jE aa Ma By -eK +YT fc Wn Tf @@ -11665,7 +11705,7 @@ mS jE dl eI -lz +pI ju hm Yi @@ -11673,7 +11713,7 @@ Gt Yi hm em -ek +Ib dl eI Ox @@ -11807,7 +11847,7 @@ QZ hP em em -se +Az Ox iV fI @@ -12209,11 +12249,11 @@ wb bR aG nk -mz +Oi gZ kN Mt -mz +Jk nk nk aa @@ -12529,7 +12569,7 @@ dR Sr dz fi -Bq +xW GN ht ht @@ -12741,7 +12781,7 @@ ks uS jB Kk -jP +Kr aG nk aa @@ -14226,8 +14266,8 @@ ad ag aM NS -bh -cz +dT +nG cz cz ad @@ -14247,7 +14287,7 @@ oe WV ca hY -io +xd iE Yf wx @@ -14307,7 +14347,7 @@ wx BN fa hh -gM +Rg oH of WV @@ -15103,8 +15143,8 @@ NG OE UR rp -qH -TO +CK +Ft Xy vy rp @@ -15148,7 +15188,7 @@ aa aa ad ad -ar +Js be bp ZW @@ -15166,16 +15206,16 @@ wK UH ae GX -mF +BR AT rp -CK +vy VW Wd Np rp jg -wg +BS yx bE Jg diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index 3a2d28ba1ee8f..eec1e5a9671a7 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -847,9 +847,7 @@ pixel_x = 6; pixel_y = 6 }, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, +/obj/item/reagent_containers/condiment/enzyme, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, diff --git a/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm b/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm index 08175777752e6..b31a11cba31ca 100644 --- a/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm +++ b/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm @@ -347,7 +347,7 @@ /area/ruin/space) "mn" = ( /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/clothing/mask/cigarette/syndicate, +/obj/item/cigarette/syndicate, /obj/item/storage/fancy/cigarettes/cigpack_syndicate{ pixel_y = 7 }, @@ -622,7 +622,7 @@ /area/ruin/space) "yd" = ( /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/clothing/mask/cigarette/syndicate, +/obj/item/cigarette/syndicate, /obj/effect/spawner/random/entertainment/lighter, /turf/open/floor/mineral/plastitanium/airless, /area/ruin/space) @@ -701,7 +701,7 @@ /area/ruin/space) "Cz" = ( /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/clothing/mask/cigarette/syndicate, +/obj/item/cigarette/syndicate, /obj/effect/spawner/random/entertainment/lighter, /turf/open/floor/iron/dark/airless, /area/ruin/space) diff --git a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm index b2b8fd17fbed6..f8c540ed3fcb6 100644 --- a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm +++ b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm @@ -10,6 +10,18 @@ }, /turf/open/floor/iron/small, /area/ruin/space/has_grav/the_outlet/storefront) +"ao" = ( +/obj/structure/rack, +/obj/item/clothing/head/cowboy/brown, +/obj/item/clothing/shoes/cowboy, +/obj/item/clothing/under/costume/dutch, +/obj/item/clothing/suit/costume/poncho, +/obj/item/cigarette/cigar, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/eighties, +/area/ruin/space/has_grav/the_outlet/storefront) "ar" = ( /obj/effect/decal/cleanable/dirt{ icon_state = "dirt-46" @@ -85,16 +97,6 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/the_outlet/researchrooms) -"cL" = ( -/obj/effect/rune/apocalypse{ - req_cultists = 999; - layer = 2 - }, -/obj/structure/destructible/cult/pants_altar{ - layer = 3 - }, -/turf/open/floor/cult, -/area/ruin/space/has_grav/the_outlet/cultinfluence) "cZ" = ( /obj/structure/kitchenspike, /obj/effect/decal/cleanable/blood/gibs{ @@ -558,18 +560,6 @@ /obj/item/clothing/suit/jacket/straight_jacket, /turf/open/floor/iron/freezer, /area/ruin/space/has_grav/the_outlet/researchrooms) -"oI" = ( -/obj/structure/rack, -/obj/item/clothing/head/cowboy/brown, -/obj/item/clothing/shoes/cowboy, -/obj/item/clothing/under/costume/dutch, -/obj/item/clothing/suit/costume/poncho, -/obj/item/clothing/mask/cigarette/cigar, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/eighties, -/area/ruin/space/has_grav/the_outlet/storefront) "ps" = ( /obj/structure/rack, /obj/item/clothing/under/misc/bouncer, @@ -1025,6 +1015,13 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/the_outlet/researchrooms) +"yX" = ( +/obj/effect/rune/apocalypse{ + req_cultists = 999 + }, +/obj/structure/destructible/cult/pants_altar, +/turf/open/floor/cult, +/area/ruin/space/has_grav/the_outlet/cultinfluence) "zc" = ( /obj/effect/decal/cleanable/crayon, /obj/effect/decal/cleanable/blood/gibs/old, @@ -3433,7 +3430,7 @@ HV xI TM nq -oI +ao HH HH Kp @@ -3638,7 +3635,7 @@ qy wl RO PE -cL +yX ML RO zc diff --git a/_maps/RandomRuins/SpaceRuins/transit_booth.dmm b/_maps/RandomRuins/SpaceRuins/transit_booth.dmm index eaff9f2f073b0..52dbf8149f8e2 100644 --- a/_maps/RandomRuins/SpaceRuins/transit_booth.dmm +++ b/_maps/RandomRuins/SpaceRuins/transit_booth.dmm @@ -16,16 +16,6 @@ /obj/structure/sign/warning/vacuum/external/directional/north, /turf/open/floor/plating, /area/ruin/space/has_grav/transit_booth) -"ad" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/transit_booth) "ae" = ( /obj/machinery/vending/coffee, /turf/open/floor/iron/dark, @@ -93,23 +83,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/transit_booth) -"an" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/obj/structure/sign/poster/official/cohiba_robusto_ad/directional/north, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/transit_booth) -"ao" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/space/has_grav/transit_booth) "ap" = ( /obj/machinery/door/airlock/external{ name = "Transit Booth Airlock" @@ -262,9 +235,7 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/transit_booth) "aF" = ( -/obj/structure/window/reinforced/spawner/directional/south{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/south, /obj/structure/rack, /obj/item/reagent_containers/cup/glass/bottle/absinthe/premium{ pixel_x = 6 @@ -280,9 +251,7 @@ /turf/open/floor/iron/dark, /area/ruin/space/has_grav/transit_booth) "aG" = ( -/obj/structure/window/reinforced/spawner/directional/south{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/mass_driver{ dir = 1; id = "north" @@ -325,14 +294,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/transit_booth) -"aJ" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = 6; - pixel_y = 3 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/transit_booth) "aK" = ( /obj/machinery/door/poddoor{ id = "south" @@ -342,17 +303,6 @@ /obj/structure/table/reinforced, /turf/open/floor/plating, /area/ruin/space/has_grav/transit_booth) -"aL" = ( -/obj/structure/table, -/obj/item/storage/fancy/cigarettes/cigars{ - pixel_y = 11; - pixel_x = 3 - }, -/obj/item/lighter{ - pixel_x = -8 - }, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/transit_booth) "aM" = ( /obj/machinery/door/poddoor{ id = "north" @@ -442,9 +392,7 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/transit_booth) "aV" = ( -/obj/structure/window/reinforced/spawner/directional/south{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/south, /obj/structure/rack, /obj/item/book/random{ pixel_x = -5; @@ -461,9 +409,7 @@ /turf/open/floor/iron/dark, /area/ruin/space/has_grav/transit_booth) "aW" = ( -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/mass_driver{ dir = 4; id = "east" @@ -486,13 +432,6 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/transit_booth) -"aY" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/structure/sign/poster/official/high_class_martini/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/space/has_grav/transit_booth) "aZ" = ( /obj/effect/turf_decal/siding/dark{ dir = 5 diff --git a/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm b/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm index d36e65ddc2269..af55da5cb4f37 100644 --- a/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm +++ b/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm @@ -69,9 +69,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/ruin/space/has_grav/travelers_rest) diff --git a/_maps/RandomRuins/SpaceRuins/waystation.dmm b/_maps/RandomRuins/SpaceRuins/waystation.dmm index baa77a700d20e..38f8fcbac8cdd 100644 --- a/_maps/RandomRuins/SpaceRuins/waystation.dmm +++ b/_maps/RandomRuins/SpaceRuins/waystation.dmm @@ -1105,13 +1105,11 @@ "rF" = ( /obj/machinery/button/door/directional/east{ id = "Blastdoor_load"; - layer = 4; name = "Loading Doors"; pixel_y = -6 }, /obj/machinery/button/door/directional/east{ id = "Blastdoor_unload"; - layer = 4; name = "Loading Doors"; pixel_y = 6 }, @@ -2241,9 +2239,7 @@ /area/ruin/space/has_grav/waystation/securestorage) "NK" = ( /obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/tank/air{ - piping_layer = 4 - }, +/obj/machinery/atmospherics/components/tank/air, /turf/open/floor/plating, /area/ruin/space/has_grav/waystation) "NT" = ( diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 2451c55731215..a3e337ca01fe6 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -2051,10 +2051,6 @@ /obj/structure/chair/wood, /turf/open/floor/wood/freezing, /area/awaymission/cabin/lumbermill) -"jV" = ( -/mob/living/simple_animal/bot/firebot, -/turf/open/floor/wood/freezing, -/area/awaymission/cabin/lumbermill) "jW" = ( /obj/structure/table/wood, /obj/item/gun/energy/floragun, @@ -2758,36 +2754,6 @@ }, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/caves) -"px" = ( -/obj/structure/statue/snow/snowman{ - anchored = 1; - name = "Who" - }, -/obj/item/clothing/head/helmet/knight/yellow{ - desc = "A classic metal helmet. The cold has made it unreliable though."; - name = "old medieval helmet"; - pixel_y = 7 - }, -/obj/item/claymore/weak/ceremonial{ - desc = "Brought to you by the guys in charge of making replica katana toys!"; - force = 1; - layer = 3.01; - name = "replica claymore"; - pixel_x = 5; - pixel_y = 8; - throwforce = 2 - }, -/obj/item/shield/roman/fake{ - layer = 3.01; - pixel_x = -7 - }, -/obj/effect/light_emitter{ - set_cap = 3; - set_luminosity = 6; - light_color = "#9bbbff" - }, -/turf/open/misc/asteroid/snow/snow_cabin, -/area/awaymission/cabin/snowforest) "pB" = ( /obj/structure/fluff/fokoff_sign, /obj/effect/light_emitter{ @@ -3367,29 +3333,6 @@ /obj/effect/decal/cleanable/plasma, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/caves) -"wf" = ( -/obj/structure/statue/snow/snowman{ - anchored = 1; - name = "I Don't Know" - }, -/obj/item/clothing/head/chaplain/bishopmitre{ - pixel_x = -1; - pixel_y = 16 - }, -/obj/item/gun/magic/wand{ - desc = "It's just a fancy staff so that holy clerics and priests look cool. What? You didn't think someone would leave a REAL magic artifact with a snowman out in the cold, did you?"; - icon_state = "revivewand"; - layer = 3.01; - name = "holy staff"; - pixel_y = -2 - }, -/obj/effect/light_emitter{ - set_cap = 3; - set_luminosity = 6; - light_color = "#9bbbff" - }, -/turf/open/misc/asteroid/snow/snow_cabin, -/area/awaymission/cabin/caves) "wq" = ( /obj/machinery/recycler/lumbermill{ desc = "Is better at killing people than cutting logs, for some reason."; @@ -4140,6 +4083,28 @@ /obj/structure/light_construct/directional/south, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/caves) +"FY" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1; + name = "I Don't Know" + }, +/obj/item/clothing/head/chaplain/bishopmitre{ + pixel_x = -1; + pixel_y = 16 + }, +/obj/item/gun/magic/wand{ + desc = "It's just a fancy staff so that holy clerics and priests look cool. What? You didn't think someone would leave a REAL magic artifact with a snowman out in the cold, did you?"; + icon_state = "revivewand"; + name = "holy staff"; + pixel_y = -2 + }, +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 6; + light_color = "#9bbbff" + }, +/turf/open/misc/asteroid/snow/snow_cabin, +/area/awaymission/cabin/caves) "Gb" = ( /obj/effect/light_emitter{ name = "outdoor light"; @@ -4408,25 +4373,6 @@ }, /turf/open/floor/plating/snowed/snow_cabin, /area/awaymission/cabin/snowforest) -"JZ" = ( -/obj/structure/statue/snow/snowman{ - anchored = 1; - name = "What" - }, -/obj/item/clothing/head/wizard/fake{ - pixel_x = -1; - pixel_y = 13 - }, -/obj/item/staff{ - layer = 3.01 - }, -/obj/effect/light_emitter{ - set_cap = 3; - set_luminosity = 6; - light_color = "#9bbbff" - }, -/turf/open/misc/asteroid/snow/snow_cabin, -/area/awaymission/cabin/caves) "Kf" = ( /obj/effect/light_emitter{ set_cap = 3; @@ -4684,6 +4630,10 @@ }, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/snowforest) +"NU" = ( +/mob/living/basic/bot/firebot, +/turf/open/floor/wood/freezing, +/area/awaymission/cabin/lumbermill) "Oe" = ( /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/caves) @@ -5268,6 +5218,34 @@ }, /turf/open/floor/wood, /area/awaymission/cabin) +"Vr" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1; + name = "Who" + }, +/obj/item/clothing/head/helmet/knight/yellow{ + desc = "A classic metal helmet. The cold has made it unreliable though."; + name = "old medieval helmet"; + pixel_y = 7 + }, +/obj/item/claymore/weak/ceremonial{ + desc = "Brought to you by the guys in charge of making replica katana toys!"; + force = 1; + name = "replica claymore"; + pixel_x = 5; + pixel_y = 8; + throwforce = 2 + }, +/obj/item/shield/roman/fake{ + pixel_x = -7 + }, +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 6; + light_color = "#9bbbff" + }, +/turf/open/misc/asteroid/snow/snow_cabin, +/area/awaymission/cabin/snowforest) "VA" = ( /obj/effect/light_emitter{ set_cap = 3; @@ -5549,6 +5527,23 @@ }, /turf/open/floor/plating/snowed/snow_cabin, /area/awaymission/cabin/snowforest) +"Zh" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1; + name = "What" + }, +/obj/item/clothing/head/wizard/fake{ + pixel_x = -1; + pixel_y = 13 + }, +/obj/item/staff, +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 6; + light_color = "#9bbbff" + }, +/turf/open/misc/asteroid/snow/snow_cabin, +/area/awaymission/cabin/caves) "Zw" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -28559,7 +28554,7 @@ ab ab ab ue -JZ +Zh vh vh vh @@ -28817,7 +28812,7 @@ ab ue IX vh -px +Vr vh Qi vh @@ -29073,7 +29068,7 @@ ab ab ab ue -wf +FY vh vh vh @@ -37570,7 +37565,7 @@ pH af af af -jV +NU af af af diff --git a/_maps/RandomZLevels/TheBeach.dmm b/_maps/RandomZLevels/TheBeach.dmm index 3f18eb1d627d3..c3fec8319e4be 100644 --- a/_maps/RandomZLevels/TheBeach.dmm +++ b/_maps/RandomZLevels/TheBeach.dmm @@ -327,6 +327,23 @@ }, /turf/open/floor/wood/large, /area/awaymission/beach) +"eu" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/chair/stool/directional/south, +/obj/item/clothing/glasses/sunglasses{ + pixel_y = -2; + pixel_x = 2 + }, +/obj/item/bikehorn/airhorn{ + pixel_y = -15; + pixel_x = -13 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood, +/area/awaymission/beach) "eE" = ( /obj/structure/table/glass, /obj/machinery/microwave{ @@ -344,18 +361,21 @@ }, /turf/open/misc/beach/sand, /area/awaymission/beach) -"eT" = ( +"eL" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_y = 16; - pixel_x = -2 +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = 9; + pixel_y = 5 }, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = 8; - pixel_y = 9 +/obj/item/food/seaweedsheet{ + pixel_y = 6; + pixel_x = -4 }, -/obj/machinery/cell_charger, -/turf/open/floor/iron/dark/diagonal, +/obj/item/food/seaweedsheet{ + pixel_x = -15; + pixel_y = 2 + }, +/turf/open/floor/wood/large, /area/awaymission/beach) "fa" = ( /obj/structure/table/reinforced, @@ -692,6 +712,19 @@ }, /turf/open/floor/wood/large, /area/awaymission/beach) +"iO" = ( +/obj/structure/table/wood, +/obj/item/cigarette/cigar{ + pixel_y = 16; + pixel_x = -2 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/machinery/cell_charger, +/turf/open/floor/iron/dark/diagonal, +/area/awaymission/beach) "iU" = ( /obj/structure/table/wood, /obj/machinery/chem_dispenser/drinks/fullupgrade{ @@ -2020,23 +2053,6 @@ }, /turf/open/misc/beach/sand, /area/awaymission/beach) -"Aa" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5; - pixel_x = 9; - pixel_y = 5 - }, -/obj/item/food/seaweedsheet{ - pixel_y = 6; - pixel_x = -4 - }, -/obj/item/food/seaweedsheet{ - pixel_x = -15; - pixel_y = 2 - }, -/turf/open/floor/wood/large, -/area/awaymission/beach) "Ar" = ( /turf/open/floor/carpet/blue, /area/awaymission/beach) @@ -2508,25 +2524,6 @@ /obj/item/toy/seashell, /turf/open/misc/beach/coast, /area/awaymission/beach) -"Ft" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, -/obj/structure/chair/stool/directional/south, -/obj/item/clothing/glasses/sunglasses{ - pixel_y = -2; - pixel_x = 2 - }, -/obj/item/bikehorn/airhorn{ - pixel_y = -15; - pixel_x = -13 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood, -/area/awaymission/beach) "Fu" = ( /obj/structure/flora/tree/palm{ pixel_y = 31 @@ -14739,7 +14736,7 @@ eE un Cb uJ -eT +iO un Pk xv @@ -18633,7 +18630,7 @@ DF xv Cl Zp -Aa +eL pN Zp kB @@ -20950,7 +20947,7 @@ ls VY VY VY -Ft +eu wC St VY diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 721efba7619cc..0983bd02f3aec 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -99,15 +99,6 @@ }, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) -"aJ" = ( -/obj/machinery/door/poddoor{ - id = "AwayRD"; - layer = 2.9; - name = "Privacy Shutter" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/awaymission/moonoutpost19/research) "aK" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced/spawner/directional/north, @@ -630,13 +621,6 @@ /obj/machinery/vending/coffee, /turf/open/floor/iron/dark, /area/awaymission/moonoutpost19/research) -"ex" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/awaymission/moonoutpost19/research) "eA" = ( /obj/structure/flora/lunar_plant, /turf/open/misc/asteroid/moon{ @@ -902,17 +886,6 @@ }, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"ge" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; - id = "Awaybiohazard"; - layer = 2.9; - name = "Acid-Proof Biohazard Containment Door" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/awaymission/moonoutpost19/research) "gg" = ( /obj/effect/turf_decal/stripes/asteroid/line, /obj/structure/lattice/catwalk, @@ -2094,6 +2067,16 @@ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" }, /area/awaymission/moonoutpost19/hive) +"nD" = ( +/obj/item/pickaxe{ + pixel_x = -12; + pixel_y = 6 + }, +/obj/structure/flora/rock/style_random{ + pixel_y = -2 + }, +/turf/open/misc/asteroid/basalt, +/area/awaymission/moonoutpost19/main) "nE" = ( /obj/machinery/door/poddoor/preopen{ desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; @@ -2202,22 +2185,6 @@ }, /turf/open/floor/iron/white/corner, /area/awaymission/moonoutpost19/arrivals) -"os" = ( -/obj/machinery/door/poddoor/preopen{ - desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; - id = "Awaybiohazard"; - name = "Acid-Proof Biohazard Containment Door" - }, -/obj/machinery/door/poddoor{ - desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; - id = "Awaybiohazard"; - layer = 2.9; - name = "Acid-Proof Biohazard Containment Door" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/awaymission/moonoutpost19/research) "ot" = ( /obj/machinery/door/airlock{ name = "Private Restroom" @@ -2353,26 +2320,21 @@ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" }, /area/awaymission/moonoutpost19/syndicate) -"pF" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/obj/structure/table, -/obj/structure/bedsheetbin, -/obj/item/clothing/neck/tie/black, -/obj/item/clothing/under/costume/buttondown/slacks/service, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +"pG" = ( +/obj/machinery/door/poddoor/preopen{ + desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; + id = "Awaybiohazard"; + name = "Acid-Proof Biohazard Containment Door" }, -/turf/open/floor/iron/cafeteria{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 +/obj/machinery/door/poddoor{ + desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; + id = "Awaybiohazard"; + name = "Acid-Proof Biohazard Containment Door" }, -/area/awaymission/moonoutpost19/arrivals) +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/awaymission/moonoutpost19/research) "pH" = ( /obj/structure/table, /obj/item/folder/red, @@ -2555,6 +2517,16 @@ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" }, /area/awaymission/moonoutpost19/hive) +"qD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + desc = "A heavy duty blast door that opens mechanically. This one has been applied with an acid-proof coating."; + id = "Awaybiohazard"; + name = "Acid-Proof Biohazard Containment Door" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/awaymission/moonoutpost19/research) "qI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -3141,6 +3113,14 @@ /obj/effect/turf_decal/lunar_sand, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) +"uh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/computer/security/telescreen/moon_outpost/xenobio/directional/east, +/turf/open/floor/iron/white, +/area/awaymission/moonoutpost19/research) "ui" = ( /obj/structure/fluff/meteor/sharp, /turf/open/misc/asteroid/moon{ @@ -3429,21 +3409,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/awaymission/moonoutpost19/research) -"vR" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/effect/decal/remains/human{ - desc = "They look like human remains. The skeleton is laid out on its side and there seems to have been no sign of struggle."; - layer = 4.1 - }, -/obj/machinery/button/door/directional/west{ - id = "awaydorm3"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/awaymission/moonoutpost19/arrivals) "vT" = ( /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, @@ -3536,6 +3501,16 @@ }, /turf/open/floor/plastic, /area/awaymission/moonoutpost19/arrivals/shed) +"wR" = ( +/obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/tile/dark/opposingcorners{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/moon_outpost/xenobio/directional/south, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/awaymission/moonoutpost19/research) "wT" = ( /obj/structure/closet/secure_closet/personal/cabinet{ locked = 0; @@ -3544,24 +3519,6 @@ /obj/item/stack/spacecash/c50, /turf/open/floor/wood, /area/awaymission/moonoutpost19/syndicate) -"wU" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring the research division and the labs within."; - name = "research monitor"; - network = list("mo19x","mo19r") - }, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 4 - }, -/obj/effect/turf_decal/tile/dark/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/awaymission/moonoutpost19/research) "wV" = ( /obj/structure/closet/emcloset, /obj/item/shovel, @@ -3650,6 +3607,14 @@ /obj/effect/spawner/random/medical/surgery_tool_advanced, /turf/closed/mineral/random, /area/awaymission/moonoutpost19/mines) +"xz" = ( +/obj/structure/table/reinforced, +/obj/structure/alien/weeds, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/awaymission/moonoutpost19/research) "xB" = ( /obj/effect/turf_decal/lunar_sand/plating, /turf/open/floor/plating{ @@ -3759,21 +3724,6 @@ }, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) -"yx" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "awaysyndie"; - layer = 3.1; - name = "mining conveyor" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/fuel_pool, -/turf/open/floor/iron{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/syndicate) "yz" = ( /obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plating, @@ -4061,20 +4011,6 @@ }, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) -"AI" = ( -/obj/structure/table/reinforced, -/obj/structure/alien/weeds, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the contents of the xenobiology containment pen."; - dir = 8; - name = "xenobiology monitor"; - network = list("mo19x") - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/awaymission/moonoutpost19/research) "AO" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood/gibs, @@ -4119,18 +4055,6 @@ /obj/structure/table/wood, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) -"Bb" = ( -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/obj/item/crowbar{ - layer = 2.9; - pixel_x = 7; - pixel_y = -13 - }, -/turf/open/floor/iron, -/area/awaymission/moonoutpost19/arrivals) "Bc" = ( /obj/vehicle/ridden/atv{ dir = 4 @@ -4460,6 +4384,19 @@ }, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) +"Dd" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/awaymission/moonoutpost19/research) "Df" = ( /obj/structure/grille/broken, /obj/item/stack/rods, @@ -4726,6 +4663,20 @@ temperature = 251 }, /area/awaymission/moonoutpost19/arrivals) +"Fs" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "awaysyndie"; + name = "mining conveyor" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/fuel_pool, +/turf/open/floor/iron{ + initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; + temperature = 251 + }, +/area/awaymission/moonoutpost19/syndicate) "Ft" = ( /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/oil, @@ -4744,17 +4695,6 @@ /obj/item/bodypart/arm/left/robot, /turf/open/floor/iron/white, /area/awaymission/moonoutpost19/research) -"Fw" = ( -/obj/item/pickaxe{ - layer = 2.9; - pixel_x = -12; - pixel_y = 6 - }, -/obj/structure/flora/rock/style_random{ - pixel_y = -2 - }, -/turf/open/misc/asteroid/basalt, -/area/awaymission/moonoutpost19/main) "FA" = ( /turf/open/lava/airless, /area/awaymission/moonoutpost19/mines) @@ -4838,6 +4778,24 @@ temperature = 251 }, /area/awaymission/moonoutpost19/arrivals) +"FS" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/item/clothing/neck/tie/black, +/obj/item/clothing/under/costume/buttondown/slacks/service, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron/cafeteria{ + initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; + temperature = 251 + }, +/area/awaymission/moonoutpost19/arrivals) "FY" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/stripes/line{ @@ -4867,6 +4825,20 @@ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" }, /area/awaymission/moonoutpost19/main) +"Gf" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/effect/decal/remains/human{ + desc = "They look like human remains. The skeleton is laid out on its side and there seems to have been no sign of struggle." + }, +/obj/machinery/button/door/directional/west{ + id = "awaydorm3"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/carpet/royalblue, +/area/awaymission/moonoutpost19/arrivals) "Gh" = ( /obj/structure/closet/l3closet/scientist, /obj/structure/window/reinforced/spawner/directional/south, @@ -6025,13 +5997,6 @@ /obj/effect/turf_decal/lunar_sand/plating, /turf/open/floor/plating, /area/awaymission/moonoutpost19/main) -"Ou" = ( -/obj/structure/table/wood, -/obj/item/lighter, -/obj/machinery/newscaster/directional/east, -/obj/item/clothing/mask/cigarette/cigar, -/turf/open/floor/carpet/orange, -/area/awaymission/moonoutpost19/arrivals) "Ov" = ( /turf/open/floor/iron, /area/awaymission/moonoutpost19/research) @@ -6167,6 +6132,14 @@ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" }, /area/awaymission/moonoutpost19/mines) +"Pa" = ( +/obj/machinery/door/poddoor{ + id = "AwayRD"; + name = "Privacy Shutter" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/moonoutpost19/research) "Pf" = ( /obj/item/flashlight/flare{ start_on = 1 @@ -6774,6 +6747,17 @@ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" }, /area/awaymission/moonoutpost19/main) +"SN" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/item/crowbar{ + pixel_x = 7; + pixel_y = -13 + }, +/turf/open/floor/iron, +/area/awaymission/moonoutpost19/arrivals) "SX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/purple{ @@ -7423,6 +7407,13 @@ }, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals/shed) +"Xz" = ( +/obj/structure/table/wood, +/obj/item/lighter, +/obj/machinery/newscaster/directional/east, +/obj/item/cigarette/cigar, +/turf/open/floor/carpet/orange, +/area/awaymission/moonoutpost19/arrivals) "XA" = ( /obj/machinery/door/poddoor/shutters{ id = "awaymission19atvs" @@ -7709,15 +7700,6 @@ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251" }, /area/awaymission/moonoutpost19/mines) -"Zw" = ( -/obj/effect/turf_decal/siding/purple, -/obj/effect/turf_decal/tile/dark/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/awaymission/moonoutpost19/research) "Zx" = ( /obj/structure/chair/office, /turf/open/floor/iron, @@ -33942,7 +33924,7 @@ Nt ap aK on -Zw +wR dZ bn lG @@ -34454,7 +34436,7 @@ dZ rH SX Sd -wU +Dd ap Ts ea @@ -34708,9 +34690,9 @@ dZ dZ ea ea -aJ +Pa Ay -aJ +Pa Ci Sd zx @@ -34967,7 +34949,7 @@ Rl Rq ik OC -aJ +Pa xK au FY @@ -35224,7 +35206,7 @@ pH Rq ik OC -aJ +Pa tE PG tG @@ -35481,7 +35463,7 @@ iB Rq ik OC -aJ +Pa Um Tx vu @@ -35981,7 +35963,7 @@ My My My My -os +pG kd Ov Ky @@ -35995,7 +35977,7 @@ OC OC fk fk -ge +qD ea UZ Oa @@ -36238,7 +36220,7 @@ My My My xm -os +pG ZA eR Za @@ -36252,7 +36234,7 @@ fk fk fk fP -ge +qD Qq fc Ds @@ -36509,7 +36491,7 @@ Nk cI LU LU -ge +qD ea TM Az @@ -38296,7 +38278,7 @@ My My dZ ei -ex +uh vU fl fC @@ -38553,7 +38535,7 @@ My My ea ef -AI +xz vx Gh qy @@ -39096,7 +39078,7 @@ hI hI hJ hJ -pF +FS RY dF WF @@ -39544,7 +39526,7 @@ My UO ZX aL -Fw +nD aL wj aL @@ -39993,7 +39975,7 @@ aU uq jH VH -yx +Fs do VH IW @@ -40125,7 +40107,7 @@ Sk hJ Ue hJ -vR +Gf yP YF hI @@ -40374,7 +40356,7 @@ cT hI LX fU -Ou +Xz hJ zy kZ @@ -43458,7 +43440,7 @@ xs LW pY xG -Bb +SN Te hI hJ diff --git a/_maps/RandomZLevels/museum.dmm b/_maps/RandomZLevels/museum.dmm index cdea9ba141a13..2937250b1f9ba 100644 --- a/_maps/RandomZLevels/museum.dmm +++ b/_maps/RandomZLevels/museum.dmm @@ -4755,7 +4755,7 @@ /obj/structure/lattice/catwalk/mining, /obj/structure/railing, /obj/structure/table, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ icon_state = "cigaron"; lit = 1 }, diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 7f862487515fc..1e84014fa0e1b 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -2461,9 +2461,7 @@ /turf/open/floor/wood, /area/awaymission/research/interior/dorm) "lN" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/siding/yellow{ dir = 4 @@ -2707,25 +2705,19 @@ "mK" = ( /obj/structure/flora/bush/flowers_br/style_random, /obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/grass, /area/awaymission/research/interior/escapepods) "mL" = ( /obj/structure/flora/bush/ferny/style_random, /obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/grass, /area/awaymission/research/interior/escapepods) "mM" = ( /obj/structure/flora/bush/grassy/style_random, /obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/grass, /area/awaymission/research/interior/escapepods) "mO" = ( diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index ac13cf870c55d..ee207f21e86d6 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -11586,7 +11586,6 @@ /obj/machinery/door_buttons/access_button{ idDoor = "snowdin_turbine_interior"; idSelf = "snowdin_turbine_access"; - layer = 3.1; name = "Turbine Airlock Control"; pixel_x = 8; pixel_y = -24 diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 8ce159cb3993a..5458021bdb122 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -468,11 +468,28 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/awaymission/undergroundoutpost45/central) +"cr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/underground_outpost/research/directional/south, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/awaymission/undergroundoutpost45/research) "cs" = ( /obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/central) +"ct" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/awaymission/undergroundoutpost45/research) "cu" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, @@ -615,14 +632,6 @@ /obj/machinery/light/blacklight/directional/north, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/central) -"do" = ( -/obj/item/kirbyplants{ - layer = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green, -/turf/open/floor/iron, -/area/awaymission/undergroundoutpost45/central) "du" = ( /obj/effect/turf_decal/tile/purple{ dir = 4 @@ -1067,6 +1076,14 @@ }, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/central) +"eQ" = ( +/obj/machinery/meter{ + name = "Mixed Air Tank In" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/undergroundoutpost45/engineering) "eR" = ( /obj/structure/chair/stool/directional/west, /turf/open/floor/iron, @@ -1346,14 +1363,6 @@ /obj/item/bedsheet, /turf/open/floor/carpet, /area/awaymission/undergroundoutpost45/central) -"fT" = ( -/obj/item/kirbyplants{ - layer = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/awaymission/undergroundoutpost45/central) "fU" = ( /obj/machinery/firealarm/directional/south, /obj/machinery/camera/directional/south{ @@ -1707,16 +1716,6 @@ dir = 5 }, /area/awaymission/undergroundoutpost45/crew_quarters) -"hq" = ( -/obj/structure/table, -/obj/item/stack/package_wrap, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/awaymission/undergroundoutpost45/crew_quarters) "hr" = ( /obj/structure/table, /turf/open/floor/iron/cafeteria{ @@ -2453,13 +2452,6 @@ dir = 5 }, /area/awaymission/undergroundoutpost45/research) -"kh" = ( -/obj/item/kirbyplants{ - layer = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/awaymission/undergroundoutpost45/research) "kj" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/purple/half/contrasted{ @@ -3270,15 +3262,6 @@ dir = 5 }, /area/awaymission/undergroundoutpost45/research) -"mQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/kirbyplants{ - layer = 5 - }, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/awaymission/undergroundoutpost45/research) "mR" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -3431,36 +3414,12 @@ dir = 5 }, /area/awaymission/undergroundoutpost45/research) -"no" = ( -/obj/machinery/computer/security{ - dir = 4; - network = list("uo45") - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/awaymission/undergroundoutpost45/research) "np" = ( /obj/structure/chair/office{ dir = 1 }, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/research) -"nq" = ( -/obj/structure/table, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring the research division and the labs within."; - dir = 8; - name = "research monitor"; - network = list("uo45r") - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/awaymission/undergroundoutpost45/research) "nr" = ( /obj/machinery/light/small/directional/east, /obj/effect/turf_decal/tile/purple{ @@ -3587,18 +3546,6 @@ dir = 5 }, /area/awaymission/undergroundoutpost45/research) -"nR" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring the research division and the labs within."; - name = "research monitor"; - network = list("uo45r") - }, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/awaymission/undergroundoutpost45/research) "nS" = ( /obj/machinery/light/small/directional/east, /obj/structure/window/reinforced/spawner/directional/north, @@ -4029,14 +3976,6 @@ dir = 5 }, /area/awaymission/undergroundoutpost45/research) -"pf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria{ - dir = 5 - }, -/area/awaymission/undergroundoutpost45/research) "pg" = ( /obj/structure/secure_safe{ pixel_x = 5; @@ -4064,16 +4003,6 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/research) -"pl" = ( -/obj/item/kirbyplants{ - layer = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/awaymission/undergroundoutpost45/crew_quarters) "pm" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -4276,24 +4205,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/awaymission/undergroundoutpost45/engineering) -"qd" = ( -/obj/machinery/meter{ - layer = 3.3; - name = "Mixed Air Tank Out" - }, -/obj/machinery/atmospherics/pipe/layer_manifold/supply, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/awaymission/undergroundoutpost45/engineering) -"qe" = ( -/obj/machinery/meter{ - layer = 3.3; - name = "Mixed Air Tank In" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/awaymission/undergroundoutpost45/engineering) "qh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ dir = 4; @@ -4372,6 +4283,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/awaymission/undergroundoutpost45/crew_quarters) +"qB" = ( +/obj/structure/table, +/obj/item/stack/package_wrap, +/obj/item/reagent_containers/condiment/enzyme, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/awaymission/undergroundoutpost45/crew_quarters) "qC" = ( /obj/machinery/vending/cola, /turf/open/floor/iron/dark, @@ -4399,19 +4318,6 @@ }, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/engineering) -"qI" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/obj/structure/closet/secure_closet/engineering_personal{ - req_access = list("away_maintenance") - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/awaymission/undergroundoutpost45/engineering) "qJ" = ( /obj/machinery/light/blacklight/directional/north, /obj/machinery/camera/directional/north{ @@ -4580,15 +4486,6 @@ "rj" = ( /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/engineering) -"rk" = ( -/obj/item/kirbyplants{ - layer = 5 - }, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/awaymission/undergroundoutpost45/engineering) "rl" = ( /obj/machinery/firealarm/directional/north, /obj/structure/tank_dispenser{ @@ -4971,14 +4868,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/engineering) -"sq" = ( -/obj/machinery/meter{ - layer = 3.3 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/awaymission/undergroundoutpost45/engineering) "sr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ chamber_id = "uo45mix"; @@ -5142,16 +5031,6 @@ }, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/engineering) -"td" = ( -/obj/machinery/meter{ - layer = 3.3 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/orange{ - dir = 4 - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/awaymission/undergroundoutpost45/engineering) "te" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored{ chamber_id = "uo45mix"; @@ -5230,22 +5109,6 @@ dir = 1 }, /area/awaymission/undergroundoutpost45/engineering) -"tw" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white/corner{ - dir = 1 - }, -/area/awaymission/undergroundoutpost45/engineering) "tx" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -5582,22 +5445,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall/r_wall, /area/awaymission/undergroundoutpost45/engineering) -"uI" = ( -/obj/machinery/meter{ - layer = 3.3 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/orange, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/awaymission/undergroundoutpost45/engineering) -"uJ" = ( -/obj/machinery/meter{ - layer = 3.3 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/awaymission/undergroundoutpost45/engineering) "uK" = ( /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, @@ -5997,15 +5844,6 @@ dir = 8 }, /area/awaymission/undergroundoutpost45/mining) -"wg" = ( -/obj/machinery/light/small/directional/north, -/obj/item/kirbyplants{ - layer = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/awaymission/undergroundoutpost45/mining) "wl" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -6135,13 +5973,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/crew_quarters) -"xd" = ( -/obj/machinery/meter{ - layer = 3.3 +"xf" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/closet/secure_closet/engineering_personal{ + req_access = list("away_maintenance") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, /area/awaymission/undergroundoutpost45/engineering) "xg" = ( /obj/machinery/door/firedoor, @@ -6825,6 +6666,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/central) +"DO" = ( +/obj/machinery/light/small/directional/north, +/obj/item/kirbyplants, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/awaymission/undergroundoutpost45/mining) "DU" = ( /obj/structure/table/reinforced, /obj/item/storage/fancy/cigarettes{ @@ -6857,6 +6705,20 @@ }, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/central) +"Ee" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/undergroundoutpost45/engineering) +"Eg" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/layer_manifold/orange{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/undergroundoutpost45/engineering) "EJ" = ( /obj/machinery/light/small/directional/north, /obj/machinery/airalarm/directional/north, @@ -6905,6 +6767,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/engineering) +"Fo" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/awaymission/undergroundoutpost45/research) "Fw" = ( /obj/machinery/airalarm/directional/east, /obj/effect/mapping_helpers/airalarm/all_access, @@ -6921,6 +6790,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/crew_quarters) +"FC" = ( +/obj/item/kirbyplants, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/green, +/turf/open/floor/iron, +/area/awaymission/undergroundoutpost45/central) "FS" = ( /obj/machinery/biogenerator, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -6969,6 +6844,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/awaymission/undergroundoutpost45/research) +"Gy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants, +/turf/open/floor/iron/cafeteria{ + dir = 5 + }, +/area/awaymission/undergroundoutpost45/research) "GI" = ( /obj/structure/filingcabinet/chestdrawer, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -7001,6 +6883,14 @@ }, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/central) +"HS" = ( +/obj/item/kirbyplants, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/awaymission/undergroundoutpost45/crew_quarters) "HW" = ( /obj/structure/alien/weeds, /obj/structure/glowshroom/single, @@ -7040,6 +6930,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/awaymission/undergroundoutpost45/gateway) +"Iz" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/layer_manifold/orange, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/undergroundoutpost45/engineering) "IH" = ( /obj/machinery/door/airlock/external/ruin, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7106,6 +7002,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/awaymission/undergroundoutpost45/research) +"Jq" = ( +/obj/item/kirbyplants, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/awaymission/undergroundoutpost45/engineering) "Jv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/cafeteria{ @@ -7132,6 +7035,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/awaymission/undergroundoutpost45/research) +"JU" = ( +/obj/item/kirbyplants, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/awaymission/undergroundoutpost45/central) +"Kh" = ( +/obj/machinery/computer/security{ + dir = 4; + network = list("uo45") + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/underground_outpost/research/directional/west, +/turf/open/floor/iron, +/area/awaymission/undergroundoutpost45/research) "Km" = ( /obj/structure/table, /obj/item/storage/medkit/toxin{ @@ -7172,6 +7092,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/research) +"KS" = ( +/obj/item/kirbyplants, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/awaymission/undergroundoutpost45/research) "KT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7609,6 +7534,14 @@ }, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/engineering) +"RG" = ( +/obj/machinery/meter{ + name = "Mixed Air Tank Out" + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/undergroundoutpost45/engineering) "RN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -7876,6 +7809,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/research) +"WO" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/awaymission/undergroundoutpost45/engineering) "WQ" = ( /obj/structure/bed{ dir = 4 @@ -7977,6 +7924,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/engineering) +"Yj" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/undergroundoutpost45/engineering) "Yk" = ( /obj/structure/table, /obj/item/computer_disk/ordnance, @@ -8016,6 +7969,12 @@ }, /turf/open/floor/plating, /area/awaymission/undergroundoutpost45/mining) +"YQ" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/awaymission/undergroundoutpost45/engineering) "YV" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -32877,7 +32836,7 @@ gz hc gz gz -kh +KS ha lE mf @@ -34427,7 +34386,7 @@ mP nn nQ oz -pf +cr gy ql qT @@ -34682,7 +34641,7 @@ lL mj mP mP -nR +Fo oA pg gy @@ -34937,7 +34896,7 @@ hH Jo ON mj -mQ +Gy mP nS oB @@ -35452,7 +35411,7 @@ Mg lM hH mR -no +Kh RC oC ph @@ -35966,7 +35925,7 @@ kV lM hH mT -nq +ct nV WG lu @@ -38004,7 +37963,7 @@ LZ eZ MJ IV -fT +JU aC ad ad @@ -38539,7 +38498,7 @@ mV nw JD nD -pl +HS gr gr zq @@ -40308,7 +40267,7 @@ aD cB cL aC -do +FC dB dX dB @@ -42920,7 +42879,7 @@ uz fO fN vK -wg +DO wv wD Wk @@ -43407,7 +43366,7 @@ fZ gu gD gO -hq +qB hR iq iK @@ -46512,7 +46471,7 @@ qD ri Qw Yf -tw +WO ln rj uV @@ -47023,7 +46982,7 @@ zq RA ni ln -rk +Jq sb sO Tu @@ -49592,13 +49551,13 @@ ov oY pD qb -qI +xf rj tE rj tG um -uI +Iz vd vD ln @@ -49855,7 +49814,7 @@ tE rj tb un -uJ +Yj ve vE ln @@ -50105,7 +50064,7 @@ ad ln oZ pE -qd +RG qK rv sn @@ -50362,14 +50321,14 @@ ad ln pa pF -qe +eQ qL rw so rj rj up -uI +Iz vf vF ln @@ -50626,7 +50585,7 @@ OL YD tI uq -xd +YQ vg vG ln @@ -51136,8 +51095,8 @@ ad ln ln ln -sq -td +Ee +Eg ln ni ni diff --git a/_maps/deathmatch/OSHA_Violator.dmm b/_maps/deathmatch/OSHA_Violator.dmm index fc8291d181449..7d30951a4f0a6 100644 --- a/_maps/deathmatch/OSHA_Violator.dmm +++ b/_maps/deathmatch/OSHA_Violator.dmm @@ -20,11 +20,18 @@ /obj/structure/closet/secure_closet/engineering_welding, /turf/open/indestructible, /area/deathmatch) +"cl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/indestructible, +/area/deathmatch) "cA" = ( /turf/open/indestructible, /area/deathmatch) "cR" = ( -/obj/machinery/field/generator/starts_on, +/obj/machinery/field/generator/starts_on/magic, /obj/effect/turf_decal/bot, /obj/structure/cable, /turf/open/indestructible, @@ -36,7 +43,7 @@ "dt" = ( /obj/machinery/light/no_nightlight/directional/north, /obj/effect/turf_decal/stripes/line, -/obj/machinery/field/generator/starts_on, +/obj/machinery/field/generator/starts_on/magic, /obj/structure/cable, /turf/open/indestructible, /area/deathmatch) @@ -252,9 +259,6 @@ /obj/structure/cable, /turf/open/indestructible, /area/deathmatch) -"sa" = ( -/turf/cordon, -/area/template_noop) "sb" = ( /obj/structure/frame/machine/secured, /turf/open/indestructible, @@ -581,7 +585,7 @@ /area/deathmatch) "Bv" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/field/generator/starts_on, +/obj/machinery/field/generator/starts_on/magic, /obj/structure/cable, /turf/open/indestructible, /area/deathmatch) @@ -685,6 +689,13 @@ /obj/machinery/light/no_nightlight/directional/west, /turf/open/indestructible, /area/deathmatch) +"Gw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/indestructible, +/area/deathmatch) "Gx" = ( /obj/machinery/conveyor/auto, /obj/structure/cable, @@ -849,7 +860,7 @@ /turf/open/indestructible, /area/deathmatch) "Pg" = ( -/obj/machinery/field/generator/starts_on, +/obj/machinery/field/generator, /obj/machinery/light/no_nightlight/directional/north, /turf/open/indestructible, /area/deathmatch) @@ -980,7 +991,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/field/generator/starts_on, +/obj/machinery/field/generator/starts_on/magic, /obj/structure/cable, /turf/open/indestructible, /area/deathmatch) @@ -1042,8 +1053,11 @@ /turf/open/indestructible, /area/deathmatch) "YA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, /obj/structure/cable, -/turf/closed/indestructible/fakeglass, +/turf/open/indestructible, /area/deathmatch) "YJ" = ( /obj/structure/cable, @@ -1062,7 +1076,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/field/generator/starts_on, +/obj/machinery/field/generator/starts_on/magic, /obj/structure/cable, /turf/open/indestructible, /area/deathmatch) @@ -1073,6 +1087,12 @@ }, /turf/open/indestructible, /area/deathmatch) +"Zq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/indestructible, +/area/deathmatch) "Zr" = ( /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle, /turf/open/space/basic, @@ -1087,34 +1107,6 @@ /area/template_noop) (1,1,1) = {" -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -"} -(2,1,1) = {" -sa je je je @@ -1138,10 +1130,8 @@ je je je je -sa "} -(3,1,1) = {" -sa +(2,1,1) = {" je ai ai @@ -1165,10 +1155,8 @@ je je je je -sa "} -(4,1,1) = {" -sa +(3,1,1) = {" je ai bW @@ -1192,10 +1180,8 @@ je je je je -sa "} -(5,1,1) = {" -sa +(4,1,1) = {" je ai cA @@ -1219,10 +1205,8 @@ je je je je -sa "} -(6,1,1) = {" -sa +(5,1,1) = {" je aE cA @@ -1246,10 +1230,8 @@ je je je je -sa "} -(7,1,1) = {" -sa +(6,1,1) = {" je aE cA @@ -1273,10 +1255,8 @@ ai ai ai je -sa "} -(8,1,1) = {" -sa +(7,1,1) = {" je ai cA @@ -1300,10 +1280,8 @@ cA cA aE je -sa "} -(9,1,1) = {" -sa +(8,1,1) = {" je ai cA @@ -1327,10 +1305,8 @@ cA cA aE je -sa "} -(10,1,1) = {" -sa +(9,1,1) = {" je ai aE @@ -1354,10 +1330,8 @@ ai aE ai je -sa "} -(11,1,1) = {" -sa +(10,1,1) = {" je ai cR @@ -1381,13 +1355,11 @@ ai cR ai je -sa "} -(12,1,1) = {" -sa +(11,1,1) = {" je ai -YA +cl ai gN cA @@ -1408,10 +1380,8 @@ ai YA ai je -sa "} -(13,1,1) = {" -sa +(12,1,1) = {" je ai Ea @@ -1435,10 +1405,8 @@ Xp yo ai je -sa "} -(14,1,1) = {" -sa +(13,1,1) = {" je ai do @@ -1462,10 +1430,8 @@ gN Px ai je -sa "} -(15,1,1) = {" -sa +(14,1,1) = {" je ai dt @@ -1489,10 +1455,8 @@ gN YY ai je -sa "} -(16,1,1) = {" -sa +(15,1,1) = {" je ai do @@ -1516,10 +1480,8 @@ gN Px ai je -sa "} -(17,1,1) = {" -sa +(16,1,1) = {" je ai do @@ -1543,10 +1505,8 @@ gN Px ai je -sa "} -(18,1,1) = {" -sa +(17,1,1) = {" je ai dy @@ -1570,10 +1530,8 @@ gN Px ai je -sa "} -(19,1,1) = {" -sa +(18,1,1) = {" je bl do @@ -1597,10 +1555,8 @@ gN Px bl je -sa "} -(20,1,1) = {" -sa +(19,1,1) = {" je bl do @@ -1624,10 +1580,8 @@ XU Px bl Zr -sa "} -(21,1,1) = {" -sa +(20,1,1) = {" je bl do @@ -1651,10 +1605,8 @@ Yn Px bl Zz -sa "} -(22,1,1) = {" -sa +(21,1,1) = {" je bl Bv @@ -1678,10 +1630,8 @@ Yn UI bl je -sa "} -(23,1,1) = {" -sa +(22,1,1) = {" je bl do @@ -1705,10 +1655,8 @@ Yz Px bl je -sa "} -(24,1,1) = {" -sa +(23,1,1) = {" je bl do @@ -1732,10 +1680,8 @@ YJ Px bl ZD -sa "} -(25,1,1) = {" -sa +(24,1,1) = {" ac bl do @@ -1759,10 +1705,8 @@ gN Px bl je -sa "} -(26,1,1) = {" -sa +(25,1,1) = {" ae ai do @@ -1786,10 +1730,8 @@ gN Px ai je -sa "} -(27,1,1) = {" -sa +(26,1,1) = {" je ai do @@ -1813,10 +1755,8 @@ gN Zi ai je -sa "} -(28,1,1) = {" -sa +(27,1,1) = {" je ai do @@ -1840,10 +1780,8 @@ gN Px ai je -sa "} -(29,1,1) = {" -sa +(28,1,1) = {" je ai dt @@ -1867,10 +1805,8 @@ gN YY ai je -sa "} -(30,1,1) = {" -sa +(29,1,1) = {" je ai do @@ -1894,10 +1830,8 @@ gN Px ai je -sa "} -(31,1,1) = {" -sa +(30,1,1) = {" je ai do @@ -1921,10 +1855,8 @@ ig Px ai je -sa "} -(32,1,1) = {" -sa +(31,1,1) = {" je ai do @@ -1948,10 +1880,8 @@ ig Px ai je -sa "} -(33,1,1) = {" -sa +(32,1,1) = {" je ai do @@ -1975,10 +1905,8 @@ gN Px ai je -sa "} -(34,1,1) = {" -sa +(33,1,1) = {" je ai do @@ -2002,13 +1930,11 @@ YU Px ai je -sa "} -(35,1,1) = {" -sa +(34,1,1) = {" je ai -bl +Zq ai ai Bf @@ -2026,13 +1952,11 @@ Bf Bf ai ai -bl +Gw ai je -sa "} -(36,1,1) = {" -sa +(35,1,1) = {" je ai cR @@ -2056,10 +1980,8 @@ gC cR ai je -sa "} -(37,1,1) = {" -sa +(36,1,1) = {" je aE cA @@ -2083,10 +2005,8 @@ gN cA aE je -sa "} -(38,1,1) = {" -sa +(37,1,1) = {" je ai fH @@ -2110,10 +2030,8 @@ gN fH ai je -sa "} -(39,1,1) = {" -sa +(38,1,1) = {" je ai ai @@ -2137,32 +2055,4 @@ ai ai ai je -sa -"} -(40,1,1) = {" -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa -sa "} diff --git a/_maps/deathmatch/meta_brig.dmm b/_maps/deathmatch/meta_brig.dmm index 208b2c994737d..e286e3b9df4d8 100644 --- a/_maps/deathmatch/meta_brig.dmm +++ b/_maps/deathmatch/meta_brig.dmm @@ -449,20 +449,6 @@ }, /turf/open/floor/iron/white, /area/deathmatch) -"hS" = ( -/obj/structure/table/wood, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = 30 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 - }, -/turf/open/floor/carpet, -/area/deathmatch) "hY" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -1611,6 +1597,16 @@ }, /turf/open/indestructible/hotelwood, /area/deathmatch) +"xT" = ( +/obj/structure/chair/stool/directional/east, +/obj/effect/turf_decal/trimline/red/warning{ + dir = 4 + }, +/obj/machinery/flasher/directional/north{ + id = "visitorflash" + }, +/turf/open/floor/iron, +/area/deathmatch) "yy" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 @@ -1629,9 +1625,6 @@ }, /turf/open/indestructible/dark, /area/deathmatch) -"yN" = ( -/turf/cordon, -/area/template_noop) "yO" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -2113,6 +2106,14 @@ /obj/machinery/light/directional/east, /turf/open/indestructible, /area/deathmatch) +"Ff" = ( +/obj/machinery/computer/security/telescreen/prison/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/indestructible, +/area/deathmatch) "Fi" = ( /turf/template_noop, /area/space) @@ -2325,6 +2326,14 @@ }, /turf/open/indestructible/dark, /area/deathmatch) +"Ic" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair/stool/directional/east, +/obj/effect/turf_decal/trimline/red/warning{ + dir = 4 + }, +/turf/open/floor/iron, +/area/deathmatch) "Ik" = ( /obj/effect/turf_decal/trimline/red/filled/corner, /turf/open/indestructible, @@ -2548,6 +2557,15 @@ }, /turf/open/indestructible, /area/deathmatch) +"KE" = ( +/obj/structure/table/wood, +/obj/machinery/computer/security/telescreen/prison/directional/north, +/obj/item/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/carpet, +/area/deathmatch) "KO" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -2879,20 +2897,6 @@ /obj/structure/cable, /turf/open/indestructible, /area/deathmatch) -"PV" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - dir = 1; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = -30 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/indestructible, -/area/deathmatch) "Qd" = ( /obj/structure/table, /obj/item/clothing/glasses/sunglasses{ @@ -3629,9 +3633,9 @@ IJ Yh Yh Yh -yN -yN -yN +xT +YW +Ic IJ IJ IJ @@ -4392,7 +4396,7 @@ vt CS bA GU -PV +Ff XK XK XI @@ -4511,7 +4515,7 @@ Ik Os mE Yh -hS +KE FY dp Pt diff --git a/_maps/deathmatch/ragecage.dmm b/_maps/deathmatch/ragecage.dmm index b5871e89c24f1..a96ab76b53829 100644 --- a/_maps/deathmatch/ragecage.dmm +++ b/_maps/deathmatch/ragecage.dmm @@ -208,31 +208,8 @@ /obj/item/storage/toolbox/mechanical/old, /turf/open/indestructible/plating, /area/deathmatch) -"Z" = ( -/turf/cordon, -/area/deathmatch) (1,1,1) = {" -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -"} -(2,1,1) = {" -Z G G H @@ -248,10 +225,8 @@ G H G G -Z "} -(3,1,1) = {" -Z +(2,1,1) = {" G p u @@ -267,10 +242,8 @@ U U f G -Z "} -(4,1,1) = {" -Z +(3,1,1) = {" G U B @@ -286,10 +259,8 @@ V V X G -Z "} -(5,1,1) = {" -Z +(4,1,1) = {" G U L @@ -305,10 +276,8 @@ A g U G -Z "} -(6,1,1) = {" -Z +(5,1,1) = {" G U d @@ -324,10 +293,8 @@ U x U G -Z "} -(7,1,1) = {" -Z +(6,1,1) = {" G X d @@ -343,10 +310,8 @@ U x U q -Z "} -(8,1,1) = {" -Z +(7,1,1) = {" G U d @@ -362,10 +327,8 @@ U R U G -Z "} -(9,1,1) = {" -Z +(8,1,1) = {" G U d @@ -381,10 +344,8 @@ U R U o -Z "} -(10,1,1) = {" -Z +(9,1,1) = {" G D d @@ -400,10 +361,8 @@ t R D o -Z "} -(11,1,1) = {" -Z +(10,1,1) = {" G U d @@ -419,10 +378,8 @@ U R U o -Z "} -(12,1,1) = {" -Z +(11,1,1) = {" G I d @@ -438,10 +395,8 @@ U R U G -Z "} -(13,1,1) = {" -Z +(12,1,1) = {" G U d @@ -457,10 +412,8 @@ i R I q -Z "} -(14,1,1) = {" -Z +(13,1,1) = {" G U d @@ -476,10 +429,8 @@ M R U G -Z "} -(15,1,1) = {" -Z +(14,1,1) = {" G U z @@ -495,10 +446,8 @@ P K U G -Z "} -(16,1,1) = {" -Z +(15,1,1) = {" G U m @@ -514,10 +463,8 @@ m m U G -Z "} -(17,1,1) = {" -Z +(16,1,1) = {" G f U @@ -533,10 +480,8 @@ U U f G -Z "} -(18,1,1) = {" -Z +(17,1,1) = {" G G H @@ -552,24 +497,4 @@ G H G G -Z -"} -(19,1,1) = {" -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z -Z "} diff --git a/_maps/deathmatch/ragin_mages.dmm b/_maps/deathmatch/ragin_mages.dmm index 8c42ef8665a18..3dcdb966d1147 100644 --- a/_maps/deathmatch/ragin_mages.dmm +++ b/_maps/deathmatch/ragin_mages.dmm @@ -761,11 +761,8 @@ /turf/open/floor/engine/cult, /area/deathmatch/teleport) "Xv" = ( +/obj/structure/railing, /obj/structure/railing{ - layer = 3.1 - }, -/obj/structure/railing{ - layer = 3.1; dir = 1 }, /turf/open/floor/engine/cult, diff --git a/_maps/deathmatch/underground_arena.dmm b/_maps/deathmatch/underground_arena.dmm index d407234f0ab2f..4d776acb0b416 100644 --- a/_maps/deathmatch/underground_arena.dmm +++ b/_maps/deathmatch/underground_arena.dmm @@ -473,9 +473,6 @@ }, /turf/open/indestructible/vault, /area/deathmatch) -"En" = ( -/turf/cordon, -/area/deathmatch) "EA" = ( /obj/effect/landmark/deathmatch_player_spawn, /turf/open/indestructible/dark/smooth_large, @@ -889,41 +886,6 @@ /area/deathmatch) (1,1,1) = {" -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -"} -(2,1,1) = {" -En qa qa qa @@ -954,10 +916,8 @@ qa qa qa qa -En "} -(3,1,1) = {" -En +(2,1,1) = {" qa aI aI @@ -988,10 +948,8 @@ aI aI aI qa -En "} -(4,1,1) = {" -En +(3,1,1) = {" qa aI aI @@ -1022,10 +980,8 @@ aI aI aI qa -En "} -(5,1,1) = {" -En +(4,1,1) = {" qa aI aI @@ -1056,10 +1012,8 @@ qa aI aI qa -En "} -(6,1,1) = {" -En +(5,1,1) = {" qa aI aI @@ -1090,10 +1044,8 @@ qa aI aI qa -En "} -(7,1,1) = {" -En +(6,1,1) = {" qa aI aI @@ -1124,10 +1076,8 @@ qa aI aI qa -En "} -(8,1,1) = {" -En +(7,1,1) = {" qa aI aI @@ -1158,10 +1108,8 @@ qa aI aI qa -En "} -(9,1,1) = {" -En +(8,1,1) = {" qa aI aI @@ -1192,10 +1140,8 @@ qa aI aI qa -En "} -(10,1,1) = {" -En +(9,1,1) = {" qa aI aI @@ -1226,10 +1172,8 @@ qa aI aI qa -En "} -(11,1,1) = {" -En +(10,1,1) = {" qa aI aI @@ -1260,10 +1204,8 @@ qa aI aI qa -En "} -(12,1,1) = {" -En +(11,1,1) = {" qa aI aI @@ -1294,10 +1236,8 @@ qa aI aI qa -En "} -(13,1,1) = {" -En +(12,1,1) = {" qa aI aI @@ -1328,10 +1268,8 @@ qa aI aI qa -En "} -(14,1,1) = {" -En +(13,1,1) = {" qa aI aI @@ -1362,10 +1300,8 @@ fX aI aI qa -En "} -(15,1,1) = {" -En +(14,1,1) = {" qa aI aI @@ -1396,10 +1332,8 @@ xK aI aI qa -En "} -(16,1,1) = {" -En +(15,1,1) = {" qa aI aI @@ -1430,10 +1364,8 @@ sd aI aI qa -En "} -(17,1,1) = {" -En +(16,1,1) = {" qa aI aI @@ -1464,10 +1396,8 @@ aI aI aI qa -En "} -(18,1,1) = {" -En +(17,1,1) = {" qa aI aI @@ -1498,10 +1428,8 @@ aI aI aI qa -En "} -(19,1,1) = {" -En +(18,1,1) = {" qa aI aI @@ -1532,10 +1460,8 @@ aI aI aI qa -En "} -(20,1,1) = {" -En +(19,1,1) = {" qa aI aI @@ -1566,10 +1492,8 @@ mz aI aI qa -En "} -(21,1,1) = {" -En +(20,1,1) = {" qa aI aI @@ -1600,10 +1524,8 @@ qa aI aI qa -En "} -(22,1,1) = {" -En +(21,1,1) = {" qa aI aI @@ -1634,10 +1556,8 @@ qa aI aI qa -En "} -(23,1,1) = {" -En +(22,1,1) = {" qa aI aI @@ -1668,10 +1588,8 @@ qa aI aI qa -En "} -(24,1,1) = {" -En +(23,1,1) = {" qa aI aI @@ -1702,10 +1620,8 @@ qa aI aI qa -En "} -(25,1,1) = {" -En +(24,1,1) = {" qa aI aI @@ -1736,10 +1652,8 @@ xG aI aI qa -En "} -(26,1,1) = {" -En +(25,1,1) = {" qa aI aI @@ -1770,10 +1684,8 @@ xG aI aI qa -En "} -(27,1,1) = {" -En +(26,1,1) = {" qa aI aI @@ -1804,10 +1716,8 @@ qa aI aI qa -En "} -(28,1,1) = {" -En +(27,1,1) = {" qa aI aI @@ -1838,10 +1748,8 @@ qa aI aI qa -En "} -(29,1,1) = {" -En +(28,1,1) = {" qa aI aI @@ -1872,10 +1780,8 @@ aI aI aI qa -En "} -(30,1,1) = {" -En +(29,1,1) = {" qa aI aI @@ -1906,10 +1812,8 @@ aI aI aI qa -En "} -(31,1,1) = {" -En +(30,1,1) = {" qa qa qa @@ -1940,39 +1844,4 @@ qa qa qa qa -En -"} -(32,1,1) = {" -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En -En "} diff --git a/_maps/map_files/Basketball/ass_blast_usa.dmm b/_maps/map_files/Basketball/ass_blast_usa.dmm index 4b3354ba6495d..baeb945de7678 100644 --- a/_maps/map_files/Basketball/ass_blast_usa.dmm +++ b/_maps/map_files/Basketball/ass_blast_usa.dmm @@ -102,9 +102,7 @@ "jj" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/cooking_to_serve_man, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, +/obj/item/reagent_containers/condiment/enzyme, /obj/item/food/bun, /obj/item/food/bun, /obj/item/food/bun, diff --git a/_maps/map_files/Basketball/beach_bums.dmm b/_maps/map_files/Basketball/beach_bums.dmm index 517e70f2b630a..d13215d7ca835 100644 --- a/_maps/map_files/Basketball/beach_bums.dmm +++ b/_maps/map_files/Basketball/beach_bums.dmm @@ -459,7 +459,6 @@ pixel_y = 13 }, /obj/item/fishing_line{ - layer = 4; pixel_x = 6; pixel_y = 3 }, diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index e830561e58900..4f5d7d555696d 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -44,6 +44,12 @@ /obj/structure/window/spawner/directional/west, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"aaZ" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/tile/blue, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) "abh" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53,12 +59,26 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"abs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "abt" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, /obj/machinery/power/tracker, /turf/open/space/basic, /area/station/solars/aft) +"abB" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/r_wall, +/area/station/hallway/primary/port) "abJ" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -76,6 +96,14 @@ /obj/structure/sign/warning/no_smoking/circle/directional/south, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"acc" = ( +/obj/structure/kitchenspike, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "acg" = ( /obj/machinery/power/smes/engineering, /turf/open/floor/plating, @@ -91,6 +119,13 @@ }, /turf/open/space/basic, /area/space/nearstation) +"acw" = ( +/obj/machinery/griddle, +/obj/effect/turf_decal/siding{ + dir = 10 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "acJ" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -102,6 +137,16 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) +"acY" = ( +/obj/structure/table, +/obj/effect/spawner/random/food_or_drink/donkpockets{ + pixel_y = 6 + }, +/obj/effect/turf_decal/siding{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "adh" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -143,26 +188,21 @@ }, /turf/open/floor/catwalk_floor, /area/station/engineering/hallway) -"aeq" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/flora/bush/leavy/style_random, -/obj/structure/flora/bush/stalky/style_random, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/grass, -/area/station/hallway/secondary/service) -"aes" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "kitchenshutters"; - name = "Kitchen Shutters" +"aef" = ( +/obj/structure/flora/bush/flowers_yw/style_3{ + pixel_x = 5; + pixel_y = -5 }, -/obj/item/plate, -/obj/item/food/sandwich/peanut_butter_jelly, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) +/obj/structure/flora/bush/flowers_br/style_random{ + pixel_y = -5; + pixel_x = 3 + }, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/grass/Airless, +/area/station/hallway/primary/central/aft) "aeu" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -187,19 +227,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/science/genetics) -"aeN" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "aeX" = ( /obj/structure/window/spawner/directional/east, /obj/item/kirbyplants/random, @@ -209,6 +236,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/lobby) +"afr" = ( +/obj/effect/landmark/start/hangover, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "afu" = ( /obj/structure/chair/wood{ dir = 8 @@ -264,7 +299,7 @@ /area/station/medical/virology) "agp" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar/cohiba, +/obj/item/cigarette/cigar/cohiba, /turf/open/floor/carpet, /area/station/commons/dorms) "agy" = ( @@ -275,19 +310,6 @@ /obj/machinery/light/cold/directional/south, /turf/open/floor/plating, /area/station/science/ordnance/storage) -"agC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/sign/departments/vault/directional/south, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) -"agF" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/chair/sofa/bamboo/right{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/chapel) "agI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ @@ -314,6 +336,54 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark/small, /area/station/engineering/storage_shared) +"agY" = ( +/obj/machinery/door/airlock/engineering{ + name = "Main Engineering" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/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/catwalk_floor, +/area/station/engineering/break_room) +"ahc" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/stone, +/area/station/service/chapel) +"ahf" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"ahl" = ( +/obj/structure/flora/tree/jungle/style_5, +/turf/open/floor/grass, +/area/station/service/chapel) +"ahr" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/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/greater) +"aht" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "ahu" = ( /obj/effect/turf_decal/siding/blue{ dir = 1 @@ -353,15 +423,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) -"aiE" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "aiK" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -378,6 +439,22 @@ }, /turf/open/floor/engine/airless, /area/station/engineering/atmos) +"ajx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/button/door/directional/north{ + id = "Xenolab"; + name = "Test Chamber Blast Doors"; + pixel_x = 26; + pixel_y = -2; + req_access = list("xenobiology") + }, +/obj/machinery/atmospherics/components/binary/pump, +/turf/open/floor/iron/white/side{ + dir = 8 + }, +/area/station/science/xenobiology) "ako" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -442,9 +519,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"akZ" = ( -/turf/closed/mineral/random/stationside, -/area/space) "alb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -458,16 +532,6 @@ /obj/item/pen, /turf/open/floor/carpet/lone, /area/station/service/chapel/office) -"alh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1.5-PNexus-Vault"; - location = "1.0-Security-PNexus" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "all" = ( /obj/structure/table/greyscale, /obj/item/folder/yellow{ @@ -499,6 +563,21 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/maintenance/solars/starboard/aft) +"amh" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"aml" = ( +/turf/open/floor/stone, +/area/station/service/bar) "amE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -523,14 +602,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"amI" = ( -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "amV" = ( /obj/structure/lattice/catwalk, /obj/structure/railing, @@ -546,6 +617,22 @@ }, /turf/open/floor/wood/tile, /area/station/command/bridge) +"ani" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/service/chapel) +"anE" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "anJ" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -554,6 +641,17 @@ /obj/machinery/chem_heater/withbuffer, /turf/open/floor/iron, /area/station/medical/chemistry) +"anU" = ( +/obj/structure/flora/bush/flowers_pp/style_2, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/service/chapel) +"anX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/ai_monitored/command/nuke_storage) "aoa" = ( /obj/machinery/telecomms/server/presets/supply, /turf/open/floor/circuit, @@ -572,15 +670,6 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"aoy" = ( -/obj/structure/table/wood, -/obj/machinery/camera/directional/south{ - c_tag = "Atmospherics - South" - }, -/obj/item/stack/cable_coil/five, -/obj/effect/turf_decal/siding/wideplating_new/terracotta, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) "aoz" = ( /obj/structure/closet/secure_closet/captains, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -589,14 +678,6 @@ /obj/item/storage/lockbox/medal, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/captain/private) -"aoJ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/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/maintenance/central/greater) "aoL" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -610,13 +691,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"apj" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer5{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space) "apk" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/dark_red{ @@ -643,6 +717,18 @@ /obj/structure/cable, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) +"aps" = ( +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/large/style_random{ + pixel_x = -17; + pixel_y = 2 + }, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/flowers_yw, +/obj/structure/flora/bush/lavendergrass, +/turf/open/floor/grass, +/area/station/service/hydroponics) "apB" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -668,6 +754,21 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"aqG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=16.0-CentralFore-CentralPort"; + location = "15.0-CentralStarboard-CentralFore" + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "aqV" = ( /obj/machinery/door/airlock/glass, /obj/machinery/door/firedoor, @@ -684,6 +785,16 @@ /obj/structure/broken_flooring/singular/directional/south, /turf/open/floor/plating, /area/station/hallway/secondary/dock) +"arg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "ark" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/blue/full, @@ -757,25 +868,20 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/white, /area/station/medical/paramedic) -"asn" = ( +"asw" = ( +/obj/structure/extinguisher_cabinet/directional/north, /obj/effect/turf_decal/siding/wood{ - dir = 4 + dir = 5 }, -/obj/structure/chair/pew/right{ - dir = 4 +/turf/open/floor/stone, +/area/station/service/bar) +"asV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, -/area/station/service/theater) -"asN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/multi_tile/public/glass{ - name = "Diner" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half, -/area/station/service/cafeteria) +/area/station/service/chapel) "asZ" = ( /obj/structure/disposalpipe/trunk, /obj/structure/disposaloutlet{ @@ -843,10 +949,14 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"atM" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +"atS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "atW" = ( /turf/open/floor/iron/chapel{ dir = 8 @@ -868,11 +978,25 @@ /obj/machinery/light/small/dim/directional/south, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"aul" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/dark_red{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "aus" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/smooth, /area/station/commons/storage/tools) +"auF" = ( +/obj/item/radio/intercom/directional/west, +/turf/open/floor/glass, +/area/station/hallway/primary/central/aft) "auG" = ( /obj/structure/chair{ dir = 1 @@ -888,6 +1012,17 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/fore) +"auP" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/east, +/obj/structure/cable, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "auQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 4 @@ -911,6 +1046,16 @@ "ave" = ( /turf/open/space, /area/space) +"avr" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/pdapainter/research, +/obj/machinery/computer/security/telescreen/rd/directional/north, +/obj/effect/turf_decal/siding/purple{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "avB" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -942,17 +1087,59 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) +"avX" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) +"avY" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/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/plating, +/area/station/maintenance/port/greater) "awe" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 }, /turf/open/floor/tram, /area/station/security/tram) -"aws" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/half, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) +"aww" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"awz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4 + }, +/obj/effect/mapping_helpers/mail_sorting/service/kitchen, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) +"awC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "awE" = ( /obj/structure/disposalpipe/sorting/mail/flip{ dir = 8 @@ -974,14 +1161,6 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"awN" = ( -/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/landmark/start/clown, -/turf/open/floor/stone, -/area/station/service/theater) "awO" = ( /turf/open/floor/iron, /area/station/engineering/storage/tech) @@ -1004,10 +1183,26 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/misc/sandy_dirt, /area/station/hallway/secondary/entry) +"axd" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/directions/vault/directional/south{ + dir = 8 + }, +/turf/closed/wall, +/area/station/hallway/primary/central/aft) "axj" = ( /obj/item/radio/intercom/directional/east, /turf/open/floor/iron, /area/station/cargo/storage) +"axo" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/science/xenobiology) "axq" = ( /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) @@ -1035,12 +1230,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/central/lesser) -"axN" = ( -/obj/machinery/sparker/directional/north{ - id = "Xenobio" - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "axX" = ( /obj/effect/turf_decal/siding/yellow, /obj/effect/turf_decal/tile/yellow/diagonal_centre, @@ -1095,6 +1284,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"ayQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=19.0-Engineering-CentralPort"; + location = "18.0-ToolStorage-Engineering" + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "ayR" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 1 @@ -1189,6 +1396,20 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"azV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/textured_half, +/area/station/security/brig/entrance) "azZ" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/iron/white/small, @@ -1211,6 +1432,16 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/dark, /area/station/security/office) +"aAp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/spawner/random/structure/steam_vent, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "aAD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -1266,6 +1497,16 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"aBo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "aBu" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -1285,16 +1526,14 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/medical/morgue) -"aBy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"aBB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "aBK" = ( /obj/structure/dresser, /obj/effect/turf_decal/siding/wood{ @@ -1326,11 +1565,24 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry) +"aCz" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/machinery/light/small/directional/south, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/grass, +/area/station/service/chapel) "aCM" = ( /obj/effect/spawner/random/structure/crate_abandoned, /obj/structure/alien/weeds, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) +"aCN" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "aCO" = ( /obj/structure/sign/directions/evac{ dir = 8 @@ -1357,6 +1609,16 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"aDJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/directions/vault/directional/west{ + dir = 2 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "aEa" = ( /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/tram, @@ -1390,17 +1652,18 @@ dir = 8 }, /area/station/hallway/primary/central/fore) -"aEl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"aEo" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/landmark/navigate_destination/teleporter, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "aEq" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -1441,6 +1704,16 @@ /obj/machinery/shower/directional/west, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine) +"aEU" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Public Shrine" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/hallway/primary/central/fore) "aFh" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -1486,6 +1759,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) +"aFV" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/large/style_2, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "aFY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1596,16 +1877,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/grass, /area/station/security/prison/garden) -"aHS" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "aIb" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -1620,6 +1891,15 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"aIr" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/right/directional/south, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "aIu" = ( /obj/structure/bookcase/random/reference, /obj/machinery/camera/autoname/directional/north, @@ -1645,6 +1925,21 @@ dir = 8 }, /area/station/commons/fitness/locker_room) +"aIS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/plaque{ + icon_state = "L8"; + pixel_y = -15 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/landmark/observer_start, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "aIW" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -1753,6 +2048,9 @@ /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/security/armory) +"aLm" = ( +/turf/closed/wall/rust, +/area/station/cargo/drone_bay) "aLr" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -1782,6 +2080,33 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"aLB" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/camera/autoname/directional/north, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 5 + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) +"aLC" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/light/cold/directional/east, +/obj/machinery/power/apc/auto_name/directional/east{ + areastring = "/area/station/science/ordnance/burnchamber" + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) +"aLS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet/lone, +/area/station/service/chapel/office) "aLU" = ( /obj/structure/chair{ dir = 4 @@ -1816,6 +2141,16 @@ }, /turf/open/space/basic, /area/space/nearstation) +"aNj" = ( +/obj/machinery/door/airlock/public{ + name = "Arcade" + }, +/obj/effect/turf_decal/siding/thinplating, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron/textured_half, +/area/station/hallway/primary/central/fore) "aNk" = ( /obj/machinery/suit_storage_unit/security, /turf/open/floor/iron/small, @@ -1828,6 +2163,19 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/dark/small, /area/station/medical/storage) +"aNm" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/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/unres{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/hallway/primary/central/fore) "aNJ" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/north{ @@ -1875,6 +2223,17 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"aOh" = ( +/obj/machinery/status_display/ai/directional/south, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) "aOz" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -1904,12 +2263,18 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) -"aPj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +"aPo" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/turf/open/floor/iron/smooth, -/area/station/cargo/drone_bay) +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/effect/spawner/random/food_or_drink/donuts, +/turf/open/floor/plating, +/area/station/service/kitchen) "aPx" = ( /obj/structure/chair{ dir = 1 @@ -1943,6 +2308,13 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"aPK" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "aPM" = ( /obj/structure/chair/sofa/bench/right, /obj/machinery/firealarm/directional/north, @@ -1989,6 +2361,12 @@ /obj/effect/turf_decal/siding/wideplating/dark/corner, /turf/open/floor/iron, /area/station/security) +"aQH" = ( +/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/central/greater) "aRa" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -2041,6 +2419,14 @@ /obj/effect/turf_decal/trimline/neutral/end, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"aRS" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/computer/security/telescreen/turbine/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/smooth, +/area/station/maintenance/disposal/incinerator) "aRT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/newscaster/directional/west, @@ -2075,18 +2461,23 @@ /obj/structure/toilet{ dir = 4 }, +/obj/machinery/light/small/directional/west, +/obj/structure/sign/poster/official/random/directional/west, /obj/machinery/button/door/directional/north{ + id = "Toilet1"; + specialfunctions = 4; name = "Lock Control"; - id = "Toilet1" + normaldoorcontrol = 1 }, -/obj/machinery/light/small/directional/west, -/obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) "aTc" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"aTg" = ( +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "aTn" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/maintenance, @@ -2102,12 +2493,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/dark, /area/station/security/office) -"aTr" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "aTx" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -2117,6 +2502,15 @@ }, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"aTz" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "aTG" = ( /obj/structure/table/reinforced, /obj/machinery/requests_console/directional/east{ @@ -2223,14 +2617,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/prison/garden) -"aWw" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/flora/bush/sunny/style_random, -/obj/machinery/light/small/directional/west, -/turf/open/floor/grass, -/area/station/service/chapel) "aWx" = ( /obj/effect/spawner/structure/window/reinforced, /obj/effect/turf_decal/stripes/corner{ @@ -2251,6 +2637,16 @@ }, /turf/open/floor/iron/small, /area/station/engineering/break_room) +"aWC" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/spawner/random/food_or_drink/salad{ + pixel_y = 6 + }, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "aWG" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -2259,12 +2655,30 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/small, /area/station/engineering/supermatter/room) +"aXk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/chair/comfy/brown{ + buildstackamount = 0; + color = "#c45c57"; + dir = 8 + }, +/turf/open/floor/iron/grimy, +/area/station/service/library) "aXy" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 1 }, /turf/open/floor/iron/smooth, /area/station/engineering/atmos/office) +"aXC" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/closed/wall, +/area/station/hallway/primary/central/fore) "aXI" = ( /turf/closed/wall/r_wall, /area/station/science/lobby) @@ -2308,6 +2722,18 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) +"aYD" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/end, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/end, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "aYR" = ( /obj/structure/broken_flooring/singular/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2327,6 +2753,18 @@ }, /turf/open/floor/plating/rust, /area/station/engineering/supermatter/room) +"aZh" = ( +/obj/machinery/modular_computer/preset/curator{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/station/service/library) +"aZj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "aZu" = ( /obj/machinery/power/emitter{ dir = 4 @@ -2384,6 +2822,22 @@ /obj/structure/alien/weeds, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) +"baJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"baO" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/spawner/random/entertainment/arcade{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "baP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2413,6 +2867,14 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/smooth, /area/station/engineering/atmos/office) +"bbI" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/landmark/navigate_destination/bar, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "bbK" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, @@ -2449,6 +2911,13 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white/small, /area/station/medical/medbay/lobby) +"bcC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "bcK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2495,6 +2964,28 @@ /obj/machinery/meter, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"bdk" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L11"; + pixel_y = -15 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"bds" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "bdN" = ( /obj/structure/falsewall, /turf/open/floor/plating, @@ -2521,26 +3012,45 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"beH" = ( -/obj/machinery/bookbinder, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/wood/parquet, -/area/station/service/library) "beK" = ( /turf/open/floor/iron/smooth, /area/station/security/evidence) -"beR" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/spawner/random/entertainment/arcade, -/obj/effect/decal/cleanable/cobweb/cobweb2, +"beN" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) +/area/station/hallway/primary/port) +"beV" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/camera/autoname/directional/west, +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "bfe" = ( /obj/structure/disposalpipe/segment, /obj/machinery/camera/autoname/directional/west, /obj/machinery/light/warm/directional/west, /turf/open/floor/iron/white, /area/station/science/cytology) +"bfm" = ( +/obj/structure/flora/grass/jungle/b/style_2, +/turf/open/misc/dirt/station, +/area/station/service/chapel) "bfE" = ( /obj/effect/turf_decal/siding/green/end{ dir = 1 @@ -2548,19 +3058,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/herringbone, /area/station/service/abandoned_gambling_den/gaming) -"bfI" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/brown/full, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 1 - }, -/obj/machinery/requests_console/directional/south{ - department = "Bar"; - name = "Bar Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "bgg" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -2592,6 +3089,18 @@ }, /turf/open/floor/iron/dark/small, /area/station/engineering/lobby) +"bgx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/vault{ + name = "Vault" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/access/all/supply/vault, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark/herringbone, +/area/station/ai_monitored/command/nuke_storage) "bgy" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -2620,11 +3129,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"bgK" = ( -/obj/structure/sink/kitchen/directional/east, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "bgQ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -2682,6 +3186,21 @@ /obj/structure/cable/multilayer, /turf/open/floor/plating, /area/station/science/xenobiology) +"bje" = ( +/obj/structure/chair/sofa/bench{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) +"bjh" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/station/cargo/boutique) "bji" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -2708,15 +3227,6 @@ /obj/structure/marker_beacon/burgundy, /turf/open/space/basic, /area/space/nearstation) -"bjV" = ( -/obj/structure/chair/plastic{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "bjZ" = ( /turf/open/floor/tram, /area/station/security/tram) @@ -2816,15 +3326,6 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"blq" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "bly" = ( /obj/structure/closet/crate/miningcar, /turf/open/floor/iron, @@ -2880,13 +3381,6 @@ /mob/living/basic/bot/medbot/autopatrol, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"bmM" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "bmN" = ( /obj/structure/railing{ dir = 4 @@ -2899,6 +3393,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/stairs, /area/station/maintenance/department/engine/atmos) +"bmR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=21.0-Bar-Porthall"; + location = "20.0-CentralPort-Bar" + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "bmT" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -2906,6 +3416,18 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/tram, /area/station/security/tram) +"bnn" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "bno" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2944,6 +3466,23 @@ /obj/machinery/suit_storage_unit/cmo, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) +"bnQ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/rock/pile/jungle/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) +"bnU" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/aft) "bnV" = ( /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -3000,6 +3539,13 @@ /obj/machinery/light/small/broken/directional/west, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"boJ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/bush/jungle/a/style_3, +/turf/open/misc/dirt/station, +/area/station/service/chapel) "boK" = ( /obj/effect/turf_decal/stripes/asteroid/end{ dir = 1 @@ -3163,10 +3709,39 @@ }, /turf/open/space/basic, /area/space/nearstation) +"brj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/service/chapel/storage) +"brl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "bro" = ( /obj/structure/frame/machine, /turf/open/floor/tram, /area/station/security/tram) +"brw" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central/lesser) "bry" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical{ @@ -3282,6 +3857,11 @@ /obj/item/airlock_painter/decal, /turf/open/floor/iron/smooth, /area/station/cargo/sorting) +"btJ" = ( +/turf/open/floor/iron/white/corner{ + dir = 8 + }, +/area/station/science/xenobiology) "btV" = ( /obj/effect/turf_decal/siding/wideplating, /obj/structure/railing/corner, @@ -3290,6 +3870,17 @@ }, /turf/open/floor/wood, /area/station/engineering/main) +"btY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "bua" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -3297,6 +3888,25 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) +"buc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/stool/bamboo, +/turf/open/floor/carpet/lone, +/area/station/service/chapel/office) +"buf" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security) +"buv" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/service/chapel) "buA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3315,12 +3925,28 @@ /obj/machinery/bluespace_vendor/directional/south, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"buU" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/five, +/obj/item/stack/cable_coil/five, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/item/radio/intercom/directional/east, +/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "buV" = ( /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/medical/chemistry) +"bva" = ( +/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/central/greater) "bvh" = ( /obj/structure/chair/sofa/bench/right{ dir = 8 @@ -3356,6 +3982,15 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) +"bwP" = ( +/obj/effect/turf_decal/siding/wood{ + 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/wood/tile, +/area/station/service/bar) "bwY" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -3372,7 +4007,7 @@ /obj/structure/rack, /obj/item/weldingtool/mini, /obj/item/tank/internals/emergency_oxygen/empty, -/obj/item/clothing/mask/cigarette/rollie, +/obj/item/cigarette/rollie, /turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/central/lesser) "bxs" = ( @@ -3397,13 +4032,6 @@ dir = 8 }, /area/station/engineering/main) -"bxA" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/neutral/end{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "bxI" = ( /obj/structure/cable, /obj/structure/disposalpipe/sorting/mail/flip{ @@ -3431,6 +4059,17 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/medical/morgue) +"byv" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/firealarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "byx" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -3464,6 +4103,17 @@ /obj/effect/gibspawner, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"bzj" = ( +/obj/machinery/rnd/production/techfab/department/service, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "bzZ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, @@ -3477,6 +4127,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/textured_half, /area/station/commons/fitness/recreation/entertainment) +"bAi" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/engine, +/area/station/science/xenobiology) "bAr" = ( /obj/effect/spawner/random/trash, /turf/open/floor/iron, @@ -3493,6 +4151,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) +"bAR" = ( +/obj/structure/disposalpipe/segment, +/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, +/area/station/maintenance/central/greater) "bAT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/wood{ @@ -3548,7 +4213,7 @@ /obj/item/stock_parts/power_store/cell/crap{ pixel_y = 5 }, -/obj/item/clothing/mask/cigarette/pipe/cobpipe{ +/obj/item/cigarette/pipe/cobpipe{ pixel_x = 1; pixel_y = -2 }, @@ -3630,12 +4295,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/science/lower) -"bCX" = ( -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) "bCZ" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -3707,6 +4366,16 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"bEb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "bEd" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/mapping_helpers/broken_floor, @@ -3731,14 +4400,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron, /area/station/science/lower) -"bED" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/item/kirbyplants/random, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "bEN" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -3755,6 +4416,13 @@ /obj/effect/spawner/structure/window/reinforced/shuttle, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"bEY" = ( +/obj/structure/flora/tree/jungle/style_2, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "bFh" = ( /obj/structure/rack, /obj/item/binoculars, @@ -3834,6 +4502,13 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/construction) +"bGq" = ( +/obj/machinery/porta_turret/ai, +/obj/machinery/computer/security/telescreen/minisat/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/iron/smooth, +/area/station/ai_monitored/turret_protected/aisat_interior) "bGD" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/red/line{ @@ -3900,6 +4575,34 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/carpet/blue, /area/station/cargo/boutique) +"bIc" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "bIg" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/camera/directional/south{ @@ -3912,6 +4615,51 @@ /obj/structure/cable, /turf/open/floor/iron/smooth_large, /area/station/engineering/main) +"bIl" = ( +/obj/item/holosign_creator/robot_seat/restaurant, +/obj/item/book/manual/chef_recipes, +/obj/item/stack/package_wrap{ + pixel_y = 2 + }, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/obj/machinery/light_switch/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/obj/machinery/light_switch/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/deepfryer, +/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/turf_decal/siding/end{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "bIp" = ( /obj/structure/flora/bush/large/style_random{ pixel_x = -28; @@ -3922,11 +4670,30 @@ /obj/structure/window/spawner/directional/south, /turf/open/misc/sandy_dirt, /area/station/science/research) +"bIJ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/station/service/chapel) +"bIN" = ( +/obj/structure/chair/stool/bar/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/hallway/primary/central/aft) "bJn" = ( /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/fore/greater) +"bJr" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/engine, +/area/station/science/xenobiology) "bJw" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/singular/directional/south, @@ -3957,6 +4724,16 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"bJY" = ( +/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 + }, +/obj/effect/spawner/random/trash, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "bJZ" = ( /obj/structure/chair/stool/directional/south, /turf/open/floor/iron, @@ -3973,6 +4750,11 @@ /obj/effect/turf_decal/siding/wideplating, /turf/open/floor/wood, /area/station/engineering/main) +"bKv" = ( +/obj/structure/flora/tree/jungle/style_4, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/station/service/chapel) "bKz" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -4004,22 +4786,6 @@ }, /turf/open/floor/iron/small, /area/station/security/tram) -"bKP" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/lighter{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/item/lighter{ - pixel_x = -8; - pixel_y = -2 - }, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "bKU" = ( /obj/item/toy/crayon/spraycan{ pixel_x = -7 @@ -4043,12 +4809,26 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"bLX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "bMc" = ( /obj/structure/table, /obj/item/rcl/pre_loaded, /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/commons/storage/art) +"bMk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/stone, +/area/station/service/bar) "bMt" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -4056,12 +4836,38 @@ }, /turf/open/floor/iron, /area/station/engineering/storage/tech) +"bMV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "bMW" = ( /obj/machinery/iv_drip, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/light/small/directional/west, /turf/open/floor/iron/showroomfloor, /area/station/medical/virology) +"bMY" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/landmark/start/botanist, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "bNd" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/modular_computer/preset/id{ @@ -4087,10 +4893,27 @@ "bNq" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/engine/atmos) +"bNr" = ( +/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/iron/grimy, +/area/station/service/library) "bNu" = ( /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"bNL" = ( +/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/south, +/obj/machinery/status_display/ai/directional/south, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "bNP" = ( /obj/structure/cable, /obj/structure/broken_flooring/pile/directional/east, @@ -4131,36 +4954,13 @@ /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"bOg" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/effect/turf_decal/siding/wideplating/dark/corner{ +"bOv" = ( +/obj/structure/flora/bush/large/style_3, +/obj/effect/turf_decal/weather/dirt{ dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"bOl" = ( -/obj/structure/flora/bush/flowers_br/style_random, /turf/open/floor/grass, /area/station/service/chapel) -"bOp" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/primary/central/fore) "bON" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4176,13 +4976,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/misc/sandy_dirt, /area/station/hallway/secondary/entry) -"bOV" = ( -/obj/machinery/newscaster/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) "bOY" = ( /obj/structure/sign/poster/random/directional/east, /obj/machinery/conveyor{ @@ -4194,6 +4987,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, /turf/open/floor/iron, /area/station/engineering/atmos) +"bPV" = ( +/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/maintenance/central/greater) "bQc" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -4205,6 +5005,13 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/security/office) +"bQh" = ( +/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, +/turf/open/floor/iron/small, +/area/station/service/bar) "bQi" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, @@ -4217,6 +5024,17 @@ /obj/machinery/computer/records/security, /turf/open/floor/wood/tile, /area/station/command/bridge) +"bQy" = ( +/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/dark_red/half/contrasted{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/isolation/directional/east, +/obj/machinery/photobooth/security, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "bQQ" = ( /obj/effect/turf_decal/tile/neutral, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4249,11 +5067,26 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"bRl" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "bRm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/alien/weeds, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"bRp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "bRr" = ( /obj/structure/chair{ dir = 1; @@ -4267,6 +5100,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs/auxiliary) +"bRK" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "bRN" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -4274,6 +5113,17 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/tram, /area/station/maintenance/port/aft) +"bRP" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "bSm" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/structure/disposalpipe/segment{ @@ -4319,6 +5169,16 @@ }, /turf/open/space/basic, /area/space/nearstation) +"bTo" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_yw, +/obj/machinery/airalarm/directional/north, +/obj/machinery/camera/directional/north, +/turf/open/floor/grass, +/area/station/service/chapel) "bTE" = ( /obj/effect/turf_decal/tile/brown/half, /obj/effect/turf_decal/tile/brown/half{ @@ -4339,19 +5199,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) -"bUf" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) "bUr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/blue{ @@ -4360,20 +5207,6 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"bUt" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/primary/central/fore) "bUv" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -4408,20 +5241,17 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/tram, /area/station/security/tram) -"bVv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 +"bVs" = ( +/obj/structure/toilet{ + dir = 8 }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1.0-Security-PNexus"; - location = "23.2-Evac-Garden" +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/iron/freezer, +/area/station/command/heads_quarters/captain/private) "bVD" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -4434,6 +5264,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/small, /area/station/security/execution/education) +"bVJ" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L13"; + pixel_y = -15 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "bVO" = ( /obj/structure/chair/stool/directional/north, /obj/effect/turf_decal/siding/red, @@ -4510,6 +5350,13 @@ }, /turf/open/space/basic, /area/space/nearstation) +"bWp" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "bWs" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -4522,6 +5369,28 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"bXi" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/maintenance{ + name = "Crematorium" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/security/brig/entrance) +"bXp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/library) "bXu" = ( /obj/item/kirbyplants/random, /obj/machinery/firealarm/directional/south, @@ -4568,6 +5437,10 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"bYh" = ( +/obj/structure/flora/bush/flowers_yw/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "bYk" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/white/small, @@ -4689,6 +5562,15 @@ }, /turf/open/floor/plating, /area/station/engineering/supermatter) +"caD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/wood, +/area/station/service/chapel/office) "caI" = ( /obj/structure/cable, /obj/effect/decal/cleanable/glass, @@ -4781,21 +5663,6 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/small, /area/station/medical/storage) -"cbT" = ( -/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/machinery/door/airlock/public/glass{ - name = "Services Corridor" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/hallway/primary/central/aft) "cbU" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 5 @@ -4864,15 +5731,6 @@ /obj/machinery/light/cold/dim/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"ccH" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/science/ordnance/testlab) "ccL" = ( /obj/structure/closet/firecloset, /obj/machinery/light_switch/directional/north, @@ -4907,7 +5765,7 @@ pixel_y = 9; pixel_x = 14 }, -/obj/item/clothing/mask/cigarette{ +/obj/item/cigarette{ pixel_y = 2 }, /turf/open/floor/iron/small, @@ -4929,6 +5787,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/smooth, /area/station/engineering/main) +"cdB" = ( +/obj/machinery/camera/directional/south, +/obj/structure/flora/bush/flowers_pp/style_2, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "cdW" = ( /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_smooth, @@ -4954,17 +5820,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark/small, /area/station/engineering/supermatter/room) -"ceE" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "ceP" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ @@ -4979,6 +5834,14 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"ceS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "cfa" = ( /obj/structure/closet/lasertag/red, /obj/effect/turf_decal/stripes/red/line{ @@ -5062,6 +5925,14 @@ "cgM" = ( /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) +"cgV" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/flora/bush/flowers_yw/style_3, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/grass, +/area/station/service/chapel) "cgZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5084,6 +5955,17 @@ /obj/effect/decal/cleanable/greenglow, /turf/open/floor/plating, /area/station/engineering/atmospherics_engine) +"chh" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "chj" = ( /obj/structure/grille, /turf/closed/wall/mineral/titanium/nodiagonal, @@ -5110,6 +5992,19 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/smooth, /area/station/engineering/supermatter/room) +"chC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/light/cold/directional/north, +/obj/machinery/firealarm/directional/north, +/obj/machinery/camera/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "chO" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -5118,11 +6013,6 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/port/aft) -"chP" = ( -/obj/machinery/deepfryer, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "chU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5132,13 +6022,16 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/security) -"cij" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) +"cii" = ( +/obj/effect/spawner/xmastree, +/obj/structure/flora/tree/jungle/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) +"cik" = ( +/obj/structure/bookcase/random, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/wood/parquet, +/area/station/service/library) "cip" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/red/opposingcorners{ @@ -5170,6 +6063,11 @@ /obj/machinery/recharger, /turf/open/floor/iron/white, /area/station/science/auxlab/firing_range) +"ciV" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/commons/fitness/locker_room) "ciW" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/purple/opposingcorners, @@ -5214,10 +6112,21 @@ }, /obj/machinery/button/door/directional/north{ id = "CabinS"; - name = "Bolt Control" + name = "Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4 }, /turf/open/floor/carpet/green, /area/station/commons/dorms) +"ckd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "cks" = ( /obj/structure/hedge, /obj/effect/turf_decal/tile/yellow{ @@ -5259,6 +6168,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security) +"ckP" = ( +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "ckV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5290,13 +6209,6 @@ /obj/structure/chair/stool/directional/north, /turf/open/floor/iron/kitchen/small, /area/station/maintenance/aft) -"clc" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/iron/grimy, -/area/station/service/theater) "clf" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5417,15 +6329,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"cmH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/grimy, -/area/station/service/theater) "cmX" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 8 @@ -5450,18 +6353,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"cnu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/table/glass, -/obj/item/book/codex_gigas, -/obj/item/camera{ - pixel_y = 18 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/grimy, -/area/station/service/library) "cnG" = ( /obj/machinery/suit_storage_unit/rd, /turf/open/floor/iron/dark/small, @@ -5477,6 +6368,20 @@ /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"cnX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/structure/chair/sofa/bench/left, +/turf/open/floor/stone, +/area/station/service/chapel) +"cnZ" = ( +/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/light, +/obj/machinery/requests_console/auto_name/directional/south, +/obj/effect/mapping_helpers/requests_console/supplies, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "cob" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -5499,21 +6404,37 @@ "cow" = ( /turf/closed/wall, /area/station/engineering/lobby) +"coC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"coN" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "coO" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/wood, /area/station/engineering/atmos) -"cpc" = ( +"cpv" = ( +/obj/effect/spawner/random/trash, +/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/siding/thinplating_new/light{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "cpA" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -5628,6 +6549,14 @@ }, /turf/open/floor/plating, /area/station/service/janitor) +"crm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "cro" = ( /obj/structure/cable, /obj/structure/chair/sofa/corp/left{ @@ -5643,6 +6572,12 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"crx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "crE" = ( /obj/structure/window/spawner/directional/north, /turf/open/space/basic, @@ -5653,39 +6588,18 @@ }, /turf/open/floor/iron/small, /area/station/security/brig) -"crV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) -"crX" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, +"crU" = ( +/obj/effect/landmark/start/bartender, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/duct, +/obj/structure/cable, /turf/open/floor/stone, -/area/station/service/bar/backroom) +/area/station/service/bar) "csl" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"csp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "css" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -5694,6 +6608,16 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) +"csv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/white/corner, +/area/station/hallway/secondary/exit/departure_lounge) "csw" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/effect/turf_decal/stripes/end, @@ -5752,14 +6676,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) -"ctc" = ( -/obj/structure/cable, -/obj/item/kirbyplants/random, -/obj/effect/decal/cleanable/cobweb, -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/wood/parquet, -/area/station/service/library) "ctl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5799,6 +6715,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/fore/greater) +"cvo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "cvy" = ( /obj/structure/bed/medical/emergency, /turf/open/floor/iron/dark, @@ -5845,6 +6767,32 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) +"cwd" = ( +/obj/structure/window/spawner/directional/west, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/window/spawner/directional/east, +/obj/machinery/light/floor, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/window/spawner/directional/west, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/window/spawner/directional/east, +/obj/machinery/light/floor, +/obj/structure/window/spawner/directional/north, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "cwf" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -5881,6 +6829,13 @@ /obj/effect/spawner/structure/window/survival_pod, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) +"cxg" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "cxy" = ( /obj/structure/cable, /obj/structure/disposalpipe/junction{ @@ -5908,11 +6863,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/engineering/atmos/office) -"cxT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/station/cargo/boutique) "cyf" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -5923,14 +6873,6 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"cyh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "cyk" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, @@ -6059,6 +7001,63 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/science/robotics/mechbay) +"cAZ" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/trash, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"cBf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/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/iron/small, +/area/station/hallway/primary/central/aft) "cBw" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/structure/filingcabinet/chestdrawer, @@ -6070,6 +7069,40 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"cBB" = ( +/obj/structure/table/reinforced, +/obj/structure/displaycase/forsale/kitchen{ + pixel_y = 5 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + name = "Kitchen Shutters"; + id = "kitchenshutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table/reinforced, +/obj/structure/displaycase/forsale/kitchen{ + pixel_y = 5 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "cBR" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/light/small/directional/west, @@ -6111,6 +7144,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"cCv" = ( +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/siding/wideplating_new/terracotta, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "cCx" = ( /obj/structure/chair{ pixel_y = -2 @@ -6229,19 +7269,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"cEs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/window/brigdoor/right/directional/north{ - atom_integrity = 300; - name = "AI Core Chamber Access"; - req_access = list("ai_upload") - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AI Core shutters"; - name = "AI Core Shutter" +"cEo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/circuit/red, -/area/station/ai_monitored/turret_protected/ai) +/obj/effect/turf_decal/tile/neutral, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "cED" = ( /obj/structure/railing/corner, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -6345,20 +7380,6 @@ /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"cFz" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/window/brigdoor/left/directional/north{ - atom_integrity = 300; - name = "AI Core Chamber Access"; - req_access = list("ai_upload") - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AI Core shutters"; - name = "AI Core Shutter" - }, -/turf/open/floor/circuit/red, -/area/station/ai_monitored/turret_protected/ai) "cFR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6379,9 +7400,33 @@ }, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) +"cFY" = ( +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/machinery/door/airlock/freezer{ + name = "Freezer" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen) +"cGb" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "cGj" = ( /turf/closed/wall/r_wall, /area/station/security/execution/education) +"cGD" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/hallway/primary/starboard) "cGI" = ( /obj/machinery/firealarm/directional/south, /obj/structure/closet/secure_closet/medical3, @@ -6454,13 +7499,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) -"cIC" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/light/small/directional/east, -/obj/structure/chair/stool/bar/directional/south, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "cIU" = ( /mob/living/carbon/human/species/monkey, /turf/open/floor/grass, @@ -6480,6 +7518,31 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/security/execution/transfer) +"cJA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "cJL" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -6493,6 +7556,14 @@ dir = 4 }, /area/station/science/xenobiology) +"cJO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/library) "cJT" = ( /obj/effect/turf_decal/bot_white, /obj/structure/closet/crate{ @@ -6521,14 +7592,21 @@ dir = 4 }, /area/station/science/lab) -"cKc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/flasher/directional/west{ - id = "ai" +"cKb" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_pp/style_2, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/stairs, -/area/station/ai_monitored/turret_protected/ai) +/obj/machinery/light/small/directional/north, +/turf/open/floor/grass, +/area/station/service/chapel) +"cKj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "cKk" = ( /turf/closed/mineral/random/stationside, /area/station/ai_monitored/turret_protected/aisat/maint) @@ -6544,6 +7622,19 @@ dir = 8 }, /area/station/engineering/supermatter/room) +"cKA" = ( +/obj/structure/altar_of_gods, +/obj/item/book/bible, +/obj/effect/landmark/start/hangover, +/obj/item/flashlight/lantern/on, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "cKL" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -6580,6 +7671,13 @@ }, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) +"cLL" = ( +/obj/structure/flora/rock/pile/jungle/style_5{ + pixel_x = -5; + pixel_y = 5 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "cLS" = ( /obj/effect/turf_decal/siding/white{ dir = 10 @@ -6614,6 +7712,19 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"cME" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/button/door/directional/east{ + id = "kitchenshutters"; + name = "Kitchen Shutter Control" + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "cMS" = ( /obj/structure/cable, /obj/structure/chair/stool/directional/north, @@ -6647,20 +7758,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"cNu" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"cNF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "cNR" = ( /obj/structure/chair/office{ dir = 4 @@ -6691,10 +7788,14 @@ /obj/structure/window/spawner/directional/west, /turf/open/misc/sandy_dirt, /area/station/commons/fitness/recreation/entertainment) -"cOm" = ( -/obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) +"cOk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/service/chapel) "cOC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6720,13 +7821,6 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/plating, /area/station/construction/mining/aux_base) -"cPd" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "cPe" = ( /obj/structure/spider/stickyweb, /turf/open/floor/iron/small, @@ -6738,10 +7832,27 @@ /obj/effect/turf_decal/siding/blue/corner, /turf/open/floor/iron/white/small, /area/station/medical/storage) +"cPj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "cPp" = ( /obj/structure/urinal/directional/east, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) +"cPq" = ( +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "cPv" = ( /obj/effect/turf_decal/siding/red{ dir = 10 @@ -6790,6 +7901,24 @@ /obj/machinery/light/small/dim/directional/west, /turf/open/floor/iron/dark/small, /area/station/maintenance/aft) +"cQG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/departments/holy/directional/west, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"cQI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "cQP" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -6801,6 +7930,14 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"cRc" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/sign/departments/court/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "cRm" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance, @@ -6837,6 +7974,17 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) +"cRy" = ( +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "cRD" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -6855,6 +8003,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai) +"cRL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "cRS" = ( /obj/structure/table, /obj/item/vending_refill/hydroseeds, @@ -6866,6 +8023,13 @@ }, /turf/open/floor/tram, /area/station/security/tram) +"cSb" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/bush/sparsegrass, +/turf/open/floor/grass, +/area/station/service/chapel) "cSk" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/closet/l3closet, @@ -6900,6 +8064,15 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) +"cSA" = ( +/mob/living/basic/goat/pete, +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "cSC" = ( /turf/closed/wall, /area/station/commons/vacant_room/office) @@ -6913,6 +8086,13 @@ }, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) +"cSU" = ( +/obj/effect/landmark/start/librarian, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "cTp" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 @@ -6948,6 +8128,32 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"cTM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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, +/obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "cTS" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, @@ -6969,6 +8175,26 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark/small, /area/station/engineering/supermatter/room) +"cUf" = ( +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = 8 + }, +/obj/structure/sign/directions/command{ + dir = 1 + }, +/obj/structure/sign/directions/supply{ + dir = 1; + pixel_y = -8 + }, +/turf/closed/wall, +/area/station/service/library) +"cUB" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/structure/chair/stool/bar/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "cUH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -7089,18 +8315,6 @@ /obj/structure/barricade/wooden, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) -"cWT" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/pdapainter/research, -/obj/machinery/computer/security/telescreen/rd{ - pixel_y = 30 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) "cWZ" = ( /obj/machinery/door/airlock/external{ name = "Primary Docking Bay" @@ -7112,14 +8326,13 @@ dir = 1 }, /area/station/hallway/secondary/entry) -"cXm" = ( -/obj/structure/cable, +"cXh" = ( /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "cXu" = ( /obj/effect/landmark/atmospheric_sanity/ignore_area, /turf/open/floor/plating, @@ -7134,6 +8347,10 @@ }, /turf/open/floor/iron/kitchen/small, /area/station/security/breakroom) +"cXH" = ( +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "cXJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/siding/wood{ @@ -7156,6 +8373,16 @@ /obj/structure/sign/departments/telecomms/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"cYp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/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/holodeck/rec_center) "cYt" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -7195,6 +8422,13 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine) +"cYS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "cYT" = ( /obj/structure/hedge, /obj/structure/sign/poster/contraband/random/directional/east, @@ -7209,6 +8443,19 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"cYY" = ( +/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/structure/disposalpipe/junction/flip{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) "cZk" = ( /obj/structure/chair{ dir = 1 @@ -7268,6 +8515,11 @@ }, /turf/open/floor/iron/white/small, /area/station/service/janitor) +"cZU" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/dark/side, +/area/station/maintenance/central/greater) "dah" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -7363,16 +8615,22 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/engineering/supermatter/room) -"dbY" = ( -/obj/structure/railing, -/turf/open/space/basic, -/area/space) "dcc" = ( /obj/item/kirbyplants/random/fullysynthetic, /obj/machinery/holopad, /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"dcg" = ( +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "dcx" = ( /obj/effect/turf_decal/siding/white{ dir = 10 @@ -7386,6 +8644,23 @@ /obj/item/clothing/suit/hooded/wintercoat/science, /turf/open/floor/iron/dark/small, /area/station/science/xenobiology) +"dcD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/port) "dcH" = ( /obj/structure/cable, /obj/structure/disposalpipe/junction{ @@ -7407,6 +8682,45 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/brig/entrance) +"dcY" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "dde" = ( /obj/structure/chair{ dir = 1; @@ -7436,6 +8750,13 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"ddB" = ( +/obj/structure/closet/secure_closet/personal, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "ddE" = ( /obj/structure/cable, /obj/structure/chair/stool/directional/west, @@ -7485,6 +8806,23 @@ }, /turf/open/floor/catwalk_floor/iron, /area/station/science/xenobiology) +"deR" = ( +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/status_display/evac/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"deS" = ( +/obj/structure/table/wood, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ + dir = 10 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "dfb" = ( /obj/structure/cable, /obj/structure/table/glass, @@ -7492,6 +8830,17 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/white/small, /area/station/medical/psychology) +"dff" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"dfj" = ( +/obj/effect/landmark/start/librarian, +/turf/open/floor/iron/grimy, +/area/station/service/library) "dfo" = ( /obj/structure/cable, /obj/machinery/status_display/ai/directional/north, @@ -7514,13 +8863,6 @@ /obj/structure/window/spawner/directional/south, /turf/open/floor/grass, /area/station/cargo/storage) -"dfW" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood/parquet, -/area/station/service/library) "dgm" = ( /obj/structure/railing/corner{ dir = 1 @@ -7598,6 +8940,10 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"dhF" = ( +/obj/machinery/light/floor, +/turf/open/floor/stone, +/area/station/service/bar) "dhH" = ( /turf/open/floor/iron/small, /area/station/commons/fitness/locker_room) @@ -7641,6 +8987,22 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/textured_half, /area/station/commons/fitness/locker_room) +"diG" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/machinery/light/small/directional/east, +/obj/structure/chair/stool/bar/directional/south, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) +"diI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/camera/autoname/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "diK" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -7662,6 +9024,9 @@ /obj/machinery/atmospherics/pipe/smart/simple/brown/visible, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"diP" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "diS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7704,29 +9069,12 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/textured_half, /area/station/commons/dorms) -"dks" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/full, -/obj/item/reagent_containers/cup/glass/drinkingglass{ - pixel_x = -5; - pixel_y = 22 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass{ - pixel_x = -1; - pixel_y = 13 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass{ - pixel_x = -8; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass{ - pixel_x = 5; - pixel_y = 4 +"dkx" = ( +/obj/machinery/sparker/directional/north{ + id = "Xenobio" }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) +/turf/open/floor/engine, +/area/station/science/xenobiology) "dkz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7740,6 +9088,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/small, /area/station/security/execution/education) +"dkJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "dkR" = ( /obj/structure/railing/corner/end/flip{ dir = 4 @@ -7826,6 +9183,17 @@ }, /turf/open/floor/iron/dark, /area/station/medical/cryo) +"dmm" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/general, +/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/plating, +/area/station/maintenance/central/greater) "dmG" = ( /obj/structure/transport/linear/tram, /obj/structure/tram, @@ -7966,6 +9334,39 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"doL" = ( +/obj/effect/turf_decal/tile/neutral/full, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/light/corner{ + dir = 8 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/light/corner{ + dir = 8 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/delivery/white{ + color = "#52B4E9" + }, +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 9 + }, +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "dph" = ( /obj/structure/railing, /turf/open/floor/catwalk_floor, @@ -7993,6 +9394,13 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"dpL" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/security/courtroom) "dpR" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -8051,6 +9459,14 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron/showroomfloor, /area/station/medical/virology) +"drC" = ( +/obj/machinery/vending/cola, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) "drF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -8100,6 +9516,11 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"dsl" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/parquet, +/area/station/service/library) "dsp" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/rack, @@ -8128,6 +9549,14 @@ /obj/item/screwdriver, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"dsK" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "dsN" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -8140,15 +9569,6 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) -"dtj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "dtk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/closed/wall, @@ -8165,12 +9585,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"dty" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/wood/large, -/area/station/service/chapel) "dtC" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/siding/purple{ @@ -8207,6 +9621,19 @@ }, /turf/open/floor/iron/white, /area/station/science/robotics/augments) +"duj" = ( +/obj/structure/cable, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "dun" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -8218,6 +9645,15 @@ /obj/structure/cable/layer3, /turf/open/floor/catwalk_floor, /area/station/ai_monitored/turret_protected/ai) +"duq" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/structure/closet/crate/wooden/toy, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "dus" = ( /obj/structure/chair{ dir = 1 @@ -8247,18 +9683,6 @@ }, /turf/open/floor/wood, /area/station/engineering/atmos/office) -"dvl" = ( -/obj/structure/table, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/machinery/reagentgrinder{ - pixel_x = -9; - pixel_y = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "dvo" = ( /obj/machinery/ore_silo, /obj/effect/turf_decal/bot_white, @@ -8495,13 +9919,6 @@ /obj/item/radio/intercom/chapel/directional/east, /turf/open/floor/iron/terracotta/diagonal, /area/station/service/chapel/office) -"dzq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "dzA" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/machinery/atmospherics/pipe/smart/simple/brown/visible, @@ -8520,6 +9937,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"dAh" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/service/chapel) "dAn" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -8535,6 +9959,14 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"dAC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters{ + id = "meow"; + name = "Commissary" + }, +/turf/open/floor/plating, +/area/station/commons/vacant_room/commissary) "dAF" = ( /obj/effect/turf_decal/siding/thinplating_new{ dir = 4 @@ -8583,6 +10015,13 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) +"dBm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/service/bar) "dBr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8629,27 +10068,6 @@ /obj/machinery/atmospherics/components/unary/passive_vent, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) -"dCm" = ( -/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/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Study" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/service/library) "dCs" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 9 @@ -8658,10 +10076,47 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/maintenance/port/aft) +"dCu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"dCz" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/landmark/start/clown, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "dCR" = ( /obj/structure/cable/layer3, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) +"dCT" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Public Shrine" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/hallway/primary/central/fore) "dCU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, @@ -8680,6 +10135,16 @@ }, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) +"dDi" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "dDk" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/chapel{ @@ -8765,30 +10230,99 @@ dir = 1 }, /area/station/science/ordnance/testlab) -"dEV" = ( -/obj/structure/table, -/obj/item/circuitboard/machine/coffeemaker/impressa, -/obj/item/coffee_cartridge/decaf{ - pixel_y = 9 +"dEQ" = ( +/obj/structure/cable, +/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/plating, +/area/station/maintenance/port/greater) +"dFq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/iron/dark/small, -/area/station/commons/vacant_room/commissary) +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "dFN" = ( /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/commons/dorms) +"dFQ" = ( +/obj/structure/cable, +/obj/effect/spawner/random/trash, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) +"dGa" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) +"dGp" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/structure/flora/bush/flowers_yw, +/turf/open/floor/grass, +/area/station/service/chapel) +"dGC" = ( +/obj/machinery/microwave{ + pixel_y = 5 + }, +/obj/machinery/light_switch/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table, +/obj/effect/turf_decal/siding/end, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "dGV" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 }, /turf/closed/wall, /area/station/engineering/atmos/storage/gas) -"dHi" = ( -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination/bar, -/turf/open/floor/catwalk_floor/iron, -/area/station/service/bar) "dHk" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -8826,6 +10360,13 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"dIr" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Xenobiology Lab - Test Chamber"; + network = list("ss13","rd","xeno") + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "dIt" = ( /obj/structure/cable, /obj/machinery/button/door/directional/east{ @@ -8838,20 +10379,15 @@ }, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/security/armory) -"dIN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=16.0-CentralFore-CentralPort"; - location = "15.0-CentralStarboard-CentralFore" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +"dIQ" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_yw/style_3, +/obj/machinery/firealarm/directional/south, +/obj/machinery/light/small/directional/south, +/obj/machinery/camera/directional/south, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/grass, +/area/station/service/chapel) "dIZ" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 6 @@ -8879,6 +10415,12 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"dJv" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "dJT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8910,6 +10452,14 @@ /obj/effect/spawner/random/engineering/material, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"dKm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/cold/directional/east, +/obj/effect/turf_decal/tile/neutral, +/obj/item/radio/intercom/directional/east, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "dKq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8976,6 +10526,42 @@ }, /turf/open/floor/iron/dark, /area/station/security/processing) +"dLz" = ( +/obj/structure/closet/secure_closet/freezer/empty, +/obj/item/food/grown/tomato{ + pixel_y = 2; + pixel_x = 2 + }, +/obj/item/food/grown/tomato{ + pixel_y = 2; + pixel_x = 2 + }, +/obj/item/food/grown/eggplant{ + pixel_y = 5; + pixel_x = 5 + }, +/obj/item/food/grown/eggplant{ + pixel_y = 5; + pixel_x = 5 + }, +/obj/item/storage/fancy/egg_box, +/obj/item/storage/fancy/egg_box, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/food/grown/tomato{ + pixel_y = 2; + pixel_x = 2 + }, +/obj/item/food/grown/tomato{ + pixel_y = 2; + pixel_x = 2 + }, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "dLQ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -8988,6 +10574,13 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron/small, /area/station/security/office) +"dLW" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/librarian, +/turf/open/floor/carpet, +/area/station/service/library) "dMg" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -9030,17 +10623,6 @@ "dNq" = ( /turf/closed/wall/r_wall/rust, /area/station/ai_monitored/aisat/exterior) -"dNw" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/door/airlock/multi_tile/public/glass{ - name = "Library" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half, -/area/station/service/library) "dNy" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, @@ -9055,13 +10637,6 @@ /obj/structure/chair/stool/directional/south, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/station/maintenance/starboard/central) -"dNI" = ( -/obj/structure/chair/sofa/left/maroon, -/obj/machinery/light/small/directional/east, -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "dNL" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -9080,6 +10655,12 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"dNT" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "dNU" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -9098,6 +10679,26 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/station/security/office) +"dOf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/junction, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"dOt" = ( +/obj/effect/turf_decal/weather/snow, +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/food/meat/bacon, +/obj/item/food/meat/bacon, +/obj/item/food/meat/slab/monkey, +/obj/item/food/meat/slab/monkey, +/obj/item/food/meat/slab/monkey, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "dOz" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -9156,15 +10757,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"dPI" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) "dQi" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -9193,30 +10785,6 @@ }, /turf/open/floor/engine, /area/station/science/cytology) -"dRf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "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/hallway/abandoned_command) -"dRh" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "dRk" = ( /obj/structure/flora/bush/lavendergrass/style_random, /obj/structure/flora/bush/fullgrass/style_random, @@ -9237,6 +10805,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"dRT" = ( +/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, +/area/station/hallway/primary/central/aft) "dSb" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 4 @@ -9278,15 +10852,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) -"dSK" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "dSO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9316,6 +10881,14 @@ "dTd" = ( /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) +"dTg" = ( +/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, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "dTB" = ( /obj/structure/broken_flooring/pile/directional/east, /obj/effect/decal/cleanable/dirt, @@ -9326,20 +10899,39 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"dTH" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "dTI" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"dTS" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 +"dTO" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_pp, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north{ + low_power_nightshift_lights = 1 }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/station/service/chapel) +"dTQ" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "dTW" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/computer/shuttle/mining{ @@ -9348,6 +10940,14 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"dUh" = ( +/obj/structure/chair/stool/bar/directional/north, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "dUw" = ( /obj/structure/railing{ dir = 4 @@ -9390,6 +10990,22 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark/small, /area/station/science/xenobiology) +"dUJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/chapel) +"dVQ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/bush/sparsegrass, +/turf/open/floor/grass, +/area/station/service/chapel) "dVW" = ( /obj/structure/chair{ dir = 8 @@ -9517,19 +11133,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/catwalk_floor/iron, /area/station/science/lower) -"dXo" = ( -/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/turf_decal/siding/red{ - dir = 6 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white/small, -/area/station/security/warden) "dXO" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /obj/structure/disposalpipe/segment{ @@ -9557,7 +11160,7 @@ pixel_x = -6; pixel_y = 3 }, -/obj/item/clothing/mask/cigarette{ +/obj/item/cigarette{ pixel_x = 5; pixel_y = 2 }, @@ -9582,6 +11185,11 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"dYu" = ( +/obj/machinery/light/floor, +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "dYw" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/structure/chair{ @@ -9669,6 +11277,14 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/white, /area/station/science/auxlab/firing_range) +"dZs" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/wood/tile, +/area/station/service/bar) "dZD" = ( /obj/machinery/camera/directional/south{ c_tag = "AI Chamber - Core"; @@ -9695,6 +11311,16 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"dZW" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "dZX" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/components/binary/pump/off/general/visible{ @@ -9709,6 +11335,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"eab" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/service/chapel) "eam" = ( /obj/effect/spawner/random/structure/crate, /obj/machinery/airalarm/directional/east, @@ -9753,23 +11390,16 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/wood, /area/station/commons/fitness/recreation) -"ebo" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) -"ebB" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +"ebE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/obj/machinery/flasher/directional/west{ + id = "brigentry" }, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/service/hydroponics) +/area/station/security/brig/entrance) "ebK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -9790,6 +11420,14 @@ /obj/machinery/door/window/right/directional/east, /turf/open/floor/iron/smooth, /area/station/engineering/main) +"ecj" = ( +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/machinery/door/airlock{ + name = "Kitchen" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "ecn" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table, @@ -9849,6 +11487,19 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"edG" = ( +/obj/machinery/vending/hydronutrients, +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/turf_decal/delivery/white{ + color = "#52B4E9" + }, +/obj/item/radio/intercom/directional/north, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron, +/area/station/service/hydroponics) "edJ" = ( /obj/machinery/teleport/station, /obj/machinery/airalarm/directional/north, @@ -9874,19 +11525,12 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"edU" = ( -/obj/machinery/porta_turret/ai, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of his office."; - dir = 4; - name = "Research Monitor"; - network = list("rd"); - pixel_x = -28 +"edV" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/smooth, -/area/station/ai_monitored/turret_protected/aisat_interior) +/turf/open/floor/stone, +/area/station/service/chapel) "eeb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -9903,12 +11547,6 @@ /obj/structure/broken_flooring/singular/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"eeq" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/space/basic, -/area/space) "eeD" = ( /obj/structure/showcase/cyborg/old{ pixel_y = 20 @@ -9918,19 +11556,27 @@ "eeJ" = ( /turf/closed/wall, /area/station/commons/fitness/locker_room) +"eeW" = ( +/obj/machinery/door/airlock/multi_tile/public{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/service/library) "eeY" = ( /obj/machinery/door/airlock/maintenance{ name = "Transit Tube Workshop" }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"efj" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "efl" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -9938,6 +11584,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible, /turf/open/floor/iron, /area/station/engineering/atmos) +"efm" = ( +/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/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "efy" = ( /obj/item/kirbyplants/organic/plant21, /obj/machinery/status_display/ai/directional/west, @@ -9953,10 +11606,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"efC" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/service/bar) "efK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9968,13 +11617,16 @@ dir = 10 }, /area/station/science/lower) -"efL" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 +"efO" = ( +/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/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "efS" = ( /obj/machinery/computer/security/qm{ dir = 1 @@ -9992,6 +11644,18 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/security/prison/rec) +"egc" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_y = 10; + pixel_x = -5 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) "egr" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -10038,6 +11702,22 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron/smooth, /area/station/engineering/atmos/office) +"ehR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) +"ehT" = ( +/obj/machinery/door/airlock{ + id_tag = "commiss2"; + name = "Commissary" + }, +/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/textured_half, +/area/station/commons/vacant_room/commissary) "ehV" = ( /obj/structure/cable, /obj/structure/chair/sofa/right{ @@ -10113,16 +11793,6 @@ "eiU" = ( /turf/open/floor/plating/rust, /area/station/maintenance/department/engine/atmos) -"ejc" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security) "ejn" = ( /obj/item/stack/cable_coil/five, /obj/effect/decal/cleanable/cobweb, @@ -10247,6 +11917,20 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/security) +"elb" = ( +/obj/structure/table/reinforced, +/obj/structure/displaycase/forsale/kitchen{ + pixel_y = 5 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/turf/open/floor/plating, +/area/station/service/kitchen) "eld" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, /obj/machinery/camera/directional/west{ @@ -10384,15 +12068,10 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, /area/station/engineering/storage/tech) -"enD" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron, -/area/station/service/hydroponics) +"enC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "enE" = ( /obj/item/cultivator/rake, /obj/structure/cable, @@ -10402,6 +12081,13 @@ "enG" = ( /turf/open/floor/iron/dark, /area/station/science/ordnance) +"enS" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/machinery/light/floor, +/turf/open/floor/stone, +/area/station/service/bar) "enV" = ( /obj/structure/closet/secure_closet/research_director, /obj/item/radio/intercom/directional/north, @@ -10417,6 +12103,16 @@ }, /turf/open/floor/iron, /area/station/security/prison) +"eof" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/dark_red/fourcorners, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "eoz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10432,6 +12128,10 @@ /obj/structure/broken_flooring/pile/directional/east, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"eoM" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/station/maintenance/central/greater) "eoU" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -10476,6 +12176,13 @@ /obj/machinery/holopad, /turf/open/floor/iron, /area/station/security/prison/rec) +"epv" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Aft Corridor" + }, +/obj/structure/cable, +/turf/open/floor/iron/textured_half, +/area/station/hallway/primary/aft) "eqg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10515,20 +12222,31 @@ /obj/machinery/power/energy_accumulator/tesla_coil/anchored, /turf/open/floor/engine, /area/station/engineering/supermatter) -"eqP" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/chair/comfy/black{ - dir = 1 +"eqC" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 }, -/obj/effect/landmark/start/chaplain, -/turf/open/floor/carpet/lone, -/area/station/service/chapel/office) +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/tile, +/area/station/service/bar) +"eqG" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central/lesser) "eqS" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/engineering/atmos/storage/gas) +"erf" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, +/obj/machinery/door/airlock/hydroponics/glass{ + name = "Hydroponics" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/service/hydroponics) "erg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -10537,6 +12255,13 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"erz" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/thinplating{ + dir = 5 + }, +/turf/open/floor/eighties, +/area/station/hallway/primary/central/fore) "erA" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10545,6 +12270,18 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"erB" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/biogenerator, +/obj/effect/turf_decal/delivery/white{ + color = "#52B4E9" + }, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron, +/area/station/service/hydroponics) "erE" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/tile, @@ -10628,6 +12365,18 @@ /obj/structure/sign/departments/medbay/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"ete" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/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/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "etl" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 5 @@ -10649,14 +12398,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/circuit, /area/station/maintenance/port/aft) -"etD" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/flasher/directional/east{ - id = "ai" - }, -/turf/open/floor/iron/stairs, -/area/station/ai_monitored/turret_protected/ai) "etX" = ( /obj/structure/sign/warning/hot_temp/directional/east, /turf/open/floor/iron/stairs/right, @@ -10673,13 +12414,6 @@ /obj/machinery/seed_extractor, /turf/open/floor/plating, /area/station/maintenance/department/prison) -"eul" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/locker_room) "euq" = ( /obj/structure/cable, /obj/item/kirbyplants/random/fullysynthetic, @@ -10698,6 +12432,10 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security) +"euz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/closed/wall, +/area/station/hallway/primary/central/aft) "euO" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -10748,6 +12486,15 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"evr" = ( +/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 = 6 + }, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "evv" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral{ @@ -10774,27 +12521,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/small, /area/station/maintenance/department/engine) -"ewi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/cold/directional/west, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"ewo" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/machinery/plumbing/growing_vat{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/cytology) "ewt" = ( /obj/structure/cable, /obj/machinery/firealarm/directional/south, @@ -10803,6 +12529,16 @@ }, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/fore) +"ewu" = ( +/obj/structure/flora/bush/sparsegrass{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "ewF" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -10965,6 +12701,10 @@ }, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/teleporter) +"ezV" = ( +/obj/machinery/computer/security/telescreen/prison/directional/south, +/turf/open/floor/iron/dark, +/area/station/security/office) "eAc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10978,6 +12718,14 @@ /obj/machinery/light/floor, /turf/open/floor/iron, /area/station/cargo/storage) +"eAm" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "eAn" = ( /obj/machinery/computer/mech_bay_power_console, /obj/effect/turf_decal/siding/thinplating_new/light{ @@ -11012,6 +12760,10 @@ "eAC" = ( /turf/open/floor/plating, /area/station/engineering/atmospherics_engine) +"eAH" = ( +/obj/structure/flora/bush/jungle/a/style_3, +/turf/open/misc/dirt/station, +/area/station/service/chapel) "eAI" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer1, @@ -11024,25 +12776,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"eAU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/window/right/directional/south{ - name = "AI Security Door" - }, -/obj/machinery/status_display/evac/directional/west, -/turf/open/floor/circuit/red, -/area/station/ai_monitored/turret_protected/ai) -"eAX" = ( -/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/turf_decal/tile/dark_red/fourcorners, -/obj/effect/landmark/start/security_officer, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "eAY" = ( /turf/open/floor/grass, /area/station/science/xenobiology) @@ -11065,6 +12798,17 @@ }, /turf/open/floor/iron, /area/station/commons/storage/art) +"eBC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "eBH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -11114,6 +12858,16 @@ }, /turf/open/floor/iron/small, /area/station/engineering/main) +"eDd" = ( +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "eDe" = ( /obj/machinery/door/airlock/maintenance{ name = "Atmospherics Maintenance" @@ -11126,15 +12880,13 @@ /obj/effect/spawner/structure/window/survival_pod, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/ai) -"eDl" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/window/left/directional/south{ - name = "AI Security Door" - }, -/obj/machinery/status_display/evac/directional/east, -/turf/open/floor/circuit/red, -/area/station/ai_monitored/turret_protected/ai) +"eDi" = ( +/obj/structure/flora/bush/flowers_br, +/obj/structure/flora/bush/flowers_pp, +/obj/structure/flora/bush/flowers_yw, +/obj/structure/flora/bush/pale, +/turf/open/floor/grass, +/area/station/hallway/primary/central/fore) "eDo" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, @@ -11244,6 +12996,16 @@ /obj/machinery/camera/directional/west, /turf/open/floor/iron/smooth, /area/station/commons/storage/tools) +"eEz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/pipe_scrubber, +/turf/open/floor/iron, +/area/station/engineering/atmos) "eEL" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, @@ -11360,14 +13122,6 @@ dir = 1 }, /area/station/science/lobby) -"eGl" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/photocopier, -/turf/open/floor/iron/smooth, -/area/station/service/library) "eGw" = ( /obj/machinery/camera/directional/west{ c_tag = "Engineering - Public Desk" @@ -11489,6 +13243,20 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"eIO" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 1 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Atmospherics - South" + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) "eIT" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/turf_decal/stripes/line{ @@ -11542,13 +13310,6 @@ /obj/effect/turf_decal/stripes/asteroid/end, /turf/open/floor/circuit/green, /area/station/science/robotics/mechbay) -"eJY" = ( -/obj/effect/turf_decal/tile/green/diagonal_centre, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "eKf" = ( /obj/structure/table, /obj/item/storage/box/donkpockets/donkpocketpizza, @@ -11564,6 +13325,13 @@ dir = 4 }, /area/station/maintenance/starboard/greater) +"eKD" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/service/library, +/turf/open/floor/wood/parquet, +/area/station/service/library) "eKP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -11606,6 +13374,20 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"eLJ" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/chem_master/condimaster{ + desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; + name = "BrewMaster 2199" + }, +/obj/effect/turf_decal/delivery/white{ + color = "#52B4E9" + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) "eLZ" = ( /obj/effect/turf_decal/stripes/corner, /obj/machinery/atmospherics/components/binary/pump{ @@ -11741,11 +13523,29 @@ /obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/iron/small, /area/station/engineering/atmos) +"eOX" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/item/kirbyplants/random, +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "eOZ" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/medical/coldroom) +"ePk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "ePn" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/small/directional/south, @@ -11755,6 +13555,10 @@ }, /turf/open/floor/iron, /area/station/cargo/miningfoundry) +"ePt" = ( +/obj/structure/flora/grass/jungle/a/style_4, +/turf/open/floor/grass, +/area/station/service/chapel) "ePP" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/dark_red{ @@ -11807,12 +13611,6 @@ "eQt" = ( /turf/closed/wall, /area/station/command/heads_quarters/rd) -"eQv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/carpet/lone, -/area/station/service/theater) "eQC" = ( /obj/effect/spawner/random/maintenance, /obj/effect/spawner/random/structure/girder, @@ -11839,6 +13637,16 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"eRy" = ( +/obj/structure/cable, +/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/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "eRX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11902,25 +13710,22 @@ }, /turf/open/floor/iron/smooth_large, /area/station/engineering/storage_shared) +"eTn" = ( +/obj/structure/cable/layer3, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/window/brigdoor/left/directional/north{ + atom_integrity = 300; + name = "AI Core Chamber Access"; + req_access = list("ai_upload") + }, +/turf/open/floor/circuit/red, +/area/station/ai_monitored/turret_protected/ai) "eTr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/iron, /area/station/security/prison) -"eTt" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/mail_sorting/service/hydroponics, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination/hydro, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "eTT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11986,10 +13791,6 @@ dir = 1 }, /area/station/engineering/supermatter/room) -"eUW" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood/parquet, -/area/station/service/library) "eUZ" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 1 @@ -12074,6 +13875,20 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"eVX" = ( +/obj/structure/statue/sandstone/venus{ + dir = 8; + pixel_y = -15 + }, +/obj/structure/flora/bush/flowers_pp, +/obj/structure/flora/bush/flowers_br/style_3, +/obj/effect/dummy/lighting_obj, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/grass/Airless, +/area/station/hallway/primary/central/aft) "eVY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, @@ -12099,15 +13914,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/small, /area/station/engineering/atmos/pumproom) -"eWA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "eWB" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -12184,16 +13990,6 @@ }, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat/equipment) -"eYn" = ( -/obj/machinery/computer/monitor{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 1; - pixel_y = -29 - }, -/turf/open/floor/iron/smooth, -/area/station/ai_monitored/turret_protected/aisat/equipment) "eYp" = ( /obj/machinery/recharge_station, /obj/machinery/camera/motion/directional/east{ @@ -12224,19 +14020,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/science/lower) -"eYT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/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, -/area/station/commons/fitness/recreation/entertainment) "eYY" = ( /obj/structure/window/spawner/directional/west, /obj/structure/window/spawner/directional/east, @@ -12254,14 +14037,6 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/engine_smes) -"eZJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "eZM" = ( /obj/structure/cable/layer3, /obj/effect/decal/cleanable/dirt, @@ -12397,14 +14172,50 @@ /obj/structure/sign/warning/vacuum/external/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos/space_catwalk) -"fcM" = ( -/obj/structure/disposalpipe/trunk{ +"fcO" = ( +/obj/machinery/door/airlock/wood{ + name = "Bar Backroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/bar, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/machinery/disposal/bin, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood/parquet, -/area/station/service/library) +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/door/airlock/wood{ + name = "Bar Backroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/bar, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/door/airlock/wood{ + name = "Bar Backroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/bar, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/service/bar/backroom) "fcU" = ( /obj/structure/window/spawner/directional/south, /obj/structure/flora/bush/large/style_random{ @@ -12482,6 +14293,10 @@ }, /turf/open/floor/plating, /area/station/science/robotics/lab) +"fdS" = ( +/obj/structure/flora/tree/jungle/style_6, +/turf/open/floor/grass, +/area/station/service/chapel) "feo" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, /obj/effect/turf_decal/tile/yellow, @@ -12489,6 +14304,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/smooth, /area/station/engineering/main) +"feL" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_pp, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/service/chapel) +"feR" = ( +/turf/open/floor/carpet, +/area/station/service/library) +"ffi" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central/lesser) "ffp" = ( /obj/structure/closet/firecloset, /obj/effect/spawner/random/maintenance, @@ -12509,15 +14340,19 @@ /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"ffX" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "kihall" +"ffS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "fgk" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/status_display/door_timer{ @@ -12586,17 +14421,6 @@ }, /turf/open/floor/iron/small, /area/station/security/office) -"fhC" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "fhT" = ( /obj/structure/sink/directional/east, /obj/structure/mirror/directional/west, @@ -12684,17 +14508,61 @@ }, /turf/open/floor/carpet/orange, /area/station/commons/dorms) -"fju" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/bot, +"fjq" = ( +/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/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/port) -"fjF" = ( -/obj/effect/turf_decal/bot_red, -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/reagent_dispensers/cooking_oil, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) +/area/station/hallway/primary/central/aft) +"fjz" = ( +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/aft) "fjL" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -12744,6 +14612,37 @@ /obj/item/mod/module/signlang_radio, /turf/open/floor/iron/small, /area/station/medical/storage) +"fkF" = ( +/obj/structure/table/wood, +/obj/item/pen/red{ + pixel_x = 3; + pixel_y = 12 + }, +/obj/item/pen/blue{ + pixel_x = -6; + pixel_y = 12 + }, +/turf/open/floor/carpet, +/area/station/service/library) +"fkN" = ( +/obj/structure/mannequin/plastic, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/station/cargo/boutique) +"fkS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "fkT" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/alien/weeds, @@ -12756,6 +14655,48 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/aft) +"flc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/item/book/manual/chef_recipes, +/obj/item/stack/package_wrap{ + pixel_y = 2 + }, +/obj/item/holosign_creator/robot_seat/restaurant, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/floor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) +"flh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/table/glass, +/obj/item/flashlight/lamp/green{ + pixel_x = 2; + pixel_y = 9 + }, +/obj/item/taperecorder{ + pixel_x = -15; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/light_switch/directional/north, +/turf/open/floor/iron/grimy, +/area/station/service/library) "flo" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -12769,6 +14710,11 @@ }, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"flw" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_yw/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "flD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/stripes/corner{ @@ -12790,10 +14736,21 @@ /obj/item/kirbyplants/organic/applebush, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) +"flT" = ( +/turf/open/misc/dirt/station, +/area/station/service/chapel) "flX" = ( /obj/item/flashlight/lantern, /turf/open/floor/plating/rust, /area/station/maintenance/starboard/greater) +"fme" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/flora/bush/sparsegrass, +/turf/open/floor/grass, +/area/station/service/chapel) "fmf" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/landmark/event_spawn, @@ -12811,6 +14768,10 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/station/security/prison/work) +"fmG" = ( +/obj/effect/spawner/random/structure/girder, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "fmH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -12895,6 +14856,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"fog" = ( +/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, +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/bar) "fot" = ( /obj/effect/turf_decal/trimline/white/line, /obj/effect/turf_decal/trimline/white/mid_joiner, @@ -12907,37 +14877,11 @@ /obj/machinery/vending/security, /turf/open/floor/iron, /area/station/security/lockers) -"foI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/button/door/directional/north{ - id = "Xenolab"; - name = "Test Chamber Blast Doors"; - pixel_x = 26; - pixel_y = -2; - req_access = list("xenobiology") - }, -/obj/machinery/atmospherics/components/binary/pump, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/science/xenobiology) "foL" = ( /obj/structure/sign/poster/official/random/directional/north, /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"fpd" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - dir = 1; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = -30 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) "fpg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -12987,6 +14931,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor, /area/station/maintenance/disposal/incinerator) +"fpN" = ( +/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 = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "fpO" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/ce) @@ -13005,17 +14959,6 @@ /obj/structure/cable, /turf/open/floor/iron/white/side, /area/station/science/research) -"fqL" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "fqQ" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/decal/cleanable/dirt/dust, @@ -13036,6 +14979,15 @@ /obj/item/defibrillator/loaded, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"fri" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/structure/cable, +/obj/machinery/door/airlock{ + id_tag = "commiss2"; + name = "Commissary" + }, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "frC" = ( /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/smooth_large, @@ -13198,6 +15150,17 @@ /obj/effect/mapping_helpers/airlock/access/all/command/minisat, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai) +"fuu" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 1 + }, +/obj/machinery/light/cold/directional/south, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4 + }, +/obj/effect/mapping_helpers/mail_sorting/security/detectives_office, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "fuB" = ( /obj/structure/railing{ dir = 4 @@ -13277,6 +15240,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) +"fvE" = ( +/obj/effect/turf_decal/siding/thinplating_new/light, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "fvF" = ( /obj/effect/turf_decal/siding/dark_red, /obj/machinery/modular_computer/preset/id{ @@ -13285,13 +15255,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) -"fvH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/electropack, -/obj/machinery/light/small/directional/east, -/turf/open/floor/engine, -/area/station/science/xenobiology) "fvL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -13436,6 +15399,18 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/dark, /area/station/science/genetics) +"fyW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "fyZ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -13451,11 +15426,6 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"fzf" = ( -/obj/machinery/vending/boozeomat, -/obj/machinery/light/cold/directional/east, -/turf/closed/wall, -/area/station/service/bar) "fzq" = ( /obj/structure/closet/crate/trashcart/filled, /turf/open/floor/plating, @@ -13545,6 +15515,16 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/white/smooth_large, /area/station/medical/storage) +"fBe" = ( +/obj/structure/disposalpipe/segment, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "fBf" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, @@ -13580,6 +15560,18 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"fBN" = ( +/obj/structure/flora/bush/flowers_yw/style_3{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/machinery/light/floor, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/grass/Airless, +/area/station/hallway/primary/central/aft) "fBO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/tank_holder/extinguisher, @@ -13674,14 +15666,6 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"fDp" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) "fDI" = ( /turf/open/floor/iron, /area/station/hallway/primary/aft) @@ -13791,6 +15775,47 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/smooth, /area/station/maintenance/disposal/incinerator) +"fEv" = ( +/obj/structure/closet/secure_closet/bar, +/obj/item/stack/spacecash/c1, +/obj/item/stack/spacecash/c1, +/obj/item/stack/spacecash/c1, +/obj/item/stack/spacecash/c1, +/obj/item/stack/spacecash/c1, +/obj/machinery/airalarm/directional/north, +/obj/structure/reagent_dispensers/beerkeg, +/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/stone, +/area/station/service/bar/backroom) +"fEB" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table, +/obj/item/storage/bag/tray, +/obj/item/knife/kitchen{ + pixel_y = 2 + }, +/obj/effect/spawner/random/food_or_drink/cake_ingredients, +/obj/item/kitchen/rollingpin, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/landmark/start/cook, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "fEC" = ( /turf/closed/wall, /area/station/maintenance/port/lesser) @@ -13806,16 +15831,14 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) -"fEV" = ( -/obj/machinery/porta_turret/ai, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 8; - pixel_x = 28 +"fEX" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 7 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/smooth, -/area/station/ai_monitored/turret_protected/aisat_interior) +/turf/open/floor/carpet, +/area/station/service/library) "fFe" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -13917,6 +15940,42 @@ }, /turf/open/floor/plating/rust, /area/station/ai_monitored/turret_protected/aisat/maint) +"fGk" = ( +/obj/machinery/smartfridge, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) +"fGp" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_y = 10 + }, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) +"fGF" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet/auxiliary) +"fGT" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) "fGU" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 1 @@ -13927,12 +15986,13 @@ /obj/structure/sign/warning/pods/directional/west, /turf/open/floor/iron/dark, /area/station/engineering/hallway) -"fHb" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) +"fGW" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/flora/bush/large/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) "fHf" = ( /obj/structure/bed/maint, /obj/effect/spawner/random/maintenance, @@ -13962,27 +16022,14 @@ }, /obj/machinery/button/door/directional/north{ name = "Lock Control"; - id = "Toilet2" + id = "Toilet2"; + specialfunctions = 4; + normaldoorcontrol = 1 }, /obj/machinery/light/small/directional/west, /obj/structure/sign/poster/contraband/random/directional/west, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) -"fHN" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=21.0-Bar-Porthall"; - location = "20.0-CentralPort-Bar" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "fHT" = ( /obj/machinery/newscaster/directional/south, /obj/machinery/vending/wardrobe/science_wardrobe, @@ -13993,6 +16040,9 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/grimy, /area/station/science/cubicle) +"fIj" = ( +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) "fIw" = ( /obj/effect/landmark/navigate_destination/dockescpod, /turf/open/floor/plating, @@ -14025,6 +16075,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"fJu" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 9 + }, +/obj/structure/sign/poster/official/tactical_game_cards/directional/west, +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "fJK" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -14092,6 +16150,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat_interior) +"fKr" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/textured_half, +/area/station/security/brig/entrance) "fKx" = ( /obj/structure/transit_tube/horizontal, /obj/structure/lattice/catwalk, @@ -14108,13 +16179,13 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"fKO" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/sign/departments/court/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +"fKN" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/computer/security/telescreen/test_chamber/directional/west, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/xenobiology) "fKP" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -14242,10 +16313,35 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"fLF" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + location = "QM #2" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/light/small/directional/south, +/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, +/area/station/cargo/storage) "fLI" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron/dark/small, /area/station/maintenance/aft) +"fLJ" = ( +/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/dark_red/fourcorners, +/obj/machinery/holopad, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "fLK" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -14273,18 +16369,6 @@ /obj/structure/chair/stool/directional/north, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/fore) -"fMj" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "fMs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14325,9 +16409,6 @@ /obj/effect/turf_decal/stripes/box, /turf/open/floor/mineral/titanium, /area/station/command/heads_quarters/ce) -"fMD" = ( -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) "fMP" = ( /obj/structure/table/reinforced/titaniumglass, /obj/item/binoculars{ @@ -14381,6 +16462,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"fNC" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/central/fore) "fNF" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 @@ -14415,6 +16505,32 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/small, /area/station/medical/storage) +"fNW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"fNZ" = ( +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/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/plating, +/area/station/maintenance/central/lesser) "fOg" = ( /obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/sand/plating, @@ -14427,11 +16543,24 @@ }, /turf/open/floor/iron/smooth, /area/station/ai_monitored/turret_protected/aisat_interior) +"fOJ" = ( +/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/herringbone, +/area/station/ai_monitored/command/nuke_storage) "fOQ" = ( /obj/structure/cable, /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron, /area/station/security/prison/workout) +"fOW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "fPb" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/engine, @@ -14486,6 +16615,10 @@ /obj/structure/cable, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) +"fQj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "fQA" = ( /obj/effect/spawner/random/structure/chair_maintenance{ dir = 8 @@ -14586,20 +16719,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/prison) -"fSg" = ( -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 4 +"fSm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/turf/open/floor/engine, -/area/station/science/xenobiology) -"fSq" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/rack, -/obj/item/scalpel, -/obj/item/wirecutters, -/obj/machinery/light/small/broken/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +/obj/structure/sign/poster/official/random/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "fSx" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -14676,6 +16803,17 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"fTF" = ( +/obj/structure/table, +/obj/item/stock_parts/matter_bin{ + pixel_x = 6; + pixel_y = 15 + }, +/obj/item/stock_parts/matter_bin{ + pixel_y = 5 + }, +/turf/open/floor/iron/dark, +/area/station/science/lab) "fTM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14694,12 +16832,6 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"fUj" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "fUo" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -14714,6 +16846,12 @@ /obj/effect/mapping_helpers/airlock/access/all/science/general, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"fUC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "fUI" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -14780,10 +16918,20 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/small, /area/station/security/checkpoint/engineering) +"fVF" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/sparsegrass, +/turf/open/floor/grass, +/area/station/service/chapel) "fVG" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs) +"fVM" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "fVU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14791,15 +16939,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) -"fVV" = ( -/obj/structure/sink/kitchen/directional/west, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/machinery/camera/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) "fWe" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -14833,16 +16972,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/aft) -"fWw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red/half/contrasted, -/obj/machinery/computer/security/telescreen/interrogation{ - pixel_y = 29 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security) "fWJ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -14899,6 +17028,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, /area/station/maintenance/department/engine) +"fXr" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/general, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Service Hallway" + }, +/obj/structure/cable, +/turf/open/floor/iron/textured_half, +/area/station/hallway/secondary/service) "fXB" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14944,10 +17083,6 @@ /obj/machinery/atmospherics/components/binary/valve, /turf/open/floor/iron/smooth, /area/station/maintenance/disposal/incinerator) -"fYp" = ( -/obj/effect/landmark/navigate_destination/vault, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "fYr" = ( /obj/structure/table, /obj/item/extinguisher/empty, @@ -14960,28 +17095,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) +"fYS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/electropack, +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine, +/area/station/science/xenobiology) "fYU" = ( /obj/effect/spawner/random/structure/crate_loot, /obj/item/pickaxe, /obj/effect/spawner/random/maintenance, /turf/open/misc/asteroid, /area/station/maintenance/department/engine/atmos) -"fYX" = ( -/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/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/armory, -/obj/machinery/door/airlock/security{ - name = "Warden's Office" - }, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/security/warden) "fZp" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -15002,6 +17128,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/small, /area/station/science/ordnance/storage) +"fZK" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement{ + dir = 1; + pixel_y = 5 + }, +/turf/open/floor/carpet, +/area/station/service/library) "fZL" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -15019,6 +17153,15 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/supermatter/room) +"fZZ" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) "gad" = ( /obj/structure/table/bronze, /obj/item/food/grown/cannabis{ @@ -15051,25 +17194,6 @@ }, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/hop) -"gal" = ( -/obj/structure/table, -/obj/item/reagent_containers/condiment/saltshaker{ - desc = "Salt. From space oceans, presumably. A staple of modern medicine."; - pixel_x = 8; - pixel_y = 7 - }, -/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/radio/intercom/directional/east, -/obj/effect/spawner/random/food_or_drink/condiment{ - pixel_x = -8; - pixel_y = 3 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "gan" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/airlock/research{ @@ -15209,6 +17333,12 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"gcV" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "gdn" = ( /obj/item/kirbyplants/organic/applebush, /obj/effect/turf_decal/tile/red{ @@ -15224,6 +17354,10 @@ "gdr" = ( /turf/closed/wall/rust, /area/station/maintenance/fore/lesser) +"gds" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/engine, +/area/station/science/xenobiology) "gdx" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -15288,13 +17422,6 @@ }, /turf/open/floor/plating, /area/station/medical/treatment_center) -"geC" = ( -/obj/structure/reagent_dispensers/beerkeg, -/obj/structure/sign/picture_frame/portrait/bar{ - pixel_y = 32 - }, -/turf/open/floor/stone, -/area/station/service/bar/backroom) "geE" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/south, @@ -15305,6 +17432,16 @@ /obj/machinery/light/small/directional/west, /turf/open/misc/sandy_dirt, /area/station/hallway/primary/central/fore) +"geH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_red, +/obj/structure/sign/warning/no_smoking/circle/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/security) "geJ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -15366,6 +17503,13 @@ /obj/effect/landmark/start/paramedic, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"gfO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "gfP" = ( /obj/structure/closet/emcloset, /obj/machinery/camera/autoname/directional/south, @@ -15383,6 +17527,18 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/airless, /area/space/nearstation) +"ggc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Departure Lounge" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/textured_half{ + dir = 1 + }, +/area/station/hallway/secondary/exit/departure_lounge) "ggh" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -15399,17 +17555,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"ggq" = ( -/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/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "ggw" = ( /obj/effect/turf_decal/stripes/white/end{ dir = 1 @@ -15419,6 +17564,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"ggJ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "ggN" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 9 @@ -15446,6 +17602,15 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"ghj" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/hydroponics/constructable, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron, +/area/station/service/hydroponics) "ghs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15498,6 +17663,15 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/science/lower) +"ghL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "ghQ" = ( /obj/machinery/nuclearbomb/selfdestruct, /turf/open/floor/circuit/green, @@ -15513,16 +17687,6 @@ /obj/structure/cable, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) -"gih" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "giq" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -15569,6 +17733,13 @@ }, /turf/open/floor/iron/dark/corner, /area/station/science/xenobiology) +"gjn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "gjL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/heat_exchanging/junction{ @@ -15663,6 +17834,16 @@ /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, /area/station/medical/virology) +"gkH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "gkW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -15675,14 +17856,6 @@ "gla" = ( /turf/open/floor/iron/grimy, /area/station/commons) -"glb" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/brown/full, -/obj/structure/reagent_dispensers/beerkeg, -/obj/effect/turf_decal/bot_red/left, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "glJ" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/effect/turf_decal/siding/wideplating, @@ -15834,13 +18007,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"gpy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/toy/plush/slimeplushie{ - name = "Nanners" - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "gpA" = ( /obj/effect/turf_decal/siding/thinplating/terracotta, /obj/effect/decal/cleanable/dirt, @@ -15890,6 +18056,39 @@ /obj/structure/window/spawner/directional/west, /turf/open/floor/plating/rust, /area/station/maintenance/fore/lesser) +"gqd" = ( +/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/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/disposalpipe/sorting/mail{ + dir = 4 + }, +/obj/effect/mapping_helpers/mail_sorting/service/hydroponics, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "gqg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15947,6 +18146,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/department/engine/atmos) +"grH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_red/half/contrasted, +/obj/machinery/computer/security/telescreen/interrogation/directional/north, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security) "gsh" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -16064,26 +18271,9 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/small, /area/station/security/brig) -"guR" = ( -/obj/machinery/modular_computer/preset/curator, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood/parquet, -/area/station/service/library) "guY" = ( /turf/closed/wall, /area/station/service/chapel/storage) -"gvn" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/turf/open/floor/iron/textured_half, -/area/station/security/brig/entrance) "gvB" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -16103,9 +18293,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/security/brig/entrance) -"gvY" = ( -/turf/closed/wall/r_wall, -/area/space) "gwa" = ( /obj/structure/chair{ dir = 1 @@ -16226,6 +18413,30 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"gxv" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/right/directional/south, +/obj/machinery/door/poddoor/shutters{ + name = "Kitchen Shutters"; + id = "kitchenshutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table/reinforced, +/obj/machinery/door/window/right/directional/south, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, +/area/station/service/kitchen) "gxx" = ( /obj/structure/flora/bush/flowers_yw/style_random, /obj/structure/window/reinforced/spawner/directional/west, @@ -16265,6 +18476,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"gyc" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "gyd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/window/spawner/directional/east, @@ -16298,13 +18515,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"gzj" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/beebox, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light/small/directional/north, -/turf/open/floor/grass, -/area/station/service/hydroponics) +"gyx" = ( +/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/dark_red/fourcorners, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "gzs" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 5 @@ -16371,6 +18589,14 @@ dir = 5 }, /area/station/science/research) +"gAH" = ( +/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, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/parquet, +/area/station/service/library) "gAJ" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron, @@ -16394,6 +18620,13 @@ }, /turf/open/space/basic, /area/space/nearstation) +"gBg" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "gBh" = ( /turf/closed/mineral/random/stationside, /area/station/maintenance/department/engine/atmos) @@ -16484,6 +18717,13 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/wood/tile, /area/station/command/bridge) +"gCl" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "gCo" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16629,6 +18869,15 @@ /obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"gEx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "gEy" = ( /obj/structure/lattice/catwalk, /obj/structure/railing/corner{ @@ -16814,6 +19063,10 @@ /obj/item/melee/chainofcommand, /turf/open/floor/iron/smooth, /area/station/command/bridge) +"gHg" = ( +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/glass, +/area/station/hallway/primary/central/aft) "gHl" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -16821,12 +19074,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs) -"gHt" = ( -/obj/structure/kitchenspike, -/obj/effect/turf_decal/bot_red, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "gHD" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/decal/cleanable/dirt, @@ -16864,6 +19111,23 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/command/gateway) +"gIo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen/invisible{ + pixel_x = -2; + pixel_y = 7 + }, +/obj/machinery/newscaster/directional/north, +/obj/item/storage/photo_album/library, +/turf/open/floor/iron/grimy, +/area/station/service/library) "gIr" = ( /obj/machinery/door/poddoor/preopen{ id = "atmos"; @@ -16881,6 +19145,19 @@ /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"gIw" = ( +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + 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, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "gIx" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -16980,7 +19257,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/item/stack/spacecash/c1, -/obj/item/clothing/mask/cigarette/cigar/havana, +/obj/item/cigarette/cigar/havana, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/station/maintenance/starboard/central) "gJS" = ( @@ -17054,6 +19331,15 @@ "gLb" = ( /turf/closed/wall, /area/station/medical/virology) +"gLg" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/camera/autoname/directional/north, +/obj/structure/cable, +/obj/structure/sign/painting/large/library{ + dir = 1 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "gLr" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -17093,6 +19379,16 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/smooth, /area/station/command/bridge) +"gLV" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/trash, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "gLY" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -17143,6 +19439,20 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"gMM" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/delivery/red, +/obj/machinery/door/airlock/medical/glass{ + id_tag = "MedbayFoyer"; + name = "Medbay Clinic" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "medlock"; + name = "Lockdown Shutters" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white/small, +/area/station/medical/medbay/lobby) "gMQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/displaycase/labcage, @@ -17164,6 +19474,15 @@ }, /turf/open/floor/catwalk_floor/iron, /area/station/science/xenobiology) +"gMX" = ( +/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 = 6 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "gNb" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -17180,6 +19499,20 @@ }, /turf/open/floor/iron/small, /area/station/engineering/break_room) +"gNA" = ( +/obj/machinery/door/airlock{ + name = "Hydroponics Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, +/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/iron/textured_half{ + dir = 8 + }, +/area/station/service/hydroponics) "gNC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17209,16 +19542,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/space_catwalk) -"gNU" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "gNV" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/stairs{ @@ -17228,6 +19551,13 @@ "gOm" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/equipment) +"gOt" = ( +/obj/structure/flora/tree/jungle/small/style_2, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "gOw" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/chair{ @@ -17238,6 +19568,42 @@ }, /turf/open/floor/iron, /area/station/security/brig/entrance) +"gOH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/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/maintenance/central/greater) "gOK" = ( /obj/structure/fermenting_barrel/gunpowder, /obj/structure/barricade/wooden/crude, @@ -17278,6 +19644,19 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/engine, /area/station/engineering/atmos) +"gPm" = ( +/obj/machinery/computer/monitor{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/minisat/directional/south, +/turf/open/floor/iron/smooth, +/area/station/ai_monitored/turret_protected/aisat/equipment) +"gPv" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "gPN" = ( /obj/structure/fermenting_barrel, /turf/open/floor/plating, @@ -17342,6 +19721,11 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/engineering/supermatter/room) +"gRm" = ( +/obj/structure/flora/bush/flowers_br, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) "gRp" = ( /obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/machinery/door/airlock/security{ @@ -17351,17 +19735,14 @@ dir = 1 }, /area/station/security/tram) -"gRG" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"gRH" = ( +/obj/machinery/button/door/directional/north{ + id = "Cabin4"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1 }, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/freezer, -/area/station/command/heads_quarters/captain/private) +/turf/closed/wall, +/area/station/service/abandoned_gambling_den) "gRL" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -17375,6 +19756,20 @@ /obj/structure/broken_flooring/singular/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"gSf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/plaque{ + icon_state = "L10"; + pixel_y = -15 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "gSh" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/effect/turf_decal/siding/wideplating{ @@ -17517,15 +19912,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/cafeteria, /area/station/science/circuits) -"gTV" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "gTW" = ( /obj/machinery/door/airlock/hatch, /turf/open/floor/iron, @@ -17614,24 +20000,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/large, /area/station/command/corporate_suite) -"gVq" = ( -/obj/structure/table/wood, -/obj/machinery/firealarm/directional/east, -/obj/item/gun/ballistic/shotgun/doublebarrel, -/obj/item/holosign_creator/robot_seat/bar{ - pixel_x = 2; - pixel_y = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/stone, -/area/station/service/bar/backroom) "gVA" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/grille, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"gVL" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/sparsegrass, +/turf/open/floor/grass, +/area/station/service/chapel) "gVW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light/small/directional/east, @@ -17640,11 +20021,6 @@ "gWb" = ( /turf/closed/wall, /area/station/command/heads_quarters/hos) -"gWf" = ( -/obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/science/xenobiology) "gWk" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ @@ -17668,6 +20044,30 @@ }, /turf/open/floor/catwalk_floor, /area/station/engineering/break_room) +"gWr" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "gWB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17699,6 +20099,14 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating/rust, /area/station/maintenance/fore/lesser) +"gXm" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "gXn" = ( /obj/structure/closet/radiation, /obj/item/clothing/glasses/meson, @@ -17712,11 +20120,18 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) -"gXD" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +"gXy" = ( +/obj/effect/turf_decal/weather/snow, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/structure/cable, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "gXL" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -17743,19 +20158,38 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/construction) -"gYg" = ( +"gXX" = ( +/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/structure/disposalpipe/segment, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/door/airlock/wood{ - name = "Bar Backroom" +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/junction/flip{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/service/bar, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/service/bar) +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "gYq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17766,14 +20200,16 @@ /obj/machinery/vending/wardrobe/robo_wardrobe, /turf/open/floor/catwalk_floor/flat_white, /area/station/science/robotics/augments) -"gYK" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "gYX" = ( -/turf/open/floor/iron/dark/small, -/area/station/commons/vacant_room/commissary) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "gZf" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -17799,15 +20235,6 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"gZo" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "gZt" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -17835,9 +20262,6 @@ dir = 4 }, /area/station/hallway/secondary/entry) -"gZR" = ( -/turf/open/floor/stone, -/area/station/service/bar/backroom) "gZS" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -17886,6 +20310,12 @@ /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) +"haI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/service/bar) "haO" = ( /obj/effect/turf_decal/stripes/white/end, /obj/machinery/door/poddoor/shutters{ @@ -17972,6 +20402,11 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating/rust, /area/station/maintenance/fore/lesser) +"hbO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/twelve_percent_spirit_board, +/turf/open/floor/wood, +/area/station/service/chapel/office) "hbR" = ( /obj/machinery/holopad, /turf/open/floor/iron, @@ -18075,12 +20510,6 @@ /obj/effect/mapping_helpers/requests_console/assistance, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/security/armory) -"hcB" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "hcE" = ( /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 1 @@ -18186,15 +20615,11 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"hee" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/item/storage/fancy/candle_box, -/obj/machinery/light_switch/directional/west, -/obj/structure/rack/skeletal, -/turf/open/floor/iron/grimy, -/area/station/service/library) +"hdZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "hei" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -18208,6 +20633,43 @@ "hem" = ( /turf/closed/wall, /area/station/hallway/primary/fore) +"het" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/bartender, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood, +/obj/structure/cable, +/turf/open/floor/stone, +/area/station/service/bar/backroom) "heB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/box/red/corners, @@ -18285,6 +20747,12 @@ }, /turf/open/floor/iron, /area/station/science/ordnance/testlab) +"heY" = ( +/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/obj/machinery/computer/security, +/obj/machinery/computer/security/telescreen/prison/directional/north, +/turf/open/floor/iron, +/area/station/security/warden) "hfc" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance/three, @@ -18300,6 +20768,15 @@ /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"hfE" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/vending/wardrobe/bar_wardrobe, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/stone, +/area/station/service/bar/backroom) "hfI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18366,11 +20843,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/smooth, /area/station/engineering/main) -"hgE" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "hgF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -18378,6 +20850,16 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"hgO" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "hgP" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -18419,6 +20901,12 @@ /obj/effect/mapping_helpers/airlock/access/any/security/general, /turf/open/floor/iron/textured_half, /area/station/security/checkpoint/customs) +"hhh" = ( +/obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/vending/autodrobe, +/obj/machinery/light/small/directional/east, +/turf/open/floor/wood/parquet, +/area/station/service/greenroom) "hhk" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/pdapainter{ @@ -18455,12 +20943,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"hhZ" = ( -/obj/structure/railing{ +"hhW" = ( +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/turf/open/space/basic, -/area/space) +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/requests_console/auto_name/directional/west, +/obj/effect/mapping_helpers/requests_console/supplies, +/turf/open/floor/stone, +/area/station/service/bar) "hic" = ( /obj/machinery/holopad, /turf/open/floor/wood/large, @@ -18494,6 +20986,15 @@ }, /turf/open/floor/iron/small, /area/station/security/office) +"hiK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "hiU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -18616,12 +21117,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/engineering/main) -"hkJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel/storage) "hkL" = ( /obj/structure/cable, /turf/open/floor/wood/large, @@ -18651,12 +21146,6 @@ /obj/machinery/status_display/ai/directional/west, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) -"hlo" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "hlE" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 4 @@ -18749,6 +21238,15 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) +"hmL" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "hmQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/table, @@ -18781,6 +21279,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"hnn" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "hnG" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ dir = 8; @@ -18871,21 +21376,6 @@ /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/misc/sandy_dirt, /area/station/medical/medbay/lobby) -"hoU" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/machinery/light_switch/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Atmospherics - South" - }, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "hoV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -18930,13 +21420,6 @@ /obj/effect/turf_decal/siding, /turf/open/floor/iron/white, /area/station/science/cytology) -"hpP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/flora/tree/jungle/small/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "hpQ" = ( /obj/structure/closet/crate/coffin, /obj/structure/window/spawner/directional/south, @@ -19002,6 +21485,15 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"hqG" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/hallway/primary/central/aft) "hqH" = ( /obj/structure/reagent_dispensers/watertank, /obj/item/reagent_containers/cup/watering_can/wood, @@ -19027,6 +21519,29 @@ }, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) +"hrc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"hrl" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/west, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/turf/open/floor/iron, +/area/station/service/kitchen) +"hrr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "hrx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -19111,6 +21626,21 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/small, /area/station/engineering/break_room) +"hsu" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 9 + }, +/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/small, +/area/station/hallway/secondary/service) "hsy" = ( /obj/structure/railing/corner{ dir = 4 @@ -19163,26 +21693,36 @@ "htp" = ( /turf/closed/wall, /area/station/service/barber) -"htt" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/table/wood, -/obj/machinery/light/small/built/directional/north, -/obj/item/stack/sheet/iron/ten, -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ +"htu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 8 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 9 }, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) -"htI" = ( -/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/corner, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Backstage Maintenance" +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 9 }, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, -/turf/open/floor/stone, -/area/station/maintenance/central/greater) +/obj/effect/turf_decal/trimline/neutral/corner, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "htM" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 4 @@ -19223,19 +21763,6 @@ dir = 8 }, /area/station/engineering/supermatter/room) -"htV" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 1 - }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 4 - }, -/obj/effect/mapping_helpers/mail_sorting/security/general, -/obj/effect/turf_decal/siding/wideplating/dark/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security) "hua" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -19254,6 +21781,17 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/smooth, /area/station/commons/storage/tools) +"huj" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "hur" = ( /obj/structure/table/glass, /obj/item/storage/briefcase/secure, @@ -19263,6 +21801,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/hallway/secondary/construction) +"huB" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "huE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -19315,11 +21860,41 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/grass, /area/station/medical/virology) -"hvM" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, +"hvO" = ( +/obj/structure/sign/directions/evac/directional/west, +/obj/structure/sign/directions/science/directional/west{ + dir = 4; + pixel_y = -8 + }, +/obj/structure/sign/directions/security/directional/west{ + pixel_y = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/sign/directions/evac/directional/west, +/obj/structure/sign/directions/science/directional/west{ + dir = 4; + pixel_y = -8 + }, +/obj/structure/sign/directions/security/directional/west{ + pixel_y = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central/fore) "hvT" = ( /obj/structure/railing, @@ -19358,12 +21933,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"hwe" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/half, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) "hwh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -19423,13 +21992,6 @@ "hwJ" = ( /turf/closed/wall/rust, /area/space/nearstation) -"hwN" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/machinery/chem_heater/withbuffer, -/turf/open/floor/iron/white, -/area/station/maintenance/central/greater) "hwZ" = ( /obj/structure/chair/bronze{ dir = 8 @@ -19448,22 +22010,6 @@ }, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) -"hxp" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/obj/item/storage/box{ - pixel_x = -8; - pixel_y = 15 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "hxA" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -19517,26 +22063,6 @@ /obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/security/execution/transfer) -"hyl" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/small, -/area/station/hallway/secondary/spacebridge) -"hym" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/table, -/obj/item/trash/cnds, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "hyv" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -19564,12 +22090,39 @@ "hyE" = ( /turf/closed/wall, /area/station/maintenance/starboard/aft) +"hyG" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/griddle, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/griddle, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/sink/kitchen/directional/east, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "hyO" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"hyW" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) "hyX" = ( /obj/structure/window/spawner/directional/north, /obj/machinery/hydroponics/soil, @@ -19585,6 +22138,15 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) +"hzj" = ( +/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/plating, +/area/station/maintenance/central/greater) "hzm" = ( /turf/closed/wall/rust, /area/station/cargo/miningoffice) @@ -19604,28 +22166,6 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/mining, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/cargo/miningoffice) -"hzY" = ( -/obj/structure/cable, -/obj/machinery/light/directional/east, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"hAd" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/reagent_dispensers/watertank/high, -/obj/item/reagent_containers/cup/watering_can, -/obj/machinery/light/small/directional/west, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) "hAu" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -19675,28 +22215,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/plating, /area/station/commons/storage/tools) -"hBr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "kitchenshutters"; - name = "Kitchen Shutters" - }, -/obj/item/plate, -/obj/item/food/sandwich/peanut_butter_jelly, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) -"hBt" = ( -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "hBA" = ( /obj/structure/cable, /obj/effect/spawner/structure/window, @@ -19707,17 +22225,26 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/cmo) -"hBK" = ( +"hBP" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/stripes/red/line{ +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/small, -/area/station/hallway/primary/central/fore) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "hBR" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 @@ -19729,6 +22256,15 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) +"hBU" = ( +/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/hallway/primary/central/aft) "hBW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -19740,6 +22276,17 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"hCd" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 4 + }, +/mob/living/simple_animal/bot/secbot/beepsky/officer, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security) "hCl" = ( /obj/machinery/firealarm/directional/south, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -19756,6 +22303,16 @@ "hCr" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/command/storage/eva) +"hCu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "hCB" = ( /obj/structure/table, /obj/item/paper_bin, @@ -19813,11 +22370,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) -"hDm" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/chair/stool/bar/directional/north, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "hDt" = ( /obj/structure/toilet{ pixel_y = 8 @@ -19892,6 +22444,22 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/smooth, /area/station/engineering/engine_smes) +"hEu" = ( +/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, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"hEw" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/machinery/light/small/directional/east, +/obj/structure/chair/stool/bar/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "hED" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -19899,6 +22467,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) +"hEJ" = ( +/turf/open/floor/iron/smooth, +/area/station/service/library) "hFb" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -19940,6 +22511,15 @@ /obj/effect/spawner/random/structure/crate_abandoned, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"hFJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "hFK" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -19973,6 +22553,10 @@ }, /turf/open/floor/wood, /area/station/engineering/main) +"hGr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/tcommsat/server) "hGt" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -19995,6 +22579,18 @@ /obj/structure/sign/departments/telecomms/directional/south, /turf/open/floor/iron, /area/station/science/lobby) +"hHx" = ( +/obj/machinery/camera/autoname/directional/south, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) +"hHy" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "hHE" = ( /obj/effect/turf_decal/bot_white, /turf/open/floor/engine, @@ -20013,6 +22609,17 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"hHM" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/seed_extractor, +/obj/effect/turf_decal/delivery/white{ + color = "#52B4E9" + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) "hHV" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/structure/lattice/catwalk, @@ -20027,6 +22634,12 @@ }, /turf/open/floor/iron/smooth, /area/station/command/gateway) +"hIm" = ( +/obj/machinery/libraryscanner, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/wood/parquet, +/area/station/service/library) "hIE" = ( /obj/structure/table/glass, /obj/machinery/light/small/directional/east, @@ -20110,6 +22723,19 @@ /obj/structure/sign/warning/no_smoking/circle/directional/east, /turf/open/floor/iron/white, /area/station/science/robotics/augments) +"hKd" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + 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/iron, +/area/station/hallway/primary/central/fore) "hKs" = ( /obj/effect/turf_decal/box/corners, /obj/effect/turf_decal/stripes/white/line{ @@ -20128,6 +22754,16 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) +"hKO" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "hKR" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -20140,9 +22776,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/small, /area/station/security/detectives_office) +"hKV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "hKX" = ( /turf/closed/mineral/random/stationside, /area/station/hallway/primary/fore) +"hKZ" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) "hLa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -20151,6 +22799,10 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) +"hLb" = ( +/obj/machinery/holopad, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "hLc" = ( /turf/open/floor/plating, /area/station/science/xenobiology) @@ -20233,10 +22885,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron, /area/station/security/lockers) -"hMz" = ( -/obj/machinery/computer/order_console/cook, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "hMA" = ( /obj/machinery/status_display/ai/directional/east, /turf/open/floor/iron, @@ -20247,11 +22895,25 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/smooth, /area/station/command/bridge) +"hML" = ( +/obj/effect/landmark/start/hangover, +/turf/open/floor/glass, +/area/station/hallway/primary/central/aft) "hNb" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"hNj" = ( +/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{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_red/half/contrasted, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "hNo" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -20270,6 +22932,55 @@ /obj/effect/turf_decal/tile/brown/opposingcorners, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"hNB" = ( +/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/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/aft) "hNJ" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 @@ -20288,13 +22999,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"hNT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "hNU" = ( /obj/structure/table/reinforced, /obj/structure/spider/stickyweb, @@ -20388,6 +23092,13 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/engine, /area/station/engineering/gravity_generator) +"hPL" = ( +/obj/machinery/firealarm/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/white/small, +/area/station/commons/fitness/locker_room) "hPU" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20414,6 +23125,16 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/circuit, /area/station/tcommsat/server) +"hQx" = ( +/obj/effect/turf_decal/siding/wideplating/dark/corner, +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "hQz" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line, @@ -20440,13 +23161,29 @@ /obj/effect/mapping_helpers/airlock/access/any/security/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"hRc" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ +"hQG" = ( +/obj/structure/chair/wood{ dir = 8 }, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) +/turf/open/floor/stone, +/area/station/service/bar) +"hQM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/food_cart, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) +"hQP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/thinplating{ + dir = 6 + }, +/turf/open/floor/eighties, +/area/station/hallway/primary/central/fore) "hRd" = ( /obj/structure/table/reinforced, /obj/item/binoculars, @@ -20523,6 +23260,15 @@ }, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) +"hSX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/stack/cable_coil, +/obj/item/multitool, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine, +/area/station/science/xenobiology) "hTr" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance{ @@ -20620,6 +23366,9 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/plating, /area/station/security/prison/work) +"hVd" = ( +/turf/open/floor/engine, +/area/station/science/xenobiology) "hVh" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20651,6 +23400,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"hVH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/vending/boozeomat, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "hVJ" = ( /obj/effect/spawner/random/maintenance, /turf/open/floor/iron, @@ -20693,6 +23450,13 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"hWm" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "hWu" = ( /obj/machinery/door/airlock/medical{ name = "CMO Bedroom" @@ -20723,11 +23487,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/security) -"hWQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/bar) "hWU" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -20791,13 +23550,13 @@ /obj/effect/landmark/navigate_destination/research, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) -"hYm" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/iron/large, -/area/station/hallway/secondary/spacebridge) +"hYh" = ( +/obj/structure/flora/bush/jungle/c/style_3, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "hYn" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -20909,6 +23668,18 @@ }, /turf/open/floor/iron, /area/station/security/tram) +"iaf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "iai" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -21016,6 +23787,13 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"ibF" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "ibI" = ( /obj/effect/turf_decal/siding/white/corner{ dir = 8 @@ -21050,6 +23828,18 @@ }, /turf/open/floor/wood, /area/station/hallway/secondary/entry) +"icN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "icT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21103,6 +23893,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"ids" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/button/door/directional/north{ + name = "Door Bolt Control"; + id = "commiss2"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "idt" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -21172,6 +23976,16 @@ /obj/machinery/telecomms/message_server/preset, /turf/open/floor/circuit, /area/station/tcommsat/server) +"ieC" = ( +/obj/structure/table/wood, +/obj/structure/displaycase/forsale/kitchen{ + pixel_y = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "ieM" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -21199,6 +24013,28 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/iron/white, /area/station/science/cytology) +"ifl" = ( +/obj/structure/cable, +/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/spawner/random/trash, +/turf/open/floor/iron/stairs{ + dir = 8 + }, +/area/station/maintenance/port/greater) +"ifH" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/aft) "ifI" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/stripes/line{ @@ -21216,6 +24052,17 @@ /obj/effect/mapping_helpers/airlock/access/all/command/general, /turf/open/floor/plating, /area/station/maintenance/department/bridge) +"ifL" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Library" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/textured_half, +/area/station/service/library) "ifN" = ( /obj/effect/turf_decal/tile/yellow, /obj/machinery/power/apc/auto_name/directional/west, @@ -21256,6 +24103,16 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) +"igW" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/turf/open/floor/eighties, +/area/station/hallway/primary/central/fore) +"ihb" = ( +/obj/effect/spawner/random/trash, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "ihc" = ( /obj/structure/cable, /obj/machinery/door/airlock/command/glass{ @@ -21265,6 +24122,12 @@ /obj/effect/mapping_helpers/airlock/access/all/command/teleporter, /turf/open/floor/iron/dark/textured_half, /area/station/command/teleporter) +"ihd" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "ihh" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, @@ -21293,11 +24156,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/captain) -"iho" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall, -/area/station/hallway/secondary/spacebridge) "ihq" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -21380,6 +24238,15 @@ }, /turf/open/space/basic, /area/space) +"iiI" = ( +/obj/structure/table/reinforced, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor/shutters{ + id = "meow"; + name = "Commissary" + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "iiW" = ( /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, @@ -21393,17 +24260,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"ijm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "ijn" = ( /obj/effect/turf_decal/siding/purple{ dir = 5 @@ -21539,27 +24395,32 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) -"ild" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail/flip{ +"ile" = ( +/obj/structure/chair{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 4 - }, -/obj/effect/mapping_helpers/mail_sorting/security/hos_office, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/turf/open/floor/iron, -/area/station/security) +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "ill" = ( /obj/structure/frame/machine, /obj/item/circuitboard/computer/security, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"ilo" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/trash, +/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/greater) "ilw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21567,6 +24428,17 @@ dir = 4 }, /area/station/science/research) +"ilx" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "ilz" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt/dust, @@ -21632,16 +24504,11 @@ /obj/structure/table, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"inh" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) +"ind" = ( +/obj/machinery/light/floor, +/obj/structure/flora/bush/flowers_br, +/turf/open/floor/grass, +/area/station/hallway/primary/central/fore) "inR" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21655,6 +24522,12 @@ /obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"inU" = ( +/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/white/side, +/area/station/hallway/primary/central/aft) "iob" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21787,10 +24660,6 @@ dir = 8 }, /area/station/command/bridge) -"ipt" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "ipx" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -21906,16 +24775,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"iqN" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "iqY" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; @@ -21995,6 +24854,16 @@ dir = 4 }, /area/station/engineering/supermatter/room) +"isb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "isi" = ( /obj/structure/table, /obj/effect/turf_decal/siding/thinplating_new{ @@ -22129,6 +24998,19 @@ /obj/structure/table/wood, /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) +"itT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/stone, +/area/station/service/bar) +"iub" = ( +/obj/effect/landmark/start/hangover, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "iuc" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "AISat Maintenance" @@ -22151,11 +25033,18 @@ /obj/effect/mapping_helpers/airlock/access/all/science/research, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"iuL" = ( -/obj/machinery/vending/games, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood/parquet, -/area/station/service/library) +"iuF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light_switch/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/cargo/boutique) +"iuR" = ( +/turf/closed/wall/r_wall, +/area/station/hallway/primary/central/aft) "iuW" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/west, @@ -22171,6 +25060,17 @@ /obj/item/melee/baseball_bat, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"ivh" = ( +/obj/structure/cable, +/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/spawner/random/trash, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "ivk" = ( /obj/machinery/atmospherics/components/tank/air{ dir = 8 @@ -22229,20 +25129,6 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron, /area/station/engineering/storage/tech) -"iwa" = ( -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/service/hydroponics) "iwi" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -22254,35 +25140,30 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"iwt" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "iwz" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) -"iwJ" = ( -/obj/structure/table/wood, -/obj/machinery/light/small/directional/south, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring the engine."; - dir = 4; - name = "Engine Monitor"; - network = list("engine"); - pixel_x = -32 - }, -/obj/machinery/status_display/evac/directional/south, -/obj/item/radio/off{ - pixel_x = 1; - pixel_y = 3 +"ixg" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"iwZ" = ( -/obj/structure/disposalpipe/junction/flip{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/bar) "ixl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -22368,6 +25249,16 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"iyr" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/light/cold/directional/north, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/station/science/ordnance/testlab) "iyt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -22388,6 +25279,12 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark, /area/station/science/genetics) +"iyR" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "izh" = ( /obj/item/shovel, /turf/open/floor/plating, @@ -22405,19 +25302,16 @@ }, /turf/open/floor/engine/co2, /area/station/engineering/atmos/space_catwalk) -"izw" = ( -/obj/machinery/transport/tram_controller/tcomms{ - configured_transport_id = "bird_2" +"izo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/grunge{ + name = "Vacant Comissary" }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) -"izB" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/sign/painting/library{ - pixel_y = 32 +/turf/open/floor/iron/textured_half{ + dir = 1 }, -/turf/open/floor/iron/smooth, -/area/station/service/library) +/area/station/maintenance/central/lesser) "izD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22435,6 +25329,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/station/engineering/atmos/storage/gas) +"izP" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "izT" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 8 @@ -22463,7 +25371,7 @@ name = "Cabin Bolt Control"; normaldoorcontrol = 1; specialfunctions = 4; - id = "Cabin4" + id = "Cabin1" }, /turf/open/floor/carpet/orange, /area/station/commons/dorms) @@ -22543,11 +25451,6 @@ /obj/machinery/power/shieldwallgen, /turf/open/floor/iron/smooth_large, /area/station/command/teleporter) -"iBg" = ( -/obj/structure/table, -/obj/item/trash/candle, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "iBj" = ( /obj/structure/table/glass, /obj/item/folder/red{ @@ -22601,6 +25504,22 @@ }, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/captain) +"iCi" = ( +/obj/machinery/computer/security/telescreen/isolation/directional/north{ + name = "reflection room monitor" + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/obj/machinery/firealarm/directional/east, +/obj/machinery/button/flasher{ + id = "IsolationFlash"; + pixel_x = 28; + pixel_y = 28 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/execution/education) "iCj" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -22608,6 +25527,12 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) +"iCo" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "iCp" = ( /obj/structure/railing{ dir = 1 @@ -22712,6 +25637,16 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"iDP" = ( +/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/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "iEk" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -22725,17 +25660,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/engine, /area/station/science/explab) -"iEE" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "iEG" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/dark/side{ @@ -22762,20 +25686,6 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/wood/large, /area/station/command/corporate_suite) -"iEX" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/window/spawner/directional/north, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/obj/structure/disposaloutlet{ - dir = 4; - name = "Cargo Deliveries" - }, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) "iFb" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -22873,6 +25783,14 @@ /obj/structure/broken_flooring/pile/directional/east, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"iGS" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "iHg" = ( /obj/structure/cable, /obj/machinery/door/airlock/maintenance/external{ @@ -22882,6 +25800,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"iHq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/light/small/directional/west, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security/brig/entrance) +"iHv" = ( +/obj/structure/table, +/obj/machinery/computer/security/telescreen/ordnance/directional/north, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/science/ordnance/testlab) "iHw" = ( /obj/effect/spawner/random/structure/barricade, /turf/open/floor/plating, @@ -22890,12 +25824,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/stone, /area/station/service/abandoned_gambling_den) -"iHL" = ( -/obj/structure/bookcase/random, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/wood/parquet, -/area/station/service/library) "iHM" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -22904,6 +25832,13 @@ dir = 1 }, /area/station/science/lower) +"iHT" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/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/greater) "iIs" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -22911,18 +25846,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"iIv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "iIw" = ( /obj/structure/cable, /obj/item/wrench, @@ -22967,6 +25890,12 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) +"iIU" = ( +/obj/machinery/vending/wardrobe/det_wardrobe, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/security/telescreen/normal/directional/west, +/turf/open/floor/wood, +/area/station/security/detectives_office) "iIW" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -23087,9 +26016,6 @@ /obj/structure/sign/warning/no_smoking/circle/directional/north, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"iJN" = ( -/turf/open/floor/iron/grimy, -/area/station/service/library) "iJO" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/components/unary/portables_connector/visible, @@ -23154,6 +26080,10 @@ /obj/effect/turf_decal/siding/red, /turf/open/floor/iron/white/small, /area/station/security/warden) +"iLh" = ( +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/smooth, +/area/station/service/library) "iLp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -23166,10 +26096,19 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"iLq" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/small, -/area/station/commons/vacant_room/commissary) +"iLA" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/station/hallway/primary/central/fore) "iLC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -23189,14 +26128,17 @@ dir = 8 }, /area/station/hallway/primary/central/fore) -"iLK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +"iLH" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance" }, -/obj/structure/sign/departments/holy/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "iLN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -23309,11 +26251,31 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"iNC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/exit/departure_lounge) "iNE" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"iNF" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "iNO" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 6 @@ -23496,6 +26458,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"iQp" = ( +/obj/structure/flora/bush/sparsegrass, +/turf/open/floor/grass, +/area/station/service/chapel) "iQr" = ( /obj/effect/turf_decal/tile/brown{ dir = 1 @@ -23566,6 +26532,19 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"iRQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/aft) "iSb" = ( /obj/structure/frame/computer{ dir = 1 @@ -23701,6 +26680,26 @@ /obj/item/crowbar/large/old, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) +"iUh" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"iUH" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/camera/autoname/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "iUK" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -23721,6 +26720,15 @@ /obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/commons/dorms) +"iUY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/light/cold/directional/west, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "iVq" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -23782,6 +26790,23 @@ }, /turf/open/floor/plating, /area/station/cargo/miningoffice) +"iVP" = ( +/obj/structure/rack, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/storage/toolbox/electrical{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/clothing/head/utility/welding, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "iVT" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -23860,6 +26885,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"iWL" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "iWQ" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/effect/landmark/start/chemist, @@ -23911,6 +26948,12 @@ dir = 8 }, /area/station/engineering/supermatter/room) +"iXi" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall/r_wall, +/area/station/hallway/primary/central/aft) "iXm" = ( /obj/structure/cable, /obj/structure/disposalpipe/sorting/mail/flip{ @@ -23949,6 +26992,18 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/dark, /area/station/science/server) +"iXZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"iYc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/stone, +/area/station/service/bar) "iYh" = ( /obj/structure/fluff/broken_canister_frame, /turf/open/floor/plating, @@ -23989,15 +27044,6 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/security/processing) -"iZc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/office{ - dir = 4 - }, -/obj/machinery/holopad, -/turf/open/floor/wood/parquet, -/area/station/service/library) "iZu" = ( /obj/effect/turf_decal/tile/neutral/full, /obj/item/kirbyplants/random, @@ -24036,39 +27082,41 @@ /obj/effect/spawner/random/food_or_drink/seed, /turf/open/misc/sandy_dirt, /area/station/maintenance/starboard/aft) -"iZI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) -"iZK" = ( +"iZM" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/library) +"iZO" = ( /obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 + dir = 10 }, /obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 + dir = 5 }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=19.0-Engineering-CentralPort"; - location = "18.0-ToolStorage-Engineering" +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 8 }, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/hallway/primary/fore) +/area/station/hallway/primary/central/fore) "iZU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/directional/east, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain) +"iZW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "jad" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -24104,6 +27152,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/small, /area/station/ai_monitored/command/storage/eva) +"jaG" = ( +/obj/structure/flora/rock/pile/jungle/style_2, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "jaK" = ( /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 1 @@ -24175,11 +27230,23 @@ }, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"jbL" = ( -/obj/structure/disposalpipe/segment, +"jby" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance" + }, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/any/service/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, /turf/open/floor/plating, -/area/station/maintenance/central/greater) +/area/station/maintenance/port/greater) "jbV" = ( /obj/machinery/photocopier, /turf/open/floor/iron/dark, @@ -24247,6 +27314,10 @@ /obj/effect/landmark/start/captain, /turf/open/floor/iron/freezer, /area/station/command/heads_quarters/captain/private) +"jdx" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/station/service/library) "jdU" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -24264,6 +27335,13 @@ "jeh" = ( /turf/open/floor/noslip, /area/station/security/tram) +"jep" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron/dark/small, +/area/station/service/chapel/storage) "jeC" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -24279,13 +27357,17 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron/smooth_large, /area/station/science/ordnance/storage) -"jeV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red{ +"jeO" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/turf/open/floor/iron/white/corner, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/aft) "jeW" = ( /obj/effect/spawner/structure/window, /obj/structure/sign/departments/medbay/alt/directional/west, @@ -24351,6 +27433,14 @@ }, /turf/open/floor/iron, /area/station/security/prison/workout) +"jgU" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/large/style_random{ + pixel_x = -20; + pixel_y = 3 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "jhk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24476,19 +27566,6 @@ }, /turf/open/floor/iron/small, /area/station/maintenance/department/engine/atmos) -"jiN" = ( -/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{ - name = "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/central/greater) "jiR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/engine/vacuum, @@ -24542,17 +27619,12 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/medical/chemistry) -"jjS" = ( -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=23.1-Evac"; - location = "22.0-Porthall-Evac" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +"jkv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/stone, +/area/station/service/bar) "jkz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -24580,6 +27652,13 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"jkN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "jkS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24587,6 +27666,11 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) +"jkT" = ( +/obj/structure/table/wood, +/obj/machinery/fax/auto_name, +/turf/open/floor/carpet, +/area/station/service/library) "jkV" = ( /obj/machinery/door/airlock/external/glass{ name = "ATMOS PROJECT Airlock" @@ -24615,6 +27699,20 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) +"jlz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/service/chapel/storage) +"jlA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/chair/sofa/bench/right, +/turf/open/floor/stone, +/area/station/service/chapel) "jlL" = ( /obj/structure/closet/secure_closet/engineering_chief, /obj/item/storage/briefcase/secure, @@ -24648,6 +27746,11 @@ /obj/machinery/duct, /turf/open/floor/iron/white/small, /area/station/medical/storage) +"jlW" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_pp/style_2, +/turf/open/floor/grass, +/area/station/service/chapel) "jlZ" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -24663,12 +27766,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"jme" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/iron/textured_half, -/area/station/service/theater) "jmi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -24756,6 +27853,10 @@ /obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/iron/small, /area/station/engineering/atmos/storage/gas) +"jnF" = ( +/obj/structure/table/wood, +/turf/open/floor/stone, +/area/station/service/bar) "jnN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -24774,10 +27875,29 @@ }, /turf/open/floor/plating, /area/station/command/corporate_showroom) -"joy" = ( +"joH" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/pen, +/obj/machinery/door/poddoor/shutters{ + id = "meow"; + name = "Commissary" + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"joR" = ( +/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, -/turf/open/floor/wood/parquet, -/area/station/service/library) +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "joS" = ( /obj/machinery/light/broken/directional/north, /obj/effect/decal/cleanable/dirt, @@ -24824,21 +27944,19 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"jpy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "jpE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth_large, /area/station/science/auxlab/firing_range) -"jpK" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "jpM" = ( /obj/structure/closet{ name = "Evidence Closet 3" @@ -24925,12 +28043,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) -"jqQ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "jqZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -25006,13 +28118,6 @@ dir = 1 }, /area/station/cargo/office) -"jrZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/flora/tree/jungle/small/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "jsa" = ( /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/white/side{ @@ -25030,18 +28135,15 @@ /obj/item/book/manual/wiki/tgc, /turf/open/floor/carpet/green, /area/station/commons/dorms) -"jsG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ +"jsJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/machinery/status_display/evac/directional/north, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/area/station/hallway/primary/port) "jsN" = ( /obj/structure/hedge, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -25078,6 +28180,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"jtj" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "jts" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -25158,24 +28268,21 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/hop) +"jvd" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "jvl" = ( /obj/machinery/holopad, /obj/structure/cable, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/captain/private) -"jvB" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "jvN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -25217,6 +28324,16 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"jvT" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/machinery/vatgrower, +/turf/open/floor/engine, +/area/station/science/cytology) "jwa" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -25245,6 +28362,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) +"jwl" = ( +/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/dark_red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security) "jwC" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ dir = 5 @@ -25302,12 +28434,6 @@ "jxp" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/foyer) -"jxy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/navigate_destination/library, -/turf/open/floor/wood/parquet, -/area/station/service/library) "jxC" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -25330,6 +28456,12 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/station/cargo/storage) +"jxO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "jxU" = ( /obj/effect/turf_decal/siding/blue{ dir = 9 @@ -25396,6 +28528,13 @@ }, /turf/open/floor/iron/grimy, /area/station/engineering/main) +"jyq" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "jyu" = ( /obj/structure/chair/bronze{ dir = 4 @@ -25456,14 +28595,6 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"jza" = ( -/obj/machinery/rnd/production/techfab/department/service, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) "jzg" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -25497,6 +28628,14 @@ /obj/structure/broken_flooring/singular/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"jzr" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "jzJ" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/structure/closet/firecloset, @@ -25588,11 +28727,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"jCA" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/table, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "jCP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -25600,6 +28734,30 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) +"jCT" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) +"jCU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/flashlight/lantern/on, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "jCZ" = ( /obj/machinery/door/window/brigdoor/left/directional/west{ id = "Cell 1"; @@ -25653,22 +28811,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, /area/station/command/corporate_dock) -"jDP" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/item/storage/box{ - pixel_x = -8; - pixel_y = 15 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) "jDS" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -25783,24 +28925,25 @@ dir = 8 }, /area/station/commons/storage/tools) -"jEU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/landmark/start/chaplain, -/turf/open/floor/wood/large, -/area/station/service/chapel) "jEZ" = ( /obj/structure/hedge, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"jFf" = ( -/obj/effect/turf_decal/tile/green/diagonal_centre, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) +"jFa" = ( +/obj/structure/table/wood, +/obj/item/pai_card, +/obj/item/storage/crayons, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/library) "jFh" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron, @@ -25841,11 +28984,6 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"jFY" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/floor, -/turf/open/floor/iron/smooth, -/area/station/service/library) "jGc" = ( /obj/structure/window/spawner/directional/east, /turf/open/floor/iron/showroomfloor, @@ -25856,6 +28994,14 @@ }, /turf/open/floor/iron, /area/station/security) +"jGf" = ( +/obj/structure/cable, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "jGk" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -25955,6 +29101,16 @@ /obj/machinery/incident_display/tram/directional/north, /turf/open/floor/iron, /area/station/security/tram) +"jHt" = ( +/obj/machinery/light/floor, +/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/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/service/bar) "jHx" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold/dark/hidden, @@ -25969,6 +29125,38 @@ /mob/living/basic/sloth/citrus, /turf/open/floor/iron, /area/station/cargo/storage) +"jHH" = ( +/obj/effect/spawner/random/trash, +/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/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/spawner/random/trash, +/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/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/trash, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "jHI" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 5 @@ -26079,6 +29267,46 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/cargo/office) +"jIU" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/table, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/landmark/event_spawn, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_y = 9; + pixel_x = 4 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "jIY" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -26158,30 +29386,6 @@ dir = 1 }, /area/station/science/xenobiology) -"jKh" = ( -/obj/machinery/vending/hydroseeds{ - slogan_delay = 700 - }, -/obj/effect/turf_decal/delivery/white{ - color = "#52B4E9" - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) -"jKm" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/light/cold/directional/south, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "jKq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26228,34 +29432,45 @@ }, /turf/open/floor/iron, /area/station/commons/storage/tools) -"jLh" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ - dir = 6 - }, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) "jLl" = ( /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/starboard/greater) -"jLr" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +"jLp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 8 + }, /obj/effect/turf_decal/trimline/neutral/line{ + dir = 5 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/corner{ dir = 8 }, /obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 + dir = 5 }, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/area/station/hallway/primary/central/aft) "jLB" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -26263,6 +29478,16 @@ }, /turf/open/floor/iron, /area/station/security/prison) +"jLC" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/chem_dispenser/drinks/beer, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "jLF" = ( /obj/machinery/atmospherics/components/unary/passive_vent{ dir = 4; @@ -26283,6 +29508,18 @@ "jLR" = ( /turf/open/floor/iron/small, /area/station/command/teleporter) +"jLS" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -2; + pixel_y = 4 + }, +/turf/open/floor/carpet, +/area/station/service/library) "jLV" = ( /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/white, @@ -26315,13 +29552,6 @@ }, /turf/open/floor/iron/small, /area/station/engineering/atmos/pumproom) -"jMC" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/science/xenobiology) "jML" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -26389,13 +29619,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"jNJ" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) "jNL" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -26496,6 +29719,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/fore/greater) +"jPo" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "jPq" = ( /obj/structure/disposalpipe/segment, /obj/effect/spawner/structure/window/reinforced/tinted, @@ -26514,15 +29746,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/security/execution/transfer) -"jQg" = ( -/obj/structure/table/wood, -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ - dir = 10 - }, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) "jQj" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -26536,6 +29759,16 @@ /obj/effect/mapping_helpers/airlock/access/all/science/research, /turf/open/floor/catwalk_floor/flat_white, /area/station/science/research) +"jQv" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/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/plating, +/area/station/maintenance/port/greater) "jQB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -26543,13 +29776,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/small, /area/station/commons/fitness/locker_room) -"jQW" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Fore Primary Hallway" - }, -/turf/open/floor/iron/textured_half, -/area/station/hallway/primary/central/fore) "jRk" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -26559,6 +29785,22 @@ }, /turf/open/floor/iron/smooth, /area/station/command/corporate_showroom) +"jRl" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/machinery/firealarm/directional/east, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/button/door/directional/north{ + id = "meow"; + name = "Comissary Shutters"; + pixel_x = 29 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "jRs" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -26584,10 +29826,16 @@ }, /turf/open/floor/iron, /area/station/security) -"jRI" = ( -/obj/structure/table, -/turf/open/floor/iron/dark/small, -/area/station/commons/vacant_room/commissary) +"jRJ" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/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/plating, +/area/station/maintenance/port/greater) "jRR" = ( /obj/machinery/atmospherics/components/binary/crystallizer{ dir = 4 @@ -26620,10 +29868,24 @@ /obj/structure/railing, /turf/open/floor/catwalk_floor, /area/station/hallway/secondary/entry) -"jSK" = ( -/obj/structure/table/wood, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) +"jSJ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/service/chapel) +"jSN" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 10 + }, +/obj/structure/sign/poster/official/random/directional/south, +/obj/machinery/light/small/directional/south, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "jSQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/item/kirbyplants/random, @@ -26678,6 +29940,13 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, /area/station/cargo/storage) +"jTC" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/autoname/directional/east, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "jTU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -26723,6 +29992,23 @@ /obj/item/instrument/harmonica, /turf/open/floor/iron, /area/station/security/prison/rec) +"jUr" = ( +/obj/item/cigarette, +/obj/item/storage/fancy/cigarettes/cigpack_robust{ + pixel_y = 5; + pixel_x = 6 + }, +/obj/item/lighter, +/obj/structure/sign/poster/official/random/directional/east, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 6 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "jUx" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -26740,12 +30026,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"jVg" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood/parquet, -/area/station/service/library) "jVs" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26756,6 +30036,20 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"jVD" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L5"; + pixel_y = -15 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "jVI" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/landmark/event_spawn, @@ -26804,6 +30098,14 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine/atmos) +"jWj" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "jWk" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, @@ -26865,6 +30167,12 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/textured_large, /area/station/cargo/office) +"jXc" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "jXe" = ( /obj/machinery/holopad/secure, /turf/open/floor/iron/smooth, @@ -26918,6 +30226,10 @@ /obj/effect/turf_decal/siding/wideplating/dark/corner, /turf/open/floor/iron, /area/station/security) +"jXJ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) "jXQ" = ( /obj/structure/flora/bush/large/style_random{ pixel_x = -18; @@ -27039,11 +30351,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/station/science/ordnance/storage) -"kai" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron/smooth, -/area/station/cargo/drone_bay) "kam" = ( /obj/effect/decal/cleanable/cobweb, /obj/machinery/disposal/delivery_chute{ @@ -27056,19 +30363,6 @@ /obj/effect/turf_decal/stripes/box, /turf/open/floor/plating, /area/station/service/janitor) -"kar" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/airlock/public/glass{ - name = "Chapel Office" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, -/turf/open/floor/iron/textured_half, -/area/station/service/chapel/office) "kat" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -27121,6 +30415,11 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) +"kaM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/stone, +/area/station/service/chapel) "kaP" = ( /obj/structure/lattice, /obj/structure/grille, @@ -27142,6 +30441,13 @@ /obj/structure/thermoplastic/light, /turf/open/floor/tram, /area/station/maintenance/port/aft) +"kbk" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/wood, +/area/station/cargo/boutique) "kbm" = ( /obj/item/kirbyplants/random, /obj/machinery/airalarm/directional/south, @@ -27166,11 +30472,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/construction) -"kcs" = ( -/obj/effect/turf_decal/tile/green/diagonal_centre, -/obj/effect/landmark/navigate_destination/kitchen, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "kcA" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -27179,6 +30480,20 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) +"kcF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/plaque{ + icon_state = "L2"; + pixel_y = -15 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "kcQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 1 @@ -27191,12 +30506,21 @@ /obj/structure/cable, /turf/open/floor/circuit, /area/station/tcommsat/server) -"kdl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/sign/departments/vault/directional/south, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) +"kdc" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_yw, +/turf/open/floor/grass, +/area/station/service/chapel) +"kdg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/displaycase/trophy, +/turf/open/floor/wood/parquet, +/area/station/service/library) "kdn" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -27255,9 +30579,6 @@ "ket" = ( /turf/open/floor/iron, /area/station/security/prison/work) -"kev" = ( -/turf/closed/wall, -/area/station/hallway/secondary/spacebridge) "keO" = ( /obj/effect/spawner/random/trash, /obj/effect/turf_decal/siding/white{ @@ -27285,17 +30606,9 @@ /obj/machinery/power/energy_accumulator/tesla_coil, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"keZ" = ( -/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/turf_decal/tile/dark_red/fourcorners, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/security/brig/entrance) +"kfi" = ( +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "kft" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27330,13 +30643,6 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"kfM" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "kfW" = ( /obj/effect/turf_decal/siding/yellow{ dir = 1 @@ -27348,6 +30654,18 @@ }, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) +"kge" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/firealarm/directional/west, +/obj/structure/cable, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/stone, +/area/station/service/bar) "kgh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27379,7 +30697,7 @@ /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/components/unary/passive_vent, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "kgw" = ( /obj/machinery/door/airlock{ name = "Gambling Den" @@ -27389,16 +30707,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) -"kgz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "kgG" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -27478,15 +30786,6 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"khE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/sign/departments/holy/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "khG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27515,6 +30814,12 @@ dir = 1 }, /area/station/hallway/primary/central/fore) +"khY" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "khZ" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27527,6 +30832,25 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) +"kii" = ( +/obj/structure/flora/bush/flowers_yw/style_3{ + pixel_y = -3 + }, +/obj/structure/flora/bush/flowers_br/style_random{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/structure/flora/bush/flowers_pp{ + pixel_y = -5; + pixel_x = -3 + }, +/obj/machinery/light/floor, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/grass/Airless, +/area/station/hallway/primary/central/aft) "kit" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -27614,6 +30938,12 @@ /obj/structure/plasticflaps/opaque, /turf/open/floor/plating, /area/station/maintenance/department/bridge) +"kkc" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "kkd" = ( /obj/machinery/door/window/brigdoor/left/directional/west{ name = "Creature Pen"; @@ -27724,6 +31054,15 @@ /obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/iron/smooth, /area/station/maintenance/disposal/incinerator) +"klN" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/bush/large/style_random{ + pixel_y = 0 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "klY" = ( /obj/effect/turf_decal/stripes/white/line, /obj/effect/spawner/random/maintenance, @@ -27856,6 +31195,15 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/dark, /area/station/cargo/storage) +"knN" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/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/hallway/primary/central/fore) "knO" = ( /obj/structure/disposalpipe/segment, /obj/machinery/airalarm/directional/east, @@ -27987,11 +31335,6 @@ /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/brig/entrance) -"kqo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/closed/wall/r_wall, -/area/station/hallway/secondary/spacebridge) "kqr" = ( /obj/item/radio/intercom/directional/north, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ @@ -28097,6 +31440,18 @@ "kqX" = ( /turf/closed/wall, /area/station/ai_monitored/aisat/exterior) +"kqZ" = ( +/obj/structure/table, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/light/cold/directional/east, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "krd" = ( /obj/machinery/rnd/production/circuit_imprinter/department/science, /obj/machinery/newscaster/directional/north, @@ -28104,6 +31459,15 @@ dir = 4 }, /area/station/science/lab) +"krf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "krk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/small, @@ -28174,15 +31538,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/port/fore) -"kst" = ( -/obj/structure/chair/plastic{ - dir = 4 - }, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "ksv" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -28338,6 +31693,14 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/office) +"kuk" = ( +/obj/machinery/light/warm/dim, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "kuq" = ( /obj/machinery/computer/cargo/request, /turf/open/floor/plating, @@ -28358,15 +31721,6 @@ /obj/structure/closet/secure_closet/miner, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"kuE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "kuO" = ( /obj/structure/chair{ dir = 1; @@ -28396,6 +31750,16 @@ /obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"kvD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "kvI" = ( /obj/docking_port/stationary/random{ dir = 8; @@ -28441,6 +31805,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) +"kwy" = ( +/obj/structure/cable, +/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/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "kwA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -28499,6 +31873,13 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) +"kxx" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "kxF" = ( /obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, @@ -28518,6 +31899,22 @@ /obj/structure/window/spawner/directional/east, /turf/open/floor/plating/rust, /area/station/maintenance/fore/lesser) +"kxY" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/left/directional/south{ + name = "Hydroponics Desk" + }, +/obj/machinery/door/firedoor, +/obj/item/paper/guides/jobs/hydroponics, +/obj/item/pen{ + pixel_x = 4 + }, +/obj/machinery/door/window/right/directional/north{ + name = "Hydroponics Desk"; + req_access = list("hydroponics") + }, +/turf/open/floor/plating, +/area/station/service/hydroponics) "kya" = ( /obj/structure/table/greyscale, /obj/item/paper{ @@ -28540,6 +31937,13 @@ /obj/structure/sign/warning/no_smoking/circle/directional/west, /turf/open/floor/iron/smooth, /area/station/engineering/atmos) +"kym" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/cargo/boutique) "kyr" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/airalarm/directional/west, @@ -28561,37 +31965,12 @@ /obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"kyZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"kzd" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/lone, -/area/station/service/chapel/office) -"kzu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 +"kzf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/turf/open/floor/wood, +/area/station/service/chapel) "kzv" = ( /obj/structure/chair/sofa/bench/left{ dir = 8 @@ -28602,24 +31981,19 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) -"kzx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "kzI" = ( /obj/effect/turf_decal/bot_white, /obj/effect/spawner/random/structure/closet_empty/crate, /turf/open/floor/iron/smooth_large, /area/station/cargo/warehouse) +"kzO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/service/chapel) "kzP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash, @@ -28666,6 +32040,26 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/stone, /area/station/maintenance/aft) +"kAU" = ( +/obj/structure/table, +/obj/effect/turf_decal/siding{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) +"kBf" = ( +/obj/structure/cable, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "kBg" = ( /obj/structure/cable, /turf/open/floor/iron/small, @@ -28697,6 +32091,27 @@ /obj/machinery/atmospherics/pipe/smart/manifold/pink/visible, /turf/closed/wall/mineral/titanium/nodiagonal, /area/station/engineering/supermatter) +"kBH" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/vending/cigarette, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) "kBZ" = ( /obj/machinery/door/airlock/command{ name = "Chief Engineer's Office" @@ -28709,10 +32124,37 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"kCw" = ( +/obj/effect/spawner/structure/window, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/spawner/structure/window, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, +/area/station/service/bar) "kCy" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/command/heads_quarters/captain) +"kCB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad, +/obj/effect/landmark/event_spawn, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/cargo/boutique) "kCC" = ( /obj/structure/sink/directional/west, /obj/structure/table/bronze, @@ -28775,6 +32217,26 @@ /obj/structure/chair/stool/directional/north, /turf/open/floor/carpet/purple, /area/station/commons/dorms) +"kDv" = ( +/obj/machinery/door/airlock{ + name = "Kitchen" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/door/airlock{ + name = "Hydroponics Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, +/area/station/maintenance/central/greater) "kDY" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/machinery/door/airlock/public/glass{ @@ -28889,6 +32351,16 @@ "kFS" = ( /turf/closed/mineral/random/stationside, /area/station/engineering/atmos) +"kFT" = ( +/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 = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "kFU" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron, @@ -28896,6 +32368,14 @@ "kFY" = ( /turf/closed/wall/r_wall, /area/station/medical/morgue) +"kGb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood, +/area/station/service/chapel) "kGm" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -28916,6 +32396,15 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) +"kGw" = ( +/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/siding/thinplating{ + dir = 4 + }, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "kGB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -28934,9 +32423,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/wood/parquet, /area/station/service/library) -"kGS" = ( -/turf/open/floor/iron/white, -/area/station/maintenance/central/greater) "kGY" = ( /obj/structure/plasticflaps/opaque, /obj/effect/turf_decal/bot, @@ -28978,6 +32464,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"kHy" = ( +/obj/structure/chair/stool/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood/tile, +/area/station/service/bar) "kHI" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -29023,6 +32518,10 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"kHX" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "kIj" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -29167,23 +32666,45 @@ /obj/structure/cable, /turf/open/floor/iron/stairs, /area/station/engineering/storage/tech) -"kJX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"kKa" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) +"kKh" = ( +/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/security/glass{ + id_tag = "outerbrig"; + name = "Brig" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" }, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 +/turf/open/floor/iron/textured_half, +/area/station/security/brig/entrance) +"kKD" = ( +/obj/structure/chair/comfy/brown, +/obj/structure/sign/painting/library{ + pixel_x = 30 }, -/obj/effect/turf_decal/trimline/neutral/line{ +/turf/open/floor/wood/parquet, +/area/station/service/library) +"kKJ" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/camera/autoname/directional/east, +/obj/effect/spawner/random/entertainment/arcade{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/light/small/dim/directional/east, +/turf/open/floor/eighties/red, /area/station/hallway/primary/central/fore) -"kKa" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "kKT" = ( /obj/machinery/computer/camera_advanced/xenobio{ dir = 4 @@ -29209,6 +32730,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/service/chapel/funeral) +"kLs" = ( +/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/structure/cable, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "kLv" = ( /obj/effect/decal/cleanable/oil/slippery, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29230,6 +32761,16 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/carpet, /area/station/medical/psychology) +"kMA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/warm/dim, +/obj/machinery/camera/autoname/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "kMW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29255,6 +32796,17 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"kNx" = ( +/obj/machinery/door/airlock{ + name = "Kitchen" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/structure/cable, +/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/plating, +/area/station/maintenance/central/greater) "kNz" = ( /obj/structure/closet/emcloset, /turf/open/floor/iron/small, @@ -29315,6 +32867,14 @@ /obj/structure/cable, /turf/closed/wall/r_wall, /area/station/maintenance/solars/port/aft) +"kOx" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/landmark/start/botanist, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "kOG" = ( /obj/structure/cable, /obj/machinery/door/airlock/external{ @@ -29361,6 +32921,15 @@ }, /turf/open/floor/iron/dark/side, /area/station/security/execution/transfer) +"kPo" = ( +/obj/structure/cable, +/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/plating, +/area/station/maintenance/port/greater) "kPv" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -29389,14 +32958,12 @@ "kQe" = ( /obj/machinery/button/door/directional/west{ id = "QMLoaddoor"; - layer = 4; name = "Loading Doors"; pixel_y = -8; req_access = list("cargo") }, /obj/machinery/button/door/directional/west{ id = "QMLoaddoor2"; - layer = 4; name = "Loading Doors"; pixel_y = 8; req_access = list("cargo") @@ -29434,18 +33001,6 @@ "kQt" = ( /turf/closed/wall/r_wall, /area/station/maintenance/starboard/aft) -"kQA" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 5 - }, -/obj/machinery/requests_console/directional/south{ - department = "Kitchen"; - name = "Kitchen Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "kQM" = ( /obj/machinery/holopad, /turf/open/floor/iron, @@ -29571,17 +33126,6 @@ /obj/machinery/photocopier, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"kSV" = ( -/obj/structure/chair/stool/bamboo{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"kTd" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/wood/parquet, -/area/station/service/library) "kTp" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall, @@ -29617,6 +33161,15 @@ /obj/structure/tank_holder/extinguisher, /turf/open/floor/catwalk_floor, /area/station/science/xenobiology) +"kTF" = ( +/obj/machinery/light/warm/dim, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "kTG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -29628,6 +33181,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/hallway/secondary/command) +"kTX" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) +"kUa" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "kUf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -29641,6 +33209,23 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"kUL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"kUY" = ( +/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/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/library) "kVb" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29703,18 +33288,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/small, /area/station/security/office) -"kWF" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/window/right/directional/north{ - name = "Kitchen Delivery Access"; - req_access = list("kitchen") - }, -/obj/effect/turf_decal/delivery/white{ - color = "#52B4E9" - }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "kWJ" = ( /obj/structure/chair/sofa/bench/left{ dir = 1 @@ -29771,13 +33344,6 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"kXO" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/frame/machine, -/obj/item/circuitboard/machine/chem_dispenser, -/obj/item/stack/cable_coil/five, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "kXQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -29870,6 +33436,13 @@ /obj/item/modular_computer/laptop, /turf/open/floor/iron/grimy, /area/station/science/cubicle) +"kZj" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/grass/jungle/b/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "kZx" = ( /obj/machinery/button/door/directional/north{ id = "main_surgery"; @@ -29908,6 +33481,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/plating, /area/station/science/ordnance/testlab) +"kZT" = ( +/obj/structure/cable, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "lae" = ( /obj/machinery/atmospherics/components/binary/pump/on{ name = "Cold Loop to Gas" @@ -29934,6 +33511,19 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine/atmos) +"laK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "laL" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 @@ -29959,18 +33549,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/port/aft) -"lbh" = ( -/obj/structure/sign/directions/evac, -/obj/structure/sign/directions/engineering{ - dir = 1; - pixel_y = 8 - }, -/obj/structure/sign/directions/medical{ - dir = 4; - pixel_y = -9 - }, -/turf/closed/wall, -/area/station/hallway/primary/central/fore) "lbF" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 @@ -30002,15 +33580,6 @@ }, /turf/open/floor/iron, /area/station/security/brig/entrance) -"lca" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "lce" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 9 @@ -30058,6 +33627,30 @@ /obj/machinery/camera/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"lcD" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"lcF" = ( +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/glass, +/area/station/hallway/primary/central/aft) +"lcY" = ( +/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/neutral{ + dir = 1 + }, +/obj/effect/landmark/navigate_destination/hop, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "lda" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30096,15 +33689,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/textured_half, /area/station/security/brig) -"ldZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "lee" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/purple/opposingcorners, @@ -30113,11 +33697,20 @@ }, /turf/open/floor/iron/cafeteria, /area/station/science/circuits) -"lej" = ( -/obj/structure/kitchenspike, -/obj/effect/turf_decal/bot_red, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) +"lei" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Office" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, +/turf/open/floor/iron/textured_half, +/area/station/service/chapel/office) "lek" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/corner{ @@ -30139,7 +33732,7 @@ pixel_x = 5; pixel_y = 9 }, -/obj/item/clothing/mask/cigarette/candy{ +/obj/item/cigarette/candy{ pixel_x = -3; pixel_y = 10 }, @@ -30245,6 +33838,24 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/security/prison) +"lfH" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/effect/spawner/random/food_or_drink/condiment, +/turf/open/floor/plating, +/area/station/service/kitchen) "lfI" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -30386,25 +33997,25 @@ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) +"lgQ" = ( +/obj/machinery/computer/security/telescreen/cmo/directional/west, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/cmo) "lgV" = ( /obj/structure/table, /obj/item/camera, /turf/open/floor/iron, /area/station/security/prison/workout) -"lhg" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/delivery/red, -/obj/machinery/door/airlock/medical/glass{ - id_tag = "MedbayFoyer"; - name = "Medbay Clinic" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "medlock"; - name = "Lockdown Shutters" +"lhi" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/button/door/directional/north{ + id = "vaco"; + name = "Comissary Shutters"; + pixel_x = 29 }, -/turf/open/floor/iron/white/small, -/area/station/medical/medbay/lobby) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central/lesser) "lhl" = ( /obj/effect/spawner/random/trash/graffiti{ pixel_x = 32; @@ -30460,12 +34071,63 @@ /obj/item/pickaxe, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) +"lhU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/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/hallway/primary/central/fore) "lhZ" = ( /obj/machinery/suit_storage_unit/engine, /obj/structure/cable, /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"lio" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/window/right/directional/south{ + name = "AI Security Door" + }, +/obj/machinery/flasher/directional/west{ + id = "ai" + }, +/turf/open/floor/circuit/red, +/area/station/ai_monitored/turret_protected/ai) +"lir" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"liw" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 8 + }, +/obj/effect/landmark/navigate_destination/kitchen, +/turf/open/floor/wood, +/area/station/hallway/primary/central/aft) "lix" = ( /obj/structure/table/reinforced, /obj/item/grenade/chem_grenade/cleaner{ @@ -30604,6 +34266,16 @@ }, /turf/open/floor/iron/white/small, /area/station/command/heads_quarters/cmo) +"ljT" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/west, +/obj/machinery/light/floor, +/obj/structure/flora/bush/sparsegrass, +/obj/structure/flora/bush/flowers_br, +/obj/structure/flora/bush/flowers_pp, +/obj/structure/flora/bush/flowers_yw, +/turf/open/floor/grass, +/area/station/service/hydroponics) "ljZ" = ( /obj/machinery/modular_computer/preset/civilian{ dir = 1 @@ -30637,6 +34309,10 @@ /obj/structure/alien/weeds, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) +"lkk" = ( +/obj/machinery/light/small/directional/north, +/turf/open/misc/dirt/station, +/area/station/service/chapel) "lko" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -30665,6 +34341,10 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"lkJ" = ( +/obj/structure/flora/rock/pile/jungle/style_4, +/turf/open/floor/grass, +/area/station/service/chapel) "lkR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30676,17 +34356,6 @@ "lkV" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance) -"lkZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "llg" = ( /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/iron/dark, @@ -30740,6 +34409,15 @@ "llW" = ( /turf/closed/wall, /area/station/ai_monitored/security/armory) +"llY" = ( +/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/siding/wideplating_new/terracotta{ + dir = 4 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "lmb" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -30753,17 +34431,23 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/carpet/donk, /area/station/command/heads_quarters/qm) -"lmo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) +"lmm" = ( +/mob/living/basic/frog, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/flora/rock/pile/jungle/style_4, +/obj/structure/flora/bush/flowers_pp/style_2, +/turf/open/floor/grass, +/area/station/service/chapel) "lmv" = ( /obj/structure/disposalpipe/segment, /obj/item/kirbyplants/random, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/qm) +"lmz" = ( +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "lmR" = ( /obj/structure/dresser, /obj/structure/sign/poster/contraband/random/directional/east, @@ -30796,6 +34480,32 @@ /obj/structure/ore_box, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"lnN" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/structure/table, +/obj/item/reagent_containers/cup/bottle/mutagen{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/reagent_containers/syringe{ + pixel_x = -3; + pixel_y = -1 + }, +/obj/item/reagent_containers/cup/watering_can{ + pixel_x = 7; + pixel_y = 13 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 6; + pixel_y = 1 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron, +/area/station/service/hydroponics) "lnW" = ( /obj/effect/turf_decal/tile/neutral/full, /obj/structure/chair{ @@ -30864,11 +34574,18 @@ /obj/machinery/holopad, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) -"lpa" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/bookcase/random, -/turf/open/floor/wood/parquet, -/area/station/service/library) +"loT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "lpC" = ( /turf/open/floor/plating, /area/station/service/chapel/funeral) @@ -30948,6 +34665,14 @@ "lql" = ( /turf/open/floor/wood/parquet, /area/station/service/library) +"lqq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/landmark/navigate_destination/chapel, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "lqt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30957,21 +34682,20 @@ "lqC" = ( /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/aft) -"lqF" = ( -/obj/structure/table, -/obj/item/camera_film{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/camera_film{ - pixel_y = 9 - }, -/turf/open/floor/wood/parquet, -/area/station/service/library) "lqL" = ( /obj/effect/landmark/transport/nav_beacon/tram/platform/birdshot/prison_wing, /turf/open/floor/tram, /area/station/security/tram) +"lqP" = ( +/obj/structure/table/reinforced, +/obj/item/folder/blue{ + pixel_y = 2 + }, +/obj/item/pen, +/obj/machinery/airalarm/directional/south, +/obj/machinery/status_display/evac/directional/east, +/turf/open/floor/circuit/red, +/area/station/ai_monitored/turret_protected/ai) "lrh" = ( /obj/structure/cable, /obj/effect/spawner/random/trash, @@ -31035,14 +34759,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/small, /area/station/service/barber) -"lsJ" = ( -/obj/structure/window/spawner/directional/north, -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) "lsK" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/brown/visible, @@ -31054,6 +34770,10 @@ dir = 1 }, /area/station/science/lower) +"lsP" = ( +/obj/structure/flora/grass/jungle/b/style_5, +/turf/open/floor/grass, +/area/station/service/chapel) "lsY" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/closet/secure_closet/security/sec, @@ -31061,11 +34781,15 @@ dir = 1 }, /area/station/security/execution/transfer) -"lti" = ( -/obj/machinery/libraryscanner, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/wood/parquet, -/area/station/service/library) +"lte" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "lto" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -31081,14 +34805,30 @@ /obj/structure/holosign/barrier/atmos/tram, /turf/open/floor/plating, /area/station/security/tram) -"lty" = ( -/obj/structure/cable, -/obj/machinery/door/morgue{ - name = "Secret Corridor"; - req_access = list("library") +"ltr" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 6 }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/service/library) +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) +"ltt" = ( +/obj/machinery/space_heater, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "ltz" = ( /obj/effect/turf_decal/siding/red{ dir = 4 @@ -31150,13 +34890,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/storage/tcomms) -"lus" = ( -/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/cobweb/cobweb2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/service/library) "lut" = ( /obj/structure/table/wood/fancy/red, /obj/structure/sign/painting/large/library{ @@ -31184,11 +34917,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) -"luU" = ( -/obj/machinery/smartfridge/food, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "lvc" = ( /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) @@ -31216,18 +34944,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/office) -"lvv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "lvA" = ( /obj/structure/table/wood/fancy/red, /obj/item/clothing/head/costume/witchwig{ @@ -31244,6 +34960,10 @@ /obj/machinery/atmospherics/components/trinary/filter/critical, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/engineering/supermatter/room) +"lvJ" = ( +/obj/structure/flora/bush/flowers_br, +/turf/open/floor/grass, +/area/station/service/chapel) "lvK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -31252,6 +34972,22 @@ /obj/effect/landmark/blobstart, /turf/open/floor/iron/small, /area/station/maintenance/department/engine/atmos) +"lvM" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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, +/area/station/hallway/primary/central/aft) "lvS" = ( /obj/machinery/porta_turret/ai{ dir = 4 @@ -31259,22 +34995,19 @@ /obj/machinery/status_display/ai/directional/east, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) +"lvW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "lvY" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"lwa" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/primary/central/fore) "lwc" = ( /obj/structure/table/optable, /obj/structure/cable, @@ -31312,6 +35045,15 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"lwC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/structure/table, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "lwI" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/computer/security/mining{ @@ -31371,15 +35113,6 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) -"lxK" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/door/window/right/directional/west{ - name = "Bar Delivery"; - req_access = list("bar") - }, -/obj/machinery/duct, -/turf/open/floor/stone, -/area/station/service/bar/backroom) "lxN" = ( /obj/structure/broken_flooring/pile/directional/east, /turf/open/floor/plating, @@ -31444,6 +35177,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"lyN" = ( +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/flowers_br, +/obj/structure/flora/bush/flowers_yw, +/obj/structure/flora/bush/large/style_random{ + pixel_x = -17; + pixel_y = 2 + }, +/turf/open/floor/grass, +/area/station/service/hydroponics) "lyQ" = ( /obj/structure/table, /obj/item/storage/photo_album/prison, @@ -31499,18 +35243,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) -"lzv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/sign/departments/botany/alt1/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "lzA" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -31518,9 +35250,39 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/storage) +"lzB" = ( +/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/plating, +/area/station/maintenance/central/greater) +"lzG" = ( +/obj/structure/flora/bush/jungle/c/style_3{ + pixel_x = -7; + pixel_y = 10 + }, +/turf/open/floor/grass, +/area/station/service/chapel) +"lzL" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/service/bar) "lzM" = ( /turf/closed/wall, /area/station/security/tram) +"lzO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/plush/slimeplushie{ + name = "Nanners" + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "lzT" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/airlock/command{ @@ -31641,6 +35403,19 @@ }, /turf/open/space/basic, /area/space/nearstation) +"lBq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/small, +/area/station/medical/medbay/lobby) "lBw" = ( /obj/effect/turf_decal/siding/yellow, /obj/effect/turf_decal/siding/yellow{ @@ -31720,6 +35495,50 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/engineering/lobby) +"lCH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/landmark/navigate_destination/teleporter, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/landmark/navigate_destination/teleporter, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"lCK" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/directional/east, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"lCM" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/flora/tree/jungle/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "lCN" = ( /obj/structure/falsewall, /turf/open/floor/plating, @@ -31763,6 +35582,12 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"lDu" = ( +/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/hallway/primary/central/aft) "lDw" = ( /turf/open/floor/iron, /area/station/science/ordnance/testlab) @@ -31799,6 +35624,20 @@ /obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron/dark, /area/station/cargo/office) +"lEs" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/machinery/computer/order_console/cook{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "lEJ" = ( /obj/machinery/door/poddoor{ id = "QMLoaddoor"; @@ -31844,6 +35683,19 @@ }, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) +"lFq" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/exodrone_launcher, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) +"lFx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/wood/tile, +/area/station/service/bar) "lFE" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/corner{ @@ -31868,6 +35720,11 @@ /obj/structure/sign/warning/engine_safety/directional/north, /turf/open/floor/iron/small, /area/station/engineering/break_room) +"lFN" = ( +/obj/machinery/holopad, +/obj/effect/landmark/start/hangover, +/turf/open/floor/stone, +/area/station/service/bar) "lFT" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/table/reinforced/titaniumglass, @@ -31906,6 +35763,20 @@ }, /turf/open/misc/sandy_dirt, /area/station/hallway/primary/central/fore) +"lGp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/plaque{ + icon_state = "L6"; + pixel_y = -15 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "lGq" = ( /obj/structure/fluff/broken_canister_frame, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -31955,6 +35826,14 @@ /obj/structure/sink/directional/west, /turf/open/floor/iron, /area/station/security/prison/garden) +"lGS" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron, +/area/station/service/hydroponics) "lGT" = ( /obj/structure/chair/stool/directional/south, /obj/effect/decal/cleanable/dirt, @@ -32133,16 +36012,31 @@ dir = 8 }, /area/station/science/xenobiology) -"lJc" = ( -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/iron/textured_half, -/area/station/service/cafeteria) "lJe" = ( /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/command/heads_quarters/captain/private) +"lJg" = ( +/obj/structure/disposalpipe/segment, +/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/white, +/area/station/medical/medbay/lobby) +"lJB" = ( +/obj/item/radio/intercom/directional/north{ + broadcasting = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = -26 + }, +/obj/machinery/computer/security/telescreen/aiupload/directional/west, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) "lJF" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible{ @@ -32150,6 +36044,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"lJG" = ( +/obj/machinery/door/airlock{ + name = "Hydroponics Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "lJV" = ( /obj/structure/bed, /obj/effect/decal/cleanable/dirt, @@ -32162,13 +36064,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/qm) -"lJY" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "lKg" = ( /obj/machinery/firealarm/directional/east, /turf/open/floor/wood, @@ -32179,24 +36074,6 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) -"lKt" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"lKu" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "lKA" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -32211,6 +36088,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"lKB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "lKG" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, @@ -32249,6 +36133,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"lLi" = ( +/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/mining{ + name = "Drone Bay" + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "lLq" = ( /obj/machinery/firealarm/directional/east, /obj/effect/decal/cleanable/oil, @@ -32291,10 +36186,6 @@ /obj/effect/spawner/random/trash, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"lLJ" = ( -/obj/structure/table, -/turf/open/floor/wood/parquet, -/area/station/service/library) "lLL" = ( /turf/open/floor/iron/dark/side{ dir = 9 @@ -32348,30 +36239,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/engineering/lobby) -"lMy" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/glass, -/obj/item/storage/photo_album/library, -/turf/open/floor/iron/grimy, -/area/station/service/library) -"lMz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/glass, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen/invisible{ - pixel_x = -2; - pixel_y = 7 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/grimy, -/area/station/service/library) "lMF" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -32382,33 +36249,6 @@ /obj/structure/holosign/barrier/atmos/tram, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"lMH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/table/glass, -/obj/item/flashlight/lamp/green{ - pixel_x = 2; - pixel_y = 9 - }, -/obj/item/taperecorder{ - pixel_x = -15; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/iron/grimy, -/area/station/service/library) -"lMK" = ( -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"lMN" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "lNf" = ( /obj/effect/turf_decal/siding/blue, /turf/open/floor/iron/white/small, @@ -32468,11 +36308,11 @@ /area/station/engineering/atmos) "lNF" = ( /obj/effect/spawner/random/entertainment/lighter, -/obj/item/clothing/mask/cigarette/rollie/mindbreaker{ +/obj/item/cigarette/rollie/mindbreaker{ pixel_x = -2; pixel_y = 6 }, -/obj/item/clothing/mask/cigarette/rollie/trippy{ +/obj/item/cigarette/rollie/trippy{ pixel_x = 4 }, /obj/effect/mapping_helpers/burnt_floor, @@ -32580,6 +36420,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/security/prison/rec) +"lPE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/window/brigdoor/right/directional/north{ + atom_integrity = 300; + name = "AI Core Chamber Access"; + req_access = list("ai_upload") + }, +/turf/open/floor/circuit/red, +/area/station/ai_monitored/turret_protected/ai) "lPI" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -32591,6 +36440,12 @@ /obj/machinery/announcement_system, /turf/open/floor/iron/grimy, /area/station/tcommsat/server) +"lPK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "lPO" = ( /obj/structure/table, /obj/item/surgery_tray/full{ @@ -32623,6 +36478,10 @@ /obj/structure/closet/emcloset, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) +"lQt" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "lQu" = ( /obj/machinery/light/broken/directional/south, /obj/effect/spawner/random/trash/bin, @@ -32706,13 +36565,12 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"lRD" = ( -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/siding/wideplating_new/terracotta, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) +"lRU" = ( +/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/herringbone, +/area/station/ai_monitored/command/nuke_storage) "lRV" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/dark_red{ @@ -32739,6 +36597,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"lSq" = ( +/obj/structure/table/wood, +/obj/machinery/camera/autoname/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/barsign{ + chosen_sign = "thecavern"; + icon_state = "thecavern"; + pixel_y = 32 + }, +/obj/machinery/reagentgrinder{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "lSu" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -32748,22 +36624,21 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) -"lSw" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/chair, -/obj/effect/landmark/start/hangover, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "lSF" = ( /obj/effect/decal/cleanable/generic, /obj/machinery/light/cold/directional/south, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) +"lSG" = ( +/obj/item/flashlight/lantern/on, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "lSI" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32780,6 +36655,18 @@ /obj/machinery/chem_heater/withbuffer, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) +"lTa" = ( +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "lTg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, @@ -32836,13 +36723,6 @@ }, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"lTZ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/stone, -/area/station/service/bar/backroom) "lUo" = ( /turf/open/floor/iron, /area/station/science/lobby) @@ -32887,6 +36767,17 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison/safe) +"lUP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock{ + name = "Kitchen" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "lUT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -32909,14 +36800,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"lVm" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) "lVv" = ( /obj/structure/chair/stool/directional/south, /obj/effect/turf_decal/siding/yellow{ @@ -32943,31 +36826,12 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"lVL" = ( -/obj/structure/disposalpipe/segment, -/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/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "lVN" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"lVP" = ( -/obj/machinery/computer/security/telescreen/cmo{ - dir = 4; - pixel_x = -30 - }, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) "lVW" = ( /obj/machinery/power/turbine/core_rotor{ dir = 8; @@ -32976,11 +36840,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) -"lWb" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/sign/warning/no_smoking/circle/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "lWk" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/iron/large, @@ -32996,7 +36855,7 @@ pixel_x = 5; pixel_y = -5 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ +/obj/item/cigarette/cigar/cohiba{ pixel_y = 4 }, /turf/open/floor/iron/dark/small, @@ -33119,6 +36978,17 @@ }, /turf/open/floor/iron/dark, /area/station/medical/cryo) +"lXU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/light/cold/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "lXX" = ( /obj/machinery/light/warm/directional/north, /turf/open/floor/iron, @@ -33144,13 +37014,24 @@ "lYj" = ( /turf/closed/wall/r_wall, /area/station/hallway/primary/fore) +"lYl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/status_display/ai/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "lYt" = ( /obj/structure/table/wood/fancy/green, /obj/item/storage/wallet{ pixel_x = -3; pixel_y = 10 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = -1; pixel_y = -2 }, @@ -33190,17 +37071,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"lYU" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "lYV" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 4 @@ -33271,22 +37141,6 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"lZD" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/directional/east, -/obj/structure/sign/directions/security/directional/east{ - dir = 2 - }, -/obj/structure/sign/directions/medical/directional/east{ - pixel_y = 8 - }, -/obj/structure/sign/directions/science/directional/east{ - pixel_y = -8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "lZH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -33314,31 +37168,13 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"maa" = ( -/obj/structure/table, -/obj/item/tape, -/obj/item/pen/red{ - pixel_x = 3; - pixel_y = 12 - }, -/obj/item/pen/blue{ - pixel_x = -6; - pixel_y = 12 - }, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"mad" = ( -/obj/structure/table, -/obj/item/taperecorder{ - pixel_x = -16; - pixel_y = 3 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = 8; - pixel_y = 3 +"lZT" = ( +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 }, -/turf/open/floor/wood/parquet, -/area/station/service/library) +/turf/open/floor/grass, +/area/station/service/chapel) "maf" = ( /turf/closed/wall/rust, /area/station/hallway/primary/fore) @@ -33354,26 +37190,12 @@ /obj/machinery/keycard_auth/directional/south, /turf/open/floor/wood/large, /area/station/command/heads_quarters/captain) -"mam" = ( -/obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement{ - dir = 1 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood/parquet, -/area/station/service/library) "mau" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/iron/white/small, /area/station/science/cubicle) -"maz" = ( -/obj/structure/chair/office, -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/parquet, -/area/station/service/library) "maE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33405,12 +37227,6 @@ /obj/structure/fluff/broken_canister_frame, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"mbK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/service/library) "mbV" = ( /obj/effect/spawner/random/entertainment/arcade, /turf/open/floor/eighties/red, @@ -33463,6 +37279,16 @@ /obj/item/phone, /turf/open/floor/iron/smooth, /area/station/maintenance/port/aft) +"mcI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "mcP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33471,6 +37297,14 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) +"mcS" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/cold/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "mcT" = ( /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, @@ -33481,10 +37315,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter) -"mdj" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "mdm" = ( /obj/structure/chair/office/light{ dir = 8 @@ -33499,23 +37329,6 @@ "mdt" = ( /turf/closed/wall/r_wall, /area/station/science/robotics/mechbay) -"mdG" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet/auxiliary) -"mdU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/directional/north, -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "mdX" = ( /obj/machinery/light/small/directional/north, /obj/machinery/conveyor_switch{ @@ -33615,15 +37428,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/maintenance/department/electrical) -"mfV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) "mgt" = ( /obj/machinery/vending/boozeomat, /obj/machinery/firealarm/directional/south, @@ -33649,6 +37453,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"mhq" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 9 + }, +/turf/open/floor/eighties, +/area/station/hallway/primary/central/fore) "mhV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33689,6 +37499,9 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"miF" = ( +/turf/open/floor/stone, +/area/station/service/chapel) "miN" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -33734,17 +37547,12 @@ /obj/item/clothing/under/costume/skeleton, /turf/open/floor/eighties, /area/station/service/abandoned_gambling_den/gaming) -"mjs" = ( -/obj/structure/chair/office, -/obj/machinery/light/directional/north, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"mjB" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) +"mjr" = ( +/obj/machinery/vending/dinnerware, +/obj/machinery/requests_console/auto_name/directional/south, +/obj/effect/mapping_helpers/requests_console/supplies, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "mjF" = ( /obj/structure/table/glass, /obj/item/clothing/suit/costume/cyborg_suit, @@ -33786,6 +37594,17 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/supply) +"mka" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/navigate_destination/hydro, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "mkh" = ( /obj/structure/chair{ dir = 8 @@ -33806,11 +37625,13 @@ /turf/open/floor/iron, /area/station/maintenance/port/aft) "mku" = ( -/obj/structure/chair/sofa/bench/right, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "mkA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -33885,6 +37706,30 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) +"mlD" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"mlG" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "mlK" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -33900,15 +37745,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"mmp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "mms" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/yellow/opposingcorners, @@ -33994,23 +37830,21 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"mnn" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/sign/painting/library{ - pixel_y = 32 +"mnj" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Public Shrine" }, -/turf/open/floor/iron/smooth, -/area/station/service/library) -"mnu" = ( -/obj/structure/chair/office{ - dir = 4 +/obj/machinery/door/firedoor, +/turf/open/floor/stone, +/area/station/hallway/primary/port) +"mnl" = ( +/obj/structure/table, +/obj/item/circuitboard/machine/coffeemaker/impressa, +/obj/item/coffee_cartridge/decaf{ + pixel_y = 9 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/parquet, -/area/station/service/library) +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central/lesser) "mnw" = ( /obj/effect/spawner/random/vending/colavend, /obj/machinery/firealarm/directional/east, @@ -34076,6 +37910,19 @@ }, /turf/open/floor/plating, /area/station/cargo/storage) +"moj" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/command/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/hallway/abandoned_command) "mom" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/components/binary/pump{ @@ -34098,6 +37945,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/storage) +"moG" = ( +/obj/effect/spawner/random/trash, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "mpk" = ( /obj/machinery/airalarm/directional/south, /turf/open/floor/circuit/green, @@ -34115,18 +37970,6 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"mpC" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/pen{ - pixel_x = -2; - pixel_y = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/service/library) "mpE" = ( /obj/machinery/light/cold/dim/directional/north, /obj/structure/disposalpipe/segment{ @@ -34135,17 +37978,6 @@ /obj/structure/sign/poster/official/moth_piping/directional/north, /turf/open/floor/iron/small, /area/station/engineering/break_room) -"mpO" = ( -/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/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "mpQ" = ( /obj/structure/bed{ dir = 4 @@ -34157,12 +37989,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/small, /area/station/security/brig) -"mqc" = ( -/obj/structure/table, -/obj/item/pai_card, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood/parquet, -/area/station/service/library) "mql" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 @@ -34219,6 +38045,19 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"mrn" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/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/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "mrt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/north, @@ -34273,6 +38112,15 @@ "msJ" = ( /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"mtc" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/item/screwdriver, +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ + dir = 8 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "mtP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34281,17 +38129,16 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron, /area/station/security/prison) -"mtV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Theater Greenroom" +"mtW" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, -/turf/open/floor/iron/textured_half{ - dir = 8 +/obj/effect/spawner/random/food_or_drink/refreshing_beverage{ + pixel_y = 10 }, -/area/station/service/greenroom) +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "mud" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -34359,6 +38206,16 @@ /obj/machinery/status_display/ai/directional/north, /turf/open/floor/wood/tile, /area/station/command/meeting_room) +"mvd" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/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/station/maintenance/central/lesser) "mvh" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/holopad, @@ -34393,6 +38250,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/station/hallway/secondary/entry) +"mvG" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/machinery/newscaster/directional/west, +/obj/structure/flora/bush/large/style_random{ + pixel_x = -20; + pixel_y = -8 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "mvP" = ( /obj/machinery/smartfridge/organ, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -34443,15 +38311,6 @@ /obj/effect/turf_decal/trimline/neutral/end, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"mwJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/light/small/directional/east, -/turf/open/floor/engine, -/area/station/science/xenobiology) "mwN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral{ @@ -34460,13 +38319,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"mwP" = ( -/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/broken_floor, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "mxa" = ( /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/glass/reinforced, @@ -34498,14 +38350,6 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/noslip, /area/station/maintenance/port/aft) -"mxN" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "mxP" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34515,6 +38359,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"mxS" = ( +/obj/item/kirbyplants/random, +/obj/machinery/camera/autoname/directional/west, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/white, +/area/station/hallway/primary/central/aft) "mxX" = ( /obj/structure/transit_tube/curved/flipped, /obj/structure/lattice, @@ -34530,6 +38382,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"mye" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/rock/pile/jungle/style_5{ + pixel_y = -5; + pixel_x = -8 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "myi" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/smart/simple/brown/visible{ @@ -34599,21 +38461,15 @@ /obj/item/paper/fluff/jobs/engineering/frequencies, /turf/open/floor/carpet/executive, /area/station/command/meeting_room) -"mzc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ +"mze" = ( +/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/structure/table, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "vaco"; - name = "Comissary Shutters" - }, /turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) +/area/station/maintenance/port/greater) "mzf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -34653,22 +38509,6 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron, /area/station/maintenance/fore/greater) -"mAn" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"mAo" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "mAs" = ( /obj/structure/rack, /obj/item/storage/toolbox/electrical{ @@ -34706,6 +38546,17 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) +"mAR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "mBo" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -34720,30 +38571,10 @@ }, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) -"mBy" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/item/kirbyplants/random/fullysynthetic, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/maintenance/central/greater) "mBC" = ( /obj/structure/sign/poster/official/soft_cap_pop_art/directional/north, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"mCb" = ( -/obj/machinery/computer/cargo{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/vault{ - dir = 1; - pixel_y = -30 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "mCf" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external/glass{ @@ -34796,15 +38627,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"mDq" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +"mDA" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole{ + dir = 1 }, -/obj/structure/sign/departments/cargo/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/obj/structure/sign/painting/library{ + pixel_x = 30 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "mDG" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -35016,7 +38848,7 @@ pixel_y = 2 }, /obj/item/wrench, -/obj/item/clothing/mask/cigarette/xeno{ +/obj/item/cigarette/xeno{ pixel_x = -3; pixel_y = -9 }, @@ -35073,6 +38905,19 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/white/small, /area/station/medical/virology) +"mHh" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central/lesser) +"mHo" = ( +/obj/structure/cable, +/turf/closed/wall, +/area/station/service/bar) +"mHF" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_yw, +/turf/open/floor/grass, +/area/station/service/chapel) "mHZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35102,6 +38947,16 @@ /obj/effect/landmark/start/lawyer, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) +"mIl" = ( +/obj/structure/chair/stool/bar/directional/north, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, +/turf/open/floor/wood/tile, +/area/station/service/bar) "mIm" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35140,6 +38995,13 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) +"mIP" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "mIR" = ( /obj/structure/chair/stool/directional/east, /obj/effect/landmark/start/hangover, @@ -35229,16 +39091,6 @@ /obj/effect/spawner/random/food_or_drink/seed, /turf/open/misc/sandy_dirt, /area/station/maintenance/starboard/aft) -"mJW" = ( -/obj/machinery/biogenerator, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/window/left/directional/south{ - name = "Bio-Generator"; - req_access = list("hydroponics") - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics) "mJX" = ( /obj/effect/turf_decal/siding/thinplating_new{ dir = 8 @@ -35265,13 +39117,23 @@ dir = 1 }, /area/station/hallway/primary/aft) -"mKs" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/item/kirbyplants/random, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"mKh" = ( +/obj/machinery/light/floor, +/obj/structure/cable, +/turf/open/floor/stone, +/area/station/service/bar) +"mKm" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) +/area/station/hallway/primary/port) "mKB" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; @@ -35288,17 +39150,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"mKH" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "mKK" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -35318,6 +39169,12 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/hydroponics) +"mLg" = ( +/obj/effect/turf_decal/siding/thinplating_new/light, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "mLh" = ( /obj/structure/cable, /obj/machinery/computer/security/mining{ @@ -35328,15 +39185,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/supply) -"mLi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/sign/departments/botany/alt1/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "mLk" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -35390,11 +39238,6 @@ }, /turf/open/floor/iron, /area/station/science/cytology) -"mLU" = ( -/obj/machinery/vending/autodrobe, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood/parquet, -/area/station/service/greenroom) "mMp" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35433,6 +39276,13 @@ "mMH" = ( /turf/open/floor/iron/grimy, /area/station/engineering/main) +"mMI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "mMN" = ( /obj/structure/chair/office{ dir = 8 @@ -35494,6 +39344,14 @@ }, /turf/open/floor/carpet/executive, /area/station/command/meeting_room) +"mOl" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/machinery/light/small/directional/south, +/obj/item/radio/intercom/directional/south, +/obj/structure/flora/bush/flowers_yw, +/obj/machinery/camera/directional/south, +/turf/open/floor/grass, +/area/station/service/chapel) "mOm" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35542,6 +39400,15 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/light/colour_cycle/dancefloor_b, /area/station/maintenance/starboard/central) +"mOV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "mPe" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{ dir = 4 @@ -35606,6 +39473,25 @@ /obj/structure/cable, /turf/open/floor/iron/white/small, /area/station/commons/toilet/restrooms) +"mQE" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, +/area/station/maintenance/central/greater) "mQF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -35622,14 +39508,6 @@ dir = 8 }, /area/station/command/heads_quarters/hos) -"mRp" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/hedge, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "mRA" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/iron/stairs/left, @@ -35674,15 +39552,28 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) -"mSi" = ( -/obj/structure/mannequin/plastic, +"mSA" = ( +/obj/structure/cable, +/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/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plating, -/area/station/cargo/boutique) +/area/station/maintenance/port/greater) "mSH" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/central) +"mSQ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/grass, +/area/station/service/chapel) "mSS" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -35739,13 +39630,13 @@ "mTl" = ( /turf/closed/wall, /area/station/cargo/sorting) -"mTq" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 +"mTm" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +/obj/structure/flora/grass/jungle, +/turf/open/misc/dirt/station, +/area/station/service/chapel) "mTs" = ( /turf/closed/wall/r_wall, /area/station/security/prison/work) @@ -35814,6 +39705,13 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) +"mTT" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "mTU" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/transit_tube/horizontal, @@ -35829,6 +39727,16 @@ /obj/effect/landmark/start/paramedic, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"mUi" = ( +/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/wood/parquet, +/area/station/service/library) "mUn" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -35867,11 +39775,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"mVa" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "mVm" = ( /obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 1 @@ -35907,6 +39810,14 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"mVL" = ( +/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/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "mVM" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -35920,11 +39831,6 @@ dir = 4 }, /area/station/medical/medbay/central) -"mVY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/closed/wall, -/area/station/hallway/secondary/spacebridge) "mWc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35942,6 +39848,15 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /turf/open/floor/iron/dark/small, /area/station/tcommsat/server) +"mWT" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "mWY" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/chair/sofa/bench/left{ @@ -35994,6 +39909,18 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"mXZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "mYd" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -36002,6 +39929,60 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/central) +"mYe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Library Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/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/unres{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Library Maintenance" + }, +/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/unres{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Library Maintenance" + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/turf/open/floor/plating, +/area/station/service/library) "mYj" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -36034,6 +40015,32 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"mYw" = ( +/obj/structure/flora/tree/jungle/small/style_5, +/turf/open/floor/grass, +/area/station/service/chapel) +"mYH" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/north, +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/library) "mYP" = ( /obj/structure/table, /obj/item/storage/bag/tray/cafeteria{ @@ -36045,35 +40052,6 @@ /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"mYS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light/small/directional/north, -/turf/open/floor/grass, -/area/station/service/chapel) -"mYT" = ( -/obj/structure/table, -/obj/item/assembly/igniter{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/assembly/igniter{ - pixel_x = 5; - pixel_y = -4 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = -1 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "mYW" = ( /obj/machinery/camera{ c_tag = "Xenobiology - Zoo"; @@ -36111,21 +40089,32 @@ dir = 1 }, /area/station/security/execution/education) -"mZg" = ( -/obj/structure/disposalpipe/segment{ +"mZd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/trimline/neutral/line{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"mZh" = ( +"mZe" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) +"mZg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/evac/directional/north, /obj/effect/turf_decal/tile/neutral{ - dir = 1 + dir = 8 }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) @@ -36155,12 +40144,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/aft) -"nau" = ( -/obj/structure/disposalpipe/junction, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "nay" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/airlock/public/glass{ @@ -36181,11 +40164,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) -"naE" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/stairs, -/area/station/maintenance/port/greater) "naF" = ( /turf/open/floor/iron/dark/smooth_corner{ dir = 1 @@ -36199,17 +40177,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/brig/entrance) -"naI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/storage/box{ - pixel_x = -8; - pixel_y = 15 - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/stone, -/area/station/service/theater) "naN" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock{ @@ -36218,13 +40185,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) -"naO" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/service/library) "nbj" = ( /obj/structure/railing{ dir = 1 @@ -36235,11 +40195,6 @@ }, /turf/open/floor/iron/small, /area/station/engineering/supermatter/room) -"nbu" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/holopad, -/turf/open/floor/iron/smooth, -/area/station/service/library) "nbF" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/small/directional/west, @@ -36255,13 +40210,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"nbZ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/service/library) "ncb" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, @@ -36308,13 +40256,6 @@ /obj/effect/landmark/start/lawyer, /turf/open/floor/wood/tile, /area/station/service/lawoffice) -"ncs" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "ncD" = ( /obj/structure/lattice, /obj/structure/disposalpipe/segment{ @@ -36351,16 +40292,6 @@ }, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"ndq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/morgue{ - name = "Secret Corridor"; - req_access = list("library") - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/central/greater) "ndM" = ( /obj/structure/tank_dispenser/oxygen, /turf/open/floor/iron, @@ -36419,6 +40350,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/construction) +"nfA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AI Core shutters"; + name = "AI Core Shutter" + }, +/turf/open/floor/iron/stairs, +/area/station/ai_monitored/turret_protected/ai) "nfG" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 1 @@ -36428,6 +40368,10 @@ }, /turf/open/floor/iron, /area/station/security) +"ngd" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "ngq" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -36440,22 +40384,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/prison) -"nha" = ( -/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/dark_red/half/contrasted{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/interrogation{ - dir = 8; - name = "isolation room monitor"; - network = list("isolation"); - pixel_x = 30 - }, -/obj/machinery/photobooth/security, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "nhe" = ( /obj/structure/railing{ dir = 4 @@ -36615,6 +40543,14 @@ }, /turf/open/floor/iron/small, /area/station/service/barber) +"niY" = ( +/obj/structure/disposalpipe/segment, +/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/maintenance/central/greater) "niZ" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -36639,6 +40575,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"njk" = ( +/obj/structure/flora/bush/flowers_br, +/obj/structure/flora/bush/flowers_yw, +/obj/machinery/light/floor, +/turf/open/floor/grass, +/area/station/hallway/primary/central/fore) +"njs" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/obj/effect/landmark/start/chaplain, +/turf/open/floor/carpet/lone, +/area/station/service/chapel/office) "nju" = ( /obj/machinery/duct, /obj/effect/decal/cleanable/dirt, @@ -36666,12 +40615,28 @@ dir = 1 }, /area/station/engineering/supermatter/room) +"njK" = ( +/obj/structure/flora/tree/jungle/small/style_4, +/turf/open/floor/grass, +/area/station/service/chapel) "njL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/station/hallway/secondary/construction) +"njM" = ( +/obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"njV" = ( +/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, +/area/station/maintenance/central/greater) "njW" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -36730,6 +40695,12 @@ /obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"nkW" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "nla" = ( /turf/closed/wall, /area/station/commons/storage/art) @@ -36821,23 +40792,31 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/command/heads_quarters/qm) +"nnd" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "nne" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/tram) -"nnk" = ( -/obj/machinery/camera/motion/directional/north{ - c_tag = "Vault Exterior"; - id_tag = list("vault") +"nnq" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/turf/open/space/basic, -/area/space) -"nnR" = ( -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) +/turf/open/floor/stone, +/area/station/service/bar) "noe" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -36939,9 +40918,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/cargo/drone_bay) -"npF" = ( -/turf/closed/wall/rust, -/area/station/maintenance/port/greater) "npH" = ( /obj/effect/spawner/random/trash, /turf/open/floor/iron, @@ -36953,33 +40929,12 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter) -"npS" = ( -/obj/structure/disposalpipe/segment, -/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/maintenance{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "npV" = ( /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/dark, /area/station/service/lawoffice) -"npY" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/small, -/area/station/hallway/secondary/spacebridge) "npZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -37038,6 +40993,13 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) +"nqY" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "nra" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/window/spawner/directional/south, @@ -37094,13 +41056,15 @@ "nsy" = ( /turf/closed/wall/r_wall/rust, /area/station/engineering/hallway) -"nsH" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"nsz" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) "nsL" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/red{ @@ -37161,14 +41125,14 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"ntw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Public Shrine" +"ntu" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half, -/area/station/hallway/primary/port) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "ntF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/status_display/ai/directional/south, @@ -37177,6 +41141,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"ntI" = ( +/obj/structure/disposalpipe/segment{ + 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/plating, +/area/station/maintenance/central/greater) "ntJ" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -37190,6 +41163,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) +"ntP" = ( +/obj/structure/displaycase/trophy, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/wood/parquet, +/area/station/service/library) "ntW" = ( /obj/machinery/light/small/directional/north, /obj/machinery/vending/wardrobe/coroner_wardrobe, @@ -37198,15 +41179,6 @@ }, /turf/open/floor/iron/small, /area/station/medical/morgue) -"ntY" = ( -/obj/structure/hedge, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/smooth, -/area/station/service/library) "ntZ" = ( /obj/machinery/door/airlock/public/glass{ name = "Recreation" @@ -37227,6 +41199,17 @@ /obj/effect/turf_decal/sand/plating, /turf/closed/wall, /area/station/maintenance/port/lesser) +"nun" = ( +/obj/structure/flora/bush/flowers_br/style_random{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/grass/Airless, +/area/station/hallway/primary/central/aft) "nuo" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/decal/cleanable/dirt, @@ -37252,21 +41235,19 @@ }, /turf/open/floor/iron/small, /area/station/engineering/break_room) -"nuv" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "nuC" = ( /obj/effect/turf_decal/siding, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/small/directional/south, /turf/open/floor/iron/white/small, /area/station/science/lab) +"nuI" = ( +/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/plating, +/area/station/maintenance/central/greater) "nuO" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37292,14 +41273,17 @@ }, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/aft) -"nuX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 +"nuV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/mannequin/plastic, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/carpet/blue, -/area/station/cargo/boutique) +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "nuY" = ( /obj/structure/broken_flooring/pile/directional/east, /obj/structure/alien/weeds/node, @@ -37354,11 +41338,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"nwS" = ( -/obj/structure/flora/ash/tall_shroom, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/grass, -/area/station/service/hydroponics) "nxo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37378,6 +41357,16 @@ }, /turf/open/floor/iron/dark/small, /area/station/medical/morgue) +"nxI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "nxJ" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/modular_computer/preset/id{ @@ -37386,6 +41375,16 @@ /obj/machinery/keycard_auth/directional/south, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) +"nxN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "nxO" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -37435,17 +41434,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"nys" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/sign/directions/vault/directional/west{ - dir = 2 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "nyx" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37527,23 +41515,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/tram) -"nzK" = ( -/obj/structure/cable, -/obj/item/ammo_casing/spent{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/ammo_casing/spent, -/obj/item/ammo_casing/spent{ - pixel_x = 4; - pixel_y = -2 - }, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/trimline/neutral/end{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "nzL" = ( /turf/closed/wall, /area/station/science/ordnance/testlab) @@ -37565,11 +41536,6 @@ }, /turf/open/space/basic, /area/space) -"nAi" = ( -/obj/structure/table, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/wood, -/area/station/service/theater) "nAn" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -37582,36 +41548,12 @@ /obj/machinery/light/small/broken/directional/west, /turf/open/misc/sandy_dirt, /area/station/maintenance/starboard/aft) -"nAx" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"nAy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "nAF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/roboticist, /turf/open/floor/iron, /area/station/science/robotics/lab) -"nAO" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "nBd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37654,19 +41596,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"nBL" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "nBM" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -37688,6 +41617,18 @@ }, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"nCt" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "nCC" = ( /obj/structure/chair/stool/directional/south, /obj/effect/turf_decal/siding/yellow{ @@ -37740,17 +41681,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"nDV" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "nEa" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, @@ -37883,17 +41813,6 @@ /obj/machinery/portable_atmospherics/pump, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"nGd" = ( -/obj/machinery/vending/wardrobe/det_wardrobe, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/security/telescreen{ - dir = 4; - name = "Station Monitor"; - network = list("ss13"); - pixel_x = -26 - }, -/turf/open/floor/wood, -/area/station/security/detectives_office) "nGe" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -37956,15 +41875,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/medical/virology) -"nGJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "nGP" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -38015,16 +41925,6 @@ /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"nHB" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "nHN" = ( /obj/structure/table, /obj/item/stack/pipe_cleaner_coil/random, @@ -38060,9 +41960,31 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"nHU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "nId" = ( /turf/open/floor/circuit/green, /area/station/ai_monitored/command/nuke_storage) +"nIt" = ( +/obj/structure/flora/bush/jungle/c/style_3{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/grass, +/area/station/service/chapel) "nIx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/wood{ @@ -38121,14 +42043,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/small, /area/station/engineering/atmos) -"nIS" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock{ - name = "Library Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "nIT" = ( /obj/structure/railing{ dir = 6 @@ -38142,6 +42056,32 @@ /obj/structure/cable, /turf/open/floor/iron/small, /area/station/maintenance/solars/starboard/fore) +"nJj" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/airalarm/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/central/fore) +"nJo" = ( +/obj/structure/cable, +/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/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "nJG" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -38180,37 +42120,10 @@ /obj/machinery/light/floor, /turf/open/floor/iron/dark, /area/station/tcommsat/server) -"nKk" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 4 - }, -/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/mail_sorting/service/kitchen, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"nKm" = ( -/obj/structure/cable, -/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/plating, -/area/station/maintenance/central/greater) "nKz" = ( /obj/machinery/light/floor, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"nKL" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "nKO" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -38218,10 +42131,6 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"nKX" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "nLH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38241,12 +42150,6 @@ }, /turf/open/floor/iron, /area/station/engineering/storage/tech) -"nLN" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "nMn" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -38283,15 +42186,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"nMW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "nMX" = ( /obj/machinery/camera/directional/south{ c_tag = "Holodeck - Aft"; @@ -38301,16 +42195,6 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) -"nNb" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red, -/obj/structure/sign/warning/no_smoking/circle/directional/north, -/turf/open/floor/iron, -/area/station/security) "nNe" = ( /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark/textured_half{ @@ -38327,6 +42211,24 @@ }, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) +"nNz" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/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, +/area/station/hallway/primary/central/aft) +"nNA" = ( +/obj/machinery/light/small/broken/directional/west, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central/lesser) "nNB" = ( /obj/machinery/door/airlock{ name = "Gardening Supplies" @@ -38334,11 +42236,29 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"nNX" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/turf/open/floor/eighties, +/area/station/hallway/primary/central/fore) "nNZ" = ( /obj/structure/tank_dispenser, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, /turf/open/floor/plating, /area/station/science/ordnance/testlab) +"nOm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "nOH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38348,6 +42268,41 @@ }, /turf/open/floor/iron/smooth, /area/station/command/gateway) +"nOQ" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 4 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "nPd" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -38357,6 +42312,13 @@ }, /turf/open/floor/plating, /area/station/medical/pharmacy) +"nPe" = ( +/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/dark_red/fourcorners, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "nPt" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38378,6 +42340,15 @@ }, /turf/open/floor/iron, /area/station/security/warden) +"nPD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "nPF" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -38404,6 +42375,21 @@ /obj/structure/cable, /turf/open/floor/iron/smooth_large, /area/station/cargo/warehouse) +"nPY" = ( +/obj/structure/table/reinforced, +/obj/structure/desk_bell{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/turf/open/floor/plating, +/area/station/service/kitchen) "nQa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -38541,6 +42527,19 @@ /obj/effect/turf_decal/tile/dark_red/half/contrasted, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs) +"nSb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "nSd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38601,17 +42600,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"nTj" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "nTt" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/computer/shuttle/mining/common{ @@ -38628,9 +42616,7 @@ /area/station/security/tram) "nTz" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) @@ -38650,6 +42636,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/grimy, /area/station/engineering/main) +"nUd" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "nUo" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/effect/turf_decal/siding/green{ @@ -38692,6 +42684,12 @@ /obj/machinery/atmospherics/pipe/bridge_pipe/brown/visible, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"nUK" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/barricade/wooden/crude, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/cargo/boutique) "nUQ" = ( /obj/structure/chair{ dir = 8 @@ -38742,6 +42740,18 @@ /obj/item/wirecutters, /turf/open/floor/iron/dark, /area/station/security/office) +"nVw" = ( +/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/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "nVx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38761,25 +42771,35 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"nVD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/chair{ - pixel_x = 2; - pixel_y = -5 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "nVF" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/tcommsat/server) +"nVT" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/east, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/east{ + req_access = list("hydroponics"); + name = "Hydroponics Service Desk" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "nWh" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/closed/wall/r_wall, @@ -38825,6 +42845,20 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/medical/pharmacy) +"nXx" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/light/cold/directional/south, +/obj/machinery/airalarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "nXC" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -38840,6 +42874,15 @@ }, /turf/open/floor/grass, /area/station/medical/virology) +"nXQ" = ( +/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 = 10 + }, +/turf/open/floor/stone, +/area/station/service/bar/backroom) "nXS" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -38920,6 +42963,37 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark, /area/station/cargo/office) +"nZc" = ( +/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/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "nZh" = ( /obj/structure/table, /obj/item/stock_parts/scanning_module{ @@ -38957,6 +43031,10 @@ /obj/structure/holosign/barrier/atmos/tram, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) +"nZG" = ( +/obj/machinery/vending/wardrobe/chef_wardrobe, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "nZQ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line{ @@ -39017,17 +43095,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/commons/dorms) -"oaV" = ( -/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 = "Cargo Botique" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/hallway/primary/central/fore) "oaY" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/stripes/line{ @@ -39058,13 +43125,6 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) -"obm" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "obq" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -39078,6 +43138,17 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/white/small, /area/station/science/ordnance/storage) +"obw" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/desk_bell{ + pixel_x = 4; + pixel_y = 3 + }, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "obH" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -39094,10 +43165,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/textured_half, /area/station/hallway/secondary/dock) -"obU" = ( -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "obW" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -39117,6 +43184,15 @@ /obj/machinery/computer/records/security, /turf/open/floor/iron, /area/station/security/brig/entrance) +"ocX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/iron, +/area/station/service/hydroponics) "odh" = ( /obj/effect/landmark/atmospheric_sanity/ignore_area, /turf/open/floor/plating, @@ -39126,6 +43202,16 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) +"odD" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/table/wood, +/obj/machinery/light/small/built/directional/north, +/obj/item/stack/sheet/iron/ten, +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ + dir = 9 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "odE" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -39146,6 +43232,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) +"oeb" = ( +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/west, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "oem" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -39174,15 +43271,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/white/small, /area/station/command/heads_quarters/cmo) -"oeF" = ( -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/machinery/door/airlock{ - name = "Abandoned Treatment Room" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "oeI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -39194,6 +43282,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"oeQ" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/service/bar) "oeS" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 @@ -39211,20 +43305,6 @@ /obj/machinery/vending/coffee, /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) -"ofk" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ofo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "ofu" = ( /obj/effect/turf_decal/stripes/white/end{ dir = 8 @@ -39249,11 +43329,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"ogu" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/railing, -/turf/open/floor/stone, -/area/station/service/theater) "ogv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39312,10 +43387,6 @@ dir = 1 }, /area/station/hallway/secondary/entry) -"ogX" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/station/hallway/primary/port) "ohb" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -39486,10 +43557,6 @@ /obj/structure/alien/weeds, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"ojl" = ( -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "ojz" = ( /obj/structure/railing{ dir = 1 @@ -39505,6 +43572,13 @@ }, /turf/open/floor/wood, /area/station/engineering/main) +"ojA" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "ojD" = ( /obj/structure/cable, /obj/machinery/light/floor, @@ -39561,16 +43635,6 @@ /obj/machinery/status_display/ai, /turf/closed/wall, /area/station/hallway/secondary/entry) -"okp" = ( -/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/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half, -/area/station/service/library) "okt" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ dir = 4 @@ -39588,14 +43652,6 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/engine, /area/station/science/xenobiology) -"okK" = ( -/obj/structure/chair/stool/bamboo, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/start/bartender, -/turf/open/floor/stone, -/area/station/service/bar/backroom) "okW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -39658,20 +43714,6 @@ /obj/machinery/light/small/dim/directional/west, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"omA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"omU" = ( -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "omW" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/white/corner, @@ -39686,12 +43728,17 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"ono" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) +"ong" = ( +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"onp" = ( +/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, +/area/station/maintenance/central/greater) "onv" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ @@ -39876,18 +43923,23 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"oqE" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "oqK" = ( /obj/effect/decal/cleanable/dirt, /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"oqS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/stone, +/area/station/service/chapel) +"oqT" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "oqU" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 9 @@ -39907,18 +43959,30 @@ "orb" = ( /turf/closed/wall, /area/station/engineering/main) +"ore" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"orj" = ( +/obj/machinery/door/morgue{ + name = "Private Study"; + req_access = list("library") + }, +/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/central/greater) "orC" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/fore) -"orH" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/full, -/obj/structure/reagent_dispensers/beerkeg, -/obj/effect/turf_decal/bot_red/left, -/obj/structure/sign/clock/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "orW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, @@ -39944,6 +44008,18 @@ }, /turf/open/space/basic, /area/space/nearstation) +"ose" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "osj" = ( /obj/structure/cable, /obj/machinery/power/terminal, @@ -40014,6 +44090,25 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/office) +"otJ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"otU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/restaurant_portal/bar, +/turf/open/floor/wood/tile, +/area/station/service/bar) "otX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40040,27 +44135,15 @@ }, /turf/open/space/basic, /area/space/nearstation) -"ouf" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/starboard) "ouj" = ( /turf/closed/wall, /area/station/engineering/engine_smes) -"oup" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 1 +"oun" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 10 }, -/obj/machinery/firealarm/directional/south, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "ouz" = ( /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/rd) @@ -40107,6 +44190,12 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/station/solars/port) +"ovh" = ( +/obj/structure/flora/bush/flowers_pp, +/obj/structure/flora/bush/flowers_yw, +/obj/structure/flora/bush/fullgrass, +/turf/open/floor/grass, +/area/station/hallway/primary/central/fore) "ovj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40252,6 +44341,28 @@ }, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) +"oxn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) +"oxp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/item/storage/fancy/candle_box, +/obj/structure/rack/skeletal, +/obj/machinery/camera/autoname/directional/west, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron/grimy, +/area/station/service/library) "oxw" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/white/line{ @@ -40265,11 +44376,6 @@ }, /turf/open/floor/engine, /area/station/science/cytology) -"oxS" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "oyn" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/public/glass{ @@ -40277,10 +44383,26 @@ }, /turf/open/floor/iron/textured_half, /area/station/maintenance/hallway/abandoned_command) +"oyp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "oyq" = ( /obj/machinery/light/warm/directional/south, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"oyz" = ( +/obj/structure/flora/grass/jungle/b/style_3, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/service/chapel) "oyQ" = ( /turf/closed/wall, /area/station/science/auxlab/firing_range) @@ -40304,13 +44426,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/qm) -"ozd" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/plaque{ - icon_state = "L8" - }, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "ozn" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -40318,10 +44433,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"ozo" = ( -/obj/structure/window/spawner/directional/south, -/turf/open/floor/grass, -/area/station/service/hydroponics) "ozs" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -40364,15 +44475,6 @@ dir = 8 }, /area/station/maintenance/starboard/greater) -"oAk" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "oAn" = ( /obj/effect/turf_decal/siding/brown{ dir = 10 @@ -40380,11 +44482,6 @@ /obj/structure/steam_vent, /turf/open/floor/iron/smooth, /area/station/maintenance/port/aft) -"oAp" = ( -/obj/structure/chair/sofa/right/maroon, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "oAr" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/closet/bombcloset/security, @@ -40396,11 +44493,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"oAF" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "oAY" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -40421,11 +44513,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer4, /turf/open/space/basic, /area/space/nearstation) -"oBm" = ( -/obj/structure/chair/sofa/bench/left, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "oBv" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -40450,11 +44537,29 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"oBV" = ( +"oBR" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/spawner/random/entertainment/arcade{ + dir = 1 + }, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) +"oBT" = ( /obj/structure/cable, -/obj/machinery/light/small/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/service/library) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/security/armory, +/obj/machinery/door/airlock/security{ + name = "Warden's Office" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/security/warden) "oBX" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -40469,15 +44574,17 @@ }, /turf/open/floor/iron/dark, /area/station/science/genetics) -"oCc" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/service/library) "oCg" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/medical_all, /turf/open/floor/iron, /area/station/engineering/storage/tech) +"oCi" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/small/directional/east, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/parquet, +/area/station/service/library) "oCq" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -40517,15 +44624,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"oDs" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Fore Primary Hallway" - }, -/turf/open/floor/iron/textured_half, -/area/station/hallway/primary/central/fore) "oDB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -40539,14 +44637,13 @@ }, /turf/open/space/basic, /area/space/nearstation) -"oDK" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Hydroponics Maintenance" +"oDM" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) +/turf/open/floor/stone, +/area/station/service/bar) "oDY" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/turf_decal/stripes/corner{ @@ -40579,36 +44676,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"oEr" = ( +"oEn" = ( +/obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/status_display/ai/directional/south, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"oEt" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/requests_console/directional/north{ - department = "Chief Engineer's Desk"; - name = "Chief Engineer's Requests Console"; - pixel_y = -32 - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/turf/open/floor/iron/stairs/old{ - dir = 4 - }, -/area/station/command/heads_quarters/ce) +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "oEB" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/box/red/corners{ @@ -40625,11 +44701,15 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"oEN" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +"oEJ" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/door/airlock{ + name = "Maintenance" }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/unres, +/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, /area/station/maintenance/central/greater) "oFc" = ( @@ -40667,6 +44747,20 @@ "oFu" = ( /turf/closed/wall, /area/station/security/office) +"oFy" = ( +/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 = "Cargo Botique" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/textured_half{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) "oFI" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -40703,13 +44797,6 @@ }, /turf/open/floor/carpet/executive, /area/station/command/meeting_room) -"oGJ" = ( -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "oGL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40737,6 +44824,13 @@ /obj/structure/flora/rock/pile/style_2, /turf/open/misc/sandy_dirt, /area/station/science/research) +"oHk" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/stairs, +/area/station/maintenance/port/greater) "oHw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40839,23 +44933,24 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/commons/fitness/recreation) +"oIS" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/status_display/evac/directional/south, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "oIT" = ( /obj/structure/frame/machine, /obj/item/circuitboard/machine/biogenerator, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"oJl" = ( -/obj/machinery/door/airlock/engineering{ - name = "Main Engineering" - }, +"oIY" = ( +/obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/turf/open/floor/catwalk_floor, -/area/station/engineering/break_room) +/obj/machinery/smartfridge, +/turf/open/floor/plating, +/area/station/service/hydroponics) "oJn" = ( /obj/structure/cable, /obj/structure/disposalpipe/sorting/mail{ @@ -40876,6 +44971,21 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/circuit, /area/station/tcommsat/server) +"oJx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/rack, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "vaco"; + name = "Comissary Shutters" + }, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "oJz" = ( /obj/structure/bodycontainer/morgue{ dir = 2 @@ -40899,6 +45009,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/processing) +"oJD" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "oJE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40969,6 +45088,16 @@ /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, /area/station/maintenance/aft) +"oLo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_red/half/contrasted, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "oLr" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -40993,12 +45122,6 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/station/solars/starboard/aft) -"oMC" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/half, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) "oMF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral, @@ -41040,6 +45163,24 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) +"oNG" = ( +/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/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "oNH" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -41056,6 +45197,11 @@ dir = 8 }, /area/station/science/research) +"oNV" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_yw/style_2, +/turf/open/floor/grass, +/area/station/service/chapel) "oNX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -41186,6 +45332,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"oPy" = ( +/obj/structure/bookcase/random, +/obj/structure/sign/painting/library{ + pixel_x = -30 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "oPG" = ( /obj/machinery/door/airlock/research{ name = "Research Director's Bedroom" @@ -41220,6 +45373,13 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/security/prison/workout) +"oQi" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "oQj" = ( /obj/structure/window/spawner/directional/west, /obj/structure/window/spawner/directional/east, @@ -41255,16 +45415,59 @@ }, /turf/open/floor/iron, /area/station/engineering/hallway) -"oQD" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/button/door/directional/north{ - id = "vaco"; - name = "Comissary Shutters"; - pixel_x = 29 +"oQA" = ( +/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, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, +/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, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/small, -/area/station/commons/vacant_room/commissary) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, +/area/station/maintenance/central/greater) +"oQE" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_y = 9; + pixel_x = 4 + }, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/chem_master/condimaster, +/obj/effect/turf_decal/siding/end{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "oQF" = ( /turf/closed/wall/r_wall, /area/station/security/execution/transfer) @@ -41288,6 +45491,13 @@ /obj/effect/landmark/atmospheric_sanity/ignore_area, /turf/closed/mineral/random/stationside, /area/station/ai_monitored/aisat/exterior) +"oRn" = ( +/obj/structure/cable, +/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/plating, +/area/station/maintenance/central/greater) "oRp" = ( /obj/structure/chair/stool/directional/east, /turf/open/floor/carpet, @@ -41303,6 +45513,28 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/cargo/storage) +"oRw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"oRy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Crematorium" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/service/chapel/storage) "oRB" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, @@ -41354,11 +45586,16 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"oSh" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) +"oSr" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "oSv" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/computer/rdconsole{ @@ -41385,33 +45622,21 @@ /obj/structure/reagent_dispensers/watertank/high, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"oSP" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 +"oTg" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"oSS" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "oTj" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"oTo" = ( -/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/catwalk_floor/iron, -/area/station/service/bar) "oTH" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/decal/cleanable/dirt, @@ -41433,11 +45658,6 @@ }, /turf/open/floor/iron, /area/station/security/execution/transfer) -"oTO" = ( -/obj/structure/dresser, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/wood, -/area/station/cargo/boutique) "oTT" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -41474,16 +45694,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"oUx" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=23.2-Evac-Garden"; - location = "23.4-Evac" - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "oUz" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable, @@ -41522,15 +45732,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/security/evidence) -"oUO" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/maintenance/port/greater) "oVt" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, /obj/effect/turf_decal/tile/yellow, @@ -41552,6 +45753,13 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron, /area/station/security/execution/transfer) +"oVW" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "oVY" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -41564,12 +45772,6 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/carpet/royalblue, /area/station/command/heads_quarters/captain) -"oWb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/cold/directional/east, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "oWg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41589,12 +45791,6 @@ /obj/effect/mapping_helpers/airlock/access/any/command/maintenance, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) -"oWp" = ( -/obj/structure/chair{ - pixel_y = -2 - }, -/turf/open/floor/iron/dark/small, -/area/station/commons/vacant_room/commissary) "oWr" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -41630,15 +45826,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"oXt" = ( -/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/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "oXK" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -41652,35 +45839,25 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"oXV" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, +"oYi" = ( +/obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/line{ - dir = 5 + dir = 1 }, -/obj/effect/turf_decal/trimline/neutral/corner{ - dir = 8 +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=23.1-Evac"; + location = "22.0-Porthall-Evac" }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"oXZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/area/station/hallway/primary/port) "oYj" = ( /obj/machinery/light_switch/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"oYu" = ( -/obj/machinery/vending/dinnerware, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "oYv" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41787,21 +45964,6 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/security/tram) -"paL" = ( -/obj/structure/fireplace, -/obj/effect/turf_decal/siding/wood/end, -/obj/machinery/camera/directional/east, -/turf/open/floor/stone, -/area/station/service/bar) -"paV" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "paW" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 8 @@ -41863,11 +46025,28 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"pbu" = ( +"pbq" = ( /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"pbw" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) "pbE" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -41875,17 +46054,30 @@ }, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"pbG" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 +"pbN" = ( +/obj/machinery/door/airlock/wood{ + name = "Bar Backroom" }, -/obj/effect/turf_decal/siding/wood{ +/obj/effect/mapping_helpers/airlock/access/all/service/bar, +/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, +/turf/open/floor/iron/dark/textured_half{ dir = 1 }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) +/area/station/service/bar) +"pbO" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "pbT" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -41894,13 +46086,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) -"pbZ" = ( +"pca" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, /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/stone, -/area/station/service/theater) +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "pcb" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 4 @@ -42041,15 +46236,6 @@ /obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"pev" = ( -/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, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "peN" = ( /obj/structure/lattice, /obj/machinery/camera/motion/directional/north{ @@ -42168,29 +46354,10 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/atmos) -"pfO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/directional/east, -/obj/machinery/status_display/evac/directional/east, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "pfT" = ( /obj/structure/training_machine, /turf/open/floor/iron/smooth_large, /area/station/science/auxlab/firing_range) -"pfU" = ( -/obj/machinery/door/airlock{ - name = "Kitchen Cold Room" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/structure/barricade/wooden/crude, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/welded, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/service/bar/backroom) "pfW" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -42208,6 +46375,11 @@ dir = 8 }, /area/station/commons/fitness/locker_room) +"pgm" = ( +/obj/machinery/computer/security/telescreen/prison/directional/north, +/obj/machinery/computer/records/security, +/turf/open/floor/wood, +/area/station/security/detectives_office) "pgq" = ( /obj/structure/chair/stool/directional/north, /obj/effect/turf_decal/siding/wood{ @@ -42239,12 +46411,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) -"pgW" = ( -/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/freezer, -/area/station/service/kitchen/coldroom) "phd" = ( /obj/effect/turf_decal/siding/red{ dir = 4 @@ -42357,14 +46523,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"piZ" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "pjb" = ( /obj/structure/broken_flooring/singular/directional/south, /turf/open/floor/iron, @@ -42398,20 +46556,10 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"pjA" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +"pjw" = ( +/obj/effect/turf_decal/siding/wood/end, +/turf/open/floor/wood, +/area/station/service/chapel) "pjG" = ( /obj/machinery/light_switch/directional/north, /turf/open/floor/iron, @@ -42455,6 +46603,13 @@ /obj/structure/window/spawner/directional/south, /turf/open/floor/iron/showroomfloor, /area/station/command/corporate_showroom) +"pkk" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L9"; + pixel_y = -15 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "pks" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/green/opposingcorners{ @@ -42593,6 +46748,25 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"pnF" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/hydroponics/constructable, +/obj/machinery/airalarm/directional/west, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"pnK" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/bush/flowers_yw/style_3, +/obj/structure/flora/bush/jungle/c/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) "pnQ" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 6 @@ -42627,15 +46801,9 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/iron/freezer, /area/station/command/corporate_suite) -"poh" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/oven/range, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "pot" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar/premium{ +/obj/item/cigarette/cigar/premium{ pixel_y = 5 }, /turf/open/floor/stone, @@ -42791,10 +46959,6 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) -"pqa" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/space/basic, -/area/space) "pqm" = ( /turf/closed/wall/r_wall, /area/station/engineering/storage/tcomms) @@ -42826,6 +46990,16 @@ /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"pqx" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "pqH" = ( /obj/structure/closet/firecloset, /obj/item/clothing/glasses/meson, @@ -42884,14 +47058,6 @@ "prI" = ( /turf/closed/wall, /area/station/engineering/hallway) -"prQ" = ( -/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/iron/cafeteria, -/area/station/service/kitchen) "prV" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/effect/turf_decal/tile/yellow/opposingcorners{ @@ -43003,11 +47169,6 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/diagonal, /area/station/science/auxlab/firing_range) -"ptk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "ptl" = ( /obj/machinery/duct, /turf/open/floor/plating, @@ -43050,35 +47211,22 @@ }, /turf/open/floor/iron/smooth, /area/station/maintenance/port/aft) -"ptZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/grass, -/area/station/service/chapel) -"pug" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 +"pud" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/griddle, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"puj" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/griddle, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"pup" = ( -/obj/structure/chair/sofa/right, -/obj/machinery/light/small/directional/west, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/wood, -/area/station/hallway/secondary/service) +/obj/machinery/holopad, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "pus" = ( /obj/effect/turf_decal/box/red/corners, /obj/effect/turf_decal/stripes/white/line{ @@ -43086,23 +47234,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"puv" = ( -/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/hydroponics{ - name = "Hydroponics Supply Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, -/turf/open/floor/iron/textured_half, -/area/station/service/hydroponics) -"puw" = ( -/obj/machinery/door/morgue{ - name = "Private Study"; - req_access = list("library") - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/service/library) "pux" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -43110,12 +47241,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/diagonal, /area/station/command/heads_quarters/hop) -"puD" = ( -/obj/structure/bookcase/random/nonfiction, -/obj/machinery/newscaster/directional/west, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/wood/tile, -/area/station/service/bar) "puI" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -43131,17 +47256,35 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/station/engineering/atmos/space_catwalk) -"puY" = ( +"pvf" = ( /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 6 }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/firealarm/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/security/brig/entrance) +/area/station/hallway/primary/central/fore) +"pvi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood, +/area/station/service/chapel/office) "pvk" = ( /obj/structure/closet/boxinggloves, /obj/effect/turf_decal/stripes/red/line{ @@ -43154,6 +47297,12 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) +"pvC" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/wood, +/area/station/service/chapel/office) "pvE" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 4 @@ -43177,24 +47326,6 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/atmos) -"pvR" = ( -/obj/structure/table/wood, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/stone, -/area/station/service/bar/backroom) -"pvS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/item/radio/intercom/directional/south, -/obj/machinery/duct, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/start/cook, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "pvY" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 @@ -43217,14 +47348,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall, /area/station/engineering/atmos) -"pww" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "pwA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -43253,29 +47376,12 @@ "pwN" = ( /turf/open/floor/iron/dark/small, /area/station/service/chapel/storage) -"pwO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"pxg" = ( -/obj/machinery/light/small/broken/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/commons/vacant_room/commissary) "pxj" = ( /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/security/execution/education) -"pxl" = ( -/obj/machinery/smartfridge, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/service/hydroponics) "pxx" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -43300,31 +47406,11 @@ dir = 1 }, /area/station/security/prison/safe) -"pxO" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) -"pxW" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/engine, -/area/station/science/xenobiology) "pxZ" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"pya" = ( -/obj/structure/chair/sofa/right/maroon, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "pyh" = ( /obj/structure/cable, /obj/structure/broken_flooring/singular/directional/east, @@ -43348,6 +47434,17 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/engineering/atmos/office) +"pyt" = ( +/obj/machinery/light/floor, +/turf/open/floor/grass, +/area/station/service/chapel) +"pyA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "pyF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43355,19 +47452,16 @@ /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) "pyS" = ( -/obj/structure/chair/sofa/left/maroon, -/obj/effect/landmark/start/assistant, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) -"pyY" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 8 }, -/obj/structure/table, -/obj/item/weldingtool/mini, -/turf/open/floor/iron/white, -/area/station/maintenance/central/greater) +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "pzb" = ( /obj/effect/turf_decal/trimline/blue/corner{ dir = 1 @@ -43383,17 +47477,6 @@ /obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, /turf/closed/wall/r_wall, /area/station/engineering/hallway) -"pzn" = ( -/obj/structure/table, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/toy/foamfinger, -/obj/item/toy/eightball{ - pixel_y = 13 - }, -/turf/open/floor/plating, -/area/station/service/theater) "pzy" = ( /obj/structure/table, /obj/item/storage/box/prisoner{ @@ -43405,6 +47488,13 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/security/execution/transfer) +"pzF" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "pzK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding, @@ -43422,16 +47512,6 @@ /obj/item/stack/sheet/mineral/titanium, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"pzX" = ( -/obj/structure/railing, -/obj/structure/table, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white, -/obj/effect/spawner/random/entertainment/toy, -/turf/open/floor/plating, -/area/station/service/theater) "pAa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/spawner/random/structure/barricade, @@ -43528,6 +47608,16 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"pBA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/warm/dim, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/camera/autoname/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "pBD" = ( /obj/effect/spawner/structure/window, /obj/structure/cable, @@ -43564,6 +47654,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"pCf" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Fore Primary Hallway" + }, +/obj/structure/cable, +/turf/open/floor/iron/textured_half, +/area/station/hallway/primary/central/fore) "pCo" = ( /obj/structure/lattice/catwalk, /obj/structure/railing, @@ -43623,11 +47721,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/aft) -"pCX" = ( -/obj/structure/chair/stool/directional/west, -/obj/effect/landmark/start/clown, -/turf/open/floor/carpet/lone, -/area/station/service/theater) +"pDf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/firealarm/directional/east, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "pDr" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43775,16 +47879,23 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"pEO" = ( +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=1.0-Security-PNexus"; + location = "23.2-Evac-Garden" + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "pFk" = ( /obj/structure/broken_flooring/singular/directional/east, /obj/effect/decal/cleanable/dirt, /obj/structure/alien/weeds, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"pFr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/lone, -/area/station/service/theater) "pFI" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -43910,6 +48021,27 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/chapel, /area/station/maintenance/starboard/greater) +"pHl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/status_display/ai/directional/west, +/obj/structure/disposalpipe/segment, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/status_display/ai/directional/west, +/obj/structure/disposalpipe/segment, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "pHn" = ( /obj/structure/cable, /obj/structure/broken_flooring/singular/directional/east, @@ -43926,6 +48058,18 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"pHs" = ( +/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/siding/red{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "pHw" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -43966,16 +48110,21 @@ }, /turf/open/floor/wood, /area/station/commons/fitness/recreation) -"pHN" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/flora/bush/sunny/style_random, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/grass, -/area/station/service/chapel) -"pHS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) +"pHY" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/obj/machinery/light_switch/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Atmospherics - South" + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "pId" = ( /obj/structure/reagent_dispensers/plumbed, /turf/open/floor/iron/kitchen/small, @@ -43992,20 +48141,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/commons/fitness/locker_room) -"pIg" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wideplating/dark/corner{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "pIi" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/rack, @@ -44056,6 +48191,23 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"pIC" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 8 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) +"pIQ" = ( +/obj/effect/turf_decal/tile/neutral{ + 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, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "pIS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -44134,6 +48286,16 @@ }, /turf/open/space/basic, /area/space/nearstation) +"pKc" = ( +/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 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "pKg" = ( /obj/effect/turf_decal/siding/dark{ dir = 10 @@ -44260,24 +48422,19 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/north, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) -"pMg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 +"pMl" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 5 }, -/turf/open/floor/grass, -/area/station/service/chapel) +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "pMs" = ( /obj/structure/transit_tube/horizontal, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"pMu" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/grass, -/area/station/service/chapel) "pMA" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/catwalk_floor/iron_dark, @@ -44315,12 +48472,6 @@ }, /turf/open/floor/plating, /area/station/engineering/gravity_generator) -"pNa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/wood/parquet, -/area/station/service/library) "pNh" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44340,13 +48491,6 @@ }, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) -"pNy" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "pNC" = ( /turf/open/floor/iron/dark/side{ dir = 1 @@ -44375,14 +48519,6 @@ }, /turf/closed/wall, /area/station/commons/fitness/locker_room) -"pOb" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "pOg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44409,18 +48545,6 @@ }, /turf/open/floor/iron/small, /area/station/engineering/main) -"pOj" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "pOm" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/tile/blue/half/contrasted{ @@ -44463,14 +48587,34 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) -"pOK" = ( -/obj/structure/cable, +"pOM" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 4 }, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) +/turf/open/floor/iron/small, +/area/station/hallway/primary/port) +"pOQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/firealarm/directional/east, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) +"pOT" = ( +/turf/closed/wall, +/area/station/holodeck/rec_center) "pOX" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -44511,26 +48655,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) -"pPT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "pPZ" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/aft) -"pQe" = ( -/obj/structure/chair/sofa/left{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood/tile, -/area/station/service/bar) "pQj" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -44561,11 +48689,6 @@ }, /turf/open/floor/engine, /area/station/hallway/secondary/entry) -"pQO" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/effect/spawner/random/entertainment/arcade, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "pQY" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/half/contrasted, @@ -44574,6 +48697,15 @@ }, /turf/open/floor/iron/dark/side, /area/station/science/xenobiology) +"pRc" = ( +/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 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "pRe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/table/wood, @@ -44611,22 +48743,10 @@ /obj/effect/mapping_helpers/airlock/access/any/security/general, /turf/open/floor/iron/textured_half, /area/station/security/checkpoint/customs/auxiliary) -"pRP" = ( -/obj/machinery/icecream_vat, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "pRQ" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"pRU" = ( -/obj/machinery/gibber, -/obj/effect/turf_decal/bot_red, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "pSc" = ( /obj/item/bikehorn/rubberducky{ pixel_x = 6; @@ -44646,40 +48766,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) -"pSm" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 8 - }, -/obj/structure/table, -/obj/item/reagent_containers/cup/beaker{ - pixel_x = 5; - pixel_y = 17 - }, -/obj/item/reagent_containers/syringe/epinephrine, -/obj/item/reagent_containers/syringe{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/machinery/light/small/red/directional/west, -/turf/open/floor/iron/white, -/area/station/maintenance/central/greater) "pSq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/random/directional/north, /obj/structure/broken_flooring/pile/directional/east, /turf/open/floor/plating, /area/station/hallway/secondary/dock) -"pSr" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/structure/table, -/obj/item/reagent_containers/dropper{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/crowbar/large/emergency, -/turf/open/floor/iron/white, -/area/station/maintenance/central/greater) "pSs" = ( /obj/structure/railing/corner{ dir = 1 @@ -44693,24 +48785,20 @@ }, /turf/open/floor/plating, /area/station/science/ordnance/testlab) -"pSI" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/destructible/cult/item_dispenser/archives/library, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/grimy, -/area/station/service/library) -"pSK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/bookcase/random/adult, -/turf/open/floor/iron/grimy, -/area/station/service/library) "pSN" = ( /obj/item/radio/intercom/directional/south, /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, /area/station/service/lawoffice) +"pSP" = ( +/obj/structure/cable, +/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/plating, +/area/station/maintenance/port/greater) "pSQ" = ( /obj/structure/cable, /turf/closed/wall, @@ -44724,32 +48812,19 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/engineering/storage/tech) -"pTc" = ( +"pTk" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 +/obj/machinery/door/airlock{ + name = "Maintenance" }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/port) -"pTl" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/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/effect/landmark/start/mime, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/stone, -/area/station/service/theater) +/turf/open/floor/plating, +/area/station/holodeck/rec_center) "pTp" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ dir = 4 @@ -44786,13 +48861,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/smooth_large, /area/station/service/lawoffice) -"pTC" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 1 - }, -/obj/effect/mapping_helpers/mail_sorting/service/theater, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +"pTA" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/spawner/random/entertainment/arcade, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "pTZ" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -44889,16 +48963,14 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/white, /area/station/science/auxlab/firing_range) -"pVq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/line{ +"pVj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/hallway/primary/fore) +/area/station/hallway/primary/central/fore) "pVK" = ( /obj/effect/mapping_helpers/broken_floor, /turf/closed/wall, @@ -45047,6 +49119,10 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) +"pXk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "pXo" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -45113,13 +49189,6 @@ /obj/structure/broken_flooring/pile/directional/east, /turf/open/floor/plating, /area/station/hallway/secondary/dock) -"pXU" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "pYi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -45149,14 +49218,6 @@ }, /turf/open/floor/engine, /area/station/science/explab) -"pYE" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/effect/landmark/start/hangover, -/turf/open/floor/grass, -/area/station/service/chapel) "pYP" = ( /obj/machinery/door/poddoor/preopen{ id = "atmos"; @@ -45177,18 +49238,25 @@ dir = 4 }, /area/station/science/lower) -"pZi" = ( -/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/wood/parquet, -/area/station/service/library) +"pZq" = ( +/obj/effect/spawner/random/trash/hobo_squat, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "pZu" = ( /obj/structure/hedge, /turf/open/floor/plating, /area/station/cargo/storage) +"pZv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "pZz" = ( /obj/structure/rack, /obj/item/clothing/gloves/cargo_gauntlet{ @@ -45212,13 +49280,6 @@ /obj/item/shard/titanium, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"qaA" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/chapel) "qaF" = ( /obj/structure/sink/directional/south, /obj/structure/mirror/directional/north, @@ -45231,11 +49292,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) -"qbi" = ( -/obj/machinery/photocopier, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood/parquet, -/area/station/service/library) "qbj" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/closet/secure_closet/security/sec, @@ -45262,14 +49318,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/checker, /area/station/security/breakroom) -"qbr" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/grass, -/area/station/service/chapel) "qbv" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /obj/structure/disposalpipe/segment{ @@ -45277,37 +49325,28 @@ }, /turf/open/floor/iron/small, /area/station/engineering/atmos) -"qbw" = ( -/obj/structure/disposalpipe/segment, -/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/siding/red{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "qby" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/checkpoint/supply) -"qbC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"qbA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) +"qbB" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "qbE" = ( /obj/item/stack/tile/catwalk_tile/iron, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"qbK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) "qbN" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -45339,15 +49378,17 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter) +"qbZ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/closed/wall, +/area/station/hallway/primary/central/aft) "qcf" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/construction) -"qcl" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/floor/wood, -/area/station/hallway/secondary/service) "qcr" = ( /obj/structure/flora/bush/flowers_yw/style_random, /mob/living/carbon/human/species/monkey, @@ -45359,6 +49400,10 @@ /obj/effect/landmark/navigate_destination/dockarrival, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"qcB" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/station/maintenance/central/greater) "qcC" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/structure/disposalpipe/segment, @@ -45384,16 +49429,6 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) -"qdm" = ( -/turf/open/floor/wood, -/area/station/hallway/secondary/service) -"qdp" = ( -/obj/structure/chair/sofa/right{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood/tile, -/area/station/service/bar) "qdu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -45404,15 +49439,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) -"qdC" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/duct, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "qdJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -45480,15 +49506,6 @@ "qei" = ( /turf/closed/wall, /area/station/science/ordnance/storage) -"qej" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Library" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/service/library) "qen" = ( /obj/structure/table, /obj/item/clothing/gloves/boxing, @@ -45580,6 +49597,26 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"qgd" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/spawner/random/food_or_drink/cake_ingredients, +/obj/item/kitchen/rollingpin, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "qgj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -45594,14 +49631,6 @@ }, /turf/open/floor/iron, /area/station/science/lower) -"qgr" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/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/service/library) "qgs" = ( /obj/structure/cable, /obj/item/kirbyplants/random/fullysynthetic, @@ -45629,24 +49658,6 @@ /obj/effect/mapping_helpers/airlock/access/any/service/lawyer, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"qgA" = ( -/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/hangover, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"qgH" = ( -/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, -/turf/open/floor/wood/parquet, -/area/station/service/library) "qgJ" = ( /obj/machinery/light/dim/directional/west, /obj/machinery/duct, @@ -45661,16 +49672,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/smooth, /area/station/commons/storage/tools) -"qgN" = ( -/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/effect/landmark/event_spawn, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/service/library) "qhh" = ( /obj/structure/cable, /obj/structure/table/glass, @@ -45689,42 +49690,43 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/white, /area/station/science/cytology) -"qhi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) -"qhm" = ( -/obj/structure/table, -/obj/item/storage/crayons, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"qhp" = ( +"qhy" = ( /obj/structure/cable, -/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/machinery/door/airlock/wood{ + name = "Bar Backroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/bar, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"qhs" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/wood{ + name = "Bar Backroom" }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/effect/mapping_helpers/airlock/access/all/service/bar, +/obj/machinery/door/firedoor, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, -/obj/structure/chair/wood{ - dir = 4 +/obj/machinery/door/airlock{ + name = "Maintenance" }, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + 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/plating, +/area/station/maintenance/central/greater) "qhD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45802,6 +49804,14 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/commons/storage/tools) +"qiC" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/iron, +/area/station/service/hydroponics) "qiL" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -45818,6 +49828,20 @@ }, /turf/open/floor/plating, /area/station/tcommsat/server) +"qjf" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/item/kirbyplants/random, +/obj/item/radio/intercom/directional/south, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "qjh" = ( /obj/machinery/light_switch/directional/west, /turf/open/floor/iron/white, @@ -45847,6 +49871,17 @@ /obj/effect/turf_decal/stripes/white/full, /turf/open/floor/engine, /area/station/engineering/supermatter) +"qjt" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "qju" = ( /obj/structure/cable, /obj/machinery/door/poddoor/preopen{ @@ -45900,6 +49935,28 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"qkh" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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/hallway/primary/central/aft) "qkp" = ( /obj/machinery/door/airlock{ name = "Maintenance" @@ -45908,15 +49965,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"qkv" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor, -/turf/open/floor/wood/large, -/area/station/service/chapel) -"qkw" = ( -/obj/machinery/light/floor, -/turf/open/floor/wood/large, -/area/station/service/chapel) "qkI" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 1 @@ -45996,16 +50044,11 @@ /obj/structure/broken_flooring/corner/directional/south, /turf/open/floor/plating, /area/station/hallway/secondary/dock) -"qme" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/wood/tile, -/area/station/service/bar) "qmf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/carpet/lone, -/area/station/service/theater) +/obj/structure/flora/grass/jungle/b/style_random, +/obj/machinery/camera/directional/north, +/turf/open/misc/dirt/station, +/area/station/service/chapel) "qmo" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -46021,35 +50064,16 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"qmx" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/storage/fancy/cigarettes/cigars/cohiba{ - pixel_x = 2; - pixel_y = 10 - }, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "qmz" = ( /obj/structure/table/wood, /turf/open/floor/wood, /area/station/cargo/boutique) -"qmI" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/brown/full, -/obj/machinery/duct, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) -"qmO" = ( -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/duct, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) +"qmM" = ( +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/turf/open/floor/iron/smooth, +/area/station/service/library) "qmZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46058,6 +50082,21 @@ }, /turf/open/floor/iron/dark/small, /area/station/medical/chemistry) +"qnb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "vaco"; + name = "Comissary Shutters" + }, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "qnc" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -46077,58 +50116,12 @@ }, /turf/open/floor/iron/solarpanel/airless, /area/station/solars/starboard/fore) -"qnu" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/airlock/public/glass{ - name = "Chapel Office" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, -/turf/open/floor/iron/textured_half, -/area/station/service/chapel/office) -"qnz" = ( -/obj/structure/disposalpipe/segment, -/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{ - dir = 1 - }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"qnA" = ( -/obj/structure/table, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "barki"; - name = "Shutters" - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/service/kitchen) "qnJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/white/small, /area/station/science/ordnance/storage) -"qnL" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/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/cafeteria, -/area/station/service/kitchen) -"qoi" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) "qoj" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/window/right/directional/west{ @@ -46145,11 +50138,6 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos) -"qon" = ( -/obj/machinery/vending/wardrobe/chef_wardrobe, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "qop" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -46185,12 +50173,6 @@ /obj/effect/turf_decal/stripes/box, /turf/open/floor/iron/white/small, /area/station/service/janitor) -"qpg" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L3" - }, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "qpu" = ( /obj/effect/turf_decal/siding/brown{ dir = 9 @@ -46214,13 +50196,6 @@ /obj/item/restraints/handcuffs, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"qpX" = ( -/obj/machinery/door/airlock{ - name = "Kitchen" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/turf/open/floor/catwalk_floor/flat_white, -/area/station/service/kitchen) "qqd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46228,22 +50203,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"qqh" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/table, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) -"qqq" = ( -/obj/effect/turf_decal/tile/green/diagonal_centre, -/obj/machinery/light/small/directional/north, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "qqr" = ( /obj/machinery/atmospherics/components/binary/pump/off/general/visible{ dir = 4; @@ -46258,6 +50217,16 @@ /obj/machinery/light/floor, /turf/open/floor/glass/reinforced, /area/station/command/bridge) +"qqH" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "qqJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -46302,34 +50271,11 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/eighties, /area/station/service/abandoned_gambling_den/gaming) -"qrw" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/item/trash/popcorn{ - pixel_x = 17; - pixel_y = 14 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "qrB" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/xenobiology) -"qrI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/service/cafeteria) -"qrN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/iron/grimy, -/area/station/service/theater) "qsa" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/directional/south{ @@ -46356,15 +50302,14 @@ /obj/effect/landmark/blobstart, /turf/open/floor/iron, /area/station/hallway/secondary/construction) -"qsA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ +"qsk" = ( +/obj/effect/landmark/start/botanist, +/obj/effect/turf_decal/siding/thinplating_new/light{ dir = 1 }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/grimy, -/area/station/service/theater) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "qsR" = ( /obj/structure/table/reinforced, /obj/effect/mapping_helpers/broken_floor, @@ -46383,10 +50328,6 @@ "qtd" = ( /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) -"qtl" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/spacebridge) "qto" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -46451,16 +50392,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"qtW" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/service/theater) -"qui" = ( -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/wood/parquet, -/area/station/service/theater) "qul" = ( /obj/machinery/light/small/directional/east, /obj/machinery/light_switch/directional/east, @@ -46473,13 +50404,6 @@ }, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) -"quo" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/service/theater) "quq" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/closet/crate/cardboard, @@ -46502,12 +50426,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/aft) -"quJ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/light/small/directional/south, -/obj/structure/flora/tree/jungle/small/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "quO" = ( /obj/structure/reagent_dispensers/wall/peppertank/directional/east, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -46571,16 +50489,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) -"qvQ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel/storage) "qwa" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 8 @@ -46637,6 +50545,9 @@ /obj/effect/turf_decal/siding/wideplating/dark, /turf/open/floor/iron, /area/station/security) +"qwK" = ( +/turf/open/floor/carpet/lone, +/area/station/service/chapel/office) "qwU" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table/glass, @@ -46809,6 +50720,14 @@ /obj/effect/turf_decal/tile/dark_red/half/contrasted, /turf/open/floor/iron, /area/station/security/tram) +"qzt" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/west, +/obj/structure/flora/bush/large/style_2, +/obj/structure/flora/bush/sparsegrass, +/obj/structure/flora/bush/flowers_yw, +/turf/open/floor/grass, +/area/station/service/hydroponics) "qzv" = ( /obj/structure/table, /obj/item/canvas{ @@ -46857,6 +50776,10 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/fore/greater) +"qzP" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/station/service/chapel) "qzT" = ( /obj/item/bikehorn/rubberducky{ pixel_x = -6; @@ -46918,12 +50841,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"qAE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/table, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "qAJ" = ( /obj/effect/spawner/random/structure/closet_private, /obj/machinery/light/small/directional/east, @@ -46973,11 +50890,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/security/tram) -"qBj" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating, -/area/station/cargo/boutique) "qBl" = ( /obj/machinery/camera/directional/north{ c_tag = "Holodeck - Fore"; @@ -46987,35 +50899,12 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) -"qBy" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L5" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "qBz" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/mannequin/plastic, /obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/station/cargo/boutique) -"qBD" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the turbine vent."; - dir = 1; - name = "turbine vent monitor"; - network = list("turbine"); - pixel_y = -28 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/smooth, -/area/station/maintenance/disposal/incinerator) "qBG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -47057,17 +50946,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"qCg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) -"qCi" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/large, -/area/station/service/chapel) "qCj" = ( /obj/machinery/airalarm/directional/south, /obj/item/kirbyplants/organic/applebush, @@ -47083,10 +50961,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/science/xenobiology) -"qCC" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/turf/open/floor/iron/white, -/area/station/maintenance/central/greater) "qCJ" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood{ @@ -47106,9 +50980,6 @@ }, /turf/open/floor/iron/large, /area/station/command/heads_quarters/hop) -"qCR" = ( -/turf/open/floor/wood/large, -/area/station/service/chapel) "qCT" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -47143,6 +51014,22 @@ }, /turf/open/floor/wood/tile, /area/station/tcommsat/server) +"qDd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock{ + name = "Theater Greenroom" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/theatre, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/textured_half{ + dir = 8 + }, +/area/station/service/greenroom) "qDi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47153,14 +51040,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/dark/hidden, /turf/open/floor/wood/tile, /area/station/tcommsat/server) -"qDp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) "qDq" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -47243,29 +51122,11 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/sorting) -"qEa" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock{ - name = "Bar Backroom Maintenence" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/bar, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "qEe" = ( /turf/open/floor/iron/white/side{ dir = 8 }, /area/station/science/lobby) -"qEk" = ( -/obj/structure/table/reinforced, -/obj/item/folder/blue{ - pixel_y = 2 - }, -/obj/item/pen, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/circuit/red, -/area/station/ai_monitored/turret_protected/ai) "qEm" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ @@ -47273,23 +51134,6 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) -"qEp" = ( -/obj/machinery/chem_master/condimaster{ - desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; - name = "BrewMaster 2199" - }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) "qEz" = ( /obj/machinery/door/window/brigdoor/left/directional/west{ name = "Holding Cell"; @@ -47301,6 +51145,22 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/lower) +"qEO" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/machinery/status_display/evac/directional/east, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/stripes/end, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/tile/green/fourcorners, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "qEP" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -47346,24 +51206,47 @@ }, /turf/open/floor/plating/elevatorshaft, /area/station/engineering/atmos) -"qFB" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/blue{ +"qGc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Fore Primary Hallway" + }, +/turf/open/floor/iron/textured_half, +/area/station/hallway/primary/central/fore) +"qGe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ dir = 1 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/item/paper/guides/jobs/hydroponics, -/obj/item/pen{ - pixel_x = 11 +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) +"qGf" = ( +/obj/structure/flora/bush/flowers_pp{ + pixel_y = 3 }, -/turf/open/floor/iron, -/area/station/service/hydroponics) +/obj/effect/dummy/lighting_obj, +/obj/effect/light_emitter/fake_outdoors, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/grass/Airless, +/area/station/hallway/primary/central/aft) "qGk" = ( /obj/structure/chair/stool/directional/east, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"qGp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "qGu" = ( /obj/effect/turf_decal/siding/dark_red, /obj/item/radio/intercom/directional/south, @@ -47372,20 +51255,6 @@ }, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) -"qGw" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) -"qGA" = ( -/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/green/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) "qGB" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -47406,39 +51275,37 @@ /obj/effect/turf_decal/siding/wideplating/dark/corner, /turf/open/floor/iron, /area/station/security) -"qGU" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"qGY" = ( -/obj/effect/landmark/start/cook, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) -"qHm" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "kitchenshutters"; - name = "Kitchen Shutters" +"qHb" = ( +/obj/structure/cable/layer3, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/window/left/directional/south{ + name = "AI Security Door" }, -/obj/structure/desk_bell{ - pixel_x = 8; - pixel_y = 11 +/obj/machinery/flasher/directional/east{ + id = "ai" }, -/obj/effect/spawner/random/food_or_drink/condiment{ - pixel_x = -8; - pixel_y = 3 +/turf/open/floor/circuit/red, +/area/station/ai_monitored/turret_protected/ai) +"qHr" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 }, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) +/obj/machinery/light/small/directional/west, +/obj/machinery/camera/directional/west, +/obj/machinery/status_display/ai/directional/west, +/turf/open/floor/grass, +/area/station/service/chapel) "qHt" = ( /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) +"qHE" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/stone, +/area/station/service/bar) "qHH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/south, @@ -47453,6 +51320,16 @@ }, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) +"qHV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/junction/flip{ + dir = 1 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "qHY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47463,20 +51340,6 @@ "qIf" = ( /turf/closed/wall, /area/station/medical/cryo) -"qIg" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/obj/machinery/light/small/directional/west, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "qIk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/hidden, /turf/open/floor/circuit/telecomms/mainframe, @@ -47517,14 +51380,6 @@ }, /turf/open/floor/iron/white, /area/station/science/cytology) -"qIP" = ( -/obj/machinery/food_cart, -/obj/machinery/button/door/directional/west{ - id = "barki"; - name = "Shutters Control" - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "qIQ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -47536,13 +51391,6 @@ /obj/structure/broken_flooring/pile/directional/east, /turf/open/floor/plating, /area/station/hallway/secondary/dock) -"qJa" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/restaurant_portal/restaurant, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "qJq" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -47613,20 +51461,10 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/dorms) -"qKE" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/service/cafeteria) "qKI" = ( /obj/machinery/portable_atmospherics/pump, /turf/open/floor/iron/small, /area/station/maintenance/port/aft) -"qKN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/service/theater) "qKS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -47650,6 +51488,41 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/safe) +"qLk" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/west, +/obj/machinery/door/poddoor/shutters{ + name = "Kitchen Shutters"; + id = "kitchenshutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/west, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "qLt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47680,6 +51553,16 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/station/security/courtroom) +"qLU" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/hydroponics/constructable, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron, +/area/station/service/hydroponics) "qMa" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -47749,13 +51632,6 @@ /obj/structure/hedge, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"qNz" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "qNF" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance, @@ -47783,6 +51659,11 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"qOb" = ( +/obj/structure/flora/bush/sparsegrass, +/obj/structure/flora/bush/flowers_yw, +/turf/open/floor/grass, +/area/station/service/chapel) "qOm" = ( /obj/effect/spawner/structure/window/reinforced, /obj/effect/turf_decal/stripes/corner{ @@ -47790,17 +51671,14 @@ }, /turf/open/floor/plating, /area/station/commons/storage/tools) -"qOp" = ( -/obj/structure/table/wood, -/obj/item/book/bible, -/turf/open/floor/wood/large, -/area/station/service/chapel) -"qOt" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +"qOG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "qOJ" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -47921,6 +51799,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"qQR" = ( +/obj/structure/table/wood, +/obj/machinery/light/small/directional/south, +/obj/machinery/computer/security/telescreen/engine/directional/west, +/obj/machinery/status_display/evac/directional/south, +/obj/item/radio/off{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/ce) "qRh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -47987,18 +51876,36 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"qSa" = ( +/obj/machinery/door/window/right/directional/north{ + name = "Library Desk Door"; + req_access = list("library") + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/carpet, +/area/station/service/library) +"qSb" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/obj/item/kirbyplants/random, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "qSh" = ( /obj/structure/cable, /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"qSv" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 +"qSq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood, +/area/station/service/chapel) "qSC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line, @@ -48026,15 +51933,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/supply) -"qSU" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L9" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "qSZ" = ( /obj/structure/hedge, /obj/machinery/light/cold/directional/west, @@ -48061,6 +51959,14 @@ dir = 8 }, /area/station/science/research) +"qTf" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/wood/tile, +/area/station/service/bar) "qTk" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 8 @@ -48102,27 +52008,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"qTL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/grimy, -/area/station/service/theater) -"qTM" = ( -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) -"qTP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/grunge{ - name = "Vacant Comissary" - }, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/commons/vacant_room/commissary) "qTR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/wood, @@ -48132,6 +52017,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"qUb" = ( +/obj/effect/landmark/start/chaplain, +/obj/effect/turf_decal/siding/wood/end{ + dir = 8 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "qUd" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -48161,6 +52053,30 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/service/lawoffice) +"qUo" = ( +/obj/structure/table, +/obj/item/storage/bag/tray, +/obj/item/knife/kitchen{ + pixel_y = 2 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/processor{ + pixel_y = 6 + }, +/obj/machinery/camera/autoname/directional/west, +/obj/structure/table, +/obj/effect/turf_decal/siding/end, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "qUs" = ( /obj/machinery/door/window/right/directional/west{ name = "Counter Access"; @@ -48311,16 +52227,6 @@ }, /turf/open/floor/wood/tile, /area/station/command/corporate_showroom) -"qWm" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "qWo" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -48337,6 +52243,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/corner, /area/station/science/research) +"qWG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "qWJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48488,17 +52402,6 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/atmos) -"qYu" = ( -/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/machinery/firealarm/directional/south, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "qYv" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -48555,18 +52458,21 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/dark/small, /area/station/science/xenobiology) -"qZf" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 2 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +"qZj" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/ammo_casing/spent{ + pixel_x = 5; + pixel_y = 6 }, -/turf/open/floor/iron/white/corner{ - dir = 1 +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent{ + pixel_x = 4; + pixel_y = -2 }, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "qZm" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -48592,12 +52498,11 @@ dir = 8 }, /area/station/commons/fitness/locker_room) -"qZB" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/grass, -/area/station/service/chapel) +"qZy" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white/small, +/area/station/medical/medbay/lobby) "qZE" = ( /obj/machinery/door/airlock/engineering{ name = "Engineering Office" @@ -48643,10 +52548,6 @@ }, /turf/open/floor/tram, /area/station/security/tram) -"ram" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/large, -/area/station/service/chapel) "rao" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 9 @@ -48660,14 +52561,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"raC" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/assistant, -/obj/structure/chair/sofa/bamboo/left{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/chapel) "raE" = ( /obj/machinery/duct, /turf/open/floor/iron, @@ -48699,13 +52592,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) -"raX" = ( -/obj/effect/landmark/start/assistant, -/obj/structure/chair/sofa/bamboo/right{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/chapel) "raZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48713,10 +52599,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"rba" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/large, -/area/station/service/chapel) "rbc" = ( /obj/structure/transport/linear/tram, /obj/structure/tram, @@ -48728,25 +52610,12 @@ "rbg" = ( /turf/open/floor/iron/smooth, /area/station/engineering/atmos) -"rbh" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel) "rbl" = ( /obj/structure/filingcabinet/chestdrawer, /obj/machinery/light/cold/dim/directional/east, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/grimy, /area/station/engineering/main) -"rbo" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/small, -/area/station/medical/medbay/lobby) "rbp" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, @@ -48784,14 +52653,14 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"rbU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 +"rbW" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/obj/effect/mapping_helpers/airlock/access/any/security/general, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "rce" = ( /obj/machinery/camera{ c_tag = "Xenobiology - Cell 3"; @@ -48832,7 +52701,7 @@ pixel_y = -3; pixel_x = -2 }, -/obj/item/clothing/mask/cigarette{ +/obj/item/cigarette{ pixel_x = 6; pixel_y = 4 }, @@ -48845,22 +52714,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"rcr" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/crowbar/red, -/obj/item/reagent_containers/cup/watering_can, -/obj/item/circuitboard/machine/biogenerator, -/obj/item/wirecutters, -/obj/item/wrench, -/obj/item/shovel/spade, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 +"rcE" = ( +/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/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics) +/turf/open/floor/wood/parquet, +/area/station/service/library) "rcQ" = ( /obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, @@ -48868,13 +52730,6 @@ /obj/machinery/light/small/dim/directional/east, /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) -"rdo" = ( -/obj/structure/window/spawner/directional/west, -/obj/structure/flora/bush/jungle/a/style_random, -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/structure/window/spawner/directional/east, -/turf/open/misc/sandy_dirt, -/area/station/service/hydroponics) "rds" = ( /obj/machinery/computer/slot_machine{ pixel_y = 2 @@ -48884,28 +52739,39 @@ "rdw" = ( /turf/open/floor/eighties/red, /area/station/service/abandoned_gambling_den/gaming) +"rdA" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ + dir = 6 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "rdH" = ( /obj/machinery/keycard_auth/directional/south, /turf/open/floor/mineral/titanium, /area/station/command/heads_quarters/ce) -"rdK" = ( -/obj/structure/chair/office, -/obj/effect/landmark/start/botanist, -/turf/open/floor/iron, -/area/station/service/hydroponics) "rdM" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 }, /turf/open/floor/engine, /area/station/science/cytology) -"ree" = ( +"rdW" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood/tile, -/area/station/service/bar) +/obj/effect/turf_decal/siding/red{ + dir = 6 + }, +/obj/machinery/firealarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/white/small, +/area/station/security/warden) "reg" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -48927,6 +52793,21 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"ren" = ( +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/turf_decal/delivery/white{ + color = "#52B4E9" + }, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/station/service/hydroponics) "rex" = ( /obj/effect/turf_decal/tile/neutral/full, /obj/effect/decal/cleanable/dirt, @@ -48995,25 +52876,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"reT" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"reW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/stool/bar/directional/east, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/tile, -/area/station/service/bar) "reZ" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 4 @@ -49048,13 +52910,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/cargo/drone_bay) -"rfI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/landmark/start/bartender, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "rfJ" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, @@ -49069,22 +52924,6 @@ /obj/structure/cable, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"rgc" = ( -/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/cafeteria, -/area/station/service/kitchen) -"rgf" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/plasticflaps/opaque, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/central/greater) -"rgx" = ( -/obj/structure/table, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "rgA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, @@ -49098,6 +52937,10 @@ /obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"rgM" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/glass, +/area/station/hallway/primary/central/aft) "rgS" = ( /obj/structure/railing/corner/end{ dir = 1 @@ -49109,16 +52952,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/small, /area/station/maintenance/department/engine/atmos) -"rgT" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/port) "rhg" = ( /obj/machinery/air_sensor/engine_chamber, /obj/effect/turf_decal/stripes/white/line{ @@ -49138,7 +52971,7 @@ dir = 10 }, /obj/structure/table, -/obj/item/clothing/mask/cigarette, +/obj/item/cigarette, /obj/item/toy/toy_dagger, /obj/item/clothing/head/collectable/paper, /obj/item/toy/figure/roboticist{ @@ -49189,12 +53022,6 @@ /obj/structure/chair/office, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) -"rhD" = ( -/obj/structure/cable, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "rhH" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -49210,6 +53037,11 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) +"rhP" = ( +/obj/effect/spawner/random/trash/bucket, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "rie" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/cargo_technician, @@ -49223,24 +53055,6 @@ /obj/machinery/door/poddoor/massdriver_chapel, /turf/open/floor/plating, /area/station/service/chapel/funeral) -"rij" = ( -/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{ - dir = 1 - }, -/obj/effect/landmark/start/cook, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) -"ril" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/holopad, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "riq" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 4 @@ -49255,53 +53069,21 @@ "rir" = ( /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"riu" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"riM" = ( -/turf/open/floor/iron/textured_half{ +"riS" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, -/area/station/service/cafeteria) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/medbay/lobby) "riV" = ( /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, /area/station/cargo/drone_bay) -"riZ" = ( -/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/mining{ - name = "Drone Bay" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"rjb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair/pew{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/station/service/theater) -"rje" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "rji" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -49339,27 +53121,10 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron/dark/small, /area/station/hallway/primary/fore) -"rjz" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L11" - }, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "rjE" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"rjH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/ai/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "rjN" = ( /obj/structure/cable, /obj/structure/chair{ @@ -49367,15 +53132,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"rkb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/pew{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) "rkk" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -49385,10 +53141,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"rkF" = ( -/obj/effect/spawner/random/structure/musician/piano/random_piano, -/turf/open/floor/carpet/lone, -/area/station/service/theater) "rkI" = ( /obj/structure/disposalpipe/trunk, /obj/structure/disposaloutlet{ @@ -49399,10 +53151,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, /area/station/medical/morgue) -"rkR" = ( -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/cargo/boutique) "rkS" = ( /obj/effect/turf_decal/siding/yellow{ dir = 8 @@ -49428,17 +53176,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"rlh" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "rli" = ( /obj/machinery/door/airlock/silver{ name = "Showers" @@ -49463,25 +53200,16 @@ dir = 4 }, /obj/machinery/button/door/directional/north{ - id = "Cabin4"; - name = "Cabin Bolt Control" + id = "Cabin3"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4 }, /turf/open/floor/carpet/blue, /area/station/commons/dorms) "rlr" = ( /turf/closed/wall, /area/station/medical/storage) -"rlz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/cargo/boutique) -"rlB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood, -/area/station/cargo/boutique) "rlH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -49493,11 +53221,6 @@ /obj/machinery/air_sensor/ordnance_burn_chamber, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) -"rlN" = ( -/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/boutique) "rma" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 6 @@ -49505,6 +53228,13 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) +"rmk" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/jungle/c/style_3{ + pixel_x = -7 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "rmD" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, @@ -49515,12 +53245,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/station/engineering/engine_smes) -"rmG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/wood, -/area/station/cargo/boutique) "rmM" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/iron/edge{ @@ -49543,11 +53267,15 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) -"rnw" = ( -/obj/machinery/vending/wardrobe/bar_wardrobe, -/obj/machinery/light/small/directional/west, -/turf/open/floor/stone, -/area/station/service/bar/backroom) +"rnr" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/jungle/c/style_3{ + pixel_x = 8 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "rnD" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -49565,15 +53293,6 @@ /obj/structure/cable, /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) -"rnY" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/mail_sorting/service/library, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "rnZ" = ( /obj/structure/transport/linear/tram, /obj/effect/landmark/transport/nav_beacon/tram/nav/birdshot/maint, @@ -49610,13 +53329,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/wood/tile, /area/station/maintenance/port/lesser) -"row" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "roz" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -49638,11 +53350,6 @@ /obj/structure/chair/stool/directional/west, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"roV" = ( -/obj/machinery/vending/cigarette, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood, -/area/station/hallway/secondary/service) "roZ" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/computer/rdconsole{ @@ -49654,13 +53361,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"rpg" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "rpi" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -49668,19 +53368,49 @@ "rpk" = ( /turf/open/floor/iron/white, /area/station/science/research) +"rpo" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/kitchen/small, +/area/station/service/kitchen) "rpq" = ( /obj/machinery/camera/autoname/directional/east, /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/smooth, /area/station/security/evidence) -"rpy" = ( -/obj/structure/cable, +"rpv" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/hallway/primary/central/fore) +"rpz" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"rpB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/departments/holy/directional/north, +/obj/machinery/camera/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"rpE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/landmark/navigate_destination/chapel, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 10 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +/turf/open/floor/iron, +/area/station/hallway/primary/port) "rpV" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/maintenance, @@ -49771,21 +53501,6 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/science/robotics/augments) -"rrx" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L13" - }, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) -"rrC" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "rrG" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -49808,12 +53523,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/lawoffice) -"rrV" = ( -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ - dir = 5 +"rrX" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 }, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) +/turf/open/floor/stone, +/area/station/service/bar) "rrZ" = ( /obj/structure/closet/crate/trashcart, /obj/effect/spawner/random/trash/garbage, @@ -49884,27 +53599,23 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/security/prison/workout) +"rsJ" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "rsL" = ( /turf/closed/wall/r_wall, /area/station/maintenance/starboard/fore) -"rsQ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/landmark/navigate_destination/chapel, -/obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"rsV" = ( -/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{ - name = "Coldroom Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +"rsY" = ( +/obj/effect/turf_decal/siding/wood/end, +/turf/open/floor/stone, +/area/station/service/chapel) "rsZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -49923,11 +53634,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/small, /area/station/ai_monitored/command/storage/eva) -"rtI" = ( -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/science/xenobiology) "rtQ" = ( /turf/closed/wall/r_wall, /area/station/security/tram) @@ -49993,6 +53699,15 @@ "rvp" = ( /turf/closed/mineral/random/stationside, /area/station/maintenance/hallway/abandoned_command) +"rvr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "rvs" = ( /obj/effect/turf_decal/stripes/white/line, /obj/item/stack/sheet/mineral/titanium, @@ -50014,14 +53729,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"rvH" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/light/small/directional/east, -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "rvX" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/south{ @@ -50109,6 +53816,13 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"rxa" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/mannequin/plastic, +/turf/open/floor/carpet/blue, +/area/station/cargo/boutique) "rxo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -50182,6 +53896,12 @@ }, /turf/open/floor/iron/smooth, /area/station/hallway/secondary/command) +"rya" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "ryi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50197,22 +53917,6 @@ dir = 1 }, /area/station/science/research) -"rym" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Shrine" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"ryp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/grass, -/area/station/service/chapel) "ryt" = ( /obj/machinery/light/dim/directional/north, /obj/effect/turf_decal/tile/neutral{ @@ -50232,6 +53936,11 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) +"ryW" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "rza" = ( /obj/structure/disposalpipe/junction{ dir = 1 @@ -50252,22 +53961,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"rzu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/wood/large, -/area/station/service/chapel) -"rzG" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 4 - }, -/mob/living/simple_animal/bot/secbot/beepsky/officer, -/obj/effect/turf_decal/siding/wideplating/dark/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security) "rzJ" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -50293,24 +53986,16 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"rAb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +"rAk" = ( +/obj/machinery/door/firedoor, /obj/effect/turf_decal/siding/wood{ - dir = 9 + dir = 4 }, -/turf/open/floor/grass, -/area/station/service/chapel) -"rAn" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ +/obj/structure/cable, +/turf/open/floor/iron/textured_half{ dir = 8 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/service/hydroponics) +/area/station/service/library) "rAt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50415,19 +54100,6 @@ dir = 8 }, /area/station/commons) -"rBx" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/wardrobe/hydro_wardrobe, -/turf/open/floor/iron, -/area/station/service/hydroponics) "rBy" = ( /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, @@ -50439,6 +54111,16 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark/small, /area/station/medical/morgue) +"rBD" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/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/wood/parquet, +/area/station/service/library) "rBE" = ( /obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -50447,16 +54129,6 @@ /obj/effect/landmark/secequipment, /turf/open/floor/iron, /area/station/security/tram) -"rBG" = ( -/obj/structure/window/spawner/directional/west, -/obj/structure/flora/bush/large/style_random{ - pixel_x = -17; - pixel_y = 2 - }, -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/window/spawner/directional/east, -/turf/open/misc/sandy_dirt, -/area/station/service/hydroponics) "rBI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -50465,18 +54137,6 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"rBK" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) -"rBN" = ( -/obj/effect/landmark/start/botanist, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) "rBO" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -50486,10 +54146,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/dorms) -"rBQ" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) "rBY" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -50503,12 +54159,6 @@ dir = 1 }, /area/station/science/ordnance/testlab) -"rCd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "rCj" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/dark_red/opposingcorners, @@ -50555,13 +54205,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/station/engineering/break_room) -"rDf" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) "rDj" = ( /obj/structure/chair/sofa/bench/left{ dir = 8 @@ -50572,12 +54215,16 @@ dir = 4 }, /area/station/hallway/secondary/entry) -"rDy" = ( -/obj/structure/disposalpipe/segment, +"rDv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/cold/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/station/service/hydroponics) +/area/station/hallway/primary/central/fore) "rDD" = ( /obj/structure/railing{ dir = 1 @@ -50627,6 +54274,13 @@ "rEd" = ( /turf/open/floor/iron, /area/station/maintenance/fore/greater) +"rEF" = ( +/obj/machinery/photocopier, +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "rEH" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ dir = 4 @@ -50638,6 +54292,14 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/catwalk_floor, /area/station/engineering/atmos) +"rEJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/directional/east, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "rEY" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/pdapainter{ @@ -50743,12 +54405,6 @@ /obj/effect/turf_decal/delivery/white, /turf/open/floor/iron, /area/station/cargo/sorting) -"rFQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/bar) "rFV" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /turf/open/floor/iron/white, @@ -50769,17 +54425,16 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron, /area/station/cargo/sorting) -"rGm" = ( -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/computer/security, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = 30 +"rGc" = ( +/obj/structure/chair/stool/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/security/warden) +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "rGp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -50803,11 +54458,6 @@ /obj/effect/turf_decal/delivery/white, /turf/open/floor/iron, /area/station/cargo/sorting) -"rGt" = ( -/obj/machinery/exodrone_launcher, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/smooth, -/area/station/cargo/drone_bay) "rGB" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -50835,11 +54485,17 @@ /obj/item/screwdriver, /turf/open/floor/iron/dark, /area/station/hallway/secondary/construction) -"rHd" = ( -/obj/effect/turf_decal/tile/brown/full, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) +"rGW" = ( +/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/light{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "rHe" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -50850,15 +54506,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/engineering/main) -"rHm" = ( -/obj/effect/turf_decal/tile/brown/full, -/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"; - pixel_x = -4 - }, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "rHp" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/landmark/event_spawn, @@ -50896,22 +54543,24 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"rHL" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/delivery, -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/modular_computer/preset/cargochat/service, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) +"rHN" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "rHO" = ( /obj/structure/closet/emcloset, /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"rHQ" = ( -/obj/machinery/deepfryer, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) +"rHY" = ( +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "rIb" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/structure/closet/secure_closet/security/sec, @@ -50920,10 +54569,6 @@ /obj/structure/reagent_dispensers/wall/peppertank/directional/north, /turf/open/floor/iron, /area/station/security/lockers) -"rIg" = ( -/obj/machinery/griddle, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "rIn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -50937,45 +54582,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/herringbone, /area/station/service/abandoned_gambling_den/gaming) -"rIH" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/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/dark_red/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security) "rIJ" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/station/engineering/gravity_generator) -"rIS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "rIY" = ( /turf/closed/wall/r_wall, /area/station/construction/mining/aux_base) -"rJh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) -"rJl" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "kitchenshutters"; - name = "Kitchen Shutters" - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "rJo" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -50987,31 +54600,33 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/prison) -"rJv" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/chair/stool/bar/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "rJw" = ( /mob/living/carbon/human/species/monkey{ name = "George" }, /turf/open/floor/grass, /area/station/science/xenobiology) -"rJT" = ( -/obj/structure/chair/sofa/left/maroon, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) +"rJD" = ( +/obj/structure/window/spawner/directional/west, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/window/spawner/directional/east, +/obj/machinery/light/floor, +/turf/open/floor/grass, +/area/station/service/hydroponics) "rJW" = ( /obj/machinery/suit_storage_unit/hos, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/checker, /area/station/command/heads_quarters/hos) +"rJZ" = ( +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "rKv" = ( /obj/structure/broken_flooring/singular/directional/east, /turf/open/floor/iron, @@ -51022,16 +54637,6 @@ }, /turf/open/floor/iron, /area/station/science/cytology) -"rKL" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair/pew{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/service/theater) "rKR" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -51086,16 +54691,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"rLw" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/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/maintenance/central/greater) "rLx" = ( /obj/effect/turf_decal/siding/thinplating/terracotta, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51119,11 +54714,23 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) -"rLT" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/structure/flora/tree/jungle/small/style_random, -/turf/open/floor/grass, +"rLQ" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/stone, /area/station/service/chapel) +"rLU" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/landmark/start/assistant, +/obj/machinery/barsign{ + chosen_sign = "thecavern"; + icon_state = "thecavern"; + pixel_y = 32 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "rMb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/landmark/generic_maintenance_landmark, @@ -51192,15 +54799,13 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) -"rMM" = ( -/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/siding/wideplating_new/terracotta{ - dir = 4 +"rMN" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 }, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "rMR" = ( /obj/effect/turf_decal/siding/yellow{ dir = 10 @@ -51212,28 +54817,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/diagonal, /area/station/engineering/lobby) -"rMV" = ( -/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/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"rMY" = ( -/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/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "rNd" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -51252,16 +54835,6 @@ /obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/security) -"rNq" = ( -/obj/machinery/door/airlock/multi_tile/public/glass{ - name = "Theatre" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half, -/area/station/service/theater) -"rNA" = ( -/turf/open/floor/wood, -/area/station/service/theater) "rNB" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/catwalk_floor/iron_smooth, @@ -51279,35 +54852,20 @@ /obj/effect/spawner/random/entertainment/arcade, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"rOb" = ( -/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/maintenance/central/greater) -"rOm" = ( +"rNL" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/structure/chair/pew{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/service/theater) -"rOx" = ( -/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/displaycase/trophy, /turf/open/floor/wood/parquet, -/area/station/service/theater) -"rOy" = ( -/obj/structure/chair/plastic{ - dir = 8 - }, +/area/station/service/library) +"rNN" = ( /obj/effect/landmark/start/hangover, -/obj/machinery/light/small/directional/east, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "rOG" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -51374,6 +54932,26 @@ }, /turf/open/floor/iron/white/small, /area/station/medical/psychology) +"rPA" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) +"rPL" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/lesser) "rPT" = ( /obj/structure/chair/stool/bar/directional/east, /obj/effect/turf_decal/siding/red/corner{ @@ -51403,6 +54981,11 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron, /area/station/engineering/main) +"rPW" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) "rQi" = ( /turf/closed/wall/r_wall, /area/station/engineering/main) @@ -51410,14 +54993,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) -"rQt" = ( -/obj/effect/landmark/start/mime, -/turf/open/floor/carpet/lone, -/area/station/service/theater) -"rQw" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine, -/area/station/science/xenobiology) "rQA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -51456,14 +55031,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) -"rQN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "rQS" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -51490,11 +55057,6 @@ dir = 1 }, /area/station/security/courtroom) -"rRn" = ( -/obj/structure/lattice, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/space/basic, -/area/space/nearstation) "rRq" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/dark_red/opposingcorners, @@ -51529,14 +55091,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"rSj" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/general, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "rSt" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -51600,15 +55154,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"rTt" = ( -/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, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "rTy" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -51719,12 +55264,19 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"rUB" = ( +"rUu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + 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/large, -/area/station/hallway/secondary/spacebridge) +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "rUD" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -51757,12 +55309,6 @@ /obj/effect/spawner/random/structure/table_or_rack, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"rUS" = ( -/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/maintenance/central/greater) "rUV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51847,17 +55393,6 @@ dir = 4 }, /area/station/science/lobby) -"rWr" = ( -/obj/structure/table, -/obj/item/stock_parts/matter_bin{ - pixel_x = 6; - pixel_y = 15 - }, -/obj/item/stock_parts/matter_bin{ - pixel_y = 5 - }, -/turf/open/floor/iron/dark, -/area/station/science/lab) "rWs" = ( /obj/effect/turf_decal/siding/brown{ dir = 5 @@ -51969,12 +55504,6 @@ "rYc" = ( /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) -"rYd" = ( -/obj/structure/chair/sofa/left, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/wood, -/area/station/hallway/secondary/service) "rYm" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/chair/office/light{ @@ -51990,17 +55519,19 @@ "rYp" = ( /turf/open/floor/iron/dark/small, /area/station/tcommsat/server) +"rYs" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/structure/flora/bush/flowers_yw/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "rYt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/iron/white, /area/station/science/cytology) -"rYv" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "rYx" = ( /obj/effect/turf_decal/siding/wideplating/dark, /obj/structure/cable, @@ -52008,11 +55539,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/small, /area/station/service/barber) -"rYD" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "rYG" = ( /obj/structure/cable, /obj/machinery/door/firedoor, @@ -52028,6 +55554,12 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"rZb" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "rZc" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box/white{ @@ -52078,6 +55610,17 @@ }, /turf/open/floor/iron/dark, /area/station/service/lawoffice) +"rZz" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "rZG" = ( /obj/structure/closet/crate/trashcart, /obj/effect/spawner/random/trash/food_packaging, @@ -52087,27 +55630,31 @@ /obj/structure/alien/weeds, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) -"rZK" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "rZM" = ( /obj/structure/table/wood, /obj/item/clothing/glasses/eyepatch/medical, /turf/open/floor/carpet/orange, /area/station/commons/dorms) -"rZN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"rZP" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Study" }, -/obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) +/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, +/turf/open/floor/wood/parquet, +/area/station/service/library) +"sar" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "sas" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/carpet/blue, @@ -52124,25 +55671,23 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"say" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/half, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) +"saz" = ( +/obj/machinery/status_display/ai/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"saL" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/small/directional/west, +/turf/open/floor/wood/parquet, +/area/station/service/library) "saY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/science/robotics/augments) -"saZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "sbf" = ( /obj/structure/railing{ dir = 1 @@ -52155,11 +55700,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/engineering/atmos) -"sbm" = ( -/obj/structure/plasticflaps/opaque, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/maintenance/central/greater) "sbq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, @@ -52260,41 +55800,33 @@ /obj/machinery/light/small/broken/directional/south, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"scz" = ( +"scS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/plaque{ + icon_state = "L12"; + pixel_y = -15 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"scY" = ( +/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/maintenance{ - name = "Maintenance" - }, -/obj/effect/decal/cleanable/dirt, -/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/greater) -"scC" = ( -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo" - }, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) +/turf/open/floor/wood, +/area/station/cargo/boutique) "sdf" = ( /obj/item/kirbyplants/random/fullysynthetic, /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"sdg" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/grass, -/area/station/service/chapel) "sdF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -52302,20 +55834,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) -"sdQ" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/maintenance{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"sdT" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/half, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) "sea" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52330,18 +55848,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/smooth, /area/station/engineering/supermatter/room) -"sei" = ( -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"sel" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) "ser" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -52383,19 +55889,17 @@ }, /turf/open/floor/engine/o2, /area/station/engineering/atmos/space_catwalk) -"sfh" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/brown/full, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = 5; - pixel_y = 10 +"sfe" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 }, -/obj/item/reagent_containers/cup/rag{ - pixel_x = 7; - pixel_y = -1 +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 }, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "sfk" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/neutral, @@ -52416,6 +55920,11 @@ dir = 1 }, /area/station/science/research) +"sfu" = ( +/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "sfF" = ( /obj/machinery/door/airlock/engineering{ name = "Engineering Office" @@ -52437,29 +55946,6 @@ dir = 8 }, /area/station/engineering/main) -"sfK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"sfL" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"sfX" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "sge" = ( /obj/structure/reagent_dispensers/beerkeg, /obj/item/clothing/head/costume/festive, @@ -52513,15 +55999,6 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"sgS" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/reagentgrinder{ - pixel_x = 3; - pixel_y = 4 - }, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "sgY" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -52537,26 +56014,6 @@ /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/iron, /area/station/science/xenobiology) -"shw" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/sillycup{ - pixel_x = 7; - pixel_y = 8 - }, -/obj/item/reagent_containers/cup/glass/sillycup{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/reagent_containers/cup/glass/sillycup{ - pixel_x = 7 - }, -/obj/item/reagent_containers/cup/glass/sillycup, -/obj/item/reagent_containers/cup/glass/mug/coco{ - pixel_x = -6; - pixel_y = 9 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "shD" = ( /turf/closed/wall, /area/station/hallway/secondary/recreation) @@ -52582,38 +56039,19 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"shU" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"shR" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/cook, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) +/obj/structure/cable, +/obj/machinery/light/small/directional/north, +/turf/open/floor/grass, +/area/station/service/chapel) "sib" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron/dark, /area/station/hallway/secondary/construction) -"sih" = ( -/obj/structure/table, -/obj/item/reagent_containers/condiment/saltshaker{ - desc = "Salt. From space oceans, presumably. A staple of modern medicine."; - pixel_x = 8; - pixel_y = 7 - }, -/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/effect/spawner/random/food_or_drink/condiment{ - pixel_x = -8; - pixel_y = 3 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "sio" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible{ dir = 4 @@ -52636,26 +56074,6 @@ "sis" = ( /turf/open/floor/grass, /area/station/security/prison/garden) -"siv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair/pew/left{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"siz" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/effect/turf_decal/bot_red, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) -"siC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "siG" = ( /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ dir = 1 @@ -52667,10 +56085,11 @@ }, /turf/open/floor/iron, /area/station/maintenance/port/fore) -"siP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood, -/area/station/service/theater) +"siN" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/structure/chair/stool/bar/directional/north, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "sjl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52686,6 +56105,25 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"sju" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/navigate_destination/library, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"sjL" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "sjZ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ @@ -52726,17 +56164,19 @@ /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 }, -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron, /area/station/medical/chemistry) -"skI" = ( -/obj/structure/cable, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/wood/parquet, -/area/station/service/library) +"skN" = ( +/obj/structure/table/wood, +/obj/machinery/camera/directional/south{ + c_tag = "Atmospherics - South" + }, +/obj/item/stack/cable_coil/five, +/obj/effect/turf_decal/siding/wideplating_new/terracotta, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "skP" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -52774,15 +56214,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"skY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/pew/left{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) "slp" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52796,11 +56227,6 @@ /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, /area/station/medical/virology) -"slv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/turf/open/floor/carpet/lone, -/area/station/service/theater) "slw" = ( /turf/closed/wall, /area/station/cargo/drone_bay) @@ -52903,14 +56329,6 @@ }, /turf/open/floor/iron, /area/station/security/courtroom) -"snc" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "snj" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment{ @@ -53083,6 +56501,25 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark/small, /area/station/security/checkpoint/customs/auxiliary) +"spk" = ( +/obj/machinery/camera/directional/east, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/service/chapel) +"spo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "spx" = ( /obj/machinery/portable_atmospherics/canister/anesthetic_mix, /obj/machinery/atmospherics/components/unary/portables_connector/visible, @@ -53106,17 +56543,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs/auxiliary) -"spW" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "sqa" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -53124,17 +56550,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"sqe" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "sqg" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/closed/wall/r_wall, @@ -53289,6 +56704,18 @@ }, /turf/open/floor/wood/tile, /area/station/science/lower) +"ssu" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_br/style_3, +/obj/machinery/firealarm/directional/north, +/obj/structure/flora/bush/large/style_random{ + pixel_x = -20; + pixel_y = -16 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "ssz" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/science/xenobiology) @@ -53296,6 +56723,25 @@ /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, /turf/closed/wall/r_wall, /area/station/engineering/hallway) +"sta" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/item/trash/flare{ + pixel_x = 11; + pixel_y = 21 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/hallway/primary/central/fore) "stj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53319,6 +56765,24 @@ }, /turf/open/floor/iron/textured_half, /area/station/cargo/miningoffice) +"stM" = ( +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/landmark/start/hangover, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/landmark/start/hangover, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "stP" = ( /obj/effect/turf_decal/siding{ dir = 1 @@ -53358,6 +56822,14 @@ }, /turf/open/floor/carpet/purple, /area/station/commons/dorms) +"sue" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "sul" = ( /obj/effect/turf_decal/siding{ dir = 1 @@ -53365,19 +56837,20 @@ /obj/machinery/holopad, /turf/open/floor/iron/white/small, /area/station/science/lab) -"suq" = ( -/obj/structure/chair/plastic{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/light/small/directional/west, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "suw" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/checker, /area/station/command/heads_quarters/hos) +"suM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "svh" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -53519,14 +56992,6 @@ "swu" = ( /turf/open/floor/wood, /area/station/security/detectives_office) -"swB" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/starboard) "swF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53546,13 +57011,6 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"swL" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, -/obj/effect/turf_decal/bot_red, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "swO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53593,24 +57051,6 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"sxd" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/machinery/button/door/directional/south{ - id = "kihall"; - name = "Hallway Cutoff"; - pixel_x = -7 - }, -/obj/machinery/button/door/directional/south{ - id = "kitchenshutters"; - name = "Kitchen Shutters"; - pixel_x = 7 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "sxm" = ( /turf/closed/wall, /area/station/tcommsat/server) @@ -53631,14 +57071,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"sxw" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "sxA" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -53664,22 +57096,18 @@ dir = 8 }, /area/station/science/research) -"sxL" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/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/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "sxT" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/station/solars/aft) +"sxZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "syb" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -53725,10 +57153,6 @@ "syk" = ( /turf/closed/wall, /area/station/security/warden) -"syv" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/grass, -/area/station/service/chapel) "syx" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -53753,10 +57177,6 @@ /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/misc/sandy_dirt, /area/station/medical/medbay/lobby) -"syG" = ( -/obj/effect/spawner/xmastree, -/turf/open/floor/grass, -/area/station/service/chapel) "syN" = ( /obj/effect/spawner/random/trash, /turf/open/floor/plating, @@ -53769,82 +57189,6 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/brig) -"sze" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) -"szy" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/grass, -/area/station/service/chapel) -"szz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"szG" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/structure/chair/office{ - dir = 4 - }, -/obj/machinery/duct, -/obj/effect/landmark/start/botanist, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"szH" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/west{ - name = "Hydroponics Desk"; - req_access = list("hydroponics") - }, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/turf/open/floor/iron/textured_large, -/area/station/hallway/primary/central/fore) -"szM" = ( -/obj/machinery/computer/slot_machine{ - pixel_y = 2 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"szS" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/chem_dispenser/drinks{ - dir = 1 - }, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) -"szZ" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/brown/full, -/obj/item/reagent_containers/cup/glass/waterbottle/large{ - pixel_x = 7; - pixel_y = 17 - }, -/obj/item/reagent_containers/cup/glass/waterbottle/large{ - pixel_x = -6; - pixel_y = 15 - }, -/obj/item/reagent_containers/cup/glass/waterbottle/large{ - pixel_x = 4; - pixel_y = 10 - }, -/obj/item/reagent_containers/cup/glass/waterbottle/large{ - pixel_x = -7; - pixel_y = 8 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "sAb" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer1{ @@ -53884,28 +57228,40 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"sBf" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/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/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "sBm" = ( /obj/structure/transport/linear/tram, /obj/structure/fluff/tram_rail/floor, /obj/structure/thermoplastic/light, /turf/open/floor/tram, /area/station/maintenance/port/aft) -"sBp" = ( -/obj/structure/table, -/obj/machinery/processor{ - pixel_y = 6 +"sBJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/plaque{ + icon_state = "L4"; + pixel_y = -15 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) -"sBz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 }, -/obj/machinery/light/small/directional/south, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/grimy, -/area/station/service/theater) +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "sBL" = ( /obj/structure/sign/directions/science{ dir = 4; @@ -53969,6 +57325,14 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/dark/small, /area/station/medical/medbay/central) +"sCq" = ( +/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/dark_red/fourcorners, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "sCu" = ( /obj/machinery/computer/prisoner/management{ dir = 8 @@ -54076,13 +57440,6 @@ dir = 4 }, /area/station/science/lab) -"sDT" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "sDZ" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/trimline/neutral/line{ @@ -54128,13 +57485,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"sED" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/grimy, -/area/station/service/theater) "sES" = ( /obj/machinery/door/airlock/hatch{ name = "Creature Pen" @@ -54149,30 +57499,22 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"sFd" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "sFz" = ( /obj/structure/chair/stool/directional/east, /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"sFH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"sFJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/grimy, -/area/station/service/theater) "sGh" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/stripes/white/line{ @@ -54206,6 +57548,20 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/science/ordnance/storage) +"sGN" = ( +/obj/machinery/modular_computer/preset/cargochat/service{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/requests_console/auto_name/directional/east, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "sHe" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -54220,6 +57576,17 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"sHq" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "sHH" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/portable_atmospherics/canister/plasma, @@ -54256,12 +57623,6 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/engine, /area/station/science/cytology) -"sIh" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/service/theater) "sIj" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -54282,21 +57643,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"sIG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/directions/evac/directional/west, -/obj/structure/sign/directions/science/directional/west{ - dir = 4; - pixel_y = -8 - }, -/obj/structure/sign/directions/security/directional/west{ - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "sIO" = ( /obj/structure/grille/broken, /obj/item/shard/titanium, @@ -54320,6 +57666,17 @@ /obj/machinery/holopad, /turf/open/floor/iron/smooth_large, /area/station/science/auxlab/firing_range) +"sJv" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=1.5-PNexus-Vault"; + location = "1.0-Security-PNexus" + }, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "sJw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54328,6 +57685,12 @@ /obj/machinery/holopad, /turf/open/floor/iron/dark, /area/station/engineering/storage/tcomms) +"sJy" = ( +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "sJE" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/item/kirbyplants/random/fullysynthetic, @@ -54383,17 +57746,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"sKD" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/machinery/door/airlock/engineering{ - name = "Main Engineering" - }, -/turf/open/floor/catwalk_floor, -/area/station/engineering/break_room) "sKE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white/small, @@ -54405,14 +57757,6 @@ /obj/effect/gibspawner, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"sLc" = ( -/obj/structure/cable, -/obj/machinery/door/window/right/directional/north{ - name = "Library Desk Door"; - req_access = list("library") - }, -/turf/open/floor/wood/parquet, -/area/station/service/library) "sLu" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -54492,18 +57836,19 @@ dir = 1 }, /area/station/science/research) -"sMi" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/grass, -/area/station/service/chapel) "sMq" = ( /obj/machinery/light/warm/directional/west, /turf/open/floor/iron, /area/station/security/prison) +"sMt" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/white/side, +/area/station/hallway/primary/central/aft) "sMu" = ( /obj/structure/cable, /obj/structure/railing, @@ -54512,13 +57857,6 @@ "sMD" = ( /turf/closed/wall, /area/station/science/server) -"sMG" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "sMT" = ( /obj/structure/table, /obj/item/emergency_bed{ @@ -54581,18 +57919,6 @@ /obj/effect/spawner/random/armory/dragnet, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/security/armory) -"sNv" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance{ - name = "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/port/greater) "sNz" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -54674,16 +58000,6 @@ /obj/effect/landmark/navigate_destination, /turf/open/floor/iron/textured_half, /area/station/commons/storage/art) -"sOW" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/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/freezer, -/area/station/service/kitchen/coldroom) "sPa" = ( /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /obj/machinery/door/airlock/grunge{ @@ -54710,42 +58026,17 @@ dir = 4 }, /area/station/engineering/main) -"sPt" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) "sPx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/pile/directional/east, /turf/open/floor/plating, /area/station/hallway/secondary/dock) -"sPE" = ( -/obj/structure/closet/secure_closet/freezer/meat, -/obj/effect/turf_decal/bot_red, -/obj/machinery/light/cold/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "sPO" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"sPT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/mob/living/basic/goat/pete, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/service/kitchen/coldroom) "sQa" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -54802,12 +58093,6 @@ /obj/structure/alien/weeds, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"sQA" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/bed/maint, -/obj/structure/railing, -/turf/open/floor/stone, -/area/station/service/theater) "sQI" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/modular_computer/preset/id, @@ -54846,13 +58131,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/station/science/explab) -"sQU" = ( -/obj/machinery/vending/hydronutrients, -/obj/effect/turf_decal/delivery/white{ - color = "#52B4E9" - }, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) "sQX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54862,16 +58140,6 @@ }, /turf/open/floor/iron/white/small, /area/station/science/ordnance/storage) -"sQY" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating_new/light{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) "sRf" = ( /obj/machinery/power/turbine/inlet_compressor{ dir = 8 @@ -54890,15 +58158,6 @@ dir = 8 }, /area/station/science/lobby) -"sRv" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/west{ - name = "Hydroponics Desk"; - req_access = list("hydroponics") - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_large, -/area/station/hallway/primary/central/fore) "sRD" = ( /obj/machinery/shower/directional/west, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -54919,6 +58178,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) +"sRT" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/siding/thinplating{ + dir = 5 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "sRV" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -54939,18 +58208,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) -"sSr" = ( -/obj/machinery/door/airlock{ - name = "Kitchen" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/turf/open/floor/catwalk_floor/flat_white, -/area/station/service/kitchen) -"sSt" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/service/kitchen) "sSx" = ( /obj/structure/table, /obj/item/restraints/handcuffs/cable{ @@ -55030,9 +58287,6 @@ /obj/structure/broken_flooring/singular/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"sTp" = ( -/turf/closed/wall, -/area/station/service/cafeteria) "sTq" = ( /obj/structure/railing{ dir = 10 @@ -55103,6 +58357,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/checker, /area/station/security/breakroom) +"sUN" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_yw, +/turf/open/floor/grass, +/area/station/service/chapel) "sUV" = ( /obj/structure/table, /obj/item/folder/yellow, @@ -55129,16 +58390,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) -"sVl" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/start/botanist, -/turf/open/floor/iron, -/area/station/service/hydroponics) "sVp" = ( /obj/structure/table, /obj/structure/sign/poster/official/corporate_perks_vacation/directional/east, @@ -55174,6 +58425,26 @@ /obj/machinery/chem_master, /turf/open/floor/iron, /area/station/science/xenobiology) +"sWh" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) +"sWq" = ( +/obj/structure/chair/stool/bar/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/hallway/primary/central/aft) "sWA" = ( /obj/machinery/door/airlock/glass{ name = "Gold Standard Law Firm" @@ -55189,20 +58460,6 @@ /obj/machinery/light/broken/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"sWJ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/turf/open/floor/iron/textured_half, -/area/station/security/brig/entrance) "sWQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55213,10 +58470,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/cytology) -"sXk" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/service/theater) "sXm" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -55224,26 +58477,25 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) -"sXo" = ( -/obj/structure/sign/directions/engineering{ - dir = 1; - pixel_y = 8 - }, -/obj/structure/sign/directions/command{ - dir = 1 - }, -/obj/structure/sign/directions/supply{ - dir = 1; - pixel_y = -8 - }, -/turf/closed/wall, -/area/station/service/theater) "sXq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/thinplating_new, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) +"sXs" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "sXw" = ( /obj/machinery/telecomms/receiver/preset_left, /turf/open/floor/circuit, @@ -55254,6 +58506,19 @@ }, /turf/open/floor/iron/white, /area/station/science/cytology) +"sXD" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/library) +"sXE" = ( +/mob/living/basic/bot/firebot, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/holopad, +/turf/open/floor/iron/smooth_large, +/area/station/engineering/storage_shared) "sXG" = ( /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 4 @@ -55352,37 +58617,15 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/white/small, /area/station/medical/cryo) -"sYF" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/grass, -/area/station/service/chapel) -"sYK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/flora/bush/sunny/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) -"sZj" = ( +"sZe" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) -"sZn" = ( -/obj/structure/table, -/obj/effect/turf_decal/siding/wood{ - dir = 8 + dir = 4 }, -/obj/item/toy/windup_toolbox, -/obj/machinery/light/small/directional/north, -/obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, -/area/station/service/theater) +/area/station/maintenance/central/greater) "sZx" = ( /obj/structure/cable, /obj/structure/disposalpipe/trunk{ @@ -55416,16 +58659,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/science/robotics/lab) -"sZQ" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/full, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "tab" = ( /obj/structure/rack, /obj/item/restraints/handcuffs, @@ -55461,15 +58694,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) -"tax" = ( -/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{ - dir = 1 - }, -/obj/structure/chair/stool/bar/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "taB" = ( /turf/open/floor/iron/white, /area/station/medical/treatment_center) @@ -55535,12 +58759,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron, /area/station/science/explab) -"tbq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/hallway/secondary/service) "tbr" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/mapping_helpers/airlock/abandoned, @@ -55618,18 +58836,6 @@ }, /turf/open/floor/iron/grimy, /area/station/engineering/main) -"tcB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hydroponics/glass{ - name = "Service Breakroom" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/obj/machinery/duct, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/hallway/secondary/service) "tcC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55639,23 +58845,12 @@ /turf/open/floor/iron/dark, /area/station/security/processing) "tcP" = ( -/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/duct, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ +/obj/effect/turf_decal/weather/dirt{ dir = 1 }, -/area/station/hallway/primary/central/fore) +/obj/machinery/camera/directional/north, +/turf/open/floor/grass, +/area/station/service/chapel) "tcZ" = ( /obj/effect/turf_decal/siding/red{ dir = 6 @@ -55667,11 +58862,6 @@ }, /turf/open/floor/engine/n2, /area/station/engineering/atmos/space_catwalk) -"tdg" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "tdh" = ( /obj/structure/chair/sofa/corp/right{ dir = 4 @@ -55732,6 +58922,19 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, /area/station/maintenance/department/prison) +"tdH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/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, +/area/station/hallway/primary/central/aft) "tdI" = ( /obj/effect/turf_decal/bot_white/left, /turf/open/floor/engine, @@ -55768,6 +58971,19 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/starboard/central) +"tev" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) +"tex" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/stone, +/area/station/service/chapel) "tey" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/machinery/computer/records/security{ @@ -55808,14 +59024,6 @@ dir = 1 }, /area/station/hallway/secondary/entry) -"tfa" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/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/freezer, -/area/station/service/kitchen/coldroom) "tfc" = ( /obj/structure/reagent_dispensers/beerkeg, /obj/effect/decal/cleanable/dirt, @@ -55860,6 +59068,14 @@ /obj/item/clipboard, /turf/open/floor/iron/white/small, /area/station/science/server) +"tfM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "tfX" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/brown{ @@ -55867,6 +59083,16 @@ }, /turf/open/floor/iron/dark/side, /area/station/cargo/office) +"tgd" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/sign/poster/official/random/directional/west, +/obj/structure/destructible/cult/item_dispenser/archives/library, +/obj/item/book/codex_gigas, +/obj/machinery/light/small/dim/directional/west, +/turf/open/floor/iron/grimy, +/area/station/service/library) "tgl" = ( /turf/closed/wall, /area/station/service/greenroom) @@ -55895,6 +59121,14 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/hop) +"tgx" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "tgD" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -55910,24 +59144,6 @@ }, /turf/open/floor/iron/small, /area/station/medical/cryo) -"tgR" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/fore) -"tgS" = ( -/obj/structure/table, -/obj/item/trash/cheesie{ - pixel_x = 7; - pixel_y = 8 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "thb" = ( /obj/structure/chair/stool/directional/south, /obj/effect/turf_decal/siding/yellow{ @@ -55945,16 +59161,6 @@ dir = 1 }, /area/station/science/research) -"thv" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/window/right/directional/south{ - name = "Seed Extractor"; - req_access = list("hydroponics") - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_large, -/area/station/service/hydroponics) "thx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -56083,11 +59289,6 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/white/small, /area/station/medical/medbay/central) -"tjb" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "tjd" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, /obj/machinery/door/poddoor/preopen{ @@ -56108,6 +59309,17 @@ "tjj" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/ai_upload) +"tjs" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/spawner/random/entertainment/arcade{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/light/small/dim/directional/west, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "tjH" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -56125,15 +59337,16 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/maintenance/port/fore) -"tkp" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Services Corridor" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half{ - dir = 8 +"tkm" = ( +/obj/structure/window/spawner/directional/west, +/obj/structure/flora/bush/large/style_random{ + pixel_x = -17; + pixel_y = 2 }, -/area/station/hallway/primary/central/aft) +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/window/spawner/directional/east, +/turf/open/floor/grass, +/area/station/service/hydroponics) "tkq" = ( /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, @@ -56156,6 +59369,10 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) +"tkZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall, +/area/station/service/kitchen) "tlh" = ( /obj/effect/spawner/structure/window, /obj/structure/sign/warning/cold_temp/directional/north, @@ -56187,16 +59404,23 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) +"tlJ" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/item/kirbyplants/random, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) "tlX" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"tmc" = ( -/obj/effect/turf_decal/tile/green/diagonal_centre, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) +"tmi" = ( +/obj/structure/flora/bush/flowers_br/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "tmk" = ( /obj/machinery/power/emitter, /obj/effect/turf_decal/stripes/line{ @@ -56208,6 +59432,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"tmy" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/camera/directional/north, +/turf/open/misc/dirt/station, +/area/station/service/chapel) "tmL" = ( /obj/structure/lattice, /obj/structure/transit_tube/curved/flipped{ @@ -56243,11 +59472,6 @@ }, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) -"tmV" = ( -/obj/effect/turf_decal/tile/green/diagonal_centre, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "tnb" = ( /turf/open/floor/plating, /area/station/maintenance/central/lesser) @@ -56309,6 +59533,20 @@ /obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"tnZ" = ( +/obj/structure/bookcase/random, +/obj/structure/sign/poster/official/random/directional/west, +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) +"tob" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table/wood, +/turf/open/floor/stone, +/area/station/service/bar) "tof" = ( /turf/closed/wall/rust, /area/station/ai_monitored/turret_protected/ai) @@ -56412,13 +59650,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"toY" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "tpk" = ( /obj/machinery/vending/wardrobe/law_wardrobe, /obj/effect/turf_decal/siding/wood{ @@ -56487,11 +59718,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"tqq" = ( -/obj/effect/turf_decal/tile/green/diagonal_centre, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "tqs" = ( /obj/structure/bodycontainer/morgue{ dir = 1 @@ -56499,11 +59725,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/dark/small, /area/station/medical/morgue) -"tqz" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "tqD" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -56515,11 +59736,6 @@ /obj/structure/window/spawner/directional/north, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"tqK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "tqV" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 5 @@ -56545,22 +59761,13 @@ dir = 1 }, /area/station/hallway/secondary/dock) -"trc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) -"trl" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/smooth, -/area/station/cargo/drone_bay) +"tra" = ( +/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, +/turf/open/floor/stone, +/area/station/service/bar/backroom) "tro" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/smooth, @@ -56587,6 +59794,9 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/dark/small, /area/station/engineering/supermatter/room) +"trB" = ( +/turf/open/floor/glass, +/area/station/hallway/primary/central/aft) "trI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56629,6 +59839,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/hidden, /turf/open/floor/iron/grimy, /area/station/tcommsat/server) +"tsB" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "tsF" = ( /turf/closed/wall/r_wall, /area/station/hallway/primary/central/fore) @@ -56636,6 +59854,10 @@ /obj/machinery/electrolyzer, /turf/open/floor/catwalk_floor, /area/station/maintenance/disposal/incinerator) +"ttb" = ( +/obj/structure/flora/grass/jungle/b/style_random, +/turf/open/floor/grass, +/area/station/service/chapel) "ttg" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -56643,16 +59865,6 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) -"ttA" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/service/theater) -"ttC" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/parquet, -/area/station/service/library) "ttD" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 9 @@ -56728,6 +59940,17 @@ "tuZ" = ( /turf/closed/wall, /area/station/security/brig/entrance) +"tvq" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/turf_decal/weather/snow/corner, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "tvx" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -56767,13 +59990,16 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"twf" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/fourcorners, +"twe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/status_display/evac/directional/west, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/area/station/hallway/primary/central/fore) "twg" = ( /obj/structure/railing{ dir = 5 @@ -56787,16 +60013,12 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"twj" = ( -/obj/machinery/vending/coffee, -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"twl" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/hallway/primary/starboard) +"twm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/station/maintenance/port/greater) "two" = ( /obj/structure/table/reinforced, /obj/structure/desk_bell{ @@ -56909,6 +60131,12 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/auxiliary) +"txW" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/grille, +/turf/open/floor/plating, +/area/station/hallway/primary/central/fore) "tyh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -57039,8 +60267,12 @@ }, /turf/open/floor/iron/dark, /area/station/science/genetics) -"tzJ" = ( -/obj/structure/flora/bush/flowers_yw/style_random, +"tzN" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/structure/flora/bush/flowers_yw/style_2, +/obj/structure/flora/bush/large/style_random, /turf/open/floor/grass, /area/station/service/chapel) "tzZ" = ( @@ -57113,6 +60345,19 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/floor/catwalk_floor/iron, /area/station/maintenance/department/medical/central) +"tAF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/airlock/public/glass{ + name = "Chapel Office" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/textured_half, +/area/station/service/chapel/office) "tAH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -57143,6 +60388,12 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/iron/grimy, /area/station/tcommsat/server) +"tBk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "tBm" = ( /obj/machinery/hydroponics/soil, /turf/open/floor/grass, @@ -57191,13 +60442,6 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/iron/small, /area/station/security/office) -"tCk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel) "tCm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/red{ @@ -57291,23 +60535,24 @@ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) -"tDJ" = ( -/obj/structure/disposalpipe/segment, +"tDM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral{ - dir = 4 + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 }, /turf/open/floor/iron, -/area/station/hallway/primary/port) -"tDP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/area/station/hallway/primary/central/fore) +"tDZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) -"tDT" = ( -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new/light, +/obj/machinery/light/small/dim/directional/south, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "tEg" = ( /obj/structure/transport/linear/tram, /obj/effect/turf_decal/stripes/white/line{ @@ -57335,50 +60580,14 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/security/tram) -"tEI" = ( -/mob/living/simple_animal/hostile/retaliate/goose/vomit, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"tEL" = ( -/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/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"tET" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"tEU" = ( +"tEy" = ( +/obj/machinery/restaurant_portal/restaurant, /obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel) -"tEW" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 + dir = 10 }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"tFg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) +/area/station/service/bar) "tFs" = ( /obj/structure/table/glass, /obj/item/storage/medkit/regular{ @@ -57398,19 +60607,6 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron, /area/station/engineering/atmos) -"tFG" = ( -/obj/effect/turf_decal/tile/brown/full, -/obj/machinery/door/window/right/directional/west{ - name = "Bar Access"; - req_access = list("bar") - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "tFH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57433,21 +60629,6 @@ /obj/machinery/chem_master, /turf/open/floor/iron, /area/station/medical/chemistry) -"tFY" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"tGp" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/engine, -/area/station/science/xenobiology) "tGq" = ( /turf/closed/wall, /area/station/service/kitchen/coldroom) @@ -57498,18 +60679,6 @@ }, /turf/open/floor/iron/smooth_large, /area/station/engineering/storage_shared) -"tHh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Kitchen Cold Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/kitchen, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/flat_white, -/area/station/service/kitchen/coldroom) "tHi" = ( /obj/effect/decal/cleanable/dirt, /mob/living/carbon/human/species/monkey/punpun, @@ -57530,6 +60699,16 @@ /obj/machinery/door/firedoor, /turf/open/floor/catwalk_floor, /area/station/hallway/secondary/entry) +"tHQ" = ( +/obj/machinery/oven/range, +/obj/machinery/airalarm/directional/north, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/turf_decal/siding/end{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "tHY" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible{ @@ -57546,17 +60725,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/security/brig/entrance) -"tIc" = ( -/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/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "tIz" = ( /obj/structure/chair/wood{ dir = 8 @@ -57564,16 +60732,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"tIA" = ( -/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/airalarm/directional/south, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "tIB" = ( /obj/item/clothing/head/cone{ pixel_x = 16; @@ -57586,19 +60744,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"tII" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"tIL" = ( -/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/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "tIN" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow{ @@ -57653,16 +60798,6 @@ }, /turf/open/floor/plating, /area/station/security/brig/entrance) -"tJD" = ( -/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/light/small/directional/south, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "tJF" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/rack, @@ -57670,25 +60805,19 @@ pixel_x = -2; pixel_y = -3 }, -/obj/item/clothing/mask/cigarette/cigar, +/obj/item/cigarette/cigar, /obj/effect/mapping_helpers/broken_floor, /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/smooth, /area/station/command/bridge) -"tJG" = ( -/obj/structure/disposalpipe/segment{ +"tJM" = ( +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "kihall" - }, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) +/turf/open/floor/iron/grimy, +/area/station/service/library) "tJX" = ( /turf/open/floor/plating, /area/station/maintenance/aft) @@ -57704,25 +60833,12 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"tKm" = ( -/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/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) -"tKC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"tKl" = ( +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, +/turf/open/floor/iron, /area/station/hallway/primary/central/aft) "tKG" = ( /obj/effect/turf_decal/stripes/line, @@ -57787,29 +60903,6 @@ dir = 1 }, /area/station/command/bridge) -"tMi" = ( -/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/door/airlock/public/glass{ - name = "Services Corridor" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/hallway/primary/central/aft) -"tMj" = ( -/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/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "tMm" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -57828,17 +60921,6 @@ }, /turf/open/floor/circuit, /area/station/tcommsat/server) -"tMy" = ( -/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/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "tMJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -57846,17 +60928,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"tMR" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "tMS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57867,9 +60938,30 @@ /obj/machinery/light/cold/directional/east, /turf/open/floor/iron, /area/station/security/execution/transfer) -"tNc" = ( -/turf/open/floor/wood/parquet, -/area/station/service/theater) +"tNf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) +"tNl" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L1"; + pixel_y = -15 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "tNn" = ( /obj/structure/cable, /obj/machinery/door/airlock{ @@ -57955,21 +61047,6 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark/side, /area/station/science/xenobiology) -"tNS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/rack, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "vaco"; - name = "Comissary Shutters" - }, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) "tNT" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/kitchen/small, @@ -57991,6 +61068,10 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"tOd" = ( +/obj/structure/flora/bush/jungle/a/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "tOg" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -58030,14 +61111,6 @@ /obj/machinery/light/small/directional/west, /turf/open/misc/sandy_dirt, /area/station/service/lawoffice) -"tOS" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/stone, -/area/station/service/bar/backroom) "tOZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light/cold/directional/north, @@ -58058,14 +61131,6 @@ }, /turf/open/floor/wood, /area/station/cargo/miningfoundry) -"tPd" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "tPf" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, @@ -58094,6 +61159,16 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/wood, /area/station/commons/fitness/recreation) +"tPM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "tPP" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58195,20 +61270,14 @@ /obj/effect/turf_decal/tile/dark_red/fourcorners, /turf/open/floor/iron, /area/station/security/tram) +"tRJ" = ( +/obj/effect/turf_decal/siding/thinplating_new/light, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "tRR" = ( /obj/structure/chair/stool/directional/east, /turf/open/floor/iron/smooth, /area/station/maintenance/department/medical/central) -"tSe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "tSg" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/machinery/light_switch/directional/east, @@ -58218,10 +61287,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"tSh" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/station/hallway/secondary/service) "tSi" = ( /obj/machinery/light/cold/directional/west, /obj/machinery/disposal/bin, @@ -58257,6 +61322,14 @@ /obj/machinery/light/small/broken/directional/west, /turf/open/floor/eighties, /area/station/service/abandoned_gambling_den/gaming) +"tSA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/sign/departments/cargo/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "tSB" = ( /obj/structure/cable, /obj/structure/table/reinforced, @@ -58295,6 +61368,12 @@ /obj/item/storage/fancy/donut_box, /turf/open/floor/iron/checker, /area/station/security/breakroom) +"tTh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/holopad, +/obj/structure/cable, +/turf/open/floor/stone, +/area/station/service/bar) "tTp" = ( /obj/structure/cable, /obj/effect/turf_decal/caution/stand_clear/red{ @@ -58308,15 +61387,6 @@ }, /turf/open/floor/iron/white, /area/station/science/cytology) -"tTs" = ( -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "tTx" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -58331,15 +61401,6 @@ /obj/machinery/light/very_dim/directional/east, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room/office) -"tTG" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel) "tTK" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -58427,12 +61488,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) -"tUD" = ( -/obj/machinery/transport/tram_controller/tcomms{ - configured_transport_id = "bird_1" - }, -/turf/open/floor/circuit, -/area/station/tcommsat/server) "tUH" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -58447,26 +61502,6 @@ }, /turf/open/floor/circuit, /area/station/tcommsat/server) -"tUK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/item/storage/box{ - pixel_x = -8; - pixel_y = 15 - }, -/obj/item/trash/flare{ - pixel_x = 11; - pixel_y = 21 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/primary/central/fore) "tUZ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -58510,6 +61545,11 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"tWm" = ( +/obj/structure/flora/bush/jungle/c/style_3, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/station/service/chapel) "tWo" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -58538,19 +61578,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"tWE" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "tWG" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -58559,15 +61586,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) -"tWL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/primary/central/fore) "tWQ" = ( /obj/machinery/door/airlock/public/glass{ name = "Departure Lounge" @@ -58581,6 +61599,13 @@ /obj/structure/table/bronze, /turf/open/floor/wood/tile, /area/station/maintenance/port/lesser) +"tXy" = ( +/obj/structure/flora/tree/jungle/small/style_3, +/obj/effect/turf_decal/weather/dirt, +/obj/machinery/light/small/directional/south, +/obj/machinery/status_display/ai/directional/south, +/turf/open/floor/grass, +/area/station/service/chapel) "tXG" = ( /obj/structure/chair{ dir = 8 @@ -58612,44 +61637,27 @@ /obj/item/clothing/suit/hooded/wintercoat/engineering, /turf/open/floor/catwalk_floor, /area/station/engineering/supermatter/room) -"tXT" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +"tYg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/wood/tile, +/area/station/service/bar) +"tYj" = ( +/obj/item/exodrone, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) +"tYl" = ( /obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 + dir = 8 }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"tYb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/trimline/neutral/line, /obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 + dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"tYd" = ( /obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2.0-Vault-SNexus"; - location = "1.5-PNexus-Vault" - }, /turf/open/floor/iron, -/area/station/hallway/primary/port) -"tYj" = ( -/obj/item/exodrone, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/smooth, -/area/station/cargo/drone_bay) +/area/station/hallway/primary/fore) "tYn" = ( /obj/structure/lattice/catwalk, /obj/structure/railing/corner{ @@ -58679,11 +61687,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/small, /area/station/engineering/atmos/storage/gas) -"tYH" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "tYL" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -58701,19 +61704,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/dock) -"tYQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/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/dark/side{ - dir = 1 - }, -/area/station/hallway/primary/central/fore) "tYT" = ( /turf/open/misc/asteroid/airless, /area/space/nearstation) @@ -58721,21 +61711,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/hallway/primary/central/aft) -"tZd" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "tZi" = ( /obj/structure/sign/poster/contraband/got_wood/directional/north, /turf/open/floor/light/colour_cycle/dancefloor_b, @@ -58777,15 +61752,6 @@ }, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"tZG" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3.0-StarboardHall-TechStorage"; - location = "2.5-SNexus-StarboardHall" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "tZI" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58808,35 +61774,6 @@ /obj/machinery/light/cold/dim/directional/east, /turf/open/floor/iron, /area/station/engineering/main) -"tZR" = ( -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) -"tZU" = ( -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) -"tZV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/end{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"uaa" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/grass, -/area/station/service/chapel) "uab" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58857,13 +61794,6 @@ }, /turf/open/floor/plating, /area/station/engineering/atmospherics_engine) -"uao" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/structure/flora/tree/stump, -/turf/open/floor/grass, -/area/station/service/chapel) "uax" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58873,13 +61803,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs) -"uaE" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/flora/tree/jungle/small/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "uaF" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -58940,15 +61863,19 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/dark, /area/station/medical/medbay/lobby) -"ubf" = ( -/obj/effect/landmark/start/assistant, +"ubd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/structure/cable, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/area/station/hallway/primary/central/fore) "ubh" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -58980,11 +61907,6 @@ "uby" = ( /turf/closed/wall, /area/station/security/prison/garden) -"ubB" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/grass, -/area/station/service/hydroponics) "ubK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -59024,23 +61946,6 @@ }, /turf/open/floor/engine, /area/station/science/explab) -"ucr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) -"ucw" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "ucy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/red{ @@ -59055,19 +61960,6 @@ /obj/structure/chair/wood, /turf/open/floor/iron/small, /area/station/service/barber) -"ucH" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "ucJ" = ( /obj/machinery/door/window/left/directional/south{ req_access = list("chapel_office") @@ -59085,13 +61977,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) -"ucV" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/wood/tile, -/area/station/service/bar) "ucY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59112,12 +61997,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"udt" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "udv" = ( /obj/machinery/telecomms/receiver/preset_right, /turf/open/floor/circuit, @@ -59182,9 +62061,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron, /area/station/engineering/atmos/space_catwalk) -"uej" = ( -/turf/closed/wall, -/area/station/hallway/secondary/service) "uek" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -59202,6 +62078,30 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"uep" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "uer" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -59244,6 +62144,19 @@ }, /turf/open/floor/iron/textured_large, /area/station/command/heads_quarters/hop) +"ueP" = ( +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + 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/iron, +/area/station/hallway/primary/port) "ueX" = ( /turf/closed/wall/rust, /area/station/maintenance/port/fore) @@ -59264,6 +62177,23 @@ "ufn" = ( /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"uft" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/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, +/area/station/hallway/primary/central/aft) "ufE" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59298,6 +62228,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/engineering/supermatter/room) +"ugb" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/textured_half, +/area/station/security/brig/entrance) "uge" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -59367,6 +62309,10 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) +"ugI" = ( +/obj/structure/flora/tree/jungle/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "ugJ" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -59452,6 +62398,19 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/smooth, /area/station/command/gateway) +"uhK" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/chapel) +"uhM" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/white, +/area/station/hallway/primary/central/aft) "uhT" = ( /turf/open/floor/iron, /area/station/maintenance/aft) @@ -59494,12 +62453,12 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) -"uio" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 +"uiw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/iron/grimy, -/area/station/service/theater) +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "uiz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59522,14 +62481,6 @@ dir = 1 }, /area/station/science/research) -"uiW" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "uiY" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -59556,6 +62507,17 @@ "ujA" = ( /turf/closed/wall/r_wall, /area/station/security/warden) +"ujB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "ujE" = ( /obj/item/kirbyplants/random/fullysynthetic, /obj/effect/turf_decal/tile/dark_red/opposingcorners, @@ -59746,11 +62708,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"umM" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/lesser) "unc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59766,15 +62723,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs/auxiliary) -"uny" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "unG" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -59786,15 +62734,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"unM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Departure Lounge" - }, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/departure_lounge) "unT" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -59815,6 +62754,17 @@ "uoB" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/captain/private) +"uoE" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/obj/machinery/vending/wardrobe/hydro_wardrobe, +/obj/effect/turf_decal/delivery/white{ + color = "#52B4E9" + }, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) "uoH" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -59831,24 +62781,12 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"uoM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"uoW" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +"uoR" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +/turf/open/floor/grass, +/area/station/service/chapel) "upe" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -59875,20 +62813,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/primary/port) -"upj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/ammo_casing/spent{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/ammo_casing/spent, -/obj/item/ammo_casing/spent{ - pixel_x = 4; - pixel_y = -2 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "upr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59957,6 +62881,10 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"uqq" = ( +/obj/structure/table, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central/lesser) "uqw" = ( /turf/closed/wall/r_wall, /area/station/commons/fitness/recreation) @@ -59982,6 +62910,13 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) +"uqF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "uqG" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{ dir = 4 @@ -60053,11 +62988,6 @@ dir = 8 }, /area/station/engineering/main) -"urh" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "urk" = ( /obj/structure/disposalpipe/junction{ dir = 1 @@ -60094,6 +63024,14 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) +"urq" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "uru" = ( /obj/machinery/door/airlock/maintenance{ name = "Maintenance" @@ -60128,6 +63066,15 @@ /obj/machinery/light/cold/dim/directional/west, /turf/open/floor/iron/grimy, /area/station/engineering/main) +"urF" = ( +/obj/machinery/computer/cargo{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/vault/directional/south, +/obj/machinery/camera/autoname/directional/south, +/obj/machinery/light/small/directional/south, +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) "urK" = ( /obj/machinery/light/warm/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -60141,6 +63088,16 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/security/execution/transfer) +"urP" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Library" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/iron/textured_half, +/area/station/service/library) "urQ" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -60158,11 +63115,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/command/heads_quarters/qm) -"usl" = ( -/obj/machinery/status_display/evac/directional/south, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "usF" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/easel, @@ -60197,12 +63149,13 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"uth" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L2" +"utj" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 }, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) +/obj/structure/cable, +/turf/open/floor/stone, +/area/station/service/bar) "utm" = ( /turf/closed/wall/r_wall, /area/station/science/auxlab/firing_range) @@ -60218,14 +63171,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/engineering/atmos/space_catwalk) -"uty" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/machinery/light/small/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel) "utD" = ( /obj/machinery/light_switch/directional/west, /obj/effect/turf_decal/stripes/corner{ @@ -60278,6 +63223,21 @@ /obj/effect/landmark/navigate_destination/dockescpod, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"utU" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/item/book/manual/wiki/barman_recipes{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/firealarm/directional/east, +/obj/item/gun/ballistic/shotgun/doublebarrel, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/stone, +/area/station/service/bar/backroom) "uub" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -60292,12 +63252,16 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/dark/small, /area/station/engineering/supermatter/room) -"uuv" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L4" +"uuz" = ( +/obj/structure/rack, +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 }, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) +/obj/item/clothing/mask/gas, +/obj/machinery/airalarm/directional/west, +/obj/machinery/camera/directional/west, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "uuN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60324,6 +63288,10 @@ }, /turf/open/floor/iron/white/small, /area/station/medical/storage) +"uvb" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/station/cargo/boutique) "uvf" = ( /obj/structure/cable, /obj/machinery/button/door/directional/south{ @@ -60333,20 +63301,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"uvh" = ( -/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/vault{ - name = "Vault" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/all/supply/vault, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/ai_monitored/command/nuke_storage) "uvo" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -60381,28 +63335,49 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/smooth, /area/station/engineering/supermatter/room) -"uwl" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L6" +"uvG" = ( +/obj/effect/turf_decal/tile/neutral/opposingcorners, +/obj/effect/spawner/random/entertainment/arcade, +/turf/open/floor/iron, +/area/station/holodeck/rec_center) +"uvQ" = ( +/obj/effect/landmark/start/assistant, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 4 }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2.5-SNexus-StarboardHall"; - location = "2.0-Vault-SNexus" +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) -"uwx" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L10" +/obj/effect/landmark/start/assistant, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, +/obj/effect/landmark/start/assistant, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + 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, -/area/station/hallway/secondary/spacebridge) +/area/station/hallway/primary/central/aft) "uwB" = ( /obj/effect/turf_decal/tile/dark_red/half/contrasted{ dir = 4 @@ -60419,16 +63394,6 @@ /obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"uwU" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/turf_decal/bot, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) "uxd" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60438,12 +63403,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/port/fore) -"uxi" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L12" - }, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "uxJ" = ( /obj/machinery/smartfridge/chemistry/preloaded, /obj/machinery/door/firedoor, @@ -60464,21 +63423,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/storage/tech) -"uye" = ( -/obj/machinery/door/window/right/directional/south, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"uyg" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L14" - }, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) -"uyp" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "uyA" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, @@ -60507,22 +63451,13 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"uzd" = ( -/obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/machinery/reagentgrinder{ - pixel_y = 5 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ +"uzg" = ( +/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ dir = 4 }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/engine, +/area/station/science/xenobiology) "uzj" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -60570,51 +63505,19 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"uAb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/sign/directions/vault/directional/south{ - dir = 8 - }, -/turf/open/floor/iron/white/corner, -/area/station/hallway/primary/starboard) "uAi" = ( /obj/structure/table/wood, /turf/open/floor/carpet/lone, /area/station/service/chapel/office) -"uAo" = ( -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"uAw" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, +"uAk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/hallway/primary/starboard) -"uAF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/wood/tile, -/area/station/service/bar) -"uAH" = ( -/obj/structure/bed/medical{ +/obj/effect/turf_decal/tile/neutral, +/obj/structure/sign/departments/holy/directional/south, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/bedsheet/medical, -/turf/open/floor/iron/white, -/area/station/maintenance/central/greater) +/turf/open/floor/iron, +/area/station/hallway/primary/port) "uAK" = ( /obj/machinery/computer/security, /obj/effect/turf_decal/siding/red{ @@ -60629,18 +63532,6 @@ }, /turf/closed/wall/mineral/titanium/nodiagonal, /area/station/engineering/supermatter) -"uAV" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) -"uAX" = ( -/obj/structure/chair/stool/bar/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/bar) "uAY" = ( /turf/open/floor/plating, /area/station/maintenance/department/bridge) @@ -60665,18 +63556,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) -"uBn" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/brown/full, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/plate, -/obj/item/food/cheesynachos{ - pixel_y = 2 - }, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "uBo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -60702,6 +63581,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/stairs, /area/station/engineering/storage/tech) +"uBI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "uBM" = ( /obj/machinery/door/poddoor/preopen{ id = "Engineering"; @@ -60719,6 +63612,14 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/captain/private) +"uBR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "uBY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/side, @@ -60752,29 +63653,11 @@ /obj/item/mop, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"uCh" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/full, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "uCp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white/side, /area/station/hallway/primary/starboard) -"uCv" = ( -/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{ - dir = 1 - }, -/obj/effect/spawner/xmastree, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "uCE" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 5 @@ -60791,16 +63674,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/plating, /area/station/engineering/atmos/storage/gas) -"uCJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair/pew/right{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/service/theater) "uCL" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -60811,11 +63684,14 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/engineering/supermatter/room) -"uCS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/turf/open/floor/wood/parquet, -/area/station/service/theater) +"uCQ" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "uDg" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -60853,6 +63729,10 @@ "uDE" = ( /obj/structure/window/spawner/directional/north, /obj/structure/flora/bush/flowers_yw/style_random, +/obj/machinery/door/airlock{ + id_tag = "Toilet1"; + name = "Unit 1" + }, /turf/open/misc/sandy_dirt, /area/station/commons/fitness/locker_room) "uDF" = ( @@ -60886,10 +63766,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"uEg" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/lone, -/area/station/service/theater) "uEh" = ( /obj/structure/table/glass, /obj/effect/turf_decal/siding/wood, @@ -61019,16 +63895,6 @@ dir = 1 }, /area/station/hallway/primary/starboard) -"uFG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "uFQ" = ( /obj/structure/closet/crate/coffin, /obj/structure/window/spawner/directional/south, @@ -61053,11 +63919,6 @@ /obj/effect/mapping_helpers/requests_console/ore_update, /turf/open/floor/iron/white, /area/station/medical/virology) -"uGp" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/sign/warning/no_smoking/circle/directional/north, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "uGy" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/grimy, @@ -61260,14 +64121,6 @@ /obj/structure/flora/bush/fullgrass/style_random, /turf/open/floor/grass, /area/station/medical/treatment_center) -"uIt" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "uIv" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -61283,17 +64136,31 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"uIA" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 9 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) +"uIP" = ( +/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, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "uIT" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) -"uIW" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "uIX" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/modular_computer/preset/civilian{ @@ -61306,6 +64173,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold/green/visible, /turf/open/floor/iron/smooth, /area/station/engineering/supermatter/room) +"uJi" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/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) "uJq" = ( /obj/effect/spawner/random/structure/crate_abandoned, /turf/open/floor/plating, @@ -61416,18 +64292,17 @@ "uLj" = ( /turf/closed/wall, /area/station/commons/toilet/auxiliary) -"uLn" = ( +"uLD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/duct, +/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, -/area/station/hallway/secondary/spacebridge) -"uLu" = ( -/obj/machinery/status_display/ai/directional/south, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "uLO" = ( /obj/item/stack/sheet/cardboard{ amount = 14 @@ -61481,12 +64356,6 @@ /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/tram) -"uMC" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/hallway/secondary/spacebridge) "uME" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/greyscale, @@ -61501,15 +64370,6 @@ "uMH" = ( /turf/open/floor/iron/white/side, /area/station/science/research) -"uMI" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance{ - name = "Security Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/plating, -/area/station/maintenance/port/lesser) "uMN" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/hedge, @@ -61541,14 +64401,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"uMW" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) -"uMX" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "uNa" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -61572,10 +64424,6 @@ /obj/machinery/shower/directional/east, /turf/open/floor/iron/dark/small, /area/station/engineering/break_room) -"uNn" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "uNz" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/dark_red{ @@ -61597,10 +64445,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) -"uNW" = ( -/obj/machinery/barsign, -/turf/closed/wall, -/area/station/service/bar) "uNX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61613,14 +64457,23 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/primary/aft) -"uOh" = ( -/obj/structure/chair{ - dir = 1; - pixel_y = -2 +"uOf" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "uOk" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/window/spawner/directional/south, @@ -61631,6 +64484,12 @@ "uOw" = ( /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"uOx" = ( +/obj/effect/turf_decal/siding/wideplating_new/terracotta{ + dir = 5 + }, +/turf/open/floor/wood/tile, +/area/station/maintenance/central/lesser) "uOH" = ( /obj/item/kirbyplants/random, /obj/machinery/light_switch/directional/west, @@ -61648,14 +64507,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/wood/tile, /area/station/command/meeting_room) -"uPd" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "uPf" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, @@ -61665,13 +64516,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/security/prison/workout) -"uPs" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "uPw" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -61703,10 +64547,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall, /area/station/engineering/supermatter/room) -"uPO" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) +"uPW" = ( +/obj/structure/flora/bush/flowers_pp/style_2, +/obj/structure/flora/bush/large/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "uPX" = ( /obj/structure/railing{ dir = 8 @@ -61749,20 +64594,20 @@ }, /turf/open/floor/iron/dark/small, /area/station/security/brig) -"uQC" = ( -/obj/item/kirbyplants/random, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "uQG" = ( /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"uQR" = ( -/obj/machinery/exodrone_launcher, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/smooth, -/area/station/cargo/drone_bay) +"uQK" = ( +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "uRe" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/effect/turf_decal/tile/red{ @@ -61827,14 +64672,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/small, /area/station/security/execution/education) -"uRX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/flora/tree/jungle/small/style_random, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "uRY" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/decal/cleanable/dirt/dust, @@ -61843,6 +64680,22 @@ "uSa" = ( /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) +"uSc" = ( +/obj/structure/cable, +/obj/effect/spawner/random/structure/steam_vent, +/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/plating, +/area/station/maintenance/central/greater) +"uSh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "uSi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61878,14 +64731,19 @@ /obj/effect/landmark/navigate_destination/tcomms, /turf/open/floor/iron, /area/station/science/lower) -"uSC" = ( -/obj/effect/landmark/start/assistant, -/obj/effect/landmark/start/assistant, -/obj/structure/chair/sofa/bamboo/left{ +"uSF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 1 }, -/turf/open/floor/wood/large, -/area/station/service/chapel) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "uSG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61897,12 +64755,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/wood, /area/station/cargo/boutique) -"uSM" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "uSN" = ( /obj/effect/spawner/random/vending/snackvend, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -61924,9 +64776,33 @@ /obj/structure/table/glass, /turf/open/floor/iron/dark, /area/station/service/lawoffice) +"uTz" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "uTA" = ( /turf/closed/wall, /area/station/ai_monitored/turret_protected/ai) +"uTC" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 5 + }, +/turf/open/floor/iron/white/small, +/area/station/service/hydroponics) +"uTE" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/wood/parquet, +/area/station/service/library) "uTK" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -61996,81 +64872,17 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"uUE" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "uUG" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 }, /turf/open/floor/iron/small, /area/station/engineering/supermatter/room) -"uUI" = ( -/obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/item/reagent_containers/cup/watering_can{ - pixel_x = 7; - pixel_y = 13 - }, -/obj/item/reagent_containers/cup/bottle/mutagen{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/reagent_containers/syringe{ - pixel_x = -3; - pixel_y = -1 - }, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 6; - pixel_y = 1 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"uVb" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/wood, -/area/station/cargo/boutique) -"uVo" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "uVD" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/secondary/construction) -"uVE" = ( -/obj/structure/table, -/obj/item/storage/bag/tray{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/food/cake/apple, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "uVO" = ( /obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/broken_floor, @@ -62137,16 +64949,6 @@ dir = 1 }, /area/station/security/prison/safe) -"uWB" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) "uWG" = ( /obj/structure/closet/firecloset, /obj/machinery/status_display/ai/directional/south, @@ -62166,9 +64968,6 @@ /obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"uXb" = ( -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "uXs" = ( /obj/structure/window/spawner/directional/east, /obj/structure/window/spawner/directional/west, @@ -62177,17 +64976,6 @@ /obj/structure/flora/bush/fullgrass/style_random, /turf/open/floor/grass, /area/station/medical/treatment_center) -"uXw" = ( -/obj/structure/table, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) -"uXB" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "uXC" = ( /turf/closed/wall, /area/station/science/lower) @@ -62198,10 +64986,6 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos) -"uXN" = ( -/obj/structure/altar_of_gods, -/turf/open/floor/wood/large, -/area/station/service/chapel) "uXS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/holopad, @@ -62270,18 +65054,6 @@ /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/small, /area/station/commons/fitness/locker_room) -"uZb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wideplating/dark/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "uZc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, @@ -62312,18 +65084,39 @@ dir = 1 }, /area/station/science/lower) +"uZH" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/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/plating, +/area/station/maintenance/central/greater) "uZK" = ( /obj/structure/reagent_dispensers/plumbed{ dir = 1 }, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"uZY" = ( -/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/service/library) +"uZN" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/obj/machinery/light/floor, +/turf/open/floor/stone, +/area/station/service/bar) "vaf" = ( /obj/item/kirbyplants/random/fullysynthetic, /obj/machinery/status_display/ai/directional/south, @@ -62339,6 +65132,14 @@ /obj/structure/window/spawner/directional/west, /turf/open/misc/sandy_dirt, /area/station/commons/fitness/recreation/entertainment) +"van" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "vav" = ( /obj/structure/lattice, /obj/structure/railing, @@ -62378,6 +65179,19 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) +"vbw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/assistant, +/obj/structure/cable, +/turf/open/floor/wood/tile, +/area/station/service/bar) "vbA" = ( /obj/structure/sign/departments/science/alt/directional/east, /obj/machinery/camera/autoname/directional/east, @@ -62458,14 +65272,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) -"vcP" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "vcR" = ( /turf/open/floor/iron/stairs/medium{ dir = 1 @@ -62584,6 +65390,13 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"vdL" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "vdS" = ( /obj/structure/closet/firecloset, /obj/item/clothing/glasses/meson, @@ -62608,6 +65421,16 @@ }, /turf/open/floor/iron, /area/station/medical/chemistry) +"vea" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/departments/botany/alt1/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "veg" = ( /obj/effect/turf_decal/siding{ dir = 6 @@ -62666,6 +65489,20 @@ }, /turf/open/floor/iron/dark, /area/station/security/processing) +"veS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "vfc" = ( /obj/structure/table, /obj/item/flashlight/lamp, @@ -62741,13 +65578,18 @@ /obj/item/toy/crayon/purple, /turf/open/floor/iron/white, /area/station/science/research) -"vgc" = ( -/obj/structure/chair/sofa/right/maroon{ +"vgh" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 2 + }, +/turf/open/floor/iron/white/corner{ dir = 1 }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) +/area/station/hallway/secondary/exit/departure_lounge) "vgp" = ( /obj/machinery/door/airlock/maintenance{ name = "Atmospherics Maintenance" @@ -62784,19 +65626,6 @@ /obj/effect/mapping_helpers/airlock/access/any/science/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"vgJ" = ( -/obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/directional/north, -/obj/item/pen{ - pixel_x = 11 - }, -/obj/item/paper_bin{ - pixel_x = -7; - pixel_y = 6 - }, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) "vgN" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/opposingcorners, @@ -62817,6 +65646,15 @@ /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/iron/smooth, /area/station/cargo/office) +"vhr" = ( +/obj/structure/sink/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/service/chapel/storage) "vht" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/machinery/holopad, @@ -62945,16 +65783,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"vjc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/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/commons/fitness/recreation/entertainment) "vjp" = ( /obj/structure/cable, /obj/effect/turf_decal/sand/plating, @@ -63026,10 +65854,13 @@ }, /turf/open/floor/iron, /area/station/science/research) -"vkz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/large, -/area/station/service/chapel) +"vkC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "vkD" = ( /obj/structure/table, /obj/item/stack/ore/gold{ @@ -63041,12 +65872,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"vkG" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/grass, -/area/station/service/chapel) "vkJ" = ( /obj/item/book/manual/wiki/security_space_law{ pixel_x = 9; @@ -63140,6 +65965,18 @@ /obj/effect/decal/cleanable/molten_object, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"vlR" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/service) "vlV" = ( /turf/closed/wall, /area/station/maintenance/aft) @@ -63158,6 +65995,19 @@ /obj/item/radio/intercom/chapel/directional/west, /turf/open/floor/iron/terracotta/diagonal, /area/station/service/chapel/office) +"vmb" = ( +/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, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/stone, +/area/station/service/bar) "vmh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -63190,19 +66040,22 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/genetics) +"vmr" = ( +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "vmt" = ( /obj/structure/chair/stool/bamboo{ dir = 4 }, /turf/open/floor/iron/terracotta/diagonal, /area/station/service/chapel/office) -"vmz" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "vmB" = ( /obj/item/radio/intercom/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -63245,11 +66098,12 @@ /turf/open/floor/wood, /area/station/service/chapel/office) "vnb" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/hallway/secondary/spacebridge) +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "vne" = ( /turf/open/floor/wood, /area/station/service/chapel/office) @@ -63287,13 +66141,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) -"vnn" = ( -/obj/structure/disposalpipe/segment, -/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/wood, -/area/station/service/chapel/office) "vnp" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 9 @@ -63355,6 +66202,19 @@ }, /turf/open/floor/iron/smooth, /area/station/security/evidence) +"vnD" = ( +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/sorting/mail{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/security/general, +/turf/open/floor/iron, +/area/station/security) "vnF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -63365,16 +66225,6 @@ "vnI" = ( /turf/closed/mineral/random/stationside, /area/station/maintenance/department/engine) -"vnK" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/obj/structure/cable, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "vnN" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -63386,15 +66236,6 @@ /obj/machinery/medical_kiosk, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"voa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/morgue{ - name = "Secret Corridor"; - req_access = list("library") - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/service/library) "voe" = ( /obj/structure/chair/sofa/bench/right{ dir = 1 @@ -63423,13 +66264,6 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/smooth, /area/station/commons/storage/tools) -"voF" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks, -/obj/machinery/light/cold/directional/north, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "voJ" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/dark_red/half/contrasted{ @@ -63442,10 +66276,10 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron, /area/station/security) -"voL" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) +"voN" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall/r_wall, +/area/station/command/teleporter) "voO" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -63460,6 +66294,15 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/catwalk_floor/iron_dark, /area/station/cargo/office) +"vpg" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "vpk" = ( /obj/structure/cable, /turf/open/floor/iron/smooth, @@ -63493,10 +66336,6 @@ /obj/machinery/smartfridge/petri/preloaded, /turf/open/floor/iron/white, /area/station/science/cytology) -"vpN" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor/iron, -/area/station/service/bar) "vpP" = ( /obj/effect/spawner/random/structure/closet_private, /obj/machinery/light/small/directional/south, @@ -63527,19 +66366,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/primary/central/fore) -"vpU" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/brown/full, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/food/lizard_fries, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) -"vpY" = ( -/obj/effect/turf_decal/tile/neutral/full, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "vpZ" = ( /obj/effect/turf_decal/siding/yellow{ dir = 8 @@ -63564,14 +66390,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"vqp" = ( -/turf/open/floor/carpet/lone, -/area/station/service/theater) "vqw" = ( /obj/effect/decal/cleanable/glass/titanium, /obj/item/stack/rods/two, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"vqF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "vqH" = ( /obj/structure/railing{ dir = 8 @@ -63622,22 +66451,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"vrt" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = 30 - }, -/obj/machinery/computer/records/security, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"vrv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/carpet/lone, -/area/station/service/theater) "vrz" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -63654,19 +66467,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) -"vrH" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "vrK" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -63685,6 +66485,14 @@ dir = 1 }, /area/station/security/courtroom) +"vrS" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_red/half/contrasted, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "vrT" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -63709,21 +66517,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) +"vsd" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/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/hallway/primary/central/aft) "vsi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /turf/open/floor/wood, /area/station/commons/fitness/recreation) -"vsl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "vso" = ( /obj/effect/landmark/start/scientist, /obj/structure/chair{ @@ -63733,20 +66541,16 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/white, /area/station/science/research) -"vsq" = ( -/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, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/stone, -/area/station/service/theater) "vsx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"vsy" = ( +/obj/structure/flora/bush/flowers_pp/style_2, +/turf/open/floor/grass, +/area/station/service/chapel) "vsQ" = ( /obj/machinery/light_switch/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -63765,25 +66569,10 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"vtc" = ( -/obj/structure/disposalpipe/segment, -/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/security/glass{ - id_tag = "outerbrig"; - name = "Brig" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/turf/open/floor/iron/textured_half, -/area/station/security/brig/entrance) -"vtv" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/primary/port) +"vtr" = ( +/obj/machinery/light/floor, +/turf/open/floor/wood/parquet, +/area/station/service/library) "vtw" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/cable, @@ -63823,6 +66612,11 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/maintenance/fore/greater) +"vtX" = ( +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "vuj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/item/fuel_pellet, @@ -63844,9 +66638,6 @@ }, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/aft) -"vuo" = ( -/turf/closed/wall/r_wall, -/area/station/commons/vacant_room/commissary) "vuq" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -63896,17 +66687,6 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"vuL" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "vuR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63947,16 +66727,12 @@ }, /obj/machinery/button/door/directional/south{ id = "Cabin4"; - name = "Cabin Bolt Control" + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4 }, /turf/open/floor/carpet, /area/station/commons/dorms) -"vve" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Aft Corridor" - }, -/turf/open/floor/iron/textured_half, -/area/station/hallway/primary/aft) "vvg" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -63982,6 +66758,16 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/construction) +"vvC" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engine Airlock" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/obj/structure/cable, +/obj/effect/landmark/navigate_destination, +/turf/open/floor/catwalk_floor, +/area/station/engineering/break_room) "vvK" = ( /obj/structure/table, /obj/effect/turf_decal/tile/green/fourcorners, @@ -64024,11 +66810,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"vwg" = ( -/obj/structure/bookcase/random/nonfiction, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood/tile, -/area/station/service/bar) "vwh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/airlock/public/glass{ @@ -64036,6 +66817,12 @@ }, /turf/open/floor/iron/textured_half, /area/station/hallway/primary/aft) +"vwn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "vws" = ( /obj/structure/closet/firecloset, /turf/open/floor/iron/small, @@ -64136,6 +66923,13 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"vxV" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "vxX" = ( /obj/effect/spawner/random/structure/steam_vent, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -64235,11 +67029,17 @@ /obj/structure/cable, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"vzI" = ( -/obj/machinery/skill_station, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood/parquet, -/area/station/service/library) +"vzE" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/west, +/obj/structure/flora/bush/sparsegrass, +/obj/structure/flora/bush/flowers_br, +/obj/structure/flora/bush/flowers_pp, +/obj/structure/flora/bush/large/style_random{ + pixel_y = -1 + }, +/turf/open/floor/grass, +/area/station/service/hydroponics) "vzK" = ( /obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/helium_output{ @@ -64248,18 +67048,6 @@ }, /turf/open/floor/engine/helium, /area/station/ai_monitored/turret_protected/ai) -"vzM" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/brown/full, -/obj/structure/sink/kitchen/directional/south, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) -"vzP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/grass, -/area/station/service/chapel) "vzV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64268,14 +67056,6 @@ }, /turf/open/floor/iron, /area/station/security/tram) -"vzW" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/wood, -/obj/structure/chair/sofa/bamboo/left{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/chapel) "vzX" = ( /obj/machinery/door/airlock/command{ name = "Centcom Dock" @@ -64310,29 +67090,27 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"vAo" = ( -/obj/item/radio/intercom/directional/north{ - broadcasting = 1; - frequency = 1447; - name = "Private Channel"; - pixel_x = -26 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the ai_upload."; - dir = 4; - name = "AI Upload Monitor"; - network = list("aiupload"); - pixel_x = -29 +"vAl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table/wood, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) +/turf/open/floor/wood, +/area/station/cargo/boutique) "vAq" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/dark_red/fourcorners, /turf/open/floor/iron, /area/station/security/execution/transfer) +"vAu" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/plating, +/area/station/hallway/primary/central/fore) "vAw" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -64348,14 +67126,6 @@ }, /turf/open/floor/iron/small, /area/station/security/tram) -"vAA" = ( -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/siding/wood, -/obj/structure/chair/sofa/bamboo/left{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/chapel) "vAC" = ( /obj/structure/flora/bush/large/style_random{ pixel_y = -3 @@ -64378,14 +67148,6 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) -"vAR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/grass, -/area/station/service/chapel) "vAT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64408,11 +67170,20 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white/textured_half, /area/station/science/lobby) -"vBm" = ( -/obj/machinery/holopad, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) +"vBz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/plaque{ + icon_state = "L14"; + pixel_y = -15 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "vBG" = ( /obj/structure/table, /obj/machinery/microwave{ @@ -64498,6 +67269,12 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/iron/grimy, /area/station/engineering/main) +"vDq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/service/chapel) "vDB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64548,11 +67325,6 @@ dir = 8 }, /area/station/hallway/secondary/dock) -"vEq" = ( -/obj/structure/chair/stool/bar/directional/east, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood/tile, -/area/station/service/bar) "vEz" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -64574,14 +67346,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"vEI" = ( -/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/iron/cafeteria, -/area/station/service/kitchen) "vEP" = ( /turf/closed/wall/r_wall, /area/station/security/brig) @@ -64596,6 +67360,16 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/smooth, /area/station/engineering/engine_smes) +"vET" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "vEW" = ( /turf/closed/wall/r_wall, /area/station/security/prison/shower) @@ -64616,6 +67390,21 @@ }, /turf/open/floor/iron/small, /area/station/engineering/atmos) +"vFa" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/item/storage/box{ + pixel_x = -8; + pixel_y = 15 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "vFf" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -64647,6 +67436,20 @@ /obj/structure/sign/poster/official/no_erp/directional/east, /turf/open/floor/iron/grimy, /area/station/maintenance/starboard/central) +"vFo" = ( +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/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, +/area/station/hallway/primary/central/aft) "vFu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, @@ -64654,15 +67457,6 @@ dir = 6 }, /area/station/hallway/secondary/construction) -"vFv" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "vFy" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -64690,27 +67484,12 @@ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) -"vFE" = ( -/obj/structure/table, -/obj/item/trash/energybar, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "vFG" = ( /obj/machinery/computer/rdservercontrol{ dir = 8 }, /turf/open/floor/iron/white/small, /area/station/science/server) -"vFQ" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - location = "QM #2" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/cargo/storage) "vFR" = ( /obj/structure/bed, /obj/effect/turf_decal/siding/red{ @@ -64736,14 +67515,6 @@ }, /turf/closed/wall/mineral/titanium/nodiagonal, /area/station/engineering/supermatter) -"vGe" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/effect/landmark/start/clown, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "vGp" = ( /obj/structure/table/wood, /obj/machinery/light/small/red/dim/directional/south, @@ -64801,14 +67572,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) -"vHL" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/turf_decal/plaque{ - icon_state = "L7" - }, -/obj/effect/landmark/observer_start, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "vHT" = ( /obj/effect/turf_decal/box/red/corners{ dir = 8 @@ -64826,25 +67589,15 @@ }, /turf/open/floor/wood, /area/station/service/chapel/office) +"vHW" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/iron/small, +/area/station/service/bar) "vId" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/corner, /area/station/science/lower) -"vIg" = ( -/obj/structure/disposalpipe/segment, -/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/wood, -/area/station/service/chapel/office) -"vIh" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/service/chapel/office) "vIp" = ( /obj/structure/table, /obj/item/folder/yellow{ @@ -64870,6 +67623,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"vIz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "vIC" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -64882,12 +67640,6 @@ "vIF" = ( /turf/closed/wall, /area/station/engineering/atmos/pumproom) -"vII" = ( -/obj/structure/cable, -/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/service/theater) "vIJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/firedoor, @@ -64957,6 +67709,16 @@ "vJH" = ( /turf/open/floor/plating, /area/station/maintenance/port/aft) +"vJI" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "vJL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65100,16 +67862,6 @@ /obj/machinery/light/cold/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"vLf" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/flasher/directional/west{ - id = "brigentry" - }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "vLi" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/effect/turf_decal/siding/green{ @@ -65147,25 +67899,6 @@ /obj/item/gavelhammer, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"vLO" = ( -/obj/structure/table, -/obj/item/reagent_containers/condiment/saltshaker{ - desc = "Salt. From space oceans, presumably. A staple of modern medicine."; - pixel_x = 8; - pixel_y = 7 - }, -/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/machinery/newscaster/directional/east, -/obj/effect/spawner/random/food_or_drink/condiment{ - pixel_x = -8; - pixel_y = 3 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/service/cafeteria) "vLP" = ( /turf/closed/wall/rust, /area/station/command/heads_quarters/qm) @@ -65237,24 +67970,19 @@ dir = 1 }, /area/station/hallway/primary/aft) -"vML" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/portable_atmospherics/canister/air, +"vMP" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/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, -/area/station/maintenance/central/greater) +/area/station/maintenance/port/greater) "vMT" = ( /obj/machinery/hydroponics/soil, /obj/item/food/grown/mushroom/libertycap, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) -"vMV" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/trash, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "vMX" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 5 @@ -65263,6 +67991,19 @@ /obj/structure/tram, /turf/open/floor/tram, /area/station/security/tram) +"vNe" = ( +/obj/effect/landmark/start/hangover, +/turf/open/misc/dirt/station, +/area/station/service/chapel) +"vNm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "vNn" = ( /obj/machinery/light/small/directional/east, /obj/effect/decal/cleanable/dirt, @@ -65308,14 +68049,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/science/lower) -"vOh" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/iron/small, -/area/station/hallway/secondary/spacebridge) "vOm" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -65390,11 +68123,6 @@ }, /turf/open/floor/iron/small, /area/station/hallway/secondary/recreation) -"vPC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall, -/area/station/hallway/secondary/spacebridge) "vPJ" = ( /obj/structure/broken_flooring/singular/directional/east, /obj/structure/alien/weeds, @@ -65445,20 +68173,27 @@ /obj/structure/flora/bush/large/style_random, /turf/open/misc/sandy_dirt, /area/station/medical/medbay/lobby) -"vQA" = ( -/obj/effect/turf_decal/tile/green/diagonal_centre, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/camera/autoname/directional/north, -/obj/structure/sign/warning/no_smoking/circle/directional/north, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) +"vQx" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 6 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/sign/poster/official/random/directional/east, +/turf/open/floor/eighties/red, +/area/station/hallway/primary/central/fore) "vRd" = ( /obj/structure/table, /obj/effect/turf_decal/tile/dark_red, /obj/item/flashlight/lamp, /turf/open/floor/iron, /area/station/security/tram) +"vRg" = ( +/obj/machinery/porta_turret/ai, +/obj/machinery/computer/security/telescreen/research/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/iron/smooth, +/area/station/ai_monitored/turret_protected/aisat_interior) "vRh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65466,6 +68201,11 @@ dir = 1 }, /area/station/science/research) +"vRn" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/station/maintenance/port/greater) "vRt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -65477,12 +68217,6 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"vRE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/brown/full, -/turf/open/floor/iron/smooth_large, -/area/station/service/bar) "vRH" = ( /obj/structure/reagent_dispensers/beerkeg, /turf/open/floor/plating, @@ -65497,6 +68231,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) +"vSi" = ( +/obj/structure/hedge, +/obj/effect/turf_decal/siding/wood/end, +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/turf/open/floor/iron/smooth, +/area/station/service/library) "vSj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/west, @@ -65505,10 +68247,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"vSw" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "vSx" = ( /obj/structure/table/reinforced, /obj/item/kitchen/fork/plastic, @@ -65517,12 +68255,6 @@ }, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) -"vSE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "vSL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral{ @@ -65533,20 +68265,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"vST" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/tile/blue/half, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) "vSW" = ( /obj/effect/spawner/random/engineering/atmospherics_portable, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"vSX" = ( -/obj/structure/flora/bush/sunny/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "vSY" = ( /obj/structure/table, /obj/item/chisel{ @@ -65592,6 +68314,15 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/cafeteria, /area/station/science/breakroom) +"vTn" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_yw/style_2, +/obj/structure/flora/bush/large/style_random{ + pixel_x = 0; + pixel_y = 2 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "vTo" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -65640,11 +68371,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/corporate_dock) -"vTN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/service/hydroponics) "vTV" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/hos) @@ -65678,11 +68404,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"vUq" = ( -/obj/machinery/restaurant_portal/bar, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/wood/tile, -/area/station/service/bar) "vUz" = ( /obj/structure/table_frame, /obj/effect/decal/cleanable/glass, @@ -65693,18 +68414,6 @@ }, /turf/open/floor/eighties, /area/station/service/abandoned_gambling_den/gaming) -"vUG" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "kitchenshutters"; - name = "Kitchen Shutters" - }, -/obj/structure/displaycase/forsale/kitchen{ - pixel_y = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "vUM" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -65735,13 +68444,6 @@ }, /turf/open/floor/iron/white/small, /area/station/security/prison/safe) -"vUZ" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "vVo" = ( /obj/machinery/light/cold/directional/south, /obj/structure/table/reinforced, @@ -65749,12 +68451,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/escape) -"vVw" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "vVx" = ( /obj/machinery/hydroponics/soil, /obj/item/food/grown/mushroom/plumphelmet, @@ -65782,6 +68478,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"vVH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/service/bar) "vVP" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -65810,6 +68512,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) +"vVW" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L3"; + pixel_y = -15 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "vVX" = ( /obj/structure/cable, /obj/machinery/telecomms/processor/preset_one, @@ -65846,6 +68561,19 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/fore) +"vWw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "vWA" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/firealarm/directional/south, @@ -65902,14 +68630,6 @@ /obj/item/wirecutters, /turf/open/floor/iron/white/diagonal, /area/station/maintenance/department/science/xenobiology) -"vXo" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/obj/effect/landmark/start/librarian, -/turf/open/floor/iron/grimy, -/area/station/service/library) "vXr" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -65947,28 +68667,11 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security) -"vXW" = ( -/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, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "vYj" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"vYt" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/end, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "vYx" = ( /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 1 @@ -66125,18 +68828,6 @@ }, /turf/open/floor/iron, /area/station/security/courtroom) -"wav" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"waw" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "way" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -66144,6 +68835,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/smooth, /area/station/engineering/main) +"waD" = ( +/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, +/turf/open/floor/plating, +/area/station/hallway/primary/central/aft) "waH" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 5 @@ -66153,6 +68851,10 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/smooth, /area/station/engineering/main) +"waI" = ( +/obj/machinery/vending/games, +/turf/open/floor/wood/parquet, +/area/station/service/library) "waN" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -66164,17 +68866,6 @@ /obj/structure/bookcase/random/religion, /turf/open/floor/wood, /area/station/service/chapel/office) -"waS" = ( -/obj/structure/table, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/toy/foamblade, -/obj/item/toy/dummy, -/obj/machinery/light/small/directional/north, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/plating, -/area/station/service/theater) "waX" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -66182,6 +68873,25 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"waY" = ( +/obj/effect/turf_decal/weather/snow, +/obj/machinery/gibber, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) +"wbd" = ( +/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/dark_red/fourcorners, +/obj/effect/landmark/start/security_officer, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "wbf" = ( /turf/closed/wall, /area/station/security/prison/safe) @@ -66335,12 +69045,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/circuit, /area/station/tcommsat/server) -"wdV" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/stool/bamboo, -/turf/open/floor/carpet/lone, -/area/station/service/chapel/office) "wdY" = ( /obj/effect/spawner/random/structure/table, /turf/open/floor/plating, @@ -66357,6 +69061,14 @@ "wen" = ( /turf/closed/wall, /area/station/ai_monitored/turret_protected/aisat/maint) +"wet" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "weA" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 @@ -66388,14 +69100,46 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"wfb" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"wfh" = ( +/obj/structure/table/reinforced, +/obj/structure/desk_bell{ + pixel_x = 4; + pixel_y = 3 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/stool/bamboo, -/turf/open/floor/carpet/lone, -/area/station/service/chapel/office) +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + name = "Kitchen Shutters"; + id = "kitchenshutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table/reinforced, +/obj/structure/desk_bell{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table, +/obj/effect/turf_decal/siding{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "wfi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/green{ @@ -66432,39 +69176,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"wfP" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/turf/open/floor/iron/textured_half, -/area/station/security/brig/entrance) -"wfU" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/small, -/area/station/medical/medbay/lobby) -"wgj" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/lone, -/area/station/service/chapel/office) "wgl" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -66529,6 +69240,14 @@ /obj/item/reagent_containers/cup/glass/bottle/beer, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) +"wgI" = ( +/obj/effect/turf_decal/tile/brown/opposingcorners{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) "wgL" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/medical/central) @@ -66537,6 +69256,12 @@ /obj/effect/turf_decal/weather, /turf/open/floor/plating, /area/station/service/chapel/office) +"wha" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "whc" = ( /obj/effect/turf_decal/tile/dark_red/anticorner/contrasted{ dir = 1 @@ -66550,14 +69275,6 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/storage/gas) -"wht" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "whu" = ( /obj/structure/cable, /obj/machinery/blackbox_recorder, @@ -66617,16 +69334,6 @@ }, /turf/closed/wall/r_wall, /area/station/security/brig/entrance) -"wix" = ( -/obj/item/kirbyplants/random, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/primary/central/fore) "wiC" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -66655,13 +69362,6 @@ /obj/structure/cable, /turf/closed/wall, /area/station/engineering/engine_smes) -"wiU" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/librarian, -/turf/open/floor/wood/parquet, -/area/station/service/library) "wja" = ( /turf/closed/wall/r_wall, /area/station/commons/toilet/auxiliary) @@ -66679,13 +69379,6 @@ /obj/structure/filingcabinet, /turf/open/floor/iron/dark/small, /area/station/security/detectives_office) -"wjK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/flora/bush/sunny/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "wjZ" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -66706,13 +69399,23 @@ }, /turf/open/floor/wood/tile, /area/station/command/bridge) -"wkk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/opposingcorners{ +"wkC" = ( +/obj/structure/sign/picture_frame/portrait/bar{ + pixel_y = 32 + }, +/obj/structure/table/wood, +/obj/item/roulette_wheel_beacon, +/obj/item/holosign_creator/robot_seat/bar{ + pixel_x = 2; + pixel_y = 9 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/stone, +/area/station/service/bar/backroom) "wkF" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -66727,6 +69430,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"wkK" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/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/plating, +/area/station/maintenance/port/greater) "wkU" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -66740,45 +69453,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/chapel, /area/station/maintenance/starboard/greater) -"wlf" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "wlk" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 }, /turf/open/floor/engine, /area/station/science/xenobiology) -"wlu" = ( -/obj/structure/closet/secure_closet/bar, -/obj/item/stack/spacecash/c100, -/obj/item/stack/spacecash/c10, -/obj/item/stack/spacecash/c1, -/obj/item/stack/spacecash/c1, -/obj/item/stack/spacecash/c1, -/obj/machinery/light/small/directional/north, -/obj/structure/sign/poster/official/random/directional/north, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/stone, -/area/station/service/bar/backroom) -"wlF" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/grass, -/area/station/service/chapel) -"wlL" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) -"wlQ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "wlS" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ @@ -66800,6 +69480,50 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"wlV" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + name = "Kitchen Shutters"; + id = "kitchenshutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/griddle, +/obj/effect/turf_decal/siding{ + dir = 6 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "wmd" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer2{ @@ -66812,16 +69536,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/aft) -"wms" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/newscaster/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) "wmu" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -66884,11 +69598,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"wmY" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "wnd" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -66921,12 +69630,6 @@ /obj/machinery/light/small/broken/directional/north, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) -"wnB" = ( -/obj/effect/turf_decal/plaque{ - icon_state = "L1" - }, -/turf/open/floor/glass, -/area/station/hallway/secondary/spacebridge) "wnE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66934,19 +69637,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"wnK" = ( -/obj/structure/table, -/obj/effect/spawner/random/entertainment/toy, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/wood, -/area/station/service/theater) -"wnO" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "wnR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66973,22 +69663,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/tcommsat/server) -"wow" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"woB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/grass, -/area/station/service/chapel) "woD" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -67009,6 +69683,20 @@ /obj/item/wrench, /turf/open/floor/catwalk_floor, /area/station/science/xenobiology) +"woK" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "woP" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -67078,15 +69766,6 @@ "wqj" = ( /turf/closed/wall, /area/station/commons/toilet/restrooms) -"wqs" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "barki"; - name = "Shutters" - }, -/turf/open/floor/plating, -/area/station/service/kitchen) "wqD" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/effect/decal/cleanable/dirt, @@ -67134,6 +69813,14 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, /area/station/security/prison/workout) +"wrk" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_red/half/contrasted, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "wrw" = ( /obj/machinery/light/small/directional/east, /obj/structure/disposalpipe/segment, @@ -67143,7 +69830,9 @@ "wrx" = ( /obj/machinery/button/door/directional/north{ name = "Lock Control"; - id = "Toilet3" + id = "Toilet3"; + specialfunctions = 4; + normaldoorcontrol = 1 }, /obj/machinery/recharge_station, /obj/structure/sign/poster/official/random/directional/east, @@ -67157,15 +69846,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"wrF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/end{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "wrO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/dark_red/opposingcorners, @@ -67194,6 +69874,16 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/dark, /area/station/command/corporate_dock) +"wrZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/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/station/maintenance/central/lesser) "wsa" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ @@ -67246,12 +69936,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"wsX" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/obj/structure/chair/stool/bar/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation/entertainment) "wtc" = ( /obj/structure/cable, /obj/structure/window/reinforced/spawner/directional/north, @@ -67346,6 +70030,17 @@ dir = 4 }, /area/station/science/lobby) +"wtW" = ( +/obj/structure/sign/poster/official/random/directional/east, +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/stone, +/area/station/service/bar/backroom) "wtX" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/customs/auxiliary) @@ -67394,11 +70089,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/plating, /area/station/command/gateway) -"wuw" = ( -/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/service/library) "wuH" = ( /obj/structure/broken_flooring/singular/directional/south, /obj/effect/landmark/generic_maintenance_landmark, @@ -67419,13 +70109,19 @@ "wuM" = ( /turf/closed/wall, /area/station/command/heads_quarters/qm) -"wvn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +"wvk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/service/library) +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "wvv" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -67444,15 +70140,6 @@ /obj/machinery/light/floor, /turf/open/floor/iron/white/small, /area/station/science/cubicle) -"wvP" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, -/obj/item/screwdriver, -/obj/effect/turf_decal/siding/wideplating_new/terracotta{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/commons/vacant_room/commissary) "wvT" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 10 @@ -67604,9 +70291,7 @@ /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 }, -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/effect/decal/cleanable/cobweb, /obj/machinery/light/small/directional/north, /turf/open/floor/iron/dark, @@ -67676,12 +70361,6 @@ /obj/machinery/meter, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"wyY" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/lone, -/area/station/service/chapel/office) "wyZ" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 4 @@ -67691,14 +70370,13 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/iron/smooth, /area/station/engineering/atmos/office) -"wzj" = ( -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "wzk" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/hallway/primary/port) +/obj/effect/turf_decal/tile/blue, +/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/side, +/area/station/hallway/primary/central/fore) "wzo" = ( /obj/machinery/light/small/directional/north, /obj/effect/landmark/start/cargo_technician, @@ -67738,18 +70416,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/lone, /area/station/service/chapel/office) -"wzU" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/computer/security/telescreen{ - dir = 4; - name = "Test Chamber Monitor"; - network = list("xeno"); - pixel_x = -29 - }, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/xenobiology) "wAb" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/donkpockets, @@ -67795,16 +70461,30 @@ "wAW" = ( /turf/closed/wall, /area/station/hallway/primary/port) -"wAZ" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Shrine" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half, -/area/station/hallway/primary/port) "wBa" = ( /turf/open/floor/iron/dark/smooth_corner, /area/station/maintenance/starboard/greater) +"wBc" = ( +/obj/effect/turf_decal/tile/green/opposingcorners, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics) +"wBd" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "wBf" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating/rust, @@ -67838,6 +70518,10 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"wBE" = ( +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/service/library) "wBI" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -67915,6 +70599,18 @@ }, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) +"wCM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/station/hallway/primary/central/fore) "wCR" = ( /turf/closed/wall, /area/station/cargo/boutique) @@ -67932,6 +70628,14 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"wDz" = ( +/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/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "wDA" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -67943,17 +70647,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"wDJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/ai/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "wDM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67961,19 +70654,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) -"wDV" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"wDZ" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/opposingcorners, -/turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) "wEc" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 9 @@ -67994,10 +70674,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"wEp" = ( -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "wEs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68007,6 +70683,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"wEv" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, +/obj/machinery/door/airlock/hydroponics/glass{ + name = "Hydroponics" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/textured_half, +/area/station/service/hydroponics) "wEC" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -68026,12 +70712,6 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/iron/dark, /area/station/service/chapel/office) -"wEI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "wER" = ( /obj/effect/spawner/random/trash, /obj/machinery/duct, @@ -68057,6 +70737,10 @@ /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"wFd" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/smooth, +/area/station/service/library) "wFe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68064,15 +70748,6 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) -"wFl" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/starboard) "wFq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -68096,6 +70771,13 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"wFY" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/bush/jungle/c/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "wGh" = ( /obj/structure/broken_flooring/corner/directional/south, /turf/open/floor/plating, @@ -68161,13 +70843,6 @@ /obj/structure/filingcabinet/filingcabinet, /turf/open/floor/iron/grimy, /area/station/science/cubicle) -"wHE" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "wHH" = ( /obj/structure/lattice/catwalk, /obj/structure/railing/corner/end{ @@ -68193,11 +70868,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"wHO" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/closet/crate/wooden/toy, -/turf/open/floor/wood/parquet, -/area/station/service/greenroom) "wHP" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt, @@ -68215,29 +70885,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"wHX" = ( -/obj/item/radio/intercom/directional/south, -/obj/effect/landmark/start/hangover, +"wHW" = ( +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/disposalpipe/segment, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, -/area/station/hallway/secondary/spacebridge) +/area/station/hallway/primary/central/fore) "wIc" = ( /obj/structure/window/spawner/directional/west, /obj/structure/flora/rock/pile/jungle/style_random, /turf/open/misc/sandy_dirt, /area/station/medical/medbay/lobby) -"wId" = ( -/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/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "wIm" = ( /obj/machinery/door/airlock/hatch{ name = "Centcom Dock" @@ -68333,13 +70994,13 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"wJV" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/sign/painting/large/library{ - dir = 1 +"wJW" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/disposalpipe/trunk{ + dir = 8 }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/smooth, +/obj/machinery/disposal/bin, +/turf/open/floor/wood/parquet, /area/station/service/library) "wJX" = ( /obj/structure/closet/secure_closet/personal, @@ -68452,17 +71113,11 @@ /obj/effect/mapping_helpers/airlock/access/any/security/court, /turf/open/floor/plating, /area/station/security/courtroom) -"wLA" = ( -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/service/theater) -"wLJ" = ( +"wLo" = ( /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "wLM" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -68487,6 +71142,13 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/library) +"wMz" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/bookcase/random, +/turf/open/floor/wood/parquet, +/area/station/service/library) "wMA" = ( /obj/machinery/camera/directional/west, /obj/structure/bookcase/random/religion, @@ -68587,6 +71249,18 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"wNs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "wNv" = ( /obj/effect/landmark/navigate_destination/bridge, /turf/open/floor/iron/smooth_half, @@ -68625,15 +71299,6 @@ }, /turf/open/space/basic, /area/space) -"wNR" = ( -/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/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "wNS" = ( /obj/structure/rack, /obj/structure/transport/linear/tram, @@ -68783,10 +71448,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"wPf" = ( -/obj/item/clothing/glasses/blindfold, -/turf/open/space/basic, -/area/space) "wPh" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -68969,6 +71630,11 @@ }, /turf/open/floor/iron/cafeteria, /area/station/security/prison) +"wRc" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/station/service/bar) "wRd" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 6 @@ -68989,16 +71655,6 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) -"wRD" = ( -/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, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "wRN" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -69009,6 +71665,20 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"wRO" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "wRP" = ( /obj/machinery/camera/directional/south{ c_tag = "Atmospherics - South" @@ -69037,6 +71707,17 @@ /obj/machinery/smartfridge/organ, /turf/open/floor/plating, /area/station/medical/morgue) +"wRW" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/trash, +/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/central/greater) "wSf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -69088,6 +71769,15 @@ /obj/effect/spawner/random/techstorage/engineering_all, /turf/open/floor/iron, /area/station/engineering/storage/tech) +"wST" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 10 + }, +/turf/open/floor/eighties, +/area/station/hallway/primary/central/fore) "wSZ" = ( /turf/closed/wall/r_wall, /area/station/maintenance/hallway/abandoned_command) @@ -69107,6 +71797,12 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/textured_half, /area/station/security/prison/work) +"wTr" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/service/chapel) "wTs" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/random/directional/north, @@ -69217,6 +71913,14 @@ }, /turf/open/floor/iron, /area/station/security) +"wUc" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/hallway/primary/central/aft) "wUS" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/stripes/line{ @@ -69246,45 +71950,11 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/small, /area/station/engineering/atmos) -"wVs" = ( -/obj/machinery/computer/security/telescreen/interrogation{ - name = "reflection room monitor"; - network = list("isolation"); - pixel_y = 31 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/obj/machinery/firealarm/directional/east, -/obj/machinery/button/flasher{ - id = "IsolationFlash"; - pixel_x = 28; - pixel_y = 28 - }, -/turf/open/floor/iron/dark/small, -/area/station/security/execution/education) "wVI" = ( /obj/machinery/biogenerator, /obj/machinery/light/small/dim/directional/north, /turf/open/floor/plating, /area/station/maintenance/department/prison) -"wVZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"wWa" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/effect/landmark/event_spawn, -/turf/open/floor/grass, -/area/station/service/chapel) "wWb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /obj/structure/railing{ @@ -69307,6 +71977,16 @@ dir = 1 }, /area/station/hallway/secondary/construction) +"wWD" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/landmark/start/hangover, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "wWP" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -69326,16 +72006,6 @@ "wWS" = ( /turf/open/floor/iron, /area/station/security/prison) -"wWT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "wWU" = ( /obj/structure/cable, /obj/effect/spawner/random/trash, @@ -69361,6 +72031,16 @@ /obj/structure/reagent_dispensers/wall/peppertank/directional/east, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs/auxiliary) +"wXe" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/dark_red/fourcorners, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security/brig/entrance) "wXg" = ( /obj/structure/disposalpipe/trunk, /obj/structure/window/reinforced/spawner/directional/east, @@ -69391,31 +72071,12 @@ }, /turf/open/floor/iron/small, /area/station/security/brig) -"wXO" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "wXV" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"wXZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/small, -/area/station/hallway/primary/central/fore) "wYa" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -69430,18 +72091,58 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/storage/tech) -"wYr" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ +"wYh" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ +/obj/item/reagent_containers/cup/bowl{ + pixel_y = 3 + }, +/obj/item/reagent_containers/cup/bowl{ + pixel_y = 8; + pixel_x = 3 + }, +/obj/machinery/door/poddoor/shutters{ + name = "Kitchen Shutters"; + id = "kitchenshutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +/obj/item/reagent_containers/cup/bowl{ + pixel_y = 3 + }, +/obj/item/reagent_containers/cup/bowl{ + pixel_y = 8; + pixel_x = 3 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table, +/obj/item/storage/bag/tray, +/obj/item/knife/kitchen{ + pixel_y = 2 + }, +/obj/effect/spawner/random/food_or_drink/cake_ingredients, +/obj/item/kitchen/rollingpin, +/obj/effect/turf_decal/siding{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "wYv" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 9 @@ -69455,26 +72156,6 @@ "wYA" = ( /turf/closed/wall/r_wall, /area/station/medical/chemistry) -"wYD" = ( -/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/neutral{ - dir = 1 - }, -/obj/effect/landmark/navigate_destination/hop, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"wYF" = ( -/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/item/grown/bananapeel, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "wYH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69487,17 +72168,6 @@ }, /turf/open/misc/sandy_dirt, /area/station/security/tram) -"wYV" = ( -/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/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "wZa" = ( /obj/docking_port/stationary{ dir = 8; @@ -69518,15 +72188,6 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/hallway/secondary/exit/departure_lounge) -"wZd" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "wZk" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -69539,16 +72200,6 @@ "wZl" = ( /turf/closed/wall, /area/station/commons) -"wZo" = ( -/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/turf_decal/tile/green/diagonal_centre, -/turf/open/floor/iron/diagonal, -/area/station/hallway/primary/central/aft) "wZp" = ( /obj/effect/turf_decal/arrows{ dir = 8 @@ -69564,6 +72215,18 @@ }, /turf/open/floor/iron/dark/small, /area/station/maintenance/department/engine/atmos) +"wZx" = ( +/obj/machinery/door/airlock/vault{ + name = "Vault" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/vault, +/obj/effect/mapping_helpers/airlock/locked, +/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, +/turf/open/floor/iron/dark/herringbone, +/area/station/hallway/primary/central/aft) "wZA" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -69572,14 +72235,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"wZE" = ( -/obj/structure/disposalpipe/junction, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "wZF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -69722,18 +72377,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"xbP" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Vault Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/vault, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/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/catwalk_floor, -/area/station/hallway/secondary/spacebridge) "xbR" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/hedge, @@ -69775,6 +72418,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) +"xcz" = ( +/obj/structure/window/spawner/directional/west, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/window/spawner/directional/east, +/obj/machinery/light/floor, +/obj/structure/window/spawner/directional/north, +/turf/open/floor/grass, +/area/station/service/hydroponics) "xcF" = ( /turf/open/floor/iron, /area/station/commons/dorms) @@ -69783,6 +72435,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) +"xcK" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/closed/wall, +/area/station/hallway/primary/central/aft) "xcS" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -69847,18 +72505,6 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) -"xdD" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/sink/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel/storage) "xdJ" = ( /obj/machinery/door/airlock/engineering{ name = "Engine Airlock" @@ -69899,13 +72545,6 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos) -"xen" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "xeo" = ( /obj/structure/window/spawner/directional/south, /obj/structure/lattice, @@ -69998,12 +72637,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white/textured_large, /area/station/science/research) -"xeY" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/commons/vacant_room/commissary) "xfa" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -70012,6 +72645,17 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/research) +"xfe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "xff" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70022,6 +72666,22 @@ /obj/machinery/door/firedoor, /turf/open/floor/catwalk_floor/flat_white, /area/station/science/server) +"xfm" = ( +/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/dark_red/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/security/hos_office, +/turf/open/floor/iron, +/area/station/security) "xfu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/simple/general/visible{ @@ -70029,12 +72689,6 @@ }, /turf/open/floor/iron/white, /area/station/science/cytology) -"xfw" = ( -/obj/structure/table, -/obj/item/flashlight/lantern, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/wood/parquet, -/area/station/service/library) "xfy" = ( /obj/structure/transport/linear/tram, /obj/structure/fluff/tram_rail/floor{ @@ -70053,13 +72707,6 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/break_room) -"xfB" = ( -/mob/living/simple_animal/bot/firebot, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/iron/smooth_large, -/area/station/engineering/storage_shared) "xfH" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/iron, @@ -70072,13 +72719,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security) -"xfU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/lone, -/area/station/service/chapel/office) "xfV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -70092,6 +72732,19 @@ }, /turf/open/floor/iron/dark/small, /area/station/medical/chemistry) +"xfX" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "xgg" = ( /obj/structure/chair{ pixel_y = -2 @@ -70141,53 +72794,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"xgN" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"xhe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) -"xhj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/chapel/office) -"xhA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Crematorium" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/service/chapel/storage) "xhD" = ( /obj/structure/table, /obj/item/clothing/shoes/ducky_shoes{ @@ -70205,30 +72811,11 @@ /obj/effect/landmark/navigate_destination/lawyer, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"xhH" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 1 - }, -/obj/effect/mapping_helpers/mail_sorting/service/chapel, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "xhM" = ( /obj/structure/table, /obj/item/book/manual/wiki/tcomms, /turf/open/floor/circuit, /area/station/tcommsat/server) -"xhQ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "xhU" = ( /obj/structure/flora/bush/large/style_random{ pixel_x = -18; @@ -70273,14 +72860,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"xiA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel/storage) "xiE" = ( /turf/closed/wall/r_wall, /area/station/medical/virology) @@ -70292,13 +72871,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"xiL" = ( -/obj/structure/disposalpipe/segment, -/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/cafeteria, -/area/station/service/kitchen) +"xiJ" = ( +/obj/effect/spawner/random/maintenance, +/obj/structure/rack, +/turf/open/floor/plating, +/area/station/service/bar) "xiN" = ( /obj/machinery/door/window/left/directional/north{ name = "Equipment Storage"; @@ -70321,6 +72898,17 @@ }, /turf/open/floor/iron/large, /area/station/ai_monitored/command/storage/eva) +"xiS" = ( +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "xiT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70348,17 +72936,6 @@ "xjg" = ( /turf/open/floor/iron/dark, /area/station/security/interrogation) -"xjh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "xjo" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -70370,15 +72947,6 @@ dir = 8 }, /area/station/science/lower) -"xjq" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "xjz" = ( /turf/closed/wall/r_wall, /area/station/security/prison/garden) @@ -70443,16 +73011,6 @@ /obj/effect/spawner/random/trash, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"xkg" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted, -/turf/open/floor/iron, -/area/station/security/brig/entrance) "xkn" = ( /obj/structure/steam_vent, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70485,10 +73043,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/white, /area/station/science/cytology) -"xkS" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "xkU" = ( /obj/effect/turf_decal/siding/thinplating_new/terracotta{ dir = 9 @@ -70496,16 +73050,6 @@ /obj/machinery/power/shieldwallgen, /turf/open/floor/iron/smooth_large, /area/station/command/teleporter) -"xkW" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/smooth, -/area/station/service/greenroom) "xkX" = ( /obj/effect/turf_decal/tile/yellow/diagonal_centre, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -70549,9 +73093,6 @@ /obj/structure/cable/multilayer, /turf/open/floor/plating, /area/station/science/xenobiology) -"xlP" = ( -/turf/open/floor/engine, -/area/station/science/xenobiology) "xlZ" = ( /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) @@ -70782,6 +73323,10 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"xpL" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/station/maintenance/hallway/abandoned_command) "xpR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ @@ -70792,13 +73337,6 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"xpT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) "xpU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -70895,6 +73433,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) +"xrc" = ( +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/lesser) "xri" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -70929,14 +73475,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"xrz" = ( -/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/stairs{ - dir = 8 - }, -/area/station/service/theater) "xrA" = ( /obj/structure/sign/warning/pods/directional/west, /turf/open/floor/plating, @@ -70949,11 +73487,39 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"xrE" = ( +/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/vault, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) +"xrN" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/requests_console/directional/north{ + department = "Chief Engineer's Desk"; + name = "Chief Engineer's Requests Console"; + pixel_y = -32; + pixel_x = 2 + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/turf/open/floor/iron/stairs/old{ + dir = 4 + }, +/area/station/command/heads_quarters/ce) "xrX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/window/right/directional/south{ - layer = 3.1; name = "Upload Console Window"; req_access = list("ai_upload") }, @@ -71020,6 +73586,16 @@ /obj/structure/cable, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) +"xsD" = ( +/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{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "xsF" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -71134,15 +73710,6 @@ "xtW" = ( /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) -"xtZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "xug" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer, /obj/effect/turf_decal/tile/brown/opposingcorners, @@ -71203,6 +73770,12 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/space/basic, /area/space/nearstation) +"xuJ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "xuO" = ( /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ @@ -71218,10 +73791,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms) -"xuU" = ( -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "xuW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -71295,6 +73864,16 @@ }, /turf/closed/wall, /area/station/cargo/miningfoundry) +"xvK" = ( +/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, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/service/greenroom) "xvM" = ( /obj/effect/turf_decal/tile/neutral, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -71315,9 +73894,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"xvW" = ( -/turf/closed/wall, -/area/station/service/theater) "xwd" = ( /obj/structure/rack, /obj/item/storage/toolbox/emergency, @@ -71406,11 +73982,24 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) +"xxj" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/jungle/a, +/obj/machinery/light/small/directional/north, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/grass, +/area/station/service/chapel) "xxo" = ( /obj/structure/lattice/catwalk, /obj/structure/marker_beacon/yellow, /turf/open/space/basic, /area/space/nearstation) +"xxp" = ( +/obj/effect/landmark/start/assistant, +/turf/open/floor/stone, +/area/station/service/bar) "xxs" = ( /turf/closed/wall, /area/station/security/checkpoint/escape) @@ -71431,21 +74020,6 @@ /obj/structure/closet/secure_closet/personal, /turf/open/floor/iron, /area/station/commons/fitness/locker_room) -"xxE" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance{ - name = "Crematorium" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/textured_half{ - dir = 8 - }, -/area/station/security/brig/entrance) "xxL" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron/checker{ @@ -71457,18 +74031,14 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/command/heads_quarters/hos) -"xye" = ( +"xxT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, /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/turf_decal/tile/dark_red/fourcorners, -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/security/brig/entrance) +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "xyh" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71506,16 +74076,29 @@ }, /turf/open/floor/iron/white/textured_large, /area/station/medical/medbay/lobby) +"xyt" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_yw, +/turf/open/floor/grass, +/area/station/service/chapel) "xyx" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"xyJ" = ( -/obj/structure/disposalpipe/segment, +"xyM" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=23.2-Evac-Garden"; + location = "23.4-Evac" + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 2 + }, /turf/open/floor/iron, -/area/station/hallway/primary/central/fore) +/area/station/hallway/secondary/exit/departure_lounge) "xyQ" = ( /obj/structure/cable, /obj/machinery/light_switch/directional/south, @@ -71529,11 +74112,16 @@ /obj/machinery/door/firedoor, /turf/open/floor/catwalk_floor, /area/station/hallway/secondary/entry) -"xyY" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/displaycase/trophy, -/turf/open/floor/iron/smooth, -/area/station/service/library) +"xyS" = ( +/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 = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "xyZ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -71542,10 +74130,6 @@ /obj/structure/broken_flooring/pile/directional/east, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"xza" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/space/basic, -/area/space) "xzd" = ( /obj/structure/lattice, /obj/structure/railing/corner, @@ -71576,11 +74160,6 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/hallway/secondary/exit/departure_lounge) -"xzp" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/parquet, -/area/station/service/theater) "xzE" = ( /obj/structure/table, /obj/effect/turf_decal/tile/dark_red, @@ -71604,6 +74183,35 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"xzS" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/rag{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_x = 10; + pixel_y = 8 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_x = 5; + pixel_y = 16 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/reagent_containers/cup/glass/shaker{ + pixel_x = -7; + pixel_y = 15 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/turf_decal/siding/wood, +/obj/structure/sign/warning/no_smoking/circle/directional/north, +/turf/open/floor/iron/dark/diagonal, +/area/station/service/bar) "xzU" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -71662,16 +74270,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"xAP" = ( -/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/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "xAR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71712,10 +74310,40 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/station/engineering/atmos/space_catwalk) +"xBd" = ( +/obj/effect/turf_decal/plaque{ + icon_state = "L7"; + pixel_y = -15 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "xBe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"xBg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central/fore) "xBj" = ( /obj/machinery/holopad, /turf/open/floor/iron/dark/smooth_large, @@ -71760,30 +74388,10 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"xBK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/chair/office{ - dir = 1 - }, -/turf/open/floor/wood/parquet, -/area/station/service/library) "xBV" = ( /obj/effect/spawner/random/structure/chair_flipped, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"xBZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/iron/small, -/area/station/hallway/secondary/exit/departure_lounge) "xCc" = ( /obj/machinery/modular_computer/preset/id{ dir = 8 @@ -71800,19 +74408,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/stairs, /area/station/hallway/primary/central/fore) -"xCu" = ( -/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{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) -"xCz" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "xCH" = ( /obj/structure/railing{ dir = 9 @@ -71857,6 +74452,15 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/maintenance/starboard/central) +"xCW" = ( +/obj/structure/cable/layer3, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AI Core shutters"; + name = "AI Core Shutter" + }, +/turf/open/floor/iron/stairs, +/area/station/ai_monitored/turret_protected/ai) "xDa" = ( /obj/machinery/holopad, /obj/structure/disposalpipe/segment, @@ -71878,6 +74482,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"xDq" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/misc/dirt/station, +/area/station/service/chapel) "xDs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, @@ -71917,11 +74525,6 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"xEl" = ( -/obj/item/kirbyplants/random, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/chapel/office) "xEm" = ( /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -71959,12 +74562,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"xEC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "xEM" = ( /obj/structure/window/spawner/directional/north, /obj/structure/flora/bush/large/style_random{ @@ -72044,10 +74641,43 @@ "xFA" = ( /turf/closed/wall/r_wall, /area/station/science/research) +"xFB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "xFD" = ( /obj/structure/closet/emcloset, /turf/open/floor/iron, /area/station/commons/dorms) +"xFH" = ( +/obj/structure/table, +/obj/item/assembly/igniter{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/assembly/igniter{ + pixel_x = 5; + pixel_y = -4 + }, +/obj/item/assembly/igniter{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/assembly/igniter{ + pixel_x = 2; + pixel_y = -1 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "xFI" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible, /obj/machinery/door/airlock/research/glass{ @@ -72068,12 +74698,13 @@ /obj/structure/hedge, /turf/open/floor/iron/herringbone, /area/station/commons/dorms) -"xFO" = ( +"xFS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, +/obj/machinery/status_display/evac/directional/south, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "xFT" = ( @@ -72088,15 +74719,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"xGc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/neutral/line, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "xGf" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 @@ -72182,16 +74804,6 @@ }, /turf/open/floor/carpet/purple, /area/station/commons/dorms) -"xHB" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/machinery/light_switch/directional/north, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/kitchen/small, -/area/station/hallway/secondary/service) "xHD" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -72247,14 +74859,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor/iron, /area/station/science/lobby) -"xIl" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "xIr" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/effect/decal/cleanable/dirt/dust, @@ -72269,21 +74873,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"xIw" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) -"xIy" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "xIA" = ( /obj/effect/turf_decal/arrows{ dir = 8 @@ -72308,22 +74897,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/plating, /area/station/engineering/gravity_generator) -"xIK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/hallway/primary/starboard) -"xIM" = ( -/obj/structure/disposalpipe/segment, -/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/iron/white/side, -/area/station/hallway/primary/starboard) "xIP" = ( /turf/closed/wall/r_wall, /area/station/hallway/secondary/construction) @@ -72356,14 +74929,6 @@ "xJB" = ( /turf/closed/wall, /area/station/security/courtroom) -"xJR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central/fore) "xJZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72377,13 +74942,6 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/white/small, /area/station/medical/medbay/central) -"xKa" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/chair/stool/bar/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/service/cafeteria) "xKg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -72423,15 +74981,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/processing) -"xKx" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel/storage) "xKz" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /obj/effect/turf_decal/siding/wideplating, @@ -72514,10 +75063,6 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"xLO" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/port/greater) "xLY" = ( /obj/item/reagent_containers/cup/glass/bottle/beer{ pixel_y = 11 @@ -72557,6 +75102,18 @@ /obj/machinery/light/floor, /turf/open/floor/iron/dark/smooth_large, /area/station/command/bridge) +"xMl" = ( +/obj/item/book/manual/chef_recipes, +/obj/item/stack/package_wrap{ + pixel_y = 2 + }, +/obj/item/holosign_creator/robot_seat/restaurant, +/obj/structure/table, +/obj/effect/turf_decal/siding{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "xMo" = ( /obj/item/stack/cable_coil/five, /obj/effect/decal/cleanable/glass, @@ -72573,6 +75130,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"xMu" = ( +/obj/effect/turf_decal/siding/wood, +/turf/closed/wall, +/area/station/service/library) "xMv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72616,6 +75177,13 @@ "xNw" = ( /turf/closed/wall, /area/station/science/breakroom) +"xND" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/grille, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/plating, +/area/station/hallway/primary/central/fore) "xNE" = ( /obj/structure/steam_vent, /obj/structure/closet/crate, @@ -72628,23 +75196,6 @@ /obj/item/clothing/gloves/color/red/insulated, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) -"xNI" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/tile/dark_red{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) -"xNL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/wood/parquet, -/area/station/service/theater) "xNV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -72660,15 +75211,12 @@ /turf/open/floor/catwalk_floor/flat_white, /area/station/science/auxlab/firing_range) "xNZ" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ +/obj/machinery/modular_computer/preset/civilian{ dir = 4 }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 1 - }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron, -/area/station/security/brig/entrance) +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/circuit/red, +/area/station/ai_monitored/turret_protected/ai) "xOm" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/poddoor/shutters{ @@ -72692,12 +75240,6 @@ /obj/effect/landmark/start/research_director, /turf/open/floor/iron/dark/small, /area/station/command/heads_quarters/rd) -"xOB" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/grimy, -/area/station/service/theater) "xOE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -72728,15 +75270,25 @@ /turf/open/floor/iron/smooth, /area/station/engineering/supermatter/room) "xOP" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail{ dir = 4 }, -/obj/effect/turf_decal/siding/wideplating/dark/corner, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 1 +/obj/effect/mapping_helpers/mail_sorting/service/bar, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, -/turf/open/floor/iron, -/area/station/security/brig/entrance) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4 + }, +/obj/effect/mapping_helpers/mail_sorting/service/bar, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "xOR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output{ dir = 8 @@ -72780,6 +75332,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/security/prison/rec) +"xPs" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/station/service/chapel) "xPv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -72794,6 +75352,20 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) +"xPJ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central/fore) "xPN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72802,10 +75374,16 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"xPR" = ( -/obj/structure/flora/tree/jungle/small/style_random, -/turf/open/floor/grass, -/area/station/service/chapel) +"xPU" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "xPW" = ( /obj/item/kirbyplants/random/fullysynthetic, /turf/open/floor/wood/parquet, @@ -72873,16 +75451,6 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/hop) -"xQx" = ( -/obj/structure/table, -/obj/machinery/computer/security/telescreen/ordnance{ - pixel_y = 2 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/science/ordnance/testlab) "xQy" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -73025,6 +75593,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"xRJ" = ( +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/landmark/start/hangover, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "xRU" = ( /obj/machinery/door/airlock/maintenance/external{ name = "Command Storeroom" @@ -73046,10 +75620,6 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/service/abandoned_gambling_den/gaming) -"xRZ" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/grass, -/area/station/service/chapel) "xSd" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/tile/red, @@ -73073,13 +75643,6 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/engineering/atmos) -"xSp" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "xSt" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/stripes/white/line{ @@ -73250,13 +75813,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"xUG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/service/kitchen) "xUL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -73332,12 +75888,6 @@ }, /turf/open/floor/iron, /area/station/science/robotics/lab) -"xVo" = ( -/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/service/hydroponics) "xVv" = ( /obj/structure/cable, /turf/open/floor/iron/white/small, @@ -73464,6 +76014,11 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) +"xXe" = ( +/obj/effect/spawner/random/structure/closet_maintenance, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/central/greater) "xXi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -73615,6 +76170,20 @@ "xYK" = ( /turf/open/floor/iron/grimy, /area/station/science/cubicle) +"xYN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "xYO" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/bridge) @@ -73647,6 +76216,47 @@ }, /turf/closed/wall, /area/station/maintenance/port/fore) +"xZl" = ( +/obj/machinery/smartfridge, +/obj/machinery/door/poddoor/shutters{ + name = "Kitchen Shutters"; + id = "kitchenshutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/smartfridge, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchenshutters"; + name = "Kitchen Shutters" + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/landmark/event_spawn, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_y = 9; + pixel_x = 4 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/effect/turf_decal/siding{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/service/kitchen) "xZs" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -73738,6 +76348,13 @@ }, /turf/open/space/basic, /area/station/engineering/atmos/space_catwalk) +"yaA" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/structure/flora/bush/flowers_br/style_3, +/turf/open/floor/grass, +/area/station/service/chapel) "yaB" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -73754,12 +76371,6 @@ /mob/living/basic/spider/giant/sgt_araneus, /turf/open/floor/stone, /area/station/command/heads_quarters/hos) -"yaG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/chapel) "yaI" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -73768,6 +76379,16 @@ "yaL" = ( /turf/closed/wall, /area/station/commons/vacant_room/commissary) +"yaQ" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow, +/obj/machinery/light/small/directional/north, +/obj/machinery/icecream_vat, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/freezer, +/area/station/service/kitchen/coldroom) "yaU" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, @@ -73829,13 +76450,6 @@ dir = 8 }, /area/station/hallway/secondary/entry) -"ybF" = ( -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/engine, -/area/station/science/xenobiology) "ybJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -73848,18 +76462,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/entrance, /turf/open/floor/iron/textured_half, /area/station/security/brig) -"ybL" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) "ybM" = ( /obj/structure/window/spawner/directional/west, /obj/structure/window/spawner/directional/east, @@ -73914,21 +76516,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"ycx" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 1 - }, -/obj/machinery/camera/directional/south{ - c_tag = "Atmospherics - South" - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/primary/central/fore) "ycC" = ( /turf/closed/wall/r_wall, /area/station/command/bridge) @@ -73940,22 +76527,10 @@ /obj/structure/chair/sofa/bench/left, /turf/open/floor/iron, /area/station/hallway/secondary/recreation) -"ycS" = ( -/turf/open/floor/wood/tile, -/area/station/service/bar) "ycW" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/smooth_edge, /area/station/engineering/supermatter/room) -"ycZ" = ( -/obj/structure/disposalpipe/segment, -/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/iron/white, -/area/station/medical/medbay/lobby) "ydf" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -73997,15 +76572,11 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/wood/tile, /area/station/command/bridge) -"ydu" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/mail_sorting/service/bar, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) +"ydz" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/dark/side, +/area/station/hallway/primary/central/fore) "ydH" = ( /obj/effect/turf_decal/box/corners, /obj/effect/turf_decal/box/corners{ @@ -74072,17 +76643,6 @@ /obj/structure/sign/warning/test_chamber/directional/east, /turf/open/floor/iron/white, /area/station/science/robotics/augments) -"yeu" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hydroponics/glass{ - name = "Hydroponics" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/textured_half, -/area/station/service/hydroponics) "yeD" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -74143,12 +76703,6 @@ dir = 8 }, /area/station/maintenance/starboard/greater) -"yfj" = ( -/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/white, -/area/station/hallway/primary/starboard) "yfs" = ( /obj/structure/closet/l3closet/scientist, /obj/item/storage/bag/xeno, @@ -74176,15 +76730,6 @@ }, /turf/open/floor/iron/small, /area/station/commons/fitness/locker_room) -"yfH" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/displaycase/trophy, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/smooth, -/area/station/service/library) "yfJ" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/decal/cleanable/dirt, @@ -74201,12 +76746,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/department/engine/atmos) -"yfP" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 4 - }, -/turf/open/floor/circuit/red, -/area/station/ai_monitored/turret_protected/ai) "yfQ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -74221,35 +76760,9 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security) -"yga" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) -"ygd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) -"ygf" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Xenobiology Lab - Test Chamber"; - network = list("ss13","rd","xeno") - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "ygu" = ( /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) -"ygB" = ( -/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/bronze{ - name = "Backstage" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, -/turf/open/floor/wood/parquet, -/area/station/service/theater) "ygK" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/west, @@ -74421,15 +76934,6 @@ /obj/item/clothing/head/utility/welding, /turf/open/floor/iron, /area/station/science/robotics/lab) -"yiv" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Greenroom Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, -/turf/open/floor/plating, -/area/station/maintenance/central/greater) "yiL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -74450,6 +76954,17 @@ }, /turf/open/floor/iron, /area/station/science/robotics/lab) +"yiY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/departments/holy/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "yjc" = ( /obj/machinery/rnd/production/techfab/department/cargo, /obj/effect/turf_decal/delivery/white, @@ -74466,12 +76981,6 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/iron/white/small, /area/station/science/cubicle) -"yjD" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/grass, -/area/station/service/chapel) "yjE" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/engine) @@ -74488,6 +76997,10 @@ /obj/structure/cable, /turf/open/floor/iron/smooth, /area/station/engineering/supermatter/room) +"yjP" = ( +/obj/structure/flora/tree/jungle/style_2, +/turf/open/floor/grass, +/area/station/service/chapel) "yjQ" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/power/apc/auto_name/directional/east, @@ -74552,6 +77065,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/small, /area/station/security/brig) +"yle" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/tile, +/area/station/service/bar) "ylo" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -74599,6 +77120,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/smooth, /area/station/maintenance/disposal/incinerator) +"ylM" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "ylR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -83674,7 +86202,7 @@ wBo giq wBo vmL -apj +hZf kwH nID vmL @@ -83956,12 +86484,12 @@ brC brC pfx ybO -akZ -akZ -akZ -akZ -akZ -akZ +aJq +aJq +aJq +aJq +aJq +aJq gcs blb blb @@ -84185,7 +86713,7 @@ vmL wBo mnx ylK -qBD +aRS gKs hXt mXm @@ -85283,7 +87811,7 @@ jxJ slw dDd vuj -aPj +cYS rhC pee qyT @@ -85291,7 +87819,7 @@ pLZ pWF fMQ qCb -qZf +vgh yaI qRN erg @@ -85299,7 +87827,7 @@ sNg yaI wRN yaI -oUx +xyM yaI xQy qRN @@ -85541,7 +88069,7 @@ slw qtJ qdu tyD -kai +lFq sor whL sYs @@ -85556,7 +88084,7 @@ jch wZS tCm onw -jeV +csv gun mKD snZ @@ -85731,7 +88259,7 @@ gKs gKs aOb utf -mfV +eEz mFD mrW hYC @@ -85797,7 +88325,7 @@ pZK npA tYj riV -rGt +slw mhk mhk mhk @@ -85813,7 +88341,7 @@ gdn qyT tDb ttX -xBZ +iNC qyT nvK xBe @@ -86051,26 +88579,26 @@ oRr poM uzJ mKB -npA -trl -riV -uQR -mhk -spW +aLm +slw +lLi +slw +gMX +hEu ozn ozn pXC -xYJ mhk +mhk +qyT whL -rym whL -rym whL qyT +qyT tDE tWQ -unM +ggc qyT sbx lgj @@ -86307,27 +88835,27 @@ owl oSb ppk mjQ -vFQ -npF -mhk -riZ -npF -mhk -pev +fLF +ahr +nFX +nFX +ozn +pSP mhk mhk mhk mhk mhk -uRX -vzP -vzP -vzP -wjK +cgV +qHr +gyc +dVQ +wFY +ahf wBm wXk xKG -qHH +suM yea yea yea @@ -86564,27 +89092,27 @@ lkI oSg lWF mjV -qbw -npS -nFX -nFX -ozn -ozn -sqe +pHs mhk -pMg -pYE -vzP -aWw -vkG +ihb +ozt +dEQ +sqz +mhk +flT +pbw +mvG +mSQ +jWj +bIJ +bIJ xYD -xPR -tzJ -xRZ -wBm +yjP +mOl +wAW wXk oOy -xOS +atS uHI vlY vGp @@ -86824,24 +89352,24 @@ qby qby mhk mhk -xYJ -udt -rXw -sqz mhk -yjD -xYD -rLT -qCg -qZB -cPd -wWa -xYD -quJ -wAW +xxT +mhk +mhk +tmy +sUN +lsP +yaA +flT +flT +flT +oVW +ePt +jlW +wBm hDT glM -xOS +atS wEG wEG wEG @@ -87082,23 +89610,23 @@ mLh nry qRq mhk -xLO +vdL mhk mhk -mhk -csp -qZB -uaa -qCR -ram -ryp -qZB -xYD -xRZ +cxg +nIt +uoR +cKj +jxO +cvo +vNe +flT +bnQ +fVF wBm wXk jte -uoh +diI yea vmt dzi @@ -87117,7 +89645,7 @@ blb blb blb xkt -rGm +heY xOq mxg nPu @@ -87339,23 +89867,23 @@ mLk nsL kVn srn -uSM -rYv -srn -sMi -pMu -qaA -qkv -qCi -raC -dty -vzW -syv -wlF -wzk -tDJ -blq -cNu +iHT +pRc +mhk +pbw +qzP +cKj +gcV +qUb +kkc +cvo +flT +rpz +vTn +wBm +wXk +dTH +xFS yea vmH yea @@ -87597,22 +90125,22 @@ dVW qSS mhk tKf -rYD +kwy mhk -jrZ -xYD -jEU -uXN -qCR -raX -vkz -agF -syG -pHN +ssu +qzP +vDq +dNT +cKA +rsY +buv +flT +rnr +aCz wAW -wXk +spo xiF -uoM +gEx yea vne wMA @@ -87854,26 +90382,26 @@ mhk mhk mhk xmI -pbu +ivh mhk -mYS -xYD -yaG -qOp -qCR -uSC -vkz -vAA -szy -xRZ -wAW -iLK +fme +flw +kzf +dAh +miF +rHN +vqF +iyR +fdS +tev +wBm +wXk glM -khE +uAk yea vmX vij -xEl +hbO wyl fEC fEC @@ -87905,7 +90433,7 @@ qVP kvO tug hXU -wVs +iCi pxj hAC cVC @@ -88111,22 +90639,22 @@ mhk nFY mhk mhk -xLO -mhk -ptZ -sYF -yaG -qkw -qCR -raX -rzu -agF +mze +iLH +oyz +tmi +klN +asV +miF +uhK +lvJ xYD -wlQ +gRm +rmk wBm wXk glM -xFO +atS rQC vne vHV @@ -88368,28 +90896,28 @@ mhk xYJ xYJ tYL -pbu +mSA mhk -mhk -oqE -qbr -hNT -qCR -rba -rAb -vAR -vSE -woB -ntw +jSJ +tOd +qzP +asV +miF +uhK +xPs +qOb +iQp +xyt +wBm vuR xgA -wNR -qnu -vnn -vIg -wdV -wyY -eqP +hiK +lei +pvi +pvi +buc +uAi +njs uAi fEC rui @@ -88405,7 +90933,7 @@ sNr syk vYD lox -dXo +rdW vTV iWj lRV @@ -88620,33 +91148,33 @@ lme lHe lWU tca -mCb +urF mhk xZd mhk sNW -xLO -xLO +mze mhk -sYK -sYF -uao -vzP -vzP -vkG -bOl -xYD -xRZ -wAZ -wXk -xgN -rsQ -kar +shR +ugI +rYs +cOk +nqY +uhK +flT +fGW +bIJ +cdB +wAW +rpB +jzr +rpE +tAF vnr -vIh -wfb +caD +buc alg -xfU +qwK xjU fEC kJJ @@ -88662,7 +91190,7 @@ xkt ujA cDH fFH -fYX +oBT vTV vTV xxO @@ -88882,28 +91410,28 @@ mhk qTJ mhk rGN -xYJ -pbu +mze mhk -mhk -xpT -xYD -xYD -xYD -xPR -xYD -vSX -tdg +feL +jaG +qSq +nxN +miF +dUJ +bRl +flT +flT +flT wBm wXk -bVv +pEO xOS rQC von -vne -wgj +pvC +aLS +wzS wzS -kzd tAu fEC rui @@ -88913,17 +91441,17 @@ qVP llW llW xkt -nNb -ejc +geH +buf dah urw urw -rzG -rIH +hCd +jwl cFg hWJ -htV -ild +vnD +xfm voJ qxv apk @@ -89139,28 +91667,28 @@ mhk mhk mhk mhk -sqz -xLO -xLO +mze mhk -tCk -uaE -uty -rbh -tTG -sdg -tEU -hpP -wAW -mdU -xhe +dTO +mTm +asV +kaM +wha +wTr +dUJ +rsJ +nPD +pjw +mnj +wXk +glM oMF yea vrf von wgn pRe -xhj +wgn aHq xMg rui @@ -89392,32 +91920,32 @@ lIf lXn srn ntJ -jCA nGu +xYJ ina mhk +gLV mhk -mhk -sMG -mhk -mhk -mhk -mhk -mhk -mhk -sdQ -mhk -mhk +bTo +flT +asV +tex +cii +tBk +miF +miF +miF +rLQ wAW -wDJ -xhH -rje +lqq +ckP +cQI yea yea vJn wgA guY -xhA +oRy guY fEC fEC @@ -89649,32 +92177,32 @@ lIn lXY mhk ina -tYL -nGJ -ntJ +pyA +ina +xYJ +xYJ +xsD srn -oSh -ntJ -pug -mhk -lJY -bmM -uSM -uSM -vmz -rYv -pug -mhk -fju -wWT -glM -iwZ -uIt +xxj +cSb +asV +gkH +hHy +edV +qSq +aht +aht +pjw +mnj +wXk +uQK +iXZ +vpg yea vJA vKa guY -xiA +brj iQU pIw pIw @@ -89906,33 +92434,33 @@ lIq lYt mhk xYJ -qAE +lwC tYL mhk mhk -tYL -mhk -xen -lJY -oSS -mhk -mhk -oDK -mhk +fpN mhk -qSv -sNv -wDV -tET -glM -xFO +kZj +xyt +kzf +jCU +oqS +kGb +hrr +flT +iyR +rya +wBm +kvD +xiS +crm dyq yea vKa wgM guY -xdD -hkJ +vhr +pwN liJ pwN pTq @@ -90102,7 +92630,7 @@ hyx cDE fCW oPa -xfB +sXE qKx xed rbp @@ -90163,33 +92691,33 @@ lIw lYw mhk qjn -xYJ +uiw ina mhk ozt -oSP -uIW -puj -pNy -mhk -mhk -uwU -lVm -rAn -mhk -mhk -mhk +mrn +vRn +ani +bKv +vNe +cOk +miF +coN +flT +iyR +lkJ +qzP wAW -wXk -jte -xFO +yiY +nSb +xOS yeF xle xle xle xle xle -xKx +jlz kte cVh fEC @@ -90211,7 +92739,7 @@ myy dDQ utP bVO -fpd +ezV wuc iiX sos @@ -90420,33 +92948,33 @@ lJV cYT mhk mhk -sfL +dDi mhk mhk sNW -wht +jQv mhk -xIl -mhk -mhk -nwS -ozo -lVm -ebB -yfC -hAd -enD -thv -tEW -blq -uoW +kxx +xYD +ewu +kzO +miF +coN +vNe +njK +lzG +tWm +wBm +fNW +beN +oRw xle xle slZ -nGd +iIU wAj xle -qvQ +jep guY yaW fEC @@ -90676,38 +93204,38 @@ slY mhk mhk mhk -xYJ -xYJ +rZb +jXc xYJ nZW xYJ -wht -mhk -sZj -pOb +jQv mhk -gzj -uye -sVl -qGA -puv -xVo -sPt -mKY -wWT -xiF -xOS +eAH +aFV +qzP +eab +miF +coN +flT +ani +cLL +rPW +wBm +fNW +iZW +uoh xle -vrt +pgm swu iDA wAS xle -xxE +bXi tuZ fEC fEC -xpo +rPL lGd dAn cjR @@ -90933,26 +93461,26 @@ slY rXw lYT mhk -xYJ +uiw mhk mhk mhk mhk -rZK +ete mhk -sNW -xIl -mhk -ubB -ozo -rcr -rBx -yfC -szz -efL -mJW -wWT -glM +xDq +anU +dGp +kzO +miF +coN +flT +ani +mYw +jlW +wBm +fNW +uQK xOS yeS vrz @@ -90960,11 +93488,11 @@ dxG wiC dOT xle -pIg -xNI -uMI +chh +aul +jPo rOG -dPI +dFQ fEq rpV qVP @@ -91187,29 +93715,29 @@ kso kYG kYG pep -lJY -uSM -naE -rYv -rYv -rYv -rYv -rYv -oSS +nJo +avY +oHk +jRJ +cAZ +iHT +vMP +vMP +eRy mhk -mhk -pOj -mhk -yfC -yfC -rdo -rBG -yfC -cpc -iwa -yfC -wWT -jjS +flT +kdc +qSq +nxN +miF +coN +iyR +vsy +ttb +dIQ +wAW +fNW +oYi xZg lBN hKU @@ -91217,8 +93745,8 @@ ixl qyx vXr jTh -tWE -xNZ +wXe +fuu qVP qVP qVP @@ -91444,29 +93972,29 @@ uxd xaZ dZm slY -lKt +ilo tYL mhk -mhk +twm mhk mhk oaa mhk oTH mhk -xHB -pOK -qoi -iEX -yfC -aws -fMD -sdT -vTN -aws -yfC -lzv -glM +bEY +jgU +asV +van +miF +coN +lmm +lkJ +iQp +fVF +wBm +fNW +uQK qHH xle dnK @@ -91474,8 +94002,8 @@ vKV wjG wPh xle -bOg -xOP +eof +hQx hDN dcc vRC @@ -91545,7 +94073,7 @@ xIj eoz eoz tTW -nha +bQy tMS xIj vfN @@ -91701,29 +94229,29 @@ ksx mEB slY ueX -wht +jQv sNW mhk -mSi -qBj -uVb -rkR +fkN +nUK +bjh +kbk mhk mhk mhk -vgJ -uAV -tDT -fDp -yfC -hwe -rBN -aws -vTN -oMC -yfC -pTc -rgT +cKb +xyt +asV +jlA +ckd +coN +boJ +hYh +ahl +oNV +wBm +dcD +pOM upg xle xle @@ -91731,8 +94259,8 @@ xle xle xle xle -keZ -reT +gyx +uTz ybj uab rjN @@ -91958,29 +94486,29 @@ ksA oJR oiw mhk -wht +jQv sqz mhk mTd qBz qTR -rlz +kym rHD qVR wCR -rHL -tDP -qbC -lsJ -yfC -jKh -fMD -vBm -vTN -sQU -mKY -wWT -glM +bOv +qzP +asV +cnX +aZj +coN +bfm +ani +hKZ +fVF +wBm +fNW +uQK xOS kWJ tJz @@ -91988,8 +94516,8 @@ tIa mvv jsS ocz -wId -uZb +nPe +lTa hDN xyx xjg @@ -92170,7 +94698,7 @@ gKL upG daC jBo -oEt +xrN gpI lhq cBw @@ -92215,29 +94743,29 @@ khZ nSY nYQ mhk -oUO +ifl mhk mhk wCR wCR qUs -cxT +vAl qmz -oTO +uvb wCR -uej -wms -qbK -jza -yfC -hwe -fMD -aws -vTN -vST -yfC -ijm -jte +tcP +jlW +dUJ +bEb +aZj +lSG +flT +gVL +pyt +tXy +wAW +chC +nSb xOS par tJz @@ -92245,8 +94773,8 @@ kql kql rAR ezM -wId -dtj +nPe +nnd hDN vcl tPf @@ -92433,7 +94961,7 @@ hpj rYL gpI jlL -iwJ +qQR bNq neg wZr @@ -92472,29 +95000,29 @@ ktM sOP otG mhk -xen -ptk +oEn +lPK mhk mTN wTO qVR -rlz +kym rHH oUJ wCR -pup -tbq -qcl -uej -yfC -aws -rBQ -aws -vTN -say -yfC -rjH -glM +kxx +mHF +rya +kzO +aZj +coN +flT +ojA +uPW +rPW +wBm +fNW +uQK xOS uJD tJz @@ -92502,8 +95030,8 @@ uZk gOw jsS iAM -wId -puY +nPe +byv vEP qVV qVV @@ -92511,7 +95039,7 @@ qVV qVV qVV qVV -fWw +grH qlc xur nGi @@ -92729,29 +95257,29 @@ kua lEm oiL mhk -lKu -cXm +kPo +wkK mhk wCR wCR qVZ -rlB +kCB rJo sas wCR -rYd -tbq -qdm -aeq -qEp -bCX -bCX -sei -qDp -sQY -mKY -wWT -glM +lkk +lCM +uoR +kzO +mMI +coN +flT +gOt +bYh +uoR +wBm +fNW +uQK xOS uKA uBc @@ -92759,8 +95287,8 @@ tuZ tuZ uBc xjX -wId -dtj +nPe +nnd vEP gxg djg @@ -92819,7 +95347,7 @@ dDB dDB dDB dDB -dbY +qyN kgu wOl dby @@ -92987,37 +95515,37 @@ kIO wnd mhk mhk -wht +sBf mhk mUt wTO uSI -rlN +scY rJo bHU wCR -roV -tbq -tSh -aeq -qFB -rdK -rDf -sel -rDy -uWB -yeu -eTt -tXT -wHE -qnz -vtc -vLf -wZd -sWJ -xkg -sxL -jKm +qmf +hyW +flT +kzO +aZj +coN +mye +lZT +uoR +flT +wBm +mcI +fyW +bcC +hNj +kKh +ebE +iHq +azV +oLo +sCq +nXx vEP wXC crJ @@ -93076,8 +95604,8 @@ dDB dDB dDB dDB -eeq -hhZ +rMm +uPX fSf wRa xXJ @@ -93244,36 +95772,36 @@ msq laD gSX mhk -wht +jQv mhk wCR wCR wCR -rmG +iuF ozO -nuX +rxa wCR -uMg -tcB -uMg -uej -uzd -uUI -bUf -fVV -szG -wow -pxl -wXO -xjh -alh +flT +tzN +pnK +abs +ahc +gfO +spk +flT +flT +flT +wAW +wXk +qjt +sJv slM tJz vLC rRq jsS ezM -xye +fLJ oZi vEP uQu @@ -93483,7 +96011,7 @@ hCX vwZ gEM iCw -jDP +bnn lBz mJe iDO @@ -93501,36 +96029,36 @@ kJb laL loj mhk -scz +jby mhk mVM aSI xRV -oaV +oFy xZS xZS xRV -bUt -tcP -bUt -xRV +xZS xRV xRV +dCT xRV +aEU xRV -szH -sRv +xZS +xZS xRV -saZ -sxw -upj -mTq -wfP -mJB -mJB -gvn -toY -eAX +aXC +jsJ +mKm +qZj +vrS +fKr +sfu +sfu +ugb +wrk +wbd lbO ybJ fbe @@ -93707,7 +96235,7 @@ sHM iqB fdy hnS -sKD +vvC hxY vpZ oRj @@ -93742,45 +96270,45 @@ wbi wbi wbi hnO -tgR -wbi -oDs -rrC -iqN -mDq -snc -snc -lVL -snc -nys -snc -nTj -snc -snc -mAo -lYU -mmp -mZg +nxI +sxZ +qGc +pfw +sar +tSA frI -uQi -sfK frI +uIv frI -pfw +aDJ +hKV +mZg frI -pPT -xJR -ofo -mLi -vsl -ewi -uny -xJR frI -ldZ -wXk -sxw -xOS +oyp +mXZ +pHl +mAR +qWG +fkS +tDM +qWG +qWG +rvr +qWG +mOV +cQG +iaf +twe +qWG +rDv +qWG +qWG +ghL +vWw +aBo +rZz +tfM nsO uBc tJz @@ -93964,7 +96492,7 @@ qjx iqB phY jmZ -oJl +agY bDh fPY xkX @@ -93995,49 +96523,49 @@ gBk hNY hNY gxR -inh -jvB -inh -iZK -pVq -hBt -jQW -uAo -uAo -iIv -uAo -jsG -jLr -aHS -fHN +sHq +xYN +sHq +ayQ +ore +tYl +pCf +eDd +eDd +xFB +eDd +rUu +wBd +sfe +bmR jpu pWM foe jpu lKA -jpu +amh jpu qdS jpu -qWm +xfX xmu jpu jpu jpu foe -xmu +jpu lKA +pbq jpu jpu -fMj fXJ jpu aRJ wRg -gNU -tFY -tYb -xOS +rPA +iUh +sXs +atS ftX udA mJB @@ -94270,31 +96798,31 @@ kfw yeD kJj yjZ +fUC yjZ +lCK yjZ -lZD -yjZ -nau -yjZ -nHB -obm -oAk -oWb -pfO -siC -siC -siC -siC -siC -qio -siC -siC -siC -rCd -wXZ -tIc -xGc -xOS +dOf +wWD +wvk +vkC +fUC +dKm +rEJ +fUC +fUC +jkN +dkJ +fUC +fUC +fUC +fUC +uqF +dff +qGe +pIQ +uSF +atS ftX fnP gvV @@ -94526,32 +97054,32 @@ xRV vIJ kux wGz -lbh -oAF -riu +yaL +dAC +dAC +yaL +fNC +rpv +cXh +jVM xeO wMg -qej +xeO +xeO +xeO +xeO +rAk +eeW +xeO wMg -jVM -jVM -ceE -jVM -jVM -vkh -vkh -efC -efC -vpN -oTo -dHi -vpN -vkh -vkh -wBm -tIc -sxw -xIy +wMg +wMg +xeO +xeO +cUf +hmL +gIw +iUH isK uBc uBc @@ -94781,36 +97309,36 @@ lEa lWk xRV owR -nAx -tmQ -xeO -xeO -xeO -xeO -mnn -naO -yfH +wLo +xfe +ehT +urq +ddB +yaL +yaL jVM -wzj -uPd -row +wRO jVM -puD -pQe -qdp -qme -ycS -hWQ -ycS -ycS -vUq -uNW -mku -tIc -sxw -xuU +rEF +kGE +waI +xeO +tnZ +oPy +wBE +ehR +cik +wKr +dsl +wMz +ntP +rNL +xeO +hmL +ueP +hWm fvh -ogX +abB tCF ncD blb @@ -95038,40 +97566,40 @@ jsN jLI xZS vrn -nzK -lkZ -xeO -lpa -iTv -xeO -izB -jFY -xyY +jGf +wQB +yaL +ids +wgI +uuz +iVP jVM -paV -wLJ -ojl +jpy jVM -vwg -ycS -tEI -ycS -uAF -ree -rFQ -ycS -ucV -vkh -oBm -tIc -bxA -gYK -wAW -vtv -kev -qtl -qtl -qtl +hIm +azq +iTv +wMg +wKr +vtr +cJO +cSU +uTE +eKD +oCi +wFd +wFd +wFd +ifL +pqx +vFo +kuk +iuR +iuR +dDB +dDB +dDB +dDB dDB dDB dDB @@ -95296,39 +97824,39 @@ gBw xZS vrn ncL -qwz -xeO -wKr -lql -xeO -wJV -nbu -xyY -jVM -uPd -jVM -sbm +wQB +joH +lte +tsB +iGS +oTg +fri +moG jVM -vkh -paL -ycS -uAX -uAX -reW -uAX -vEq -szM -vkh -qOt -wYr -tYd -hgE -jqQ -uNn -vOh -qTM -qTM -qtl +mYH +rBD +rcE +rZP +gAH +kUY +kUY +qHV +btY +mUi +xMu +qmM +vSi +hEJ +wMg +sju +tdH +kHX +tYX +dDB +dDB +dDB +dDB +dDB dDB dDB dDB @@ -95551,41 +98079,41 @@ qCJ xQw jLI jYU -vrn -ncL -wQB -wMg -wKr -eUW -xeO -eGl -nbZ -ntY +pZv +sjL +tNf +iiI +hnn +jRl +kqZ +buU jVM -uPd +gXm jVM -lxK -rnw -sON -vkh -tFG -qmx -uBn -iZI -vpU -bKP -vkh -vkh -uGp -wYr -tYH -mVa -uLn -aTr -hyl -wlf -qTM -qtl +jFa +isb +ehR +wMg +iZM +fEX +fkF +jLS +jkT +oxn +saL +iLh +hEJ +hEJ +urP +bMV +tdH +kHX +tYX +dDB +dDB +dDB +dDB +dDB dDB dDB dDB @@ -95808,41 +98336,41 @@ eHk xQw gtr xZS -vrn +vET ncL -wQB -dNw -lql -azq -lql -lql -wav -qGU +qwz jVM -ydu -qEa -lTZ -tOS -crX -gYg -qdC -qmI -uCh -vRE -vpY -sfh -dks -vkh -tjb -xAP -wAW -urh -wAW -vtv -iho -wlL -wDZ -iho +jVM +jVM +jVM +jVM +jVM +eAm +jVM +bXp +lql +ehR +xeO +gLg +jdx +dLW +feR +fZK +qbB +iwt +uSh +uSh +kdg +xeO +oSr +tdH +kHX +tYX +dDB +dDB +dDB +dDB +dDB dDB dDB dDB @@ -96065,41 +98593,41 @@ iWW uVT uVT uVT -vrn -nAy -uIv -okp -wuw -wuw -jxy -pNa -wuw -dfW +vET +ncL +wQB +cZU jVM -uPd +onp +cpv +nuI +nuI +uSc jVM -geC -okK -pvR -vkh -vzM -qmO -rZN -rfI -rHd -vpY -bfI -vkh -tkp -cbT -xli -urv -yeh -blb -kev -fUj -nnR -iho +mYe +xeO +wJW +xeO +sXD +qSa +feR +aZh +jdx +pOQ +wKr +wKr +kKD +mDA +wMg +bMV +tdH +kHX +tYX +dDB +dDB +dDB +dDB +dDB dDB dDB dDB @@ -96322,42 +98850,42 @@ qJq oIP azm xQw -vrn +vET ncL wQB -wMg -lqF -lLJ -maa -wKr -qgr -ttC -nIS -rnY +aaZ jVM -wlu -gZR -gVq -vkh -orH -cOm -eZJ -vRE -tZR -cOm -szS -efC -wEp -qYu +nuI +jVM +jVM +jVM +sZe +jVM +ntI +jVM +yfC +yfC +yfC +yfC +qzt +ljT +vzE +yfC +yfC +yfC +yfC +yfC xli -dDB -dDB -dDB -qtl -qTM -qTM -uMC -dDB +hNB +cBf +ifH +iuR +tYX +tYX +iuR +tYX +tYX +iuR dDB dDB dDB @@ -96579,42 +99107,42 @@ iLC jts wzK eAc -wYD -kuE -wQB -xeO -guR -wiU -mad -wKr -qgA -beH -jVM -rpg -jVM +lcY +vJI +bds +wzk +oEJ +onp jVM -pfU -sON -vkh -glb -vpY -sZQ -fzf -rHm -sgS -szZ -vkh -wEp -wZo -tYX -dDB -dDB -dDB -qtl -qTM -qTM -uMC -dDB +mZe +fmG +hzj +oRn +gXX +kDv +doL +oJD +yfC +lnN +egc +qiC +qiC +qiC +qLU +pnF +qiC +yfC +hKO +vsd +uvQ +diP +rgM +trB +trB +saz +lcD +gCl +euz dDB dDB dDB @@ -96836,45 +99364,45 @@ eku uVT uVT uVT -lAS +lYl kvl wQB -xeO -lti -kGE -mam -wKr -pZi -iHL +dGa jVM -rpg -ipt jVM -qqh -hMz -tGq -tGq -qnA -xmt -xmt -wqs -wqs -wqs -xmt -eJY -wZo +jVM +jVM +jVM +orj +jVM +nZc +lJG +kOx +fvE +yfC +eLJ +uIA +pIC +pIC +mWT +pIC +oun +wBc +mKY +mka +htu +cJA +diP +trB +trB +trB +ryW +diP +kHX tYX blb blb blb -qtl -qTM -qTM -uMC -blb -blb -blb -blb blb blb blb @@ -97093,46 +99621,46 @@ ghD gaf xQw mvT -vrn +vET kvT -nVD -xeO -skI -hzY -sLc -joy -qgH -wKr +wQB +hHx jVM -qhp -rLw -rsV -pgW -mwP -pRP -tGq -xUG -bgK -qIP -rHQ -shw -kQA -xmt -tmc -wZo +oxp +tgd +mqz +jVM +bva +jVM +lzB +jVM +dTQ +mLg +wEv +uJi +ntu +fQj +fQj +fQj +kfi +tRJ +wBc +kxY +bMV +gYX +kMA +iuR +tYX +tYX +tYX +iuR +nUd +ong +iuR tYX dDB dDB -dDB -kev -wmY -uPO -iho -dDB -dDB -dDB -dDB -dDB +blb dDB dDB dDB @@ -97350,46 +99878,46 @@ hMh juS uVT mvT -vrn +vET kyO -smf -xeO -lty -xeO -xeO -wMg -dCm -wMg +wQB +drC +jVM +gIo +dfj +tJM jVM +bva jVM -rMV +pKc jVM -swL -sOW -tfa -tHh -qnL -xiL -rgc -rgc -shU -dvl -luU -tmV -wZo +avX +mLg +yfC +ren +qsk +kfi +kfi +lQt +kfi +tRJ +wBc +oIY +bMV +gYX +kUL tYX +blb +blb dDB +tYX +trB +trB +trB +tYX dDB dDB -kev -uPO -mjB -iho -dDB -dDB -dDB -dDB -dDB +blb dDB dDB dDB @@ -97607,46 +100135,46 @@ cpT xQv xQw mvT -vrn +vET ncL -uUE -xeO -oCc -xeO -ctc -joy -qgN -jVg -qbi +wQB +ydz jVM -rMY +flh +aXk +bNr +orj +bva jVM -sPE -pvS -tGq -tGq -poh -ono -rgx -rIg -prQ -uXb -sSr -kcs -wYV -xli -blb -blb -blb -qtl -wlf -qTM -uMC -dDB +joR +jVM +rMN +cnZ +yfC +hHM +oQi +qbA +qbA +hLb +kfi +tRJ +qiC +yfC +vea +nOm +kUL +tYX dDB +blb dDB +tYX +lcF +trB +trB +tYX dDB dDB +blb dDB dDB dDB @@ -97864,46 +100392,46 @@ xYO xYO xYO xYO -qlV -oGJ +lXU +rJZ wQB -xeO -oCc -xeO -kTd -mnu -iZc -omA -vzI jVM -vXW jVM -siz -sPT -lej -tGq -voF -qGw -uVE -rgx -prQ -chP -xmt -qqq -tIA -xli -dDB -dDB -kev -kev -oxS -usl -iho -iho -dDB -dDB -dDB +jVM +jVM +jVM +jVM +jVM +mQE +lzB +jVM +uoE +tDZ +yfC +erB +uTC +cwd +aTz +bRK +nVT +ltr +qiC +aps +bMV +gYX +lir +iuR +blb +blb +blb +iuR +iuR +bnU +bnU +iuR +tYX dDB +blb dDB dDB dDB @@ -98121,51 +100649,51 @@ oXK uAY uAY xRU -vrn -oGJ -wVZ -xeO -oBV -xeO -mjs -mpC -qhm -xBK -iuL +vET +rJZ +wQB +xZS +fJu +tjs +qqH +vxV +jSN jVM -vXW +evr +iDP jVM -fjF -pww -pRU -tGq -qon -uXb -uXw -rgx -prQ -sBp -xmt -wEp -tIL +pMl +rGW +yfC +edG +wBc +ocX +qiC +ghj +qiC +qiC +lGS +lyN +tNl +kcF +cPj tYX dDB dDB -qtl -suq -wnB -uth -uMW -uMC -dDB +blb dDB +tYX +iNF +diP +fVM +tYX +blb +blb uXY uXY uXY uXY uXY -blb -dDB dDB dDB blb @@ -98378,53 +100906,53 @@ iYh lZt lZt xYO -hBK -dTS +uBI +kTX sbU -xeO -oCc -xeO -maz -mqc -xfw -fcM +xZS +gPv +mhq +igW +wST +oBR jVM +efO +enC jVM -nKk -rgf -kWF -pxO -gHt -tGq -scC -qGY -uXb -rIS -prQ -oYu -sSt -tqq -wYF +yfC +gNA +yfC +yfC +erf +xcz +tkm +yfC +rJD +tkm +yfC +yfC +vVW +sBJ +kUL tYX -dDB -dDB -qtl -jSK -qpg -uuv -uMX -uMC blb blb +blb +blb +tYX +iNF +trB +fOW +tYX +dDB +dDB uXY dvo hkW rLN uXY uXY -dDB -dDB -dDB +blb blb dDB dDB @@ -98635,44 +101163,46 @@ xYO xYO xYO xYO -mZh -rbU -uIv -voa -uZY -xeO -xeO -xeO -jVM +ujB +wHW +loT +aNj +jvd +erz +nNX +hQP +mTT jVM -jVM -obU -ggq -jVM -jVM -jVM -jVM -jVM -voL -uXb -uXb -rJh -vEI -sxd -xmt -wEp -tIL -xli -dDB +gqd +bAR +bAR +dmm +hsu +kBf +duj +nVw +uOf +vlR +beV +qLk +ggJ +bRP +fXr +jVD +lGp +kUL +tYX +blb +aef +fBN dDB -kev -bjV -qBy -uwl -kdl -vPC -qtl -qtl +tYX +tKl +trB +oIS +iuR +anX +anX uXY iTn nBw @@ -98680,8 +101210,6 @@ nId mpk uXY dDB -dDB -dDB blb dDB dDB @@ -98892,53 +101420,53 @@ iYj sDp gZy kke -kgz -oGJ +laK +rJZ wQB -xeO -lus -uZY -wvn -uZY -ndq -nuv -nKm -aoJ -aBy -mAn -wzj -atM -cNF +xZS +sRT +kKJ +auP +kGw +vQx jVM -qpX -qHm -aes -rJl -hBr -vUG -xmt -ffX -tJG -xli -blb -blb -qtl -qTM -vHL -ozd -fYp -xbP -hYm -rUB -uvh +hBP +rhP +pZq +jVM +aLB +ilx +qEO +veS +bMY +sGN +bzj +sWh +lEs +jUr +uMg +xBd +aIS +kTF +iuR +dDB +eVX +qGf +blb +iuR +oqT +trB +xrE +wZx +lRU +fOJ +bgx xcv nBw ghQ nId uXY dDB -dDB -dDB blb blb blb @@ -99149,52 +101677,52 @@ opn jwa opn jYY -aEl -oGJ -wQB -xeO -xeO -xeO -puw -xeO -jVM -uPd -wzj -jVM -jVM -ceE -jVM -jVM +lCH +rJZ +eBC +xRV +xRV +xRV +xRV +aNm +xRV jVM +bJY jVM -efj -xKa -xKa -rJv -tax -vUZ -qKE -wEp -tJD -xli -dDB +tGq +tGq +xmt +xmt +xmt +lUP +tkZ +xmt +xmt +hrl +xmt +xmt +qbZ +pkk +gSf +cEo +tYX dDB -kev -kst -qSU -uwx -agC -kqo -qtl -qtl +kii +nun +blb +tYX +rNN +trB +bNL +iuR +anX +anX uXY hzb erK iPj bob uXY -nnk -dDB dDB blb dDB @@ -99406,53 +101934,53 @@ iYD jLR jLR xMY -tSe -oGJ +dCu +stM wQB -wix -xeO -hee -mbK -mqz +kBH +vAu +njk jVM -uPd +aQH +xXe jVM -jVM -mRp -aeN -lSw -hym -fhC -mKH -qrw -xCu -rij -xCu -xCu -xCu -asN -wEI -tIL +awz +kNx +gXy +mlG +xmt +tHQ +kZT +flc +oQE +qUo +hyG +rpo +mjr +gxv +jyq +bdk +scS +kUL tYX -dDB -dDB -qtl -jSK -rjz -uxi -uMX -vnb blb blb +dDB +dDB +tYX +iNF +trB +fjq +tYX +dDB +dDB uXY cHX qYh qXG uXY uXY -dDB -dDB -dDB +blb blb dDB dDB @@ -99638,7 +102166,7 @@ xvT fAx fVU xvT -gvY +xvT blb blb blb @@ -99663,51 +102191,51 @@ qTD azv jNe psc -tSe -oGJ +dCu +rJZ wQB xAV -xeO -lMy -iJN -pSI +txW +ovh jVM -qhp -rpy +kFT +niY +niY +xyS jVM -gTV -oXt -xCu -xCu -xCu -xCu -xCu -uCv -ril -vVw -vFv -vVw -lJc -wEp -tIL +hQM +tvq +xmt +bIl +aTg +jIU +fEB +qgd +pud +cXH +nZG +gxv +liw +bVJ +vBz +kUL tYX dDB -dDB -qtl -rOy -rrx -uyg -uOh -vnb -dDB -dDB +blb +blb +blb +tYX +iNF +hrc +fjq +tYX +blb +blb uXY uXY uXY uXY uXY -blb -dDB dDB dDB blb @@ -99885,7 +102413,7 @@ hJp wct wct iWV -yfP +xNZ wct isj isj @@ -99919,45 +102447,45 @@ xMY xMY xMY xMY -xMY -tUK -oGJ +voN +sta +rJZ wQB vpT -xeO -lMz -vXo -pSK +txW +eDi jVM +pKc +xRJ jVM -nKL +bPV jVM -oAp -iBg -sze -pya -tgS -sze -wkk -vVw -vVw -oAp -vFE -tPd -sTp -jFf -tKm -xli -dDB -dDB -kev -kev -oxS -uLu -mVY -mVY -dDB -dDB +yaQ +cSA +cFY +iCo +aTg +xMl +acY +kAU +acw +aTg +aTg +aIr +sWq +nUd +arg +lir +iuR +blb +blb +dDB +iuR +iuR +ifH +ifH +iXi +tYX dDB dDB dDB @@ -100138,14 +102666,14 @@ cfk fkj dMg cyk -cEs -cKc -eAU +lPE +nfA +lio cRI dbs fkj wct -edU +vRg fKc eVz fTe @@ -100177,53 +102705,53 @@ hHF lGo jNO geE -tWL -oGJ +wCM +rJZ wQB -ycx -xeO -lMH -cnu -jVM +eIO +xND +ind jVM -xCz -rpg +aAp +oQA +oQA +kLs jVM -dNI -vLO -piZ -pyS -gal -vgc -wkk -qJa -vVw -rJT -sih -oup -sTp -wEp -tIA -xli -blb -blb -blb -qtl -qTM -qTM -vnb -blb -blb -blb -blb -blb -blb -blb -blb -blb -blb +dOt +jtj +xmt +dGC +aTg +xZl +wYh +wfh +wlV +cBB +aTg +aIr +bIN +nUd +arg +kUL +tYX +dDB blb +dDB +tYX +auF +trB +trB +waD +dDB +dDB +dDB +dDB +dDB +dDB blb +dDB +dDB +dDB blb dDB dDB @@ -100434,50 +102962,50 @@ oUd lun wNv mzM -tWL -kyZ +wCM +woK kJR +qcB jVM jVM jVM +jHH jVM -jVM -xhQ -nLN -cyh -jVM -jVM -jVM -jVM -jVM -jVM -jVM -qrI -qKE -riM -qKE -qKE -qKE -sTp -vQA -tIL +hfE +nXQ +sON +acc +waY +xmt +cME +aTg +dYu +aTg +aTg +aTg +dYu +dLz +xmt +wUc +nUd +gYX +kUL tYX dDB +blb dDB -dDB -kev -uPO -mjB -mVY -dDB -dDB -dDB +tYX +trB +trB +trB +waD dDB dDB dDB dDB dDB dDB +blb dDB dDB dDB @@ -100691,53 +103219,53 @@ soO gfs ivl mzM -tWL -uFG -vpI -jVM -vML -atM -mdj +wCM +ePk +tgx jVM -uPd -jVM -nKX -jVM -fSq -hwN -kXO -pyY -pSm -jVM -qrN -ttA -ttA -ttA -ttA -sBz -xvW -tqz -tIL +ltt +hgO +enC +oNG +eoM +wkC +tra +sON +tGq +tGq +xmt +xmt +ecj +fGk +aPo +nPY +lfH +elb +xmt +xmt +xli +ylM +gYX +pBA +iuR tYX -dDB -dDB -dDB -kev -wmY -uPO -mVY -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB +tYX +tYX +iuR +iNF +xuJ +iXi +waD +blb +blb +blb +blb +blb +blb +blb +blb +blb +blb blb dDB dDB @@ -100948,42 +103476,42 @@ xSx jxC ufb xCl -tYQ -kzu +cYY +wNs wiF jVM jVM -lMK -jVM jVM -xjq jVM -tII -oeF -kGS -kGS -kGS -kSV -pSr -jVM -qsA -uCJ -rjb -rKL -siv -sED -rNq -tmV -tIL -tYX -blb -blb -blb -qtl -qTM -qTM -vnb -dDB +xOP +eoM +fEv +het +fcO +bMk +hhW +kge +vkh +cPq +dJv +kHy +rGc +rGc +rGc +oeb +tEy +wRc +nUd +gYX +aww +xuJ +trB +trB +hML +deR +diP +efm +waD dDB dDB dDB @@ -101166,14 +103694,14 @@ cfk fkj dPa dZZ -cFz -etD -eDl +eTn +xCW +qHb eND dbz fkj wct -fEV +bGq eBN fQY fTh @@ -101206,44 +103734,44 @@ jye jOs mAv khS -dIN +aqG mwN jVM -vMV -jbL -xkS -pTC -wLJ -jVM -ygd -jVM -mBy -wzj -kGS -qCC +wRW +gWr +cTM +brl jVM -jVM -cmH -qKN -wLA -rNA -siP -qTL -jme -tqK -tIL +utU +wtW +sON +asw +rrX +utj +ieC +lFx +eqC +vwn +oeQ +enS +oeQ +bRp +dZs +vkh +rLU +gYX +aww +vtX +gHg +trB +trB +kHX +kHX +dTg tYX dDB dDB dDB -qtl -qTM -qTM -vnb -dDB -dDB -dDB -dDB dDB dDB dDB @@ -101427,7 +103955,7 @@ wct wct wct eNU -qEk +lqP wct gOm gOm @@ -101463,41 +103991,41 @@ quU quU tsF ubK -uFG -gih -lca -oEN -lMN +lhU +pvf +gOH +uZH +cGb jVM -hcB -mAn +bPV jVM jVM jVM jVM -wzj -omU -uAH -jVM -wnK -clc -asn -rkb -rOm -skY -sED -sXk -wEp -tKC -xli -dDB -dDB -dDB -qtl -qTM -qTM +vkh +xzS +mKh vnb -dDB +fGp +dUh +aml +jnF +oDM +jnF +aml +pzF +vkh +nUd +gYX +hBU +xcK +iXi +waD +waD +iXi +waD +waD +iuR dDB dDB dDB @@ -101720,41 +104248,41 @@ liG rRQ tsF kiB -nBL +izP wNW jVM jVM jVM jVM -jVM -qhp -sfX -nLN -rpy -jVM -jVM -jVM -jVM -jVM -nAi -uio -xOB -xOB -xOB -xOB -sFJ -xvW -tkp -tMi -xli -urv -yeh -blb -kev -fUj -uPO -mVY -blb +wDz +bPV +bPV +aQH +mVL +mHo +lSq +crU +haI +aWC +mIl +aml +qHE +qHE +hQG +xxp +pzF +vHW +nUd +gYX +aww +nsz +iuR +dDB +dDB +dDB +dDB +dDB +dDB blb qIf qIf @@ -101946,7 +104474,7 @@ xvT itb eip eFk -eYn +gPm xvT fDk gcL @@ -101977,40 +104505,40 @@ jyu ezx tsF vIJ -kzx +nHU twJ tgl iSi fLn -mLU jVM jVM jVM jVM -pXU -mAn jVM -waS -pzn -xvW -xvW -qtW -rRn -rRn -rRn -rRn -sIh -xvW -gXD -tMj -yeh -uyp -yeh -urv -mVY -sDT -wHX -mVY +njV +mHo +hVH +tTh +aml +jCT +dUh +dhF +iYc +lFN +aml +dhF +pzF +vHW +afr +gYX +vNm +fZZ +tYX +dDB +dDB +dDB +dDB +dDB dDB dDB qIf @@ -102234,40 +104762,40 @@ uff mak tsF qlV -uFG +ePk tmQ tgl lut pbd +pyS +vFa wtv -hxp -qhs -qIg -jVM -jVM -uPd +qjf jVM -vsq -pbZ -pTl -xvW -qtW -xzp -rOx -rOx -rOx -sIh -xvW -lWb -mpO -lmo -vcP -uPs -fHb -npY -qTM -qTM -qtl +njV +mHo +jLC +jkv +vVH +obw +dUh +aml +dBm +oeQ +oeQ +aml +pzF +vHW +nUd +gYX +aww +bje +tYX +dDB +dDB +dDB +dDB +dDB dDB dDB qIf @@ -102307,7 +104835,7 @@ nFD ljP pKS bkY -lVP +lgQ mbq wgL hgF @@ -102491,40 +105019,40 @@ rth mbp tsF kpF -uFG +ePk wQB tgl lvA nyy diK -rTt -xkW -nAO -yiv -ofk -cyh +lvW +uCQ +duq jVM -naI -ogu -xrz -xvW -qui -vqp -rkF -rQt -uEg -tNc -xvW -hlo -tMy -tZG -aiE -waw -uNn -vOh -qTM -qTM -qtl +njV +vkh +dZW +jHt +aCN +mtW +dUh +aml +tob +lzL +jnF +aml +qTf +vkh +huB +jLp +nOQ +sMt +tYX +dDB +dDB +dDB +dDB +dDB dDB dDB qIf @@ -102748,40 +105276,40 @@ jyG meu tsF lAS -uFG +ePk wQB tgl -wHO -pbG +hhh +anE wvv -rTt -vGe -crV +xvK +dCz +qSb jVM -rUS -rOb -htI -awN -sQA -xrz -xvW -quo -uEg -pCX -vqp -slv -bOV -xvW -twf -tMR -tZV -xtZ -yeh -urv -kev -qtl -qtl -qtl +njV +vkh +vkh +nnq +wet +dJv +xPU +tYg +itT +uZN +hQG +bLX +yle +wRc +nUd +lDu +dFq +fGT +tYX +dDB +dDB +dDB +dDB +dDB dDB dDB qIf @@ -103005,35 +105533,35 @@ lGK mfP tsF lPo -kzu +wNs wQB tgl tgl +xHD tgl -tgl -wRD -hRc -hoU -jVM -rOb -rhD +uIP +dsK +pHY jVM -sZn -pzX -vII -ygB -xNL -eQv -qmf -vrv -pFr -uCS -xvW -twj -mpO -ubf -oEr -yeh +njV +xiJ +vkh +vmb +pbN +fog +bwP +ixg +vbw +hFJ +hFJ +pDf +otU +wRc +nUd +lDu +cRy +aOh +xli blb blb blb @@ -103060,8 +105588,8 @@ llC rbO llP xQa -pqa -pqa +xep +xep tFQ vLc xrC @@ -103262,35 +105790,35 @@ lGK jOS tsF vrn -uFG +ePk smf aCO -lwa +iLA pcK tgl -mtV +qDd xHD xHD jVM -jiN -jVM -jVM -xvW -xvW -xvW -xvW -xvW -xvW -xvW -xvW -xvW -xvW -sXo -twl -mpO -amI -uAb -yeh +qhy +vkh +vkh +vkh +kCw +vkh +wRc +vkh +bQh +vHW +vHW +vkh +wRc +vkh +jeO +iRQ +fjz +axd +xli qir qir qir @@ -103519,35 +106047,35 @@ lGK mgt tsF kiO -nDV +nCt wNW +coC +pVj +pVj +cRL +ose vpI +aBB +mku +krf +iUY vpI -vpI -pwO -sfK -vpI -vpI -nMW -tEL -rQN -pwO rZq -vpI +fSm pBu -vpI -vpI -oXZ -rQN -vpI -pwO -sIG -vpI -xDs -mpO -ucr -xIK -uQC +khY +bbI +knN +khY +khY +khY +lmz +hvO +diP +qkh +sFd +jXJ +mxS jeW pvY xry @@ -103555,7 +106083,7 @@ ppu wSF qir kIS -wfU +lBq csw tlX rVH @@ -103574,8 +106102,8 @@ tCZ gUk rgK geu -xza -xza +xuF +xuF xSO iTR pox @@ -103776,43 +106304,43 @@ iaw uoB tsF kjg -oXV -kJX -xIw -vrH -xIw -xIw -fqL -dRh +iZO +awC +bIc +xPJ +pbO +pbO +icN +mZd sDZ -vnK -uVo +pca +iWL oBA mut -pjA +ubd mut -iEE -xIw -xIw -xIw -rlh -vrH -xIw -vYt -xyJ -wFl -sFH -vuL -xIK -ygu -mHb -ona -xEC -ona -uXB +otJ +pbO +dcY +hKd +mlD +xPJ +pbO +aYD +xBg +fBe +uft +huj +fIj +uhM +qZy +vCO +lKB +vCO +ile wMZ vnN -ybL +aEo pOm lwk gUn @@ -104032,10 +106560,10 @@ gcz jyM uoB jZn -mxN +baJ rji vAw -nvE +ceS nvE nvE nvE @@ -104045,31 +106573,31 @@ vCZ uQi nvE oCx -nvE +crx rFn nvE -eWA -kfM -fKO -hvM -hvM -hvM -hvM -hvM -hvM -ouf -wZE -ucH -xIM -yfj +tPM +uBR +cRc +aPK +aPK +aPK +aPK +mcS +uep +dRT +lvM +nNz +inU +hqG bcv kov viy efB -kov +lJg xyh xRI -ycZ +lJg hVh elM pYr @@ -104290,9 +106818,9 @@ jzo uoB uoB wSZ -dRf -xqC -bOp +moj +xpL +nJj dyF lNp xRA @@ -104305,27 +106833,27 @@ qUt qUt qUt qUt -tZd +fNZ qUt qUt xJB -vYy +dpL vrO vYy -vYy +xJB xJB xJB wZO xpU -uAw -yga -rbo -vCO -wnO -jpK -vCO -lhg -xSp +uBY +ygu +mHb +ona +nkW +riS +ihd +gMM +gBg dUC qTK vnF @@ -104562,8 +107090,8 @@ qUt uZK ptl ptl -dSK -gZo +wrZ +mvd qUt rnc ugH @@ -104820,8 +107348,8 @@ qUt aIb qUt qUt -aGH -uiW +uLD +vmr qLt vrY vrY @@ -105828,7 +108356,7 @@ xRH gcz wSZ jdp -gRG +bVs wSZ nNj ujq @@ -106353,7 +108881,7 @@ oyn fSU fRV skd -skd +ciV rrp wqj aTb @@ -107133,7 +109661,7 @@ knO adh hbz vIC -gfJ +hdZ wua wua wua @@ -107390,7 +109918,7 @@ wqj qUt qUt qUt -gfJ +hdZ qUt dWW tnb @@ -107401,13 +109929,13 @@ tnb qyY xvh xpU -xMr -swB -vve -vSw -wrF -tTs -lvv +qGp +cGD +epv +iub +hCu +dcg +ffS xJw xJw xJw @@ -107646,8 +110174,8 @@ gmf qva nqf qUt -tnb -tnb +tNs +tNs qUt uEP gfJ @@ -107903,7 +110431,7 @@ cPp wqj wrx qUt -gfJ +hdZ qUt qUt qUt @@ -108160,7 +110688,7 @@ eeJ eeJ eeJ qUt -gfJ +hdZ tnb tnb tnb @@ -108409,7 +110937,7 @@ sRL eeJ oYj jvQ -eul +hPL eeJ egJ yfF @@ -108417,7 +110945,7 @@ gMq duT gtk qUt -gfJ +hdZ tnb qUt tkq @@ -108674,12 +111202,12 @@ rsZ jQB kAJ qUt -umM tNs -umM -qNz -umM -rSj +tNs +tNs +tNs +tNs +rbW spP bRt wsb @@ -109188,12 +111716,12 @@ opN eeJ eeJ qUt -uiW +xrc qUt -htt -wvP -jQg -vuo +odD +mtc +deS +wua sqA sJi wty @@ -109443,14 +111971,14 @@ ohr rqD opN xEM -yaL -xeY -iLq -pxg -tZU -jNJ -aoy -vuo +qUt +eqG +mHh +nNA +rHY +mIP +skN +wua wWX blf unf @@ -109700,14 +112228,14 @@ fvj uDz jXB nYs -yaL -gYX -gYX -jRI -qhi -tFg -lRD -vuo +qUt +ffi +mHh +uqq +qOG +pXk +cCv +wua wtX wtX wtX @@ -109957,14 +112485,14 @@ fcU rem xvM uDE -yaL -oQD -oWp -dEV -rrV -rMM -jLh -yaL +qUt +lhi +brw +mnl +uOx +llY +rdA +qUt sqY ata taZ @@ -110214,14 +112742,14 @@ pzd iIs axw shD -yaL -mzc -mzc -tNS -yaL -qTP -yaL -yaL +qUt +qnb +qnb +oJx +qUt +izo +qUt +qUt srA lrH aaH @@ -111034,7 +113562,7 @@ ldq qdR naN vOr -mdG +fGF uLj oig oig @@ -113057,7 +115585,7 @@ tPm fTM bAs ykL -vAo +lJB oah wtt fDQ @@ -114056,15 +116584,15 @@ fcW jVY cvk nFW -pQO -hDm -jpp -trc -rBK -jpp -wsX -cij -pzd +uvG +siN +ngd +nuV +sue +ngd +cUB +baO +pOT gMz rem rQA @@ -114313,15 +116841,15 @@ xUy rEd aWb nFW -beR -rvH -ucw -dzq -jpp -nsH -cIC -cij -pzd +pTA +hEw +bWp +gjn +ngd +ibF +diG +baO +pOT ycQ rem nvB @@ -114570,13 +117098,13 @@ eav eav nFW nFW -pzd -pzd -bED -vjc -ncs -mKs -pzd +pOT +pOT +tlJ +cYp +jTC +eOX +pOT xQJ xQJ xQJ @@ -114828,12 +117356,12 @@ tLj wOp fsq iRl -pzd -pzd -eYT -pzd -pzd -pzd +pOT +pOT +pTk +pOT +pOT +pOT xqs xMO xQJ @@ -115104,7 +117632,7 @@ cZx vMC apF vfk -rWr +fTF tLn pzK tbD @@ -115845,267 +118373,267 @@ aJq aJq aJq aJq -aJq -aJq -wOp -rds -hcT -wOp -wny -bua -wOp -vZK -dTd -ghX -kgw -xvV -xQJ -xQJ -bfE -rIo -xQJ -ohN -oUC -oPM -sDj -uqw -uqw -uqw -uqw -vMC -eJm -noe -hYK -pNO -iyt -vMC -wMP -uUf -biM -ylo -ylq -cRn -gsh -euR -xIk -xIk -xIk -xIk -xIk -euR -hok -oOh -aXI -qHY -wML -wMH -wMH -aSy -aSy -aFY -pWZ -qZe -xvF -eqz -cLS -hOl -eWI -eWI -wNZ -idF -eWI -gpf -ycE -ycE -ycE -ycE -ycE -ycE -ycE -cOW -aLr -tqX -kfy -svs -svs -svs -svs -grm -svs -jUl -svs -grm -svs -svs -blb -blb -blb -fDS -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -"} -(162,1,1) = {" -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -dDB -aJq -aJq -aJq -aJq +aJq +aJq wOp +rds +hcT wOp +wny +bua +wOp +vZK +dTd +ghX +kgw +xvV +xQJ +xQJ +bfE +rIo +xQJ +ohN +oUC +oPM +sDj +uqw +uqw +uqw +uqw +vMC +eJm +noe +hYK +pNO +iyt +vMC +wMP +uUf +biM +ylo +ylq +cRn +gsh +euR +xIk +xIk +xIk +xIk +xIk +euR +hok +oOh +aXI +qHY +wML +wMH +wMH +aSy +aSy +aFY +pWZ +qZe +xvF +eqz +cLS +hOl +eWI +eWI +wNZ +idF +eWI +gpf +ycE +ycE +ycE +ycE +ycE +ycE +ycE +cOW +aLr +tqX +kfy +svs +svs +svs +svs +grm +svs +jUl +svs +grm +svs +svs +blb +blb +blb +fDS +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +"} +(162,1,1) = {" +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +aJq +aJq +aJq +aJq +wOp +gRH wOp wOp nWk @@ -117189,7 +119717,7 @@ sYa yfs hPU xKX -wzU +fKN xMc xKX jsa @@ -117445,7 +119973,7 @@ uEw sYa cqn xTR -foI +ajx gJS lIL gJS @@ -117700,7 +120228,7 @@ cVQ rOX qBd sYa -rtI +btJ dXU aSy deQ @@ -118216,11 +120744,11 @@ ugX sYa sYa sYa -xlP -xlP -fSg -xlP -xlP +hVd +hVd +sJy +hVd +hVd eWI eWI eWI @@ -118473,11 +121001,11 @@ uWl nbF cVz sYa -rQw -xlP -ybF -xlP -tGp +bJr +hVd +uzg +hVd +gds eWI asc usJ @@ -118730,11 +121258,11 @@ saY qbo hnP sYa -xlP -xlP -jMC -xlP -xlP +hVd +hVd +axo +hVd +hVd eWI eKf tNT @@ -118948,7 +121476,7 @@ rsL mIh rsL xTO -ewo +jvT ydH xPj wJL @@ -118987,11 +121515,11 @@ bXG jlN duc sYa -axN -xlP -gWf -xlP -xlP +dkx +hVd +njM +hVd +hVd eWI fxN clb @@ -119244,11 +121772,11 @@ pXQ kwA xaR sYa -pxW -xlP -gpy -xlP -mYT +bAi +hVd +lzO +hVd +xFH eWI eWI eWI @@ -119501,11 +122029,11 @@ bqR ryy boW sYa -mwJ -xlP -ygf -xlP -fvH +hSX +hVd +dIr +hVd +fYS eWI blb blb @@ -121046,7 +123574,7 @@ wos sXw vVX sTK -tUD +hGr vbQ iVE ksg @@ -121284,7 +123812,7 @@ cyx xok upe xok -cWT +avr nuo eQt eQt @@ -121817,7 +124345,7 @@ wos udv tSq mvo -izw +hGr bFw ulK cdn @@ -124374,10 +126902,10 @@ oZz xZJ aVT enG -enG -enG -enG -pHS +kUa +kUa +kUa +vIz xpR kQt nhl @@ -124631,7 +127159,7 @@ nWh xEn nWh xnR -ebo +aLC wLZ xwn cns @@ -125653,7 +128181,7 @@ dDB dDB blb yeZ -ccH +iyr dEL wVg nzL @@ -126167,7 +128695,7 @@ blb blb nzL yeZ -xQx +iHv lDw fKd lDw @@ -134361,7 +136889,7 @@ dDB dDB dDB dDB -wPf +dDB dDB dDB dDB @@ -134425,7 +136953,7 @@ dDB dDB dDB dDB -akZ +aJq aJq aJq tYT diff --git a/_maps/map_files/CTF/downtown.dmm b/_maps/map_files/CTF/downtown.dmm index c61910375820d..fd11025e943c8 100644 --- a/_maps/map_files/CTF/downtown.dmm +++ b/_maps/map_files/CTF/downtown.dmm @@ -1831,7 +1831,6 @@ "Ok" = ( /obj/structure/fluff/bus/passable{ icon_state = "bottomdoor"; - layer = 3; resistance_flags = 64 }, /obj/effect/turf_decal/siding/yellow, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 84d42a3ec31ca..84992a6944d86 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -859,6 +859,17 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/security/prison/visit) +"ale" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/east{ + pixel_x = 3 + }, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "alG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2216,6 +2227,18 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/command/heads_quarters/qm) +"aBf" = ( +/obj/structure/table/glass, +/obj/item/folder/blue{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/folder/white, +/obj/item/pen, +/obj/machinery/computer/security/telescreen/cmo/directional/south, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/cmo) "aBn" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -2689,15 +2712,15 @@ pixel_x = -2; pixel_y = 3 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = 2; pixel_y = 2 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ +/obj/item/cigarette/cigar/cohiba{ pixel_x = 3; pixel_y = 1 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = 4 }, /obj/effect/turf_decal/tile/blue/half/contrasted{ @@ -3001,10 +3024,6 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"aKU" = ( -/obj/structure/sign/warning/electric_shock/directional/west, -/turf/open/space/basic, -/area/space) "aLv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3025,6 +3044,17 @@ dir = 4 }, /area/station/commons/fitness/recreation) +"aLM" = ( +/obj/machinery/computer/security/telescreen/prison/directional/east, +/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/red{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "aLN" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 4 @@ -4439,14 +4469,6 @@ /obj/effect/mapping_helpers/airlock/access/all/command/hop, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"beI" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/engineering/main) "beP" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -5360,10 +5382,6 @@ }, /turf/open/floor/iron/checker, /area/station/service/theater/abandoned) -"bpz" = ( -/obj/effect/turf_decal/box/red, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/xenobiology) "bpM" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /obj/effect/landmark/event_spawn, @@ -5977,18 +5995,6 @@ }, /turf/open/floor/wood, /area/station/engineering/break_room) -"byI" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron, -/area/station/science/lab) "byP" = ( /obj/machinery/firealarm/directional/east, /obj/machinery/camera{ @@ -6175,15 +6181,15 @@ "bAS" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/clothing/mask/cigarette/cigar/havana{ +/obj/item/cigarette/cigar/havana{ pixel_x = 2; pixel_y = 2 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ +/obj/item/cigarette/cigar/cohiba{ pixel_x = 6; pixel_y = 2 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = -2; pixel_y = 2 }, @@ -6660,6 +6666,17 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/herringbone, /area/station/cargo/miningoffice) +"bFD" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "bFS" = ( /obj/effect/turf_decal/trimline/blue/filled/warning, /obj/structure/cable, @@ -6874,6 +6891,14 @@ /obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, /turf/open/floor/iron, /area/station/maintenance/fore) +"bHr" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/engineering/main) "bHA" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch{ @@ -7247,13 +7272,11 @@ /obj/effect/turf_decal/bot, /obj/machinery/button/door/directional/east{ id = "cargounload"; - layer = 4; name = "Loading Doors"; pixel_y = 6 }, /obj/machinery/button/door/directional/east{ id = "cargoload"; - layer = 4; name = "Loading Doors"; pixel_y = -6 }, @@ -8017,6 +8040,20 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/large, /area/station/security/checkpoint/escape) +"bUN" = ( +/obj/structure/table, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/cell_charger, +/obj/item/screwdriver{ + pixel_y = -1 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "bUQ" = ( /obj/structure/chair/stool/directional/west, /turf/open/floor/iron, @@ -8769,6 +8806,16 @@ "cfu" = ( /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai_upload) +"cfx" = ( +/obj/structure/cable, +/obj/machinery/computer/station_alert{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/computer/security/telescreen/ce/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "cfy" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -8808,15 +8855,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/hallway/secondary/construction) -"cfW" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "cgf" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -9390,6 +9428,11 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"cmy" = ( +/obj/structure/cable, +/obj/machinery/computer/security/telescreen/prison/directional/east, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "cmE" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/blue/half/contrasted{ @@ -11713,17 +11756,6 @@ }, /turf/open/floor/iron/large, /area/station/science/xenobiology) -"cQT" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - dir = 4; - network = list("xeno") - }, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/xenobiology) "cQZ" = ( /obj/structure/sign/warning/chem_diamond/directional/west, /obj/machinery/chem_dispenser, @@ -12403,6 +12435,11 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/bar) +"dai" = ( +/obj/effect/turf_decal/box/red, +/obj/machinery/vatgrower, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/xenobiology) "dan" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -13153,7 +13190,7 @@ "djY" = ( /obj/structure/sign/warning/secure_area/directional/east, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "dka" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -13396,10 +13433,6 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron/dark, /area/station/security/brig) -"dmU" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) "dnd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -13543,17 +13576,6 @@ /obj/structure/sign/poster/random/directional/south, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) -"dpR" = ( -/obj/structure/rack, -/obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/east{ - pixel_x = 3 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "dqc" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -13586,19 +13608,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"dqs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/computer/security/telescreen/interrogation{ - dir = 4; - pixel_x = -32 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/brig) "dqv" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -13903,7 +13912,7 @@ /area/station/commons/vacant_room/office) "dtk" = ( /obj/structure/table/wood/poker, -/obj/item/clothing/mask/cigarette/pipe, +/obj/item/cigarette/pipe, /turf/open/floor/carpet/green, /area/station/commons/lounge) "dtn" = ( @@ -14659,6 +14668,10 @@ }, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"dDB" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "dDT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/trinary/filter{ @@ -15946,7 +15959,7 @@ pixel_y = -32 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "dUb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17078,15 +17091,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/virology) -"ejX" = ( -/obj/machinery/computer/security/telescreen/vault{ - pixel_y = 30 - }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/qm) "ekF" = ( /obj/structure/sign/poster/official/random/directional/south, /obj/machinery/light/directional/south, @@ -17552,9 +17556,8 @@ network = list("ss13","xeno","rd") }, /obj/machinery/status_display/ai/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "eqU" = ( /turf/open/space, @@ -18040,14 +18043,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"ewl" = ( -/obj/structure/table, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) "ewQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 4 @@ -19106,10 +19101,6 @@ /turf/open/floor/iron, /area/station/security/checkpoint/escape) "eKV" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Primary Restroom"; - name = "restroom camera" - }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -19535,14 +19526,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/engine, /area/station/engineering/supermatter) -"ePX" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "ePZ" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/north, @@ -20759,7 +20742,9 @@ /turf/open/floor/iron/white, /area/station/science/research) "fff" = ( -/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/power/apc/auto_name/directional/north{ + areastring = "/area/station/science/ordnance/burnchamber" + }, /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/layer_manifold/supply/visible{ @@ -21349,6 +21334,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/abandoned_gambling_den) +"fmw" = ( +/obj/machinery/cell_charger, +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/ai_monitored/turret_protected/aisat_interior) "fmB" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/south, @@ -21462,21 +21456,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/bridge) -"fnC" = ( -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/multitool{ - pixel_x = 8 - }, -/obj/structure/table, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) "fnD" = ( /obj/structure/table, /obj/machinery/requests_console/directional/north{ @@ -22371,6 +22350,13 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) +"fzK" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) "fzV" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -22657,44 +22643,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) -"fDT" = ( -/obj/item/stack/cable_coil, -/obj/item/bodypart/arm/right/robot{ - pixel_x = 3 - }, -/obj/item/bodypart/arm/left/robot{ - pixel_x = -3 - }, -/obj/structure/table, -/obj/item/radio/intercom/directional/west, -/obj/item/assembly/prox_sensor{ - pixel_x = 5 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = 5 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = 5 - }, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 3; - pixel_y = 16 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -3; - pixel_y = 16 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_y = 15 - }, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "fEd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/warning/vacuum/directional/west, @@ -25822,12 +25770,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) -"gqG" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/scrubber, -/obj/structure/sign/poster/official/there_is_no_gas_giant/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/engineering/atmos/project) "gqH" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; @@ -26215,22 +26157,6 @@ }, /turf/open/floor/iron, /area/station/service/lawoffice) -"guI" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the Engine."; - dir = 4; - layer = 4; - name = "Engine Monitor"; - network = list("engine"); - pixel_x = -24 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/computer/atmos_control/nocontrol/master{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/storage/gas) "guK" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -26844,7 +26770,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/exit) "gCt" = ( -/turf/open/floor/circuit/green, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "gCB" = ( /obj/structure/cable, @@ -27946,6 +27872,7 @@ dir = 6 }, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance) "gQH" = ( @@ -28033,6 +27960,16 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/engineering/main) +"gRN" = ( +/obj/structure/cable, +/obj/machinery/computer/security/telescreen/prison/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "gRU" = ( /obj/structure/table/reinforced, /obj/machinery/button/ignition{ @@ -28222,6 +28159,25 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron, /area/station/cargo/storage) +"gUt" = ( +/obj/structure/table/reinforced, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/effect/decal/cleanable/dirt, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/effect/turf_decal/bot, +/obj/item/clothing/gloves/color/yellow, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron, +/area/station/engineering/storage) "gUy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/table, @@ -28427,14 +28383,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/gateway) -"gWT" = ( -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/table, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/circuits) "gWV" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/medical/morgue, @@ -28663,7 +28611,7 @@ "haF" = ( /obj/structure/sign/warning/secure_area/directional/west, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "haG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -28889,6 +28837,16 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/white/smooth_large, /area/station/command/heads_quarters/cmo) +"hdI" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/box, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "hdK" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30038,13 +29996,6 @@ }, /turf/open/floor/iron/white, /area/station/science/robotics/lab) -"hub" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "hup" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -30257,15 +30208,6 @@ }, /turf/open/floor/iron, /area/station/commons/storage/tools) -"hwJ" = ( -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil, -/obj/item/electronics/airalarm, -/obj/item/electronics/firealarm, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/port) "hwK" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -30798,17 +30740,6 @@ }, /turf/open/floor/carpet/blue, /area/station/commons/vacant_room/office) -"hFx" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons and the AI's satellite from the safety of his office."; - name = "Research Monitor"; - network = list("rd","minisat"); - pixel_y = 2 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "hFP" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/white/corner{ @@ -31818,13 +31749,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/service/abandoned_gambling_den) -"hSF" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/electrical) "hST" = ( /obj/structure/destructible/cult/item_dispenser/archives/library, /obj/effect/decal/cleanable/cobweb, @@ -32006,20 +31930,6 @@ /obj/structure/sign/warning/no_smoking, /turf/closed/wall, /area/station/engineering/atmos/storage) -"hUZ" = ( -/obj/structure/table, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/cell_charger, -/obj/item/screwdriver{ - pixel_y = -1 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "hVi" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -32343,11 +32253,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark, /area/station/medical/chemistry) -"hZb" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "hZl" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/morgue{ @@ -33095,6 +33000,13 @@ }, /turf/open/floor/plating, /area/station/medical/virology) +"iij" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron, +/area/station/command/teleporter) "iiy" = ( /obj/structure/easel, /turf/open/floor/iron, @@ -33699,6 +33611,7 @@ /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral/full, /obj/machinery/holopad, +/obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/science/ordnance) "iqj" = ( @@ -34844,6 +34757,11 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/secondary/exit) +"iFt" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "iFD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, @@ -35147,8 +35065,7 @@ /area/station/hallway/secondary/exit/departure_lounge) "iJw" = ( /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "iJE" = ( /obj/structure/table/wood/fancy, @@ -35621,6 +35538,13 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron, /area/station/engineering/supermatter/room) +"iRd" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/science/xenobiology) "iRf" = ( /obj/machinery/power/turbine/turbine_outlet, /turf/open/floor/engine, @@ -36040,6 +35964,13 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron, /area/station/security/checkpoint/supply) +"iWz" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/sign/poster/contraband/self_ai_liberation/directional/north, +/turf/open/floor/iron, +/area/station/science/research/abandoned) "iWA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -36211,9 +36142,7 @@ /area/station/commons/toilet/locker) "iYp" = ( /obj/structure/cable, -/obj/machinery/nuclearbomb/selfdestruct{ - layer = 2 - }, +/obj/machinery/nuclearbomb/selfdestruct, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) @@ -36318,25 +36247,6 @@ }, /turf/open/floor/iron, /area/station/security/execution/transfer) -"iZH" = ( -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/effect/turf_decal/bot, -/obj/item/clothing/gloves/color/yellow, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/station/engineering/storage) "iZN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -36497,16 +36407,6 @@ /obj/item/pen, /turf/open/floor/iron, /area/station/medical/chemistry) -"jbn" = ( -/obj/structure/cable, -/obj/machinery/computer/security/telescreen{ - dir = 8; - name = "Prisoner Telescreen"; - network = list("prison"); - pixel_x = 27 - }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "jbr" = ( /obj/structure/curtain/cloth/fancy/mechanical/start_closed{ desc = "A set of curtains serving as a fancy theater backdrop. They can only be opened by a button."; @@ -36598,17 +36498,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"jce" = ( -/obj/structure/table/wood, -/obj/machinery/light/directional/south, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/obj/machinery/computer/security/telescreen/vault{ - dir = 8; - pixel_x = 26 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) "jcg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, @@ -38086,6 +37975,13 @@ "jtC" = ( /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) +"jtD" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage) "jtV" = ( /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, @@ -38279,18 +38175,6 @@ }, /turf/open/floor/iron, /area/station/engineering/main) -"jwW" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/break_room) "jxd" = ( /obj/docking_port/stationary/mining_home/common, /turf/open/space/basic, @@ -38309,6 +38193,14 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"jxj" = ( +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) "jxm" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40257,9 +40149,9 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "jUT" = ( -/obj/structure/lattice, +/obj/structure/sign/warning/electric_shock/directional/west, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "jUU" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -41255,15 +41147,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/science) -"khr" = ( -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) "khB" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -41504,6 +41387,10 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/treatment_center) +"kko" = ( +/obj/effect/spawner/random/structure/twelve_percent_spirit_board, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) "kkq" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42836,6 +42723,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"kEm" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/pipe_scrubber, +/obj/structure/sign/poster/official/there_is_no_gas_giant/directional/east, +/turf/open/floor/iron/textured_large, +/area/station/engineering/atmos/project) "kEn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44639,6 +44532,8 @@ "lcP" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance) "lcT" = ( @@ -45483,6 +45378,22 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/department/chapel) +"lnk" = ( +/obj/structure/table/reinforced, +/obj/item/stack/package_wrap, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "lnm" = ( /obj/structure/closet/secure_closet/captains, /obj/effect/turf_decal/stripes/line{ @@ -45665,18 +45576,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"lpC" = ( -/obj/machinery/light_switch/directional/east, -/obj/structure/table, -/obj/item/crowbar, -/obj/item/wrench, -/obj/item/clothing/mask/gas, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron, -/area/station/science/xenobiology) "lpG" = ( /obj/structure/chair/office{ dir = 1 @@ -47709,6 +47608,7 @@ /obj/machinery/meter/layer2, /obj/structure/sign/warning/no_smoking/directional/east, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance) "lOA" = ( @@ -47991,17 +47891,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"lTh" = ( -/obj/structure/table/wood, -/obj/machinery/computer/security/telescreen/interrogation{ - dir = 1 - }, -/obj/item/pen, -/obj/effect/turf_decal/siding/dark_red{ - dir = 4 - }, -/turf/open/floor/iron/checker, -/area/station/security/interrogation) "lTt" = ( /obj/machinery/door/window/brigdoor/right/directional/west{ name = "Shooting Range"; @@ -48571,13 +48460,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"mcm" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/sign/poster/contraband/self_ai_liberation/directional/north, -/turf/open/floor/iron, -/area/station/science/research/abandoned) "mcp" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ @@ -48718,6 +48600,19 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"mdG" = ( +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/wrench, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/lightreplacer, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage) "mdM" = ( /obj/machinery/computer/records/medical{ dir = 1 @@ -49269,17 +49164,6 @@ "mlE" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/command/storage/eva) -"mlR" = ( -/obj/structure/table/reinforced, -/obj/item/folder/white, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "mlW" = ( /obj/structure/sign/nanotrasen{ pixel_y = 32 @@ -49703,6 +49587,13 @@ }, /turf/open/floor/wood/tile, /area/station/service/library/artgallery) +"msO" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "msR" = ( /obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 @@ -50245,6 +50136,17 @@ /obj/effect/landmark/navigate_destination, /turf/open/floor/iron, /area/station/command/heads_quarters/cmo) +"myE" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/wiki/cytology{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/science/xenobiology) "myG" = ( /obj/effect/spawner/random/vending/colavend, /obj/machinery/light/directional/north, @@ -50501,6 +50403,13 @@ /obj/structure/sign/poster/official/safety_eye_protection/directional/south, /turf/open/floor/plating, /area/station/maintenance/space_hut/observatory) +"mCe" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/computer/security/telescreen/interrogation/directional/west, +/turf/open/floor/iron/checker, +/area/station/security/interrogation) "mCf" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -51280,6 +51189,13 @@ }, /turf/open/floor/iron, /area/station/cargo/office) +"mKn" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/box, +/obj/machinery/computer/security/telescreen/test_chamber/directional/north, +/turf/open/floor/iron, +/area/station/science/xenobiology) "mKp" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -51571,13 +51487,6 @@ }, /turf/open/floor/iron, /area/station/command/teleporter) -"mOS" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/effect/turf_decal/box, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/science/xenobiology) "mPg" = ( /obj/machinery/door/airlock/external{ name = "External Docking Port" @@ -52152,13 +52061,13 @@ "mXr" = ( /obj/structure/cable, /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ +/obj/item/cigarette/cigar/cohiba{ pixel_x = 3 }, -/obj/item/clothing/mask/cigarette/cigar/havana{ +/obj/item/cigarette/cigar/havana{ pixel_x = -3 }, -/obj/item/clothing/mask/cigarette/cigar, +/obj/item/cigarette/cigar, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/captain) "mXy" = ( @@ -52364,13 +52273,6 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/station/maintenance/fore) -"nba" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) "nbc" = ( /turf/open/floor/plating, /area/station/service/theater/abandoned) @@ -54261,11 +54163,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) -"nBC" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) "nBF" = ( /obj/structure/cable, /obj/machinery/computer/rdconsole, @@ -54509,7 +54406,7 @@ "nET" = ( /obj/structure/sign/warning/electric_shock/directional/east, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "nEZ" = ( /turf/closed/wall/r_wall, /area/station/security/mechbay) @@ -54655,13 +54552,13 @@ /area/station/commons/vacant_room/commissary) "nHc" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ +/obj/item/cigarette/cigar/cohiba{ pixel_x = 3 }, -/obj/item/clothing/mask/cigarette/cigar/havana{ +/obj/item/cigarette/cigar/havana{ pixel_x = -3 }, -/obj/item/clothing/mask/cigarette/cigar, +/obj/item/cigarette/cigar, /turf/open/floor/wood, /area/station/command/meeting_room/council) "nHd" = ( @@ -54708,13 +54605,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"nHx" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/checker, -/area/station/security/interrogation) "nHB" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -54899,6 +54789,14 @@ }, /turf/open/floor/iron/white, /area/station/medical/pharmacy) +"nJu" = ( +/obj/structure/table/wood, +/obj/item/pen, +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/turf/open/floor/iron/checker, +/area/station/security/interrogation) "nJx" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -55270,6 +55168,18 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"nOJ" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/break_room) "nOP" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral{ @@ -57173,15 +57083,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/department/chapel) -"onq" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/effect/turf_decal/box, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "onK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57975,7 +57876,7 @@ "ozA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/circuit/green, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "ozE" = ( /obj/effect/turf_decal/stripes/line, @@ -58367,7 +58268,7 @@ dir = 8 }, /turf/open/space, -/area/space/nearstation) +/area/space) "oFC" = ( /obj/machinery/airalarm/directional/west, /obj/structure/tank_dispenser, @@ -58415,9 +58316,7 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/delivery, -/obj/machinery/door/window/right/directional/east{ - layer = 3 - }, +/obj/machinery/door/window/right/directional/east, /turf/open/floor/iron, /area/station/maintenance/disposal) "oGr" = ( @@ -58527,6 +58426,19 @@ }, /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) +"oHO" = ( +/obj/machinery/light_switch/directional/east, +/obj/structure/table, +/obj/item/crowbar, +/obj/item/wrench, +/obj/item/clothing/mask/gas, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/light/cold/directional/north, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron, +/area/station/science/xenobiology) "oHQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59218,6 +59130,15 @@ }, /turf/open/floor/iron/white, /area/station/science/lobby) +"oRA" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "oRD" = ( /obj/structure/cable, /obj/item/circuitboard/computer/secure_data, @@ -59613,6 +59534,14 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/wood, /area/station/hallway/secondary/service) +"oXg" = ( +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/table, +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/circuits) "oXi" = ( /obj/effect/turf_decal/bot_white/left, /obj/effect/turf_decal/tile/neutral{ @@ -59977,19 +59906,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"pcS" = ( -/obj/structure/cable, -/obj/machinery/computer/station_alert{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/computer/security/telescreen/ce{ - dir = 4; - pixel_x = -30 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "pdb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/stripes/line, @@ -60923,6 +60839,8 @@ /obj/structure/table/reinforced, /obj/item/stack/sheet/iron/fifty, /obj/item/stack/sheet/glass/fifty, +/obj/item/circuitboard/machine/crystallizer, +/obj/item/stack/cable_coil/thirty, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) "pnV" = ( @@ -62125,6 +62043,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"pDx" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "pDz" = ( /obj/machinery/quantum_server, /obj/effect/turf_decal/bot/left, @@ -62448,6 +62376,12 @@ }, /turf/open/floor/iron/dark/corner, /area/station/maintenance/disposal/incinerator) +"pGv" = ( +/obj/item/kirbyplants/random, +/obj/machinery/light/small/directional/north, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) "pGw" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/random/directional/east, @@ -62465,6 +62399,14 @@ /obj/item/knife/kitchen, /turf/open/floor/iron, /area/station/service/kitchen/abandoned) +"pGz" = ( +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "pGC" = ( /obj/item/kirbyplants/random, /obj/machinery/light_switch/directional/north{ @@ -62628,21 +62570,6 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/iron, /area/station/maintenance/port/aft) -"pJo" = ( -/obj/structure/cable, -/obj/machinery/computer/security/telescreen{ - dir = 8; - name = "Prisoner Telescreen"; - network = list("prison"); - pixel_x = 27 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "pJp" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/power/apc/auto_name/directional/south, @@ -62674,7 +62601,7 @@ /area/station/science/lab) "pJz" = ( /obj/effect/decal/remains/xeno, -/turf/open/floor/circuit/green, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "pJM" = ( /obj/effect/turf_decal/stripes/line{ @@ -63233,17 +63160,6 @@ "pPl" = ( /turf/open/floor/wood/tile, /area/station/service/library/artgallery) -"pPs" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/ordnance{ - dir = 1; - pixel_y = -32 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "pPv" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -63692,6 +63608,14 @@ }, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/pumproom) +"pUq" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "pUw" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -64012,22 +63936,6 @@ /obj/machinery/coffeemaker/impressa, /turf/open/floor/wood, /area/station/engineering/break_room) -"pXI" = ( -/obj/machinery/computer/security/telescreen{ - dir = 8; - name = "Prisoner Telescreen"; - network = list("prison"); - pixel_x = 27 - }, -/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/red{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "pXK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -64126,7 +64034,7 @@ dir = 10 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "pZc" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64213,9 +64121,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/machinery/disposal/bin{ - layer = 3.21 - }, +/obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -65159,6 +65065,13 @@ }, /turf/open/floor/iron/cafeteria, /area/station/engineering/atmos) +"qnC" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "qnG" = ( /obj/machinery/airalarm/directional/south, /obj/structure/extinguisher_cabinet/directional/east, @@ -65360,6 +65273,14 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"qpI" = ( +/obj/structure/table, +/obj/item/binoculars, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/security/telescreen/ordnance/directional/west, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "qpQ" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/west, @@ -66049,14 +65970,6 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/engineering/main) -"qzK" = ( -/obj/structure/sign/warning/secure_area/directional/south, -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "qzR" = ( /obj/structure/toilet{ dir = 8 @@ -68072,6 +67985,13 @@ /obj/effect/turf_decal/trimline/blue/end, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/project) +"raF" = ( +/obj/machinery/computer/security/telescreen/vault/directional/north, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/qm) "raI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -68794,25 +68714,6 @@ }, /turf/open/floor/wood, /area/station/service/electronic_marketing_den) -"rjN" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/rglass{ - amount = 50; - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/newscaster/directional/east, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/mod/module/thermal_regulator, -/obj/item/mod/module/magboot, -/obj/item/mod/module/signlang_radio, -/turf/open/floor/iron, -/area/station/engineering/storage) "rjO" = ( /obj/effect/turf_decal/siding/blue{ dir = 9 @@ -69135,6 +69036,25 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) +"rmz" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/rglass{ + amount = 50; + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster/directional/east, +/obj/item/mod/module/plasma_stabilizer, +/obj/item/mod/module/thermal_regulator, +/obj/item/mod/module/magboot, +/obj/item/mod/module/signlang_radio, +/turf/open/floor/iron, +/area/station/engineering/storage) "rmI" = ( /obj/structure/table/reinforced, /obj/item/electronics/apc, @@ -70226,19 +70146,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/bridge) -"rBY" = ( -/obj/structure/rack, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/wrench, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/lightreplacer, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) "rCc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70815,22 +70722,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/medical) -"rJY" = ( -/obj/structure/table/reinforced, -/obj/item/stack/package_wrap, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) "rKb" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -71057,14 +70948,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"rMQ" = ( -/obj/structure/table, -/obj/item/binoculars, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "rMR" = ( /obj/structure/chair{ dir = 8 @@ -71579,6 +71462,17 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/medbay) +"rRF" = ( +/obj/structure/table/reinforced, +/obj/item/folder/white, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "rRR" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -72269,15 +72163,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) -"sas" = ( -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat_interior) "sau" = ( /obj/machinery/blackbox_recorder, /obj/machinery/atmospherics/pipe/heat_exchanging/simple, @@ -72717,7 +72602,7 @@ /area/station/maintenance/port/aft) "sfE" = ( /obj/effect/decal/cleanable/xenoblood, -/turf/open/floor/circuit/green, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "sfH" = ( /obj/effect/landmark/start/hangover, @@ -73944,13 +73829,13 @@ pixel_x = -3; pixel_y = 3 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ +/obj/item/cigarette/cigar/cohiba{ pixel_x = 6 }, -/obj/item/clothing/mask/cigarette/cigar/havana{ +/obj/item/cigarette/cigar/havana{ pixel_x = 2 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = 4.5 }, /obj/structure/table/reinforced, @@ -74755,20 +74640,6 @@ "sHt" = ( /turf/open/space/basic, /area/space/nearstation) -"sHv" = ( -/obj/machinery/computer/mecha{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/rd{ - dir = 8; - pixel_x = 32 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/iron, -/area/station/command/heads_quarters/rd) "sHw" = ( /obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -75908,7 +75779,7 @@ /obj/structure/lattice, /obj/structure/sign/warning/electric_shock/directional/east, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "sVC" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 4 @@ -75994,6 +75865,15 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"sWJ" = ( +/obj/structure/table/reinforced, +/obj/item/stack/cable_coil, +/obj/item/electronics/airalarm, +/obj/item/electronics/firealarm, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/port) "sWO" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 8 @@ -76044,18 +75924,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"sXy" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/cytology{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/book/manual/wiki/plumbing, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/xenobiology) "sXB" = ( /obj/machinery/igniter/incinerator_ordmix, /turf/open/floor/engine/vacuum, @@ -76132,6 +76000,10 @@ /obj/effect/turf_decal/siding/purple{ dir = 8 }, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker + }, +/obj/item/multitool, /turf/open/floor/iron, /area/station/science/lab) "sYf" = ( @@ -77376,14 +77248,14 @@ /obj/item/restraints/handcuffs{ pixel_y = 6 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ +/obj/item/cigarette/cigar/cohiba{ pixel_x = 7; pixel_y = -7 }, -/obj/item/clothing/mask/cigarette/cigar/havana{ +/obj/item/cigarette/cigar/havana{ pixel_x = -3 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = -1; pixel_y = -7 }, @@ -77402,9 +77274,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/fore) "trC" = ( -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, +/obj/item/reagent_containers/condiment/enzyme, /obj/item/kitchen/rollingpin, /obj/structure/table, /obj/item/reagent_containers/cup/bowl, @@ -78000,17 +77870,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"tyF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/storage/box/lights/mixed, -/obj/machinery/airalarm/directional/north, -/obj/item/stock_parts/power_store/cell/high/empty, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "tyK" = ( /obj/machinery/vending/wardrobe/jani_wardrobe, /turf/open/floor/iron/dark, @@ -78037,6 +77896,18 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/hfr_room) +"tzc" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/science/lab) "tzj" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -78133,16 +78004,6 @@ /obj/structure/sign/poster/contraband/random/directional/east, /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"tAB" = ( -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/machinery/status_display/ai/directional/north, -/obj/item/rcl/pre_loaded, -/obj/effect/turf_decal/bot, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "tAL" = ( /obj/structure/sign/nanotrasen{ pixel_y = 32 @@ -78166,13 +78027,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) -"tAO" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/command/teleporter) "tAS" = ( /obj/effect/turf_decal/siding/white, /obj/structure/cable, @@ -78606,6 +78460,21 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/wood, /area/station/maintenance/port/fore) +"tFu" = ( +/obj/structure/cable, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/multitool{ + pixel_x = 8 + }, +/obj/structure/table, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "tFG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -80915,6 +80784,11 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/engineering/main) +"uiH" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen/research/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "uiK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -80984,6 +80858,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) +"ujL" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/mining_voucher, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "ujQ" = ( /obj/machinery/status_display/ai/directional/west, /obj/structure/filingcabinet/security, @@ -81073,6 +80954,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay) +"ukO" = ( +/obj/machinery/cell_charger, +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "ukR" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, @@ -82083,6 +81973,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white/smooth_large, /area/station/medical/psychology) +"uxC" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden, +/obj/machinery/computer/security/telescreen/engine/directional/west, +/obj/effect/turf_decal/bot, +/obj/machinery/computer/atmos_control/nocontrol/master{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/engineering/atmos/storage/gas) "uxG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -83248,6 +83147,11 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/maintenance/department/science) +"uLX" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/computer/security/telescreen/minisat/directional/south, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "uMb" = ( /obj/structure/table, /obj/item/analyzer, @@ -84167,7 +84071,7 @@ "uXF" = ( /obj/structure/sign/warning/secure_area/directional/south, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "uXK" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -84199,15 +84103,14 @@ /turf/open/floor/iron/dark, /area/station/science/ordnance) "uXU" = ( -/obj/structure/disposaloutlet{ - dir = 8 - }, /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/machinery/disposal/delivery_chute{ + dir = 8 + }, /obj/effect/turf_decal/box/red, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "uYg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -84361,6 +84264,16 @@ }, /turf/open/floor/iron, /area/station/science/research) +"uZy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/computer/security/telescreen/interrogation/directional/west, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/brig) "uZH" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -86091,6 +86004,17 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"vxq" = ( +/obj/structure/cable, +/obj/machinery/computer/security/telescreen/prison/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "vxr" = ( /turf/open/floor/iron, /area/station/security/prison) @@ -87379,6 +87303,17 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) +"vOH" = ( +/obj/machinery/portable_atmospherics/pipe_scrubber, +/obj/effect/turf_decal/trimline/neutral, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "vOI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -88380,13 +88315,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"wdm" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/turf/open/floor/iron, -/area/station/commons/storage/primary) "wdt" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -89145,6 +89073,16 @@ /obj/item/pen, /turf/open/floor/iron/white, /area/station/medical/medbay) +"wmo" = ( +/obj/machinery/cell_charger, +/obj/structure/table/reinforced, +/obj/machinery/status_display/ai/directional/north, +/obj/item/rcl/pre_loaded, +/obj/effect/turf_decal/bot, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "wmp" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -89566,21 +89504,6 @@ }, /turf/open/floor/iron/grimy, /area/station/service/library/abandoned) -"wqz" = ( -/obj/structure/table/glass, -/obj/item/folder/blue{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/folder/white, -/obj/item/pen, -/obj/machinery/computer/security/telescreen/cmo{ - dir = 1; - pixel_y = -32 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) "wqF" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -90229,7 +90152,7 @@ dir = 10 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "wzb" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 @@ -90727,12 +90650,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/maintenance/port) -"wEx" = ( -/obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/mining_voucher, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "wEy" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -90962,22 +90879,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/atmos/storage/gas) -"wGQ" = ( -/obj/structure/cable, -/obj/machinery/computer/security/telescreen{ - dir = 8; - name = "Prisoner Telescreen"; - network = list("prison"); - pixel_x = 27 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "wGS" = ( /obj/structure/chair/sofa/bench/left{ dir = 4 @@ -91293,6 +91194,44 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/medical/pharmacy) +"wLA" = ( +/obj/item/stack/cable_coil, +/obj/item/bodypart/arm/right/robot{ + pixel_x = 3 + }, +/obj/item/bodypart/arm/left/robot{ + pixel_x = -3 + }, +/obj/structure/table, +/obj/item/radio/intercom/directional/west, +/obj/item/assembly/prox_sensor{ + pixel_x = 5 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = 5 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = 5 + }, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 3; + pixel_y = 16 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -3; + pixel_y = 16 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 15 + }, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "wLK" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -92384,9 +92323,14 @@ /turf/open/floor/iron/textured, /area/station/medical/medbay) "xcR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, /obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/landmark/event_spawn, -/turf/open/floor/circuit/green, +/turf/open/floor/iron, /area/station/science/xenobiology) "xcU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -92410,8 +92354,8 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/obj/structure/sign/warning/gas_mask/directional/north, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "xdA" = ( /obj/effect/spawner/random/decoration/carpet, @@ -92621,6 +92565,17 @@ }, /turf/open/space/basic, /area/space/nearstation) +"xfG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/storage/box/lights/mixed, +/obj/machinery/airalarm/directional/north, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "xfR" = ( /obj/machinery/camera/directional/east{ c_tag = "Security - Interrogation Monitoring" @@ -93896,6 +93851,17 @@ }, /turf/open/floor/iron, /area/station/maintenance/disposal) +"xwC" = ( +/obj/machinery/computer/mecha{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/rd/directional/east, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/turf/open/floor/iron, +/area/station/command/heads_quarters/rd) "xwK" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -94456,7 +94422,6 @@ /obj/item/reagent_containers/blood/random, /obj/effect/turf_decal/bot, /obj/item/reagent_containers/condiment/enzyme{ - layer = 5; pixel_x = -6; pixel_y = 8 }, @@ -96038,6 +96003,14 @@ /obj/machinery/light/warm/directional/west, /turf/open/floor/wood, /area/station/service/lawoffice) +"xYf" = ( +/obj/structure/table/wood, +/obj/machinery/light/directional/south, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/machinery/computer/security/telescreen/vault/directional/east, +/turf/open/floor/wood, +/area/station/command/heads_quarters/hop) "xYl" = ( /obj/structure/lattice, /obj/item/toy/figure/ninja, @@ -96845,6 +96818,12 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white, /area/station/medical/virology) +"yjJ" = ( +/obj/structure/sign/warning/secure_area/directional/south, +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen/minisat/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "yjK" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot_white, @@ -104082,7 +104061,7 @@ ueB uhL btH bPC -sas +fmw bTs rPe vvL @@ -115424,11 +115403,11 @@ fqm djS nCi nCi -sfN -sfN +gCt +gCt eqP -sfN -sfN +gCt +gCt nCi nCi cJd @@ -115680,13 +115659,13 @@ chp fqm vPU nCi -sfN -sfN -sfN +gCt +gCt +gCt iJw -sfN -sfN -sfN +gCt +gCt +gCt nCi vPU fqm @@ -115937,13 +115916,13 @@ rXu nCi eVp nCi -sfN +gCt ozA pJz -xcR +gCt sfE gCt -sfN +gCt nCi mFq nCi @@ -116164,7 +116143,7 @@ dgk eqg uYy jCY -qzK +yjJ vmt nUT aaa @@ -116194,13 +116173,13 @@ gbe nCi vPU nCi -sfN -sfN -sfN -sfN -sfN -sfN -sfN +gCt +gCt +gCt +gCt +gCt +gCt +gCt nCi vPU cfb @@ -116454,7 +116433,7 @@ nCi rIb rIb xdn -sfN +gCt uXU uhb uhb @@ -116709,7 +116688,7 @@ pyZ vBO uhb ebW -kNG +imx imx xsH umb @@ -116966,7 +116945,7 @@ aFU nCi uhb xIa -cQT +iRd gxT kPD rxX @@ -117221,11 +117200,11 @@ nCi cTO uOn uhb -mOS +mKn fPl jqr vxQ -vxQ +xcR vxQ lzc plQ @@ -117735,7 +117714,7 @@ nCi fsC nOv uhb -lpC +oHO aqF rqy jKx @@ -119246,7 +119225,7 @@ viB pOz hEL gyR -pcS +cfx vyn eMN gAw @@ -119755,7 +119734,7 @@ jLx dFw mPr bAR -tAB +wmo gsV auh tMl @@ -120524,7 +120503,7 @@ pQo uCa wkj bqP -jwW +nOJ bAR gHt bAV @@ -121547,7 +121526,7 @@ wiZ fXF xkz hwe -fnC +tFu vpV uCa gQk @@ -121589,7 +121568,7 @@ rZw iQF eRr pTC -sXy +myE fpt uOF sPk @@ -122298,10 +122277,10 @@ sID pUW qSm wIf -rBY +mdG lvJ jYA -nba +jtD eVG wqF npE @@ -122874,7 +122853,7 @@ aWk mqP pTC esb -bpz +dai lZG gmI ahY @@ -122893,7 +122872,7 @@ wEI qNb naL nEc -mcm +iWz kGQ bGz nzb @@ -123117,7 +123096,7 @@ grl iJU pJM pec -beI +bHr fii fii lBz @@ -123346,7 +123325,7 @@ vnq ftU dCX wdZ -guI +uxC bYK xLZ iXc @@ -124405,11 +124384,11 @@ swD baw fii iqz -iZH +gUt hps hkJ tum -rjN +rmz abO pTC sNd @@ -124859,7 +124838,7 @@ lCM qlr hwM pqw -gqG +kEm dYE sOi wzD @@ -125475,7 +125454,7 @@ szJ xoR hfe sKR -rMQ +qpI fYU kzc dqo @@ -125731,7 +125710,7 @@ fLf cfL xoR aJy -pPs +qnC dkF fYU kzc @@ -125944,7 +125923,7 @@ rnr lRx gRl iQr -hwJ +sWJ pTC qcM vcB @@ -126178,7 +126157,7 @@ aJU keE tbf sdB -ePX +pUq urC aZo jPJ @@ -126756,7 +126735,7 @@ vSX wEI qYo blX -onq +hdI vQu dSo jCf @@ -127005,7 +126984,7 @@ jqt qub uFt elq -gWT +oXg bWH jDd plP @@ -127488,7 +127467,7 @@ pTC pTC unj fKQ -fDT +wLA xGw iCI pTC @@ -127722,7 +127701,7 @@ tlp nLY uyf klO -mlR +rRF iNR bCj tjp @@ -127767,7 +127746,7 @@ vgu tYP hBT ipr -sHv +xwC eIh urt mjW @@ -127992,7 +127971,7 @@ vcB vcB vcB pTC -ewl +jxj ydp uTm nfR @@ -129328,7 +129307,7 @@ nJK yex iML tgI -uUG +iFt djT kzc kzc @@ -129842,7 +129821,7 @@ hGI esH owX asW -nSb +bFD nSb jHm ucu @@ -130099,7 +130078,7 @@ hNW hNW hNW hNW -hNW +dDB hNW nLP hNW @@ -130295,7 +130274,7 @@ uQt nia vBY eYN -wdm +msO iyq iCO uED @@ -130356,7 +130335,7 @@ lzo vbO uXN eqB -eyH +pDx eyH pwD eyH @@ -130572,7 +130551,7 @@ fHD tCD khb rNZ -hUZ +bUN ryp khb gmZ @@ -130874,7 +130853,7 @@ lOw wCh cFB oQq -fYa +vOH hqU kzc qBk @@ -132131,7 +132110,7 @@ bgL mfI fvi tpg -byI +tzc oZz bpM vzA @@ -132187,7 +132166,7 @@ gqm qYo aaa lvw -jUT +qYo qYo aaa aaa @@ -133899,7 +133878,7 @@ pRS kNB lAv nAz -jce +xYf lZx pgs lbt @@ -133948,7 +133927,7 @@ dQT deW pMF uZm -wqz +aBf loe gaC lpx @@ -134170,7 +134149,7 @@ bMB drM mlE odw -khr +ukO eAY fot mpb @@ -134399,7 +134378,7 @@ aaa wyH wyH diL -wEx +ujL drj bog wuV @@ -137483,10 +137462,10 @@ aaa wyH wyH diL -hFx +uiH drj bog -hZb +uLX gOU gOU vDo @@ -138511,7 +138490,7 @@ aaa aad aaa diL -hub +pGz bsC bog nkU @@ -139045,7 +139024,7 @@ nrd ivA cVy kSu -tAO +iij dsT qBq fQw @@ -139216,7 +139195,7 @@ coH xrr adR abi -rJY +lnk aff afG afY @@ -140272,7 +140251,7 @@ xGK jdL juz jdL -tyF +xfG hTl tjl kdE @@ -143115,7 +143094,7 @@ aad aad aad aJE -ejX +raF aAU uQZ xhJ @@ -145262,7 +145241,7 @@ dKz dpO asS iVj -dmU +kko tdC kZc mVY @@ -146537,7 +146516,7 @@ feV wZE xvr rmI -hSF +fzK vTn wZE dre @@ -146722,7 +146701,7 @@ jrA qIH vgQ hYa -nHx +mCe nup iSk jLe @@ -146979,7 +146958,7 @@ xzJ hXi vgQ csD -lTh +nJu nup mTT hgS @@ -147492,7 +147471,7 @@ xPo krO pUP vgQ -nBC +pGv xfR vgQ eAW @@ -148009,7 +147988,7 @@ ybk jgS aub ivK -dqs +uZy fND ukX stA @@ -148244,19 +148223,19 @@ aaa uHd aaa vXr -jbn +cmy xIl obL -pXI +aLM xIl gjc -pJo +gRN xIl aSW -wGQ +vxq xIl sTq -pJo +gRN ayM fXC iKL @@ -148849,7 +148828,7 @@ iBx nXH qAu kZE -cfW +oRA mzX xin dJP @@ -150855,7 +150834,7 @@ aWO bLs iRi nIV -dpR +ale vyj snW auW @@ -151876,7 +151855,7 @@ aaa qYo aaa qYo -aKU +jUT qYo aaa qYo @@ -154691,13 +154670,13 @@ gJk aaa aad aaa -aKU +jUT aad aaa aad aaa aad -aKU +jUT aaa qYo aaa diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 3207e159113b2..62c7527848fdd 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -935,6 +935,14 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"apL" = ( +/obj/machinery/modular_computer/preset/engineering, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/small/directional/north, +/obj/machinery/computer/security/telescreen/engine/directional/north, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) "apS" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -1094,7 +1102,6 @@ /obj/structure/cable, /obj/machinery/button/door/directional/east{ id = "xenobio10"; - layer = 4; name = "Xenobio Pen 10 Blast DOors"; req_access = list("xenobiology") }, @@ -1204,20 +1211,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/freezer, /area/station/commons/toilet) -"atC" = ( -/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/red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/obj/machinery/holopad, -/obj/effect/landmark/start/depsec/medical, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/medical) "atN" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -1856,22 +1849,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"aCV" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Chemistry Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/effect/turf_decal/tile/yellow/full, -/turf/open/floor/iron/large, -/area/station/medical/treatment_center) "aCX" = ( /obj/structure/table, /obj/item/stock_parts/subspace/filter, @@ -1954,7 +1931,7 @@ dir = 4 }, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "aEM" = ( /obj/structure/sign/departments/cargo, /turf/closed/wall/r_wall, @@ -2160,12 +2137,6 @@ dir = 9 }, /area/station/science/explab) -"aIv" = ( -/obj/structure/railing/wooden_fence{ - dir = 1 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "aIA" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 9 @@ -2649,6 +2620,7 @@ /obj/effect/turf_decal/box, /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/science/ordnance) "aQy" = ( @@ -2812,6 +2784,17 @@ /obj/effect/turf_decal/siding/yellow, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) +"aSw" = ( +/obj/structure/rack, +/obj/item/lighter, +/obj/item/clothing/glasses/meson{ + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/reagent_containers/pill/patch/aiuri, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "aSB" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/effect/turf_decal/box, @@ -3244,6 +3227,26 @@ /obj/item/bikehorn/rubberducky/plasticducky, /turf/open/floor/iron/freezer, /area/mine/laborcamp) +"aYS" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/emproof, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 10 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) "aZd" = ( /turf/open/floor/plating, /area/station/medical/virology) @@ -3811,10 +3814,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"bhs" = ( -/obj/item/flashlight/lantern/on, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "bht" = ( /obj/structure/closet/lasertag/red, /obj/effect/spawner/random/contraband/permabrig_gear, @@ -3868,6 +3867,10 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) +"bil" = ( +/obj/structure/railing/wooden_fence, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "bin" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 4 @@ -3897,7 +3900,7 @@ network = list("ss13","test","rd","xeno") }, /obj/machinery/light/directional/west, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "biR" = ( /obj/structure/table/glass, @@ -3945,19 +3948,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"bjm" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring medbay to ensure patient safety."; - dir = 8; - name = "Medbay Monitor"; - network = list("medbay"); - pixel_y = 4 - }, -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/obj/effect/turf_decal/tile/red/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/medical) "bjn" = ( /obj/machinery/door/window/left/directional/east{ name = "Containment Pen 11"; @@ -4492,7 +4482,7 @@ "bqX" = ( /obj/machinery/air_sensor/ordnance_burn_chamber, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "bqY" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance/two, @@ -4584,6 +4574,15 @@ }, /turf/open/floor/plating, /area/mine/eva/lower) +"bsc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/maintenance/department/electrical) "bsd" = ( /obj/structure/chair/stool/directional/south, /obj/structure/sign/poster/official/obey/directional/north, @@ -5088,12 +5087,6 @@ /obj/structure/girder, /turf/open/floor/plating, /area/station/maintenance/fore) -"byV" = ( -/obj/structure/railing/wooden_fence{ - dir = 8 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "bzc" = ( /obj/machinery/status_display/evac/directional/east, /obj/effect/turf_decal/tile/blue, @@ -5240,16 +5233,6 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) -"bAW" = ( -/obj/machinery/light_switch/directional/north{ - pixel_x = -7 - }, -/obj/structure/table, -/obj/item/stock_parts/power_store/cell/high/empty, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) "bAX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, @@ -5650,14 +5633,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"bFU" = ( -/obj/effect/turf_decal/siding/wideplating_new/light{ - dir = 4 - }, -/obj/machinery/plumbing/input, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/iron/showroomfloor, -/area/station/security/prison/work) "bFY" = ( /obj/item/trash/syndi_cakes, /turf/open/floor/plating, @@ -5690,6 +5665,12 @@ /obj/structure/sign/departments/xenobio/directional/south, /turf/open/floor/plating, /area/station/science/xenobiology) +"bGD" = ( +/obj/structure/table/reinforced, +/obj/structure/reagent_dispensers/wall/peppertank/directional/east, +/obj/effect/turf_decal/tile/red/full, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/medical) "bGP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -5781,6 +5762,10 @@ }, /obj/machinery/door/firedoor/heavy, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/north{ + areastring = "/area/station/science/ordnance/burnchamber" + }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance) "bIl" = ( @@ -6213,6 +6198,16 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/cryo) +"bNY" = ( +/obj/effect/turf_decal/siding/wideplating_new/light{ + dir = 6 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/prisoner, +/turf/open/floor/iron/showroomfloor, +/area/station/security/prison/work) "bOg" = ( /obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6256,9 +6251,7 @@ /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) "bOy" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/spawner/random/vending/snackvend, /obj/machinery/camera/directional/east{ c_tag = "Engineering Lobby" @@ -6285,7 +6278,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 4 }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "bOX" = ( /obj/structure/cable, @@ -6378,6 +6371,12 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/virology) +"bPR" = ( +/obj/structure/railing/wooden_fence{ + dir = 1 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "bPV" = ( /obj/item/kirbyplants/random/dead, /turf/open/floor/plating/snowed/icemoon, @@ -7158,7 +7157,6 @@ "cbP" = ( /obj/machinery/button/door/directional/east{ id = "xenobio9"; - layer = 4; name = "Xenobio Pen 9 Blast DOors"; req_access = list("xenobiology") }, @@ -7775,11 +7773,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"cku" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/engine, -/area/station/science/xenobiology) "ckN" = ( /obj/structure/cable, /obj/machinery/newscaster/directional/south, @@ -7885,17 +7878,6 @@ }, /turf/open/floor/iron, /area/station/science/ordnance/testlab) -"clX" = ( -/obj/structure/rack, -/obj/item/lighter, -/obj/item/clothing/glasses/meson{ - pixel_y = 4 - }, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/reagent_containers/pill/patch/aiuri, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "clY" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -8085,16 +8067,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/station/maintenance/fore) -"cnU" = ( -/obj/machinery/modular_computer/preset/id, -/obj/machinery/computer/security/telescreen/vault{ - pixel_y = 30 - }, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/qm) "coT" = ( /obj/structure/table, /obj/item/storage/wallet, @@ -8285,20 +8257,6 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/white, /area/station/science/genetics) -"crH" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/requests_console/directional/west{ - department = "Head of Personnel's Desk"; - name = "Head of Personnel's 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/iron, -/area/station/command/heads_quarters/hop) "crO" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/railing/corner/end/flip{ @@ -8479,7 +8437,7 @@ "cuB" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "cuJ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -8553,18 +8511,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"cvG" = ( -/obj/effect/turf_decal/siding/wideplating_new/light, -/obj/item/trash/bee, -/obj/machinery/light/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/sign/poster/official/moth_piping/directional/west, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/security/prison/work) "cvN" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -9744,20 +9690,6 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) -"cMy" = ( -/obj/structure/table, -/obj/item/folder/white, -/obj/item/folder/white, -/obj/item/pen, -/obj/item/taperecorder, -/obj/item/paper_bin{ - pixel_y = 6 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/explab) "cMA" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Control" @@ -9919,14 +9851,6 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"cOY" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/potato{ - name = "\improper Beepsky's emergency battery" - }, -/turf/open/floor/plating, -/area/station/maintenance/fore) "cPd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10328,27 +10252,6 @@ }, /turf/open/floor/wood/parquet, /area/station/service/theater) -"cWn" = ( -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/cable, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/mod/module/signlang_radio, -/obj/item/mod/module/thermal_regulator, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) "cWq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -11344,9 +11247,7 @@ /area/station/science/robotics/lab) "dkB" = ( /obj/structure/rack, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 }, @@ -11397,6 +11298,9 @@ /obj/structure/marker_beacon/burgundy, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) +"dlu" = ( +/turf/closed/wall/mineral/wood/nonmetal, +/area/icemoon/underground/explored) "dlB" = ( /obj/structure/table/wood, /obj/item/storage/photo_album/chapel, @@ -11425,7 +11329,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/machinery/button/door/directional/east{ id = "xenobio11"; - layer = 4; name = "Xenobio Pen 11 Blast DOors"; req_access = list("xenobiology") }, @@ -11522,18 +11425,6 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, /area/station/security/checkpoint/supply) -"dnU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/item/kirbyplants/random/dead/research_director, -/obj/machinery/computer/security/telescreen/rd{ - dir = 4; - pixel_x = -26 - }, -/turf/open/floor/iron/smooth_half, -/area/station/command/heads_quarters/rd) "dnX" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -11580,7 +11471,6 @@ "doK" = ( /obj/machinery/button/door/directional/east{ id = "xenobio8"; - layer = 4; name = "Xenobio Pen 8 Blast DOors"; req_access = list("xenobiology") }, @@ -11598,34 +11488,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood/large, /area/mine/eva/lower) -"doO" = ( -/obj/structure/table, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/crowbar, -/obj/item/radio/headset/headset_sci{ - pixel_x = -3 - }, -/obj/machinery/newscaster/directional/east, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "doW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11920,18 +11782,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/carpet/red, /area/station/security/prison/work) -"dsk" = ( -/obj/machinery/computer/station_alert{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/ce{ - dir = 4; - pixel_x = -24; - pixel_y = -1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "dsl" = ( /obj/machinery/computer/rdservercontrol{ dir = 1 @@ -12018,6 +11868,16 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, /turf/open/floor/iron, /area/station/engineering/engine_smes) +"dtq" = ( +/obj/structure/table/wood, +/obj/machinery/computer/security/telescreen/prison/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/fax{ + fax_name = "Law Office"; + name = "Law Office Fax Machine" + }, +/turf/open/floor/wood, +/area/station/service/lawoffice) "dtr" = ( /obj/machinery/computer/records/medical, /obj/effect/turf_decal/tile/green/anticorner/contrasted, @@ -12776,27 +12636,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"dFr" = ( -/obj/structure/table, -/obj/machinery/computer/security/telescreen/interrogation{ - dir = 1; - name = "isolation room monitor"; - network = list("isolation"); - pixel_y = -32 - }, -/obj/item/clothing/suit/jacket/straight_jacket, -/obj/item/clothing/suit/jacket/straight_jacket{ - pixel_x = 6 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Permabrig Prep"; - network = list("ss13","prison"); - view_range = 5 - }, -/obj/structure/cable, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/smooth, -/area/station/security/execution/transfer) "dFt" = ( /turf/closed/wall, /area/station/hallway/secondary/exit/departure_lounge) @@ -13061,6 +12900,22 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, /area/station/tcommsat/computer) +"dKr" = ( +/obj/structure/table, +/obj/machinery/computer/security/telescreen/isolation/directional/south, +/obj/item/clothing/suit/jacket/straight_jacket, +/obj/item/clothing/suit/jacket/straight_jacket{ + pixel_x = 6 + }, +/obj/machinery/camera/directional/east{ + c_tag = "Security - Permabrig Prep"; + network = list("ss13","prison"); + view_range = 5 + }, +/obj/structure/cable, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/smooth, +/area/station/security/execution/transfer) "dKy" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -13186,9 +13041,7 @@ /obj/effect/turf_decal/trimline/blue/filled/end{ dir = 1 }, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/item/radio/intercom/directional/west, /obj/structure/disposalpipe/segment, /turf/open/floor/iron/large, @@ -14580,11 +14433,6 @@ }, /turf/open/floor/iron/dark, /area/station/commons/storage/primary) -"ejD" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/office) "ejL" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 9 @@ -15330,7 +15178,7 @@ "evc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "evk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15832,6 +15680,19 @@ /obj/item/flashlight, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"eEm" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/turf/open/floor/plating, +/area/station/engineering/engine_smes) "eEr" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/sign/warning/directional/south, @@ -16177,10 +16038,6 @@ dir = 8 }, /area/station/maintenance/port/fore) -"eLb" = ( -/obj/machinery/iv_drip, -/turf/open/floor/engine, -/area/station/science/xenobiology) "eLl" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -16401,10 +16258,6 @@ dir = 4 }, /area/station/ai_monitored/command/storage/eva) -"eOS" = ( -/obj/structure/table, -/turf/open/floor/engine, -/area/station/science/xenobiology) "ePd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/grille/broken, @@ -16999,12 +16852,6 @@ /obj/structure/table/wood, /turf/open/floor/carpet, /area/station/command/meeting_room) -"eYU" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high/empty, -/turf/open/floor/iron/dark, -/area/station/engineering/storage) "eYX" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 1 @@ -17217,10 +17064,8 @@ /turf/open/floor/iron, /area/station/engineering/main) "fcj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/ordnance) +/turf/closed/wall/r_wall, +/area/station/science/ordnance/burnchamber) "fco" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, /obj/effect/turf_decal/siding/wood{ @@ -18584,6 +18429,18 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"fyT" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 3 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 3 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/textured, +/area/mine/mechbay) "fyZ" = ( /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron, @@ -18806,7 +18663,7 @@ "fCS" = ( /obj/machinery/door/poddoor/incinerator_ordmix, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "fCW" = ( /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/dark/textured, @@ -18855,6 +18712,15 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/service/janitor) +"fDM" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Security Post - Engineering" + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red, +/obj/machinery/computer/security/telescreen/engine/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "fDP" = ( /obj/structure/cable, /obj/item/radio/intercom/prison/directional/north, @@ -19361,6 +19227,14 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/service/hydroponics) +"fLH" = ( +/obj/machinery/computer/station_alert{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/security/telescreen/ce/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "fLK" = ( /obj/structure/railing/corner{ dir = 8 @@ -19584,6 +19458,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth_large, /area/station/cargo/warehouse) +"fPO" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/computer/security/telescreen/test_chamber/directional/north, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/station/command/heads_quarters/rd) "fPP" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -19663,6 +19544,12 @@ dir = 1 }, /area/station/security/prison) +"fQU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/iron, +/area/station/engineering/engine_smes) "fRb" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, @@ -19889,6 +19776,16 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) +"fVC" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/ecto_sniffer{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "fVD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/engineering{ @@ -20402,6 +20299,7 @@ /obj/machinery/door/firedoor/heavy, /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/dark, /area/station/science/ordnance) "gcB" = ( @@ -20687,6 +20585,12 @@ /obj/structure/closet/crate, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"ghA" = ( +/obj/structure/railing/wooden_fence{ + dir = 5 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "ghE" = ( /obj/structure/disposalpipe/segment, /obj/machinery/camera/directional/west{ @@ -21865,27 +21769,6 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"gBg" = ( -/obj/structure/table/glass, -/obj/item/assembly/signaler{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/reagent_containers/dropper{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/cable_coil, -/obj/item/pen{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/science/research) "gBl" = ( /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, @@ -22102,6 +21985,12 @@ }, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) +"gEe" = ( +/obj/structure/table, +/obj/item/binoculars, +/obj/machinery/computer/security/telescreen/ordnance/directional/north, +/turf/open/floor/iron, +/area/station/science/ordnance/testlab) "gEl" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, @@ -22452,6 +22341,34 @@ "gIY" = ( /turf/closed/wall, /area/station/medical/medbay/central) +"gJi" = ( +/obj/structure/table, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/crowbar, +/obj/item/radio/headset/headset_sci{ + pixel_x = -3 + }, +/obj/machinery/newscaster/directional/east, +/obj/machinery/light/directional/east, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "gJs" = ( /obj/machinery/portable_atmospherics/canister, /obj/structure/disposalpipe/segment, @@ -23063,6 +22980,19 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron/dark/side, /area/mine/eva/lower) +"gSQ" = ( +/obj/structure/table, +/obj/item/crowbar/red, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/structure/sign/poster/random/directional/west, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "gSU" = ( /obj/item/popsicle_stick{ pixel_y = 1; @@ -23095,6 +23025,22 @@ /obj/machinery/light/directional/west, /turf/open/floor/plating, /area/station/cargo/storage) +"gTi" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Chemistry Access" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/turf_decal/tile/yellow/full, +/turf/open/floor/iron/large, +/area/station/medical/treatment_center) "gTq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -23171,6 +23117,15 @@ /obj/structure/sign/poster/contraband/random/directional/east, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"gUX" = ( +/obj/effect/turf_decal/trimline/purple/filled/warning{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/test_chamber/directional/east{ + name = "Xenobio Monitor" + }, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "gUY" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -23781,6 +23736,10 @@ /obj/item/stock_parts/scanning_module, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, +/obj/item/multitool, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker + }, /turf/open/floor/iron/white/side{ dir = 10 }, @@ -24254,12 +24213,6 @@ /obj/structure/mirror/directional/east, /turf/open/floor/iron/freezer, /area/station/commons/toilet/locker) -"hnc" = ( -/obj/structure/railing/wooden_fence{ - dir = 9 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "hnd" = ( /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, @@ -24334,12 +24287,6 @@ /obj/machinery/hydroponics/constructable, /turf/open/floor/iron/dark, /area/station/service/hydroponics) -"hop" = ( -/obj/structure/railing/wooden_fence{ - dir = 6 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "hos" = ( /obj/structure/disposalpipe/trunk/multiz/down{ dir = 1 @@ -24715,12 +24662,6 @@ /obj/structure/tank_holder/oxygen, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"hsU" = ( -/obj/structure/railing/wooden_fence{ - dir = 4 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "htd" = ( /obj/structure/sign/warning/docking/directional/north, /turf/open/misc/asteroid/snow/icemoon, @@ -24799,6 +24740,13 @@ /obj/machinery/vending/autodrobe/all_access, /turf/open/floor/iron, /area/station/commons/locker) +"hut" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/rcl/pre_loaded, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "huB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24961,9 +24909,6 @@ }, /turf/open/floor/iron, /area/station/cargo/office) -"hwL" = ( -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "hwR" = ( /obj/machinery/camera/directional/west{ c_tag = "Security - Equipment Room" @@ -25278,14 +25223,6 @@ /obj/structure/cable, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"hCx" = ( -/obj/structure/table, -/obj/item/binoculars, -/obj/machinery/computer/security/telescreen/ordnance{ - pixel_y = 32 - }, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) "hCC" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -26398,6 +26335,27 @@ /obj/machinery/status_display/evac/directional/south, /turf/open/floor/wood, /area/station/service/library) +"hUf" = ( +/obj/structure/table/glass, +/obj/item/assembly/signaler{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/reagent_containers/dropper{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/cable_coil, +/obj/item/pen{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/cafeteria{ + dir = 8 + }, +/area/station/science/research) "hUi" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -26641,19 +26599,6 @@ }, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/underground/explored) -"hYU" = ( -/obj/effect/turf_decal/siding/yellow/corner, -/obj/machinery/status_display/evac/directional/south, -/obj/structure/table, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -5 - }, -/obj/item/multitool{ - pixel_x = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "hZe" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 1 @@ -26749,6 +26694,14 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/office) +"ibi" = ( +/obj/structure/table/wood, +/obj/item/storage/crayons, +/obj/item/storage/fancy/candle_box{ + pixel_y = 5 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel/office) "ibj" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -26972,6 +26925,19 @@ /obj/effect/landmark/start/depsec/science, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) +"idp" = ( +/obj/machinery/button/door/directional/east{ + id = "cmoprivacy"; + name = "CMO Shutter Control"; + pixel_y = 23; + req_access = list("cmo") + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/cmo/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "idr" = ( /obj/structure/stairs/north, /obj/structure/railing{ @@ -26994,6 +26960,12 @@ }, /turf/open/floor/iron/smooth, /area/station/security/holding_cell) +"idH" = ( +/obj/structure/railing/wooden_fence{ + dir = 6 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "idN" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/door/window/brigdoor/left/directional/south{ @@ -27162,7 +27134,6 @@ "ihN" = ( /obj/machinery/button/door/directional/west{ id = "xenobio4"; - layer = 4; name = "Xenobio Pen 4 Blast Door"; req_access = list("xenobiology") }, @@ -27306,6 +27277,11 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/security/brig/upper) +"ijW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/structure/sign/warning/secure_area/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/explab) "ijY" = ( /obj/structure/flora/rock/icy/style_random, /turf/open/misc/asteroid/snow/icemoon, @@ -27526,6 +27502,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"inB" = ( +/obj/machinery/portable_atmospherics/pipe_scrubber, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/turf/open/floor/iron/showroomfloor, +/area/station/engineering/atmos) "inE" = ( /turf/open/floor/iron/corner, /area/station/engineering/lobby) @@ -27987,16 +27971,6 @@ }, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) -"itQ" = ( -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/radio/intercom/directional/north, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) "itY" = ( /obj/effect/spawner/random/maintenance, /turf/open/floor/plating/snowed/icemoon, @@ -28140,7 +28114,7 @@ /area/station/maintenance/port/fore) "iwq" = ( /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "iwx" = ( /obj/machinery/door/airlock/maintenance{ name = "Xenobiology Maintenance" @@ -28522,7 +28496,7 @@ "iCe" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "iCg" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -29571,6 +29545,21 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/department/medical/morgue) +"iTE" = ( +/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/red/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/machinery/holopad, +/obj/effect/landmark/start/depsec/medical, +/obj/machinery/computer/security/telescreen/cmo/directional/east, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/medical) "iTJ" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -30531,23 +30520,28 @@ /obj/effect/turf_decal/tile/dark/fourcorners, /turf/open/floor/iron, /area/mine/living_quarters) -"jkx" = ( -/obj/machinery/computer/security/telescreen/engine{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Security Post - Engineering" - }, +"jko" = ( +/obj/structure/railing, +/obj/structure/rack, /obj/structure/cable, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark/textured, +/area/station/ai_monitored/security/armory/upper) "jkH" = ( /obj/structure/training_machine, /obj/effect/landmark/blobstart, /turf/open/floor/engine, /area/station/science/explab) +"jkK" = ( +/obj/structure/railing/wooden_fence{ + dir = 9 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "jkN" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/machinery/status_display/ai/directional/north, @@ -30950,7 +30944,6 @@ "jrc" = ( /obj/machinery/button/door/directional/east{ id = "xenobio6"; - layer = 4; name = "Xenobio Pen 6 Blast DOors"; req_access = list("xenobiology") }, @@ -31785,9 +31778,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) -"jEa" = ( -/turf/closed/wall/mineral/wood/nonmetal, -/area/icemoon/underground/explored) "jEf" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 @@ -32588,9 +32578,7 @@ location = "Medbay" }, /obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/structure/plasticflaps/opaque, /turf/open/floor/iron/dark, /area/station/maintenance/department/medical/central) @@ -33348,18 +33336,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"kck" = ( -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_y = 6 - }, -/obj/structure/table/glass, -/turf/open/floor/iron/white/side{ - dir = 9 - }, -/area/station/science/lab) "kcm" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/command_all, @@ -33880,13 +33856,6 @@ /obj/effect/spawner/random/armory/bulletproof_helmet, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/security/armory) -"kjh" = ( -/obj/machinery/modular_computer/preset/engineering, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) "kjo" = ( /obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, /obj/machinery/door/airlock/engineering{ @@ -34995,12 +34964,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"kyM" = ( -/obj/structure/table, -/obj/item/plant_analyzer, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/plating, -/area/station/engineering/storage/tech) "kyU" = ( /obj/machinery/modular_computer/preset/id, /obj/machinery/light/directional/north, @@ -35170,13 +35133,6 @@ }, /turf/open/floor/iron, /area/station/command/bridge) -"kBw" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/rcl/pre_loaded, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "kBL" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -36284,14 +36240,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"kRw" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/turf/open/floor/iron/showroomfloor, -/area/station/engineering/atmos) "kRy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -36391,6 +36339,11 @@ /obj/structure/sign/warning/secure_area, /turf/closed/wall/r_wall, /area/icemoon/underground/explored) +"kSC" = ( +/obj/machinery/newscaster/directional/west, +/obj/effect/spawner/random/structure/twelve_percent_spirit_board, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) "kSD" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -36833,6 +36786,11 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/large, /area/station/engineering/engine_smes) +"kYN" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lantern/on, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "kZa" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37291,7 +37249,7 @@ dir = 8 }, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "lgW" = ( /obj/machinery/meter/monitored/distro_loop, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible, @@ -38988,6 +38946,16 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"lHm" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/test_chamber/directional/north, +/turf/open/floor/iron, +/area/station/science/explab) "lHr" = ( /obj/structure/stairs/north, /turf/open/floor/iron/freezer, @@ -39308,18 +39276,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/engine/o2, /area/station/engineering/atmos) -"lMi" = ( -/obj/structure/table/wood, -/obj/machinery/computer/security/telescreen/prison{ - pixel_y = 32 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/fax{ - fax_name = "Law Office"; - name = "Law Office Fax Machine" - }, -/turf/open/floor/wood, -/area/station/service/lawoffice) "lMu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -39744,9 +39700,7 @@ /obj/machinery/camera/directional/north{ c_tag = "Atmospherics Monitoring" }, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -39875,11 +39829,6 @@ dir = 4 }, /area/station/engineering/storage_shared) -"lVs" = ( -/obj/structure/table, -/obj/item/clothing/mask/surgical, -/turf/open/floor/engine, -/area/station/science/xenobiology) "lVt" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/light/floor, @@ -40021,13 +39970,6 @@ dir = 10 }, /area/station/science/research) -"lYz" = ( -/obj/machinery/computer/records/security, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/security/brig/entrance) "lYR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -40156,7 +40098,6 @@ /obj/structure/cable, /obj/machinery/button/door/directional/west{ id = "xenobio1"; - layer = 4; name = "Xenobio Pen 1 Blast Door"; req_access = list("xenobiology") }, @@ -40250,17 +40191,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, /area/station/engineering/storage_shared) -"mci" = ( -/obj/structure/railing, -/obj/structure/rack, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark/textured, -/area/station/ai_monitored/security/armory/upper) "mco" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -40516,6 +40446,12 @@ }, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) +"mhj" = ( +/obj/structure/railing/wooden_fence{ + dir = 10 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "mhq" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance, @@ -40622,16 +40558,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) -"mko" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4 - }, -/obj/structure/sign/warning/secure_area/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/explab) "mkr" = ( /obj/structure/closet/secure_closet/hydroponics, /obj/effect/turf_decal/tile/green/opposingcorners{ @@ -41305,22 +41231,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"mvU" = ( -/obj/machinery/button/door/directional/east{ - id = "cmoprivacy"; - name = "CMO Shutter Control"; - pixel_y = 23; - req_access = list("cmo") - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/cmo{ - dir = 8; - pixel_x = 27 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "mwh" = ( /obj/structure/table, /obj/item/storage/fancy/donut_box, @@ -42027,7 +41937,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/item/clothing/mask/cigarette{ +/obj/item/cigarette{ pixel_x = 6; pixel_y = 12 }, @@ -42163,19 +42073,6 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen/diagonal, /area/station/service/kitchen) -"mMj" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/turf/open/floor/plating, -/area/station/engineering/engine_smes) "mMk" = ( /obj/machinery/telecomms/message_server/preset, /turf/open/floor/iron/dark/telecomms, @@ -42234,16 +42131,6 @@ }, /turf/open/floor/wood/parquet, /area/station/service/bar/atrium) -"mNj" = ( -/obj/machinery/computer/security{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/computer/security/telescreen/prison{ - pixel_y = 32 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/security/warden) "mNy" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -42925,6 +42812,13 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/supply) +"mYv" = ( +/obj/effect/turf_decal/siding/wideplating_new/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/iron/showroomfloor, +/area/station/security/prison/work) "mYJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -43280,6 +43174,17 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/commons/locker) +"ncx" = ( +/obj/structure/table/wood, +/obj/item/soap/deluxe{ + pixel_y = 11 + }, +/obj/item/soap/deluxe{ + pixel_y = 6 + }, +/obj/item/soap/deluxe, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "ncB" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Walkway" @@ -43488,6 +43393,27 @@ /obj/machinery/meter, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"neV" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/cable, +/obj/item/mod/module/plasma_stabilizer, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/mod/module/signlang_radio, +/obj/item/mod/module/thermal_regulator, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) "nfd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/west, @@ -44099,6 +44025,16 @@ /obj/machinery/vending/assist, /turf/open/floor/plating, /area/station/engineering/storage/tech) +"nnM" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/plating, +/area/station/engineering/storage/tech) "nnR" = ( /obj/machinery/holopad, /turf/open/floor/carpet, @@ -44446,9 +44382,7 @@ /turf/open/floor/plating, /area/station/maintenance/aft/lesser) "nsq" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/filingcabinet/filingcabinet, /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 @@ -45248,6 +45182,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"nCW" = ( +/obj/structure/table, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/station/security/brig/entrance) "nDd" = ( /obj/machinery/status_display/evac/directional/west, /obj/effect/turf_decal/stripes/corner, @@ -45397,6 +45337,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) +"nEI" = ( +/obj/item/flashlight/lantern/on, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "nEV" = ( /obj/machinery/vending/wardrobe/sec_wardrobe, /obj/structure/cable, @@ -46137,6 +46081,18 @@ }, /turf/open/floor/wood, /area/station/hallway/secondary/service) +"nQq" = ( +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 6 + }, +/obj/structure/table/glass, +/turf/open/floor/iron/white/side{ + dir = 9 + }, +/area/station/science/lab) "nQu" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -46467,6 +46423,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_half, /area/station/ai_monitored/command/storage/eva) +"nUI" = ( +/obj/machinery/computer/records/security, +/obj/machinery/light_switch/directional/north{ + pixel_x = -16 + }, +/obj/machinery/computer/security/telescreen/normal/directional/north, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, +/area/station/security/brig/entrance) "nUJ" = ( /obj/machinery/flasher/directional/east{ id = "brigentry" @@ -46886,7 +46852,7 @@ "ocd" = ( /obj/machinery/igniter/incinerator_ordmix, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "ocp" = ( /obj/effect/landmark/start/hangover, /obj/effect/decal/cleanable/dirt, @@ -47241,6 +47207,16 @@ /obj/structure/urinal/directional/north, /turf/open/floor/iron/freezer, /area/station/commons/toilet) +"oiB" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Chemistry Lab Utilities" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/medical/central) "oiD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -48094,16 +48070,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/fore) -"ouE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/computer/security/telescreen/engine{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) "ouP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, @@ -48507,17 +48473,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/violet/visible/layer1, /turf/open/floor/iron, /area/station/engineering/atmos/storage) -"oAJ" = ( -/obj/structure/table/wood, -/obj/item/raptor_dex{ - pixel_y = 13 - }, -/obj/item/raptor_dex{ - pixel_y = 7 - }, -/obj/item/raptor_dex, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "oAM" = ( /obj/structure/fluff/tram_rail/end{ dir = 4 @@ -48596,28 +48551,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"oCm" = ( -/obj/structure/table, -/obj/item/multitool/circuit{ - pixel_x = -8 - }, -/obj/item/multitool/circuit{ - pixel_x = -4 - }, -/obj/item/multitool/circuit, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/explab) "oCs" = ( /obj/structure/table, /obj/item/radio/headset/headset_med{ @@ -49253,20 +49186,6 @@ /obj/structure/sign/warning/gas_mask, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) -"oLW" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used to access the various cameras on the station."; - dir = 1; - layer = 3.1; - name = "Security Camera Monitor"; - network = list("ss13"); - pixel_y = 2 - }, -/obj/structure/table, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/security/brig/entrance) "oMa" = ( /obj/structure/marker_beacon/burgundy, /obj/effect/turf_decal/weather/snow/corner{ @@ -50402,14 +50321,12 @@ }, /obj/machinery/button/door/directional/west{ id = "QMLoaddoor"; - layer = 4; name = "Loading Doors"; pixel_y = -8; req_access = list("cargo") }, /obj/machinery/button/door/directional/west{ id = "QMLoaddoor2"; - layer = 4; name = "Loading Doors"; pixel_y = 8; req_access = list("cargo") @@ -50521,7 +50438,6 @@ /obj/structure/sink/directional/east, /obj/machinery/button/door/directional/west{ id = "xenobio2"; - layer = 4; name = "Xenobio Pen 2 Blast Door"; req_access = list("xenobiology") }, @@ -50870,6 +50786,11 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) +"pjx" = ( +/obj/machinery/portable_atmospherics/pipe_scrubber, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/office) "pjz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50993,16 +50914,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/security/holding_cell) -"pmA" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/ecto_sniffer{ - pixel_x = 6; - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "pna" = ( /obj/machinery/door/poddoor/preopen{ id = "Engineering"; @@ -51506,16 +51417,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, /area/station/cargo/drone_bay) -"pvd" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Chemistry Lab Utilities" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/medical/central) "pve" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -52189,6 +52090,12 @@ }, /turf/open/floor/iron, /area/station/security/prison/mess) +"pEY" = ( +/obj/structure/table, +/obj/item/plant_analyzer, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/plating, +/area/station/engineering/storage/tech) "pFg" = ( /obj/structure/chair{ dir = 8 @@ -52632,6 +52539,14 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/toilet/locker) +"pLx" = ( +/obj/machinery/computer/security{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/computer/security/telescreen/prison/directional/north, +/turf/open/floor/iron/showroomfloor, +/area/station/security/warden) "pLZ" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -52889,6 +52804,14 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) +"pPE" = ( +/obj/machinery/modular_computer/preset/id, +/obj/machinery/computer/security/telescreen/vault/directional/north, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/qm) "pPK" = ( /obj/structure/stairs/east, /turf/open/floor/iron/dark/textured, @@ -53457,6 +53380,15 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) +"pZA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/item/kirbyplants/random/dead/research_director, +/obj/machinery/computer/security/telescreen/rd/directional/west, +/turf/open/floor/iron/smooth_half, +/area/station/command/heads_quarters/rd) "pZD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53646,6 +53578,10 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/open/floor/plating, /area/station/medical/morgue) +"qbM" = ( +/obj/structure/ore_container/food_trough/raptor_trough, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "qbO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -55034,6 +54970,9 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/department/medical/morgue) +"qvN" = ( +/turf/open/floor/engine/xenobio, +/area/station/science/xenobiology) "qvQ" = ( /obj/structure/closet/secure_closet/atmospherics, /turf/open/floor/iron/dark, @@ -55439,12 +55378,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/commons/dorms) -"qBi" = ( -/obj/structure/railing/wooden_fence{ - dir = 10 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "qBj" = ( /obj/structure/cable, /turf/open/floor/iron/white, @@ -55686,17 +55619,6 @@ /obj/item/crowbar/red, /turf/open/floor/glass/reinforced, /area/station/science/xenobiology) -"qFq" = ( -/obj/machinery/computer/security/telescreen/interrogation{ - pixel_y = 30 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/security/processing) "qFs" = ( /obj/effect/spawner/random/vending/snackvend, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -55751,14 +55673,6 @@ /obj/effect/mapping_helpers/airlock/access/all/service/janitor, /turf/open/floor/iron, /area/station/service/janitor) -"qGe" = ( -/obj/structure/table, -/obj/item/scalpel{ - pixel_x = 2; - pixel_y = 6 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "qGg" = ( /obj/structure/rack, /obj/item/pickaxe, @@ -55779,18 +55693,6 @@ /obj/structure/cable, /turf/open/floor/iron/grimy, /area/station/service/bar/backroom) -"qGi" = ( -/obj/effect/turf_decal/trimline/purple/filled/warning{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen{ - dir = 8; - name = "Xenobio Monitor"; - network = list("xeno"); - pixel_x = 26 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "qGJ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -55826,11 +55728,6 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/checker, /area/station/commons/storage/emergency/port) -"qGX" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lantern/on, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "qHg" = ( /obj/structure/transit_tube/curved/flipped{ dir = 1 @@ -55873,10 +55770,6 @@ /obj/structure/flora/bush/fullgrass/style_random, /turf/open/floor/grass, /area/station/service/hydroponics) -"qHt" = ( -/obj/structure/railing/wooden_fence, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "qHz" = ( /obj/machinery/light_switch/directional/west, /obj/machinery/disposal/bin{ @@ -56772,7 +56665,7 @@ "qTp" = ( /obj/structure/table/wood, /obj/item/clothing/mask/fakemoustache, -/obj/item/clothing/mask/cigarette/pipe, +/obj/item/cigarette/pipe, /obj/item/clothing/glasses/monocle, /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/grimy, @@ -57860,7 +57753,6 @@ "rjT" = ( /obj/machinery/button/door/directional/west{ id = "xenobio3"; - layer = 4; name = "Xenobio Pen 3 Blast Door"; req_access = list("xenobiology") }, @@ -57960,6 +57852,16 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"rlL" = ( +/obj/machinery/light_switch/directional/north{ + pixel_x = -7 + }, +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/brown/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) "rlS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57994,6 +57896,17 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/white, /area/station/science/ordnance) +"rms" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin{ + pixel_y = 6 + }, +/obj/item/taperecorder{ + pixel_x = 9 + }, +/turf/open/floor/iron/dark, +/area/station/science/explab) "rmv" = ( /obj/structure/rack, /obj/item/wrench, @@ -58025,7 +57938,7 @@ /obj/effect/mapping_helpers/airlock/locked, /obj/effect/mapping_helpers/airlock/access/all/science/ordnance, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "rmM" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -58181,7 +58094,7 @@ "roW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "roX" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -58384,10 +58297,6 @@ /obj/effect/turf_decal/siding/dark, /turf/open/floor/iron/checker, /area/station/hallway/secondary/service) -"rrf" = ( -/obj/structure/table/wood, -/turf/open/floor/iron/dark, -/area/station/service/chapel/office) "rrl" = ( /obj/item/stack/sheet/mineral/wood, /obj/effect/decal/cleanable/generic, @@ -58804,7 +58713,7 @@ dir = 8 }, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "rzj" = ( /obj/structure/table, /obj/item/stack/sheet/iron/fifty{ @@ -58879,6 +58788,17 @@ /obj/machinery/digital_clock/directional/south, /turf/open/openspace, /area/station/medical/medbay/lobby) +"rzY" = ( +/obj/structure/table/wood, +/obj/item/raptor_dex{ + pixel_y = 13 + }, +/obj/item/raptor_dex{ + pixel_y = 7 + }, +/obj/item/raptor_dex, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "rAr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59260,8 +59180,15 @@ "rEj" = ( /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/science/ordnance) +"rEn" = ( +/obj/structure/railing/wooden_fence{ + dir = 4 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "rEp" = ( /obj/structure/table, /obj/item/hand_labeler, @@ -59604,12 +59531,6 @@ }, /turf/open/floor/wood, /area/station/maintenance/port/aft) -"rKS" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Dormitory Toilets" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "rKX" = ( /obj/machinery/camera{ c_tag = "Surgery B"; @@ -59877,18 +59798,6 @@ "rQf" = ( /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"rQh" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 3 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_y = 3 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/textured, -/area/mine/mechbay) "rQl" = ( /obj/structure/lattice/catwalk, /obj/structure/railing/corner, @@ -60423,7 +60332,6 @@ "rXD" = ( /obj/machinery/button/door/directional/east{ id = "xenobio7"; - layer = 4; name = "Xenobio Pen 7 Blast DOors"; req_access = list("xenobiology") }, @@ -61398,9 +61306,7 @@ /turf/open/floor/plating, /area/station/maintenance/department/cargo) "snv" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/door/poddoor/shutters/preopen{ id = "riot"; name = "Security Shutters" @@ -61645,7 +61551,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/science/ordnance, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "sqN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -62922,6 +62828,16 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen/diagonal, /area/station/service/kitchen) +"sHy" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/requests_console/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) "sHC" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63165,17 +63081,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/wood, /area/station/command/meeting_room) -"sKV" = ( -/obj/machinery/computer/security/telescreen{ - name = "Test Chamber Monitor"; - network = list("xeno"); - pixel_y = 26 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/station/command/heads_quarters/rd) "sKW" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -63865,9 +63770,7 @@ /turf/open/floor/plating, /area/station/maintenance/fore/lesser) "sXf" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/table/reinforced, /obj/item/stack/wrapping_paper{ pixel_x = 3; @@ -63996,17 +63899,6 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) -"sZp" = ( -/obj/effect/turf_decal/siding/wideplating_new/light{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/prisoner, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/security/prison/work) "sZD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64979,16 +64871,6 @@ }, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) -"trb" = ( -/obj/structure/table, -/obj/machinery/computer/security/telescreen{ - dir = 8; - name = "Test Chamber Monitor"; - network = list("test") - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/science/explab) "trc" = ( /obj/machinery/conveyor{ dir = 4; @@ -65000,6 +64882,16 @@ "trm" = ( /turf/open/floor/plating, /area/station/science/ordnance/testlab) +"trn" = ( +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/turf/open/floor/iron/white/corner{ + dir = 4 + }, +/area/station/science/explab) "tru" = ( /obj/structure/chair/pew/left{ dir = 1 @@ -65554,6 +65446,15 @@ dir = 4 }, /area/station/service/chapel) +"tAK" = ( +/obj/machinery/computer/security/telescreen/interrogation/directional/north, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/security/processing) "tAL" = ( /obj/structure/table, /obj/machinery/light/small/directional/south, @@ -65805,6 +65706,16 @@ }, /turf/open/floor/plating, /area/station/cargo/storage) +"tEn" = ( +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/radio/intercom/directional/north, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "tEs" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -66566,6 +66477,28 @@ /obj/item/trash/energybar, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"tPx" = ( +/obj/structure/table, +/obj/item/multitool/circuit{ + pixel_x = -8 + }, +/obj/item/multitool/circuit{ + pixel_x = -4 + }, +/obj/item/multitool/circuit, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/explab) "tPz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/side{ @@ -66930,19 +66863,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/mine/mechbay) -"tWF" = ( -/obj/structure/table, -/obj/item/crowbar/red, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 6; - pixel_y = -3 - }, -/obj/structure/sign/poster/random/directional/west, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "tWK" = ( /obj/structure/cable, /turf/open/floor/plating/snowed/icemoon, @@ -67066,16 +66986,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/security/prison/garden) -"tYL" = ( -/obj/structure/table, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/turf/open/floor/iron/white/corner{ - dir = 4 - }, -/area/station/science/explab) "tYZ" = ( /obj/machinery/door/airlock/external{ name = "External Airlock" @@ -67440,6 +67350,14 @@ /obj/structure/cable, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) +"uek" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/potato{ + name = "\improper Beepsky's emergency battery" + }, +/turf/open/floor/plating, +/area/station/maintenance/fore) "uep" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67765,7 +67683,7 @@ /area/station/maintenance/port/aft) "ujp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "ujs" = ( /obj/effect/spawner/structure/window/reinforced, @@ -67795,10 +67713,6 @@ /obj/effect/decal/cleanable/plastic, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"ukf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/turf/open/floor/iron/dark, -/area/station/science/explab) "uko" = ( /obj/structure/chair/pew/left{ dir = 1 @@ -67991,13 +67905,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/blue, /area/station/security/prison/work) -"unm" = ( -/obj/machinery/plumbing/growing_vat, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb, -/obj/structure/cable, -/turf/open/floor/iron/showroomfloor, -/area/station/security/prison/work) "uno" = ( /obj/structure/closet/secure_closet/freezer/gulag_fridge, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -69191,7 +69098,8 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/engine, +/obj/structure/sign/warning/gas_mask/directional/north, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "uHV" = ( /obj/structure/disposalpipe/trunk/multiz{ @@ -69460,26 +69368,6 @@ }, /turf/open/floor/iron/dark, /area/mine/storage) -"uMw" = ( -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/table, -/obj/item/storage/box/lights/mixed, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/power_store/cell/emproof, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_x = 6; - pixel_y = -2 - }, -/obj/machinery/light_switch/directional/south{ - pixel_x = 10 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) "uMx" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -69909,9 +69797,7 @@ /area/station/medical/medbay/aft) "uTc" = ( /obj/machinery/chem_heater/withbuffer, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/tile/yellow/full, /turf/open/floor/iron/white/smooth_large, /area/station/medical/pharmacy) @@ -69984,9 +69870,8 @@ }, /area/station/service/chapel) "uUn" = ( -/obj/structure/table/optable, /obj/effect/decal/cleanable/blood/old, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "uUq" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle, @@ -70649,10 +70534,6 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) -"vfO" = ( -/obj/structure/ore_container/food_trough/raptor_trough, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "vfS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70795,7 +70676,7 @@ /area/station/command/heads_quarters/captain) "viR" = ( /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "viV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -71346,15 +71227,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/security/courtroom) -"vrl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron, -/area/station/maintenance/department/electrical) "vrr" = ( /obj/machinery/computer/operating{ dir = 8 @@ -71800,6 +71672,13 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/white, /area/station/maintenance/port/fore) +"vxo" = ( +/obj/machinery/vatgrower, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/cable, +/turf/open/floor/iron/showroomfloor, +/area/station/security/prison/work) "vxO" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/siding/wood, @@ -72255,16 +72134,6 @@ }, /turf/open/floor/iron, /area/mine/laborcamp) -"vDG" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/plating, -/area/station/engineering/storage/tech) "vDQ" = ( /obj/effect/spawner/random/decoration/flower, /obj/structure/flora/rock/pile/icy/style_random, @@ -72342,7 +72211,7 @@ /area/station/cargo/drone_bay) "vFb" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = 7; pixel_y = 10 }, @@ -72484,9 +72353,7 @@ /area/station/cargo/sorting) "vHM" = ( /obj/structure/rack, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 }, @@ -73349,6 +73216,20 @@ /obj/item/toy/snowball, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) +"vXV" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/requests_console/directional/west{ + department = "Head of Personnel's Desk"; + name = "Head of Personnel's 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/iron, +/area/station/command/heads_quarters/hop) "vYa" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/delivery, @@ -73852,15 +73733,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/xenobiology) -"wgu" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/candle_box{ - pixel_y = 5 - }, -/obj/item/storage/crayons, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) "wgG" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /obj/effect/turf_decal/trimline/dark_red/arrow_ccw{ @@ -74889,6 +74761,19 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/prison) +"wuV" = ( +/obj/effect/turf_decal/siding/yellow/corner, +/obj/machinery/status_display/evac/directional/south, +/obj/structure/table, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -5 + }, +/obj/item/multitool{ + pixel_x = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "wve" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/white, @@ -74897,6 +74782,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/service/chapel) +"wvu" = ( +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "wvv" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -75849,7 +75737,7 @@ "wKh" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "wKv" = ( /obj/structure/table, /obj/item/radio/off, @@ -76314,6 +76202,12 @@ "wRa" = ( /turf/open/openspace, /area/station/security/prison) +"wRc" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high/empty, +/turf/open/floor/iron/dark, +/area/station/engineering/storage) "wRd" = ( /turf/open/floor/iron, /area/station/engineering/main) @@ -76718,6 +76612,17 @@ /obj/effect/spawner/random/structure/tank_holder, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"wWx" = ( +/obj/effect/turf_decal/siding/wideplating_new/light, +/obj/item/trash/bee, +/obj/machinery/light/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/structure/sign/poster/official/moth_piping/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/station/security/prison/work) "wWB" = ( /obj/structure/chair/plastic{ dir = 8 @@ -77890,16 +77795,6 @@ /obj/item/stack/sheet/leather, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) -"xpH" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) "xpJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -78109,6 +78004,16 @@ /obj/item/food/grown/carrot, /turf/open/misc/asteroid/snow/standard_air, /area/station/science/research) +"xsP" = ( +/obj/structure/table, +/obj/item/folder/white, +/obj/item/folder/white, +/obj/item/pen, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/explab) "xtc" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 @@ -78445,6 +78350,12 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) +"xxH" = ( +/obj/structure/railing/wooden_fence{ + dir = 8 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "xxI" = ( /obj/machinery/airalarm/directional/north, /obj/item/kirbyplants/random, @@ -78782,7 +78693,6 @@ "xCh" = ( /obj/machinery/button/door/directional/west{ id = "xenobio5"; - layer = 4; name = "Xenobio Pen 5 Blast Door"; req_access = list("xenobiology") }, @@ -78991,6 +78901,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /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/science/ordnance) "xEW" = ( @@ -79505,8 +79416,8 @@ /turf/open/floor/iron/dark/smooth_half, /area/station/ai_monitored/command/storage/eva) "xNa" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/engine, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron/white, /area/station/science/xenobiology) "xNn" = ( /obj/effect/turf_decal/stripes/line{ @@ -79715,12 +79626,6 @@ dir = 1 }, /area/station/security/processing) -"xQJ" = ( -/obj/structure/railing/wooden_fence{ - dir = 5 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "xQK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -80065,17 +79970,6 @@ /obj/item/plate, /turf/open/floor/iron, /area/station/security/prison/mess) -"xWC" = ( -/obj/structure/table/wood, -/obj/item/soap/deluxe{ - pixel_y = 11 - }, -/obj/item/soap/deluxe{ - pixel_y = 6 - }, -/obj/item/soap/deluxe, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "xWG" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/iron/freezer, @@ -169290,7 +169184,7 @@ hdb avh qGg uUT -rQh +fyT lQh diI uUT @@ -169461,8 +169355,8 @@ iDt iDt iDt oqL -unm -cvG +vxo +wWx ldz fvK cIc @@ -169718,8 +169612,8 @@ iDt iDt iDt oqL -bFU -sZp +mYv +bNY axX auJ oVy @@ -169993,7 +169887,7 @@ iDt ijY pfw wUj -lMi +dtq jeJ aFg vwl @@ -170290,14 +170184,14 @@ thA thA thA thA -jEa -jEa -jEa -jEa -jEa -jEa -jEa -jEa +dlu +dlu +dlu +dlu +dlu +dlu +dlu +dlu qgQ qgQ rrl @@ -170547,14 +170441,14 @@ thA thA thA thA -jEa -vfO -hwL -hwL -aIv -vfO -hwL -qHt +dlu +qbM +wvu +wvu +bPR +qbM +wvu +bil ijY iDt iDt @@ -170804,14 +170698,14 @@ thA thA thA thA -jEa -bhs -hwL -hwL -aIv -bhs -hwL -qHt +dlu +nEI +wvu +wvu +bPR +nEI +wvu +bil iDt iDt iDt @@ -171061,14 +170955,14 @@ thA thA thA thA -jEa -hwL -hwL -hwL -aIv -hwL -hwL -qHt +dlu +wvu +wvu +wvu +bPR +wvu +wvu +bil iDt iDt ayJ @@ -171318,14 +171212,14 @@ tjo thA thA thA -jEa -hsU -hsU -hwL -xQJ -hsU -hwL -hop +dlu +rEn +rEn +wvu +ghA +rEn +wvu +idH iDt iDt iDt @@ -171575,14 +171469,14 @@ tjo thA thA thA -jEa -hwL -hwL -hwL -hwL -hwL -hwL -hwL +dlu +wvu +wvu +wvu +wvu +wvu +wvu +wvu iDt iDt iDt @@ -171832,14 +171726,14 @@ tjo thA thA thA -jEa -xWC -qGX -hwL -hwL -oAJ -qGX -hwL +dlu +ncx +kYN +wvu +wvu +rzY +kYN +wvu ayJ iDt iDt @@ -172089,14 +171983,14 @@ tjo thA thA thA -jEa -hwL -hwL -hwL -hwL -hwL -hwL -hwL +dlu +wvu +wvu +wvu +wvu +wvu +wvu +wvu iDt iDt iDt @@ -172346,14 +172240,14 @@ tjo thA thA thA -jEa -byV -byV -hwL -hnc -byV -hwL -qBi +dlu +xxH +xxH +wvu +jkK +xxH +wvu +mhj iDt iDt iDt @@ -172603,14 +172497,14 @@ tjo thA thA thA -jEa -hwL -hwL -hwL -aIv -hwL -hwL -qHt +dlu +wvu +wvu +wvu +bPR +wvu +wvu +bil iDt iDt ayJ @@ -172860,14 +172754,14 @@ tjo thA thA thA -jEa -bhs -hwL -hwL -aIv -bhs -hwL -qHt +dlu +nEI +wvu +wvu +bPR +nEI +wvu +bil iDt iDt iDt @@ -173117,14 +173011,14 @@ tjo thA thA thA -jEa -vfO -hwL -hwL -aIv -vfO -hwL -qHt +dlu +qbM +wvu +wvu +bPR +qbM +wvu +bil iDt iDt iDt @@ -173374,14 +173268,14 @@ tjo thA thA thA -jEa -jEa -jEa -jEa -jEa -jEa -jEa -jEa +dlu +dlu +dlu +dlu +dlu +dlu +dlu +dlu iDx rrl iDx @@ -174878,7 +174772,7 @@ ihB ddp hBg nzj -dFr +dKr pOk par rsM @@ -189078,12 +188972,12 @@ xMq alM oxO ffe -lVs -abe -abe +qvN +qvN +qvN biI -abe -eOS +qvN +qvN qLY eGN lZX @@ -189335,12 +189229,12 @@ xMq alM oxO ffe -qGe -abe -cku +qvN +qvN +qvN uUn -xNa -eOS +qvN +qvN qLY vfe tsa @@ -189593,11 +189487,11 @@ alM oxO ffe viR -abe -abe +qvN +qvN bOT -abe -eLb +qvN +qvN qLY tkP fPv @@ -189850,10 +189744,10 @@ alM nsp ffe qLY -ctF +qLY uHS ujp -abe +qvN ctF qLY qLY @@ -191137,7 +191031,7 @@ ffe oqd vHq aZk -pMF +xNa pMF rdl iQM @@ -192118,7 +192012,7 @@ thA tBs tix tBs -wgu +kSC dlB jCL qEJ @@ -192892,7 +192786,7 @@ tBs dit bDH rYt -rrf +ibi wAv jvs qEJ @@ -194482,7 +194376,7 @@ opD mxc hFb hFb -fcj +qRO mEL vqv fkN @@ -194996,7 +194890,7 @@ opD jGR hFb hFb -fcj +qRO rRl vfI vUY @@ -195251,9 +195145,9 @@ odm odm nqy jGR -fcj -fcj -fcj +qRO +qRO +qRO rRl ndb bnZ @@ -195501,10 +195395,10 @@ thA thA rcY iDt -uIf -uIf -uIf -uIf +fcj +fcj +fcj +fcj roW roW bId @@ -230670,7 +230564,7 @@ lJO qzs jnV lJO -xpH +sHy gHS iMT hqx @@ -233257,7 +233151,7 @@ pdf pdf wBb tKI -cnU +pPE alT dcs kin @@ -237678,7 +237572,7 @@ mNY kCn mNY dUn -mMj +eEm cpH kbJ kbJ @@ -237689,7 +237583,7 @@ epY vWe kIt kMY -eYU +wRc lha kAK iLY @@ -238093,7 +237987,7 @@ aWk diC bJj lyG -mci +jko bXy feJ xWb @@ -238152,7 +238046,7 @@ dkb kmi iYb xaA -crH +vXV wjv pec fJl @@ -238708,7 +238602,7 @@ mNY akL tvF tvF -uMw +aYS gTK ruO fKe @@ -238935,7 +238829,7 @@ ylU bep paM xxQ -vDG +nnM kzO gdP ykL @@ -239384,7 +239278,7 @@ feJ uGr uGr iDq -mNj +pLx lAL gPp iDq @@ -239405,7 +239299,7 @@ wqx gEb gYp bWn -itQ +tEn cGt wRI qdE @@ -239962,7 +239856,7 @@ dnq vrX pua paM -kyM +pEY vJI uud gdP @@ -239993,7 +239887,7 @@ mNY ixG aPf dzJ -cWn +neV twt mEw sSJ @@ -240168,9 +240062,9 @@ sDl sDl sDl psN -lYz +nUI dkY -oLW +nCW hzY bRn fng @@ -240237,7 +240131,7 @@ dPT pRj pMu gVD -tWF +gSQ ajF qwe uJH @@ -240761,7 +240655,7 @@ kKH pRj eAj sro -kjh +apL qkT kzA whW @@ -241020,7 +240914,7 @@ fFy mNY bTq xUP -ouE +fQU rpF twt fcg @@ -241534,7 +241428,7 @@ vkz uoF pcg deD -dsk +fLH qnC isX eBI @@ -241779,7 +241673,7 @@ vvv tTV jtA bID -bAW +rlL miw gCK cMd @@ -242044,7 +241938,7 @@ dcC jGB akz sCA -clX +aSw ojv bAT eri @@ -242289,7 +242183,7 @@ oyj gwK nEV bry -jkx +fDM fLq hro tKi @@ -242303,7 +242197,7 @@ wHj mBB juH ojv -kBw +hut mDw jDT qKQ @@ -242813,7 +242707,7 @@ bDz rSC inE oPU -hYU +wuV qnC qnC sCA @@ -243572,7 +243466,7 @@ kQf hDh vnt keP -kRw +inB ctr avk gxP @@ -244039,7 +243933,7 @@ yjF vVw yjF qSh -rKS +hsB uja jcy iuv @@ -245035,7 +244929,7 @@ ihb bnM iRM kkl -qFq +tAK gUs ykw lbk @@ -245559,7 +245453,7 @@ bln bln fsm bUx -cOY +uek wph fnS skl @@ -246895,7 +246789,7 @@ veU vEQ kRP kRP -pvd +oiB kRP pao cGA @@ -247664,7 +247558,7 @@ sEz jFZ uoV gnb -aCV +gTi whh pQL nCV @@ -250998,7 +250892,7 @@ pJC nKa dhk cDT -atC +iTE cAI cMN uYm @@ -251255,7 +251149,7 @@ nGA nKa nTV jPl -bjm +bGD kXM nKa xXV @@ -252282,7 +252176,7 @@ vwO pxn vBG mQr -mvU +idp rZZ opc qPI @@ -254868,7 +254762,7 @@ jIP qOH veX wHc -sKV +fPO pTU itt ily @@ -255645,7 +255539,7 @@ mfV xpA uHc cpg -qGi +gUX cpg cdl pMF @@ -256157,7 +256051,7 @@ mYq nyH lFW rEd -dnU +pZA gSN jbU wnX @@ -257426,8 +257320,8 @@ gqK nxU gjg dxg -doO -pmA +gJi +fVC dkr cHQ jDm @@ -257708,7 +257602,7 @@ kLy bGA lKq bNu -gBg +hUf bKm xMT hjE @@ -257716,8 +257610,8 @@ sJP bkS pJc iBO -oCm -tYL +tPx +trn bgx buv jhC @@ -259192,7 +259086,7 @@ fLb oHh kKL bpQ -vrl +bsc oih dmL lUC @@ -260024,7 +259918,7 @@ xUk aSB tHT nsZ -mko +lHm oZn sFj rck @@ -260254,7 +260148,7 @@ mrw kuV cAi qWn -kck +nQq fOR tFF tia @@ -260281,9 +260175,9 @@ xUk sqt duE nsZ -ukf -cMy -trb +ijW +xsP +rms sXC rDZ rDZ @@ -261817,7 +261711,7 @@ rjK nlP xTV imy -ejD +pjx auK vaa xLq @@ -262837,7 +262731,7 @@ xnt egR pSz elw -hCx +gEe mEU enq kuy diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 620eb102a0aca..1f58502d72c78 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -924,7 +924,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "amX" = ( /turf/closed/wall/r_wall/rust, /area/station/ai_monitored/security/armory) @@ -1195,7 +1195,7 @@ /obj/structure/barricade/wooden/crude, /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "ari" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -2299,7 +2299,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "aKr" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -3480,7 +3480,7 @@ /obj/structure/barricade/wooden/crude, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "bib" = ( /obj/effect/turf_decal/bot, /obj/machinery/conveyor{ @@ -4136,7 +4136,7 @@ /obj/item/stack/rods, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "bty" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/plasma, @@ -5100,7 +5100,7 @@ dir = 4 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "bNv" = ( /obj/machinery/telecomms/server/presets/common, /obj/machinery/light/directional/west, @@ -5867,7 +5867,7 @@ }, /obj/machinery/nuclearbomb/beer, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "cbJ" = ( /obj/structure/railing/corner{ dir = 8 @@ -5909,10 +5909,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat_interior) -"ccz" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/closed/mineral/random/labormineral, -/area/space/nearstation) "ccQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold/cyan/visible, /obj/machinery/meter, @@ -6047,7 +6043,7 @@ /obj/structure/rack, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "cdV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/circuit/green{ @@ -6573,7 +6569,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "cjN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -6867,7 +6863,7 @@ "cnq" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "cnM" = ( /obj/structure/flora/bush/lavendergrass/style_random, /obj/effect/turf_decal/sand/plating, @@ -8642,7 +8638,7 @@ name = "on ramp" }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "cWl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9149,7 +9145,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/space) +/area/station/cargo/miningdock) "deG" = ( /obj/structure/table, /obj/item/storage/toolbox/electrical{ @@ -9293,7 +9289,7 @@ "dgw" = ( /obj/structure/sign/warning/docking, /turf/closed/wall/rust, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "dgD" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, @@ -9305,7 +9301,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "dgE" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -9376,7 +9372,7 @@ width = 12 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "dhT" = ( /obj/structure/cable, /obj/structure/table, @@ -9632,7 +9628,7 @@ dir = 4 }, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "dlc" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/cup/glass/mug/coco, @@ -10151,15 +10147,10 @@ "dsD" = ( /obj/structure/sign/departments/cargo, /turf/closed/wall, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "dsH" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, /obj/effect/decal/cleanable/cobweb, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, @@ -10662,11 +10653,6 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/airalarm/directional/east, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/electrical) @@ -11261,9 +11247,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) -"dLy" = ( -/turf/closed/wall/rust, -/area/space) "dLA" = ( /obj/item/kirbyplants/organic/plant10, /obj/machinery/light_switch/directional/west{ @@ -12935,7 +12918,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "eqA" = ( /obj/machinery/light_switch/directional/south{ pixel_x = 26 @@ -13132,10 +13115,6 @@ pixel_x = -4; pixel_y = 4 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 6 - }, -/obj/item/clothing/mask/cigarette/cigar, /obj/machinery/light/directional/west, /obj/machinery/airalarm/directional/west, /obj/item/paper_bin, @@ -13639,7 +13618,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "eCU" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -14049,12 +14028,8 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "eJy" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/burgundy{ - name = "landing marker" - }, -/turf/open/space/basic, -/area/space) +/turf/closed/wall, +/area/station/cargo/warehouse/upper) "eJE" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -14251,7 +14226,7 @@ /area/station/maintenance/starboard/fore) "eNb" = ( /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "eNy" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -14300,10 +14275,6 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/wood/tile, /area/station/service/library) -"eOs" = ( -/obj/effect/decal/cleanable/robot_debris, -/turf/closed/wall/r_wall/rust, -/area/station/service/chapel/dock) "eOt" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, @@ -14791,7 +14762,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "eYd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -15086,7 +15057,7 @@ environment_smash = 0 }, /turf/open/floor/carpet/green, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "fdC" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -15109,7 +15080,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/space) +/area/station/cargo/miningdock) "fez" = ( /obj/structure/cable, /obj/structure/chair/office{ @@ -15566,7 +15537,7 @@ pixel_y = 6 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "fkL" = ( /obj/structure/sign/warning/pods, /turf/closed/wall, @@ -17271,7 +17242,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "fIP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/chair/office{ @@ -17375,15 +17346,11 @@ /obj/item/stack/sheet/iron/fifty, /obj/item/stack/rods/fifty, /obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high, /obj/item/stack/sheet/mineral/plasma{ amount = 30 }, -/obj/item/gps, -/obj/effect/turf_decal/bot, /obj/item/stack/cable_coil, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) "fKi" = ( @@ -17921,7 +17888,7 @@ /obj/structure/closet/crate, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "fSE" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/vending/cigarette, @@ -18325,7 +18292,7 @@ /obj/effect/turf_decal/stripes/line, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "gaE" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -19887,7 +19854,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "gzA" = ( /obj/structure/girder, /obj/effect/turf_decal/stripes/corner, @@ -20125,7 +20092,7 @@ /obj/item/shard, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "gDT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20195,7 +20162,7 @@ }, /obj/structure/sign/poster/contraband/random/directional/east, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "gFD" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/tile/neutral{ @@ -20446,7 +20413,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "gIz" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -20560,7 +20527,7 @@ /obj/structure/table, /obj/item/stack/cable_coil/five, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "gJK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/closed/wall/rust, @@ -20599,7 +20566,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "gKC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, @@ -21168,7 +21135,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "gUZ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21447,7 +21414,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "hbC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/burnt_floor, @@ -21615,7 +21582,7 @@ name = "Freight Mining Airlock" }, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "heU" = ( /obj/structure/sign/warning/electric_shock/directional/south, /obj/effect/decal/cleanable/dirt, @@ -22911,7 +22878,7 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/closet, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "hAc" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -22952,9 +22919,9 @@ /turf/closed/wall/r_wall, /area/station/security/evidence) "hBa" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall, -/area/station/maintenance/starboard) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/warehouse/upper) "hBf" = ( /obj/structure/chair{ dir = 4 @@ -23036,7 +23003,7 @@ pixel_y = 2 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "hBJ" = ( /turf/closed/wall/r_wall/rust, /area/station/maintenance/port/greater) @@ -23561,11 +23528,6 @@ "hJz" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, /obj/item/screwdriver{ pixel_y = 18 }, @@ -23658,7 +23620,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "hKB" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -23748,7 +23710,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/space) +/area/station/cargo/miningdock) "hLO" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ @@ -23923,7 +23885,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "hOt" = ( /obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24229,11 +24191,6 @@ "hRU" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron/dark, /area/station/science/lab) @@ -24776,7 +24733,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "iaH" = ( /obj/structure/chair/wood/wings{ dir = 8 @@ -24844,7 +24801,7 @@ /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "ibJ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -24918,11 +24875,6 @@ /obj/structure/sign/warning/secure_area, /turf/closed/wall/rust, /area/space/nearstation) -"icG" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space) "icJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -25255,7 +25207,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "ihU" = ( /turf/closed/wall/rust, /area/station/cargo/sorting) @@ -25385,11 +25337,6 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, /obj/machinery/light/small/directional/east, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -25803,7 +25750,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "ipI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/item/radio/intercom/directional/east, @@ -26383,7 +26330,7 @@ /obj/effect/turf_decal/stripes/line, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "iyF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -26745,7 +26692,7 @@ "iEB" = ( /obj/structure/sign/warning/docking, /turf/closed/wall, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "iEG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27527,7 +27474,7 @@ /obj/item/shard, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "iQN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27795,7 +27742,7 @@ /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "iVj" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/security) @@ -27967,7 +27914,7 @@ dir = 8 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "iYa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -29358,7 +29305,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "jwi" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ @@ -29652,7 +29599,7 @@ }, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "jBS" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/west, @@ -29900,7 +29847,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "jGW" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/disposalpipe/segment{ @@ -30400,7 +30347,6 @@ pixel_y = 4 }, /obj/item/lighter, -/obj/item/clothing/mask/cigarette/cigar/cohiba, /obj/item/stamp/head/ce, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, @@ -30665,7 +30611,7 @@ /area/station/security/lockers) "jSF" = ( /turf/open/floor/carpet/green, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "jSJ" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, @@ -31384,7 +31330,6 @@ "kgB" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -34276,7 +34221,7 @@ /obj/effect/decal/cleanable/blood/old, /obj/item/stack/rods, /turf/open/floor/carpet/green, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lea" = ( /obj/machinery/rnd/production/techfab/department/cargo, /obj/effect/turf_decal/bot, @@ -34437,7 +34382,7 @@ /obj/structure/sign/warning/fire/directional/north, /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lgl" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/spider/stickyweb, @@ -34486,7 +34431,7 @@ /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/remains/human, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lhm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/closed/wall/r_wall, @@ -34964,7 +34909,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lqy" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/bush/stalky/style_random, @@ -35503,13 +35448,12 @@ /area/station/service/chapel/monastery) "lxG" = ( /obj/structure/table, -/obj/item/stock_parts/cell/high, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lxL" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -35930,7 +35874,7 @@ dir = 9 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lFt" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/botanist, @@ -35965,9 +35909,6 @@ pixel_x = 3; pixel_y = 3 }, -/obj/item/clothing/mask/cigarette/rollie/cannabis{ - pixel_y = -3 - }, /turf/open/floor/plating/rust, /area/station/maintenance/department/security) "lGa" = ( @@ -36291,7 +36232,7 @@ "lLH" = ( /obj/structure/sign/departments/engineering, /turf/closed/wall, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lLN" = ( /obj/structure/fans/tiny, /obj/machinery/door/poddoor/massdriver_chapel, @@ -36530,7 +36471,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lQj" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/yellow{ @@ -36679,7 +36620,7 @@ name = "Freight Bay Blast Door" }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lTc" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -36975,7 +36916,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "lYa" = ( /obj/structure/chair/comfy/brown, /obj/effect/landmark/start/detective, @@ -37312,7 +37253,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "mdE" = ( /obj/machinery/light/small/directional/north, /obj/machinery/firealarm/directional/north, @@ -37629,7 +37570,7 @@ /obj/effect/decal/cleanable/oil, /obj/item/stack/cable_coil/cut, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "mit" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38044,7 +37985,7 @@ }, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "moc" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -38450,7 +38391,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "mwn" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -38855,7 +38796,7 @@ /area/station/science/genetics) "mDD" = ( /turf/closed/wall/rust, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "mDJ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ @@ -39786,7 +39727,7 @@ dir = 8 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "mSu" = ( /obj/structure/table, /obj/machinery/light/directional/west, @@ -40041,7 +39982,7 @@ /obj/structure/sign/poster/contraband/random/directional/north, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "mXI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40574,7 +40515,7 @@ icon_state = "crateopen" }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "ngF" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/burnt_floor, @@ -41248,7 +41189,7 @@ "nuf" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "nuh" = ( /obj/effect/spawner/random/vending/colavend, /obj/effect/turf_decal/bot, @@ -42304,7 +42245,7 @@ dir = 2 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "nLZ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -42431,7 +42372,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, /turf/open/floor/iron, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "nOR" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42651,14 +42592,6 @@ pixel_x = 11; pixel_y = -7 }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 10; - pixel_y = -1 - }, /obj/item/stamp/granted, /turf/open/floor/carpet/orange, /area/station/command/heads_quarters/qm) @@ -43011,7 +42944,7 @@ /obj/item/stack/tile/wood, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "ocn" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -44259,7 +44192,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "ozz" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -44942,7 +44875,7 @@ /obj/item/t_scanner, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "oLH" = ( /turf/closed/wall/r_wall/rust, /area/station/maintenance/starboard) @@ -45050,7 +44983,7 @@ /obj/structure/closet/crate, /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "oNO" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -45190,10 +45123,6 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/sorting) -"oRy" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space) "oRz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45298,7 +45227,7 @@ dir = 2 }, /turf/open/space, -/area/space) +/area/space/nearstation) "oSS" = ( /obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ @@ -45343,7 +45272,7 @@ name = "Freight Bay Blast Door" }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "oTt" = ( /obj/structure/sign/painting/library{ pixel_x = 32 @@ -47409,7 +47338,7 @@ dir = 4 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "pBR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -47462,7 +47391,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "pCP" = ( /obj/machinery/light/small/directional/north, /obj/effect/spawner/random/trash/cigbutt, @@ -47740,10 +47669,6 @@ /obj/item/grenade/chem_grenade/smart_metal_foam{ pixel_x = -2 }, -/obj/item/stock_parts/cell/emproof{ - pixel_x = 6; - pixel_y = -6 - }, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, @@ -48122,7 +48047,6 @@ /obj/effect/decal/cleanable/dirt, /obj/item/clipboard, /obj/item/clothing/mask/fakemoustache, -/obj/item/clothing/mask/cigarette/pipe, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 }, @@ -48439,13 +48363,13 @@ name = "off ramp" }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "pQT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/blood/old, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "pRu" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/door/window/left/directional/south{ @@ -49306,7 +49230,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "qhf" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -49744,7 +49668,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "qpj" = ( /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, @@ -50004,7 +49928,6 @@ "qug" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, /obj/item/screwdriver{ pixel_y = 18 }, @@ -50030,7 +49953,7 @@ /obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "quv" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, @@ -51479,7 +51402,7 @@ }, /obj/item/stack/cable_coil/cut, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "qVc" = ( /obj/machinery/chem_master, /obj/effect/turf_decal/bot, @@ -51607,7 +51530,7 @@ /obj/structure/table, /obj/item/binoculars, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "qWz" = ( /obj/structure/lattice, /obj/structure/sign/warning/secure_area/directional/east, @@ -52869,7 +52792,7 @@ /obj/effect/decal/cleanable/blood/old, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "rrK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52970,7 +52893,7 @@ name = "External Freight Airlock" }, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "rsZ" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/abandoned, @@ -53184,7 +53107,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "rvD" = ( /obj/structure/transit_tube, /obj/effect/turf_decal/sand/plating, @@ -54170,7 +54093,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table_frame, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "rMi" = ( /obj/effect/turf_decal/delivery, /obj/machinery/portable_atmospherics/scrubber/huge, @@ -54574,7 +54497,7 @@ }, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "rRJ" = ( /obj/machinery/camera/directional/south{ c_tag = "Satellite External Fore"; @@ -54807,7 +54730,7 @@ }, /obj/item/stack/cable_coil/cut, /turf/open/floor/wood, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "rVw" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -54970,7 +54893,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "rZE" = ( /obj/effect/turf_decal/siding/blue/corner{ dir = 8 @@ -55167,7 +55090,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "scE" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -55333,7 +55256,6 @@ /obj/structure/table/reinforced/plastitaniumglass, /obj/effect/decal/cleanable/dirt, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, @@ -55353,7 +55275,6 @@ /obj/item/electronics/airlock{ pixel_y = 6 }, -/obj/item/stock_parts/cell/high, /turf/open/floor/engine, /area/station/engineering/storage/tech) "seW" = ( @@ -55397,7 +55318,7 @@ dir = 6 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "sfI" = ( /obj/structure/girder, /obj/effect/mapping_helpers/burnt_floor, @@ -56301,7 +56222,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "suo" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/caution/stand_clear, @@ -56339,7 +56260,7 @@ "suU" = ( /obj/docking_port/stationary/escape_pod, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "svp" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/atmospherics/components/trinary/filter/atmos/o2, @@ -57915,7 +57836,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "sTB" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -60028,7 +59949,6 @@ /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "tBh" = ( -/obj/effect/mapping_helpers/requests_console/assistance, /obj/structure/table/optable, /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral/half/contrasted, @@ -60430,14 +60350,6 @@ /area/station/engineering/atmos) "tHu" = ( /obj/structure/table, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 10; - pixel_y = -1 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 8; - pixel_y = 4 - }, /obj/item/reagent_containers/cup/glass/bottle/beer, /obj/item/reagent_containers/cup/glass/bottle/beer{ pixel_y = 10; @@ -60450,10 +60362,6 @@ pixel_x = 7; pixel_y = 12 }, -/obj/item/clothing/mask/cigarette/rollie/cannabis{ - pixel_x = 1; - pixel_y = 17 - }, /turf/open/floor/iron/dark, /area/station/cargo/miningoffice) "tHO" = ( @@ -60760,7 +60668,7 @@ }, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "tOa" = ( /obj/structure/table, /obj/item/tank/internals/oxygen/red, @@ -61449,7 +61357,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "tZk" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/corner{ @@ -62235,7 +62143,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "ulS" = ( /turf/closed/wall, /area/station/security/courtroom) @@ -63226,7 +63134,7 @@ }, /obj/item/stack/rods, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "uCR" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/blood/old, @@ -63769,15 +63677,6 @@ /obj/machinery/cell_charger{ pixel_y = 5 }, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = 8; - pixel_y = 9 - }, /turf/open/floor/iron/dark, /area/station/science/ordnance/office) "uMf" = ( @@ -63951,7 +63850,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "uQE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64490,7 +64389,7 @@ /obj/structure/grille/broken, /obj/effect/decal/cleanable/glass, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "uZT" = ( /obj/effect/landmark/start/medical_doctor, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, @@ -64862,7 +64761,7 @@ /obj/structure/barricade/wooden/crude, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "vfO" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ @@ -66178,7 +66077,7 @@ /obj/item/stack/rods, /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "vAw" = ( /obj/machinery/vending/wardrobe/chef_wardrobe, /obj/effect/turf_decal/bot, @@ -66518,7 +66417,6 @@ /obj/item/flashlight, /obj/item/flashlight/flare, /obj/item/flashlight/flare, -/obj/item/stock_parts/cell/high, /obj/effect/decal/cleanable/oil, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -67150,10 +67048,6 @@ dir = 8 }, /area/station/hallway/primary/port) -"vNT" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) "vOl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -67175,24 +67069,12 @@ pixel_x = 2; pixel_y = -2 }, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, /obj/machinery/camera/directional/south{ c_tag = "Engineering Storage"; name = "engineering camera"; network = list("ss13","engine") }, /obj/machinery/light_switch/directional/east, -/obj/item/stock_parts/cell/emproof{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/item/stock_parts/cell/emproof{ - pixel_x = -6; - pixel_y = 5 - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -67998,7 +67880,7 @@ /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "war" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -68528,7 +68410,6 @@ /obj/structure/cable, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, @@ -68699,7 +68580,7 @@ /obj/effect/turf_decal/bot, /obj/structure/sign/warning/no_smoking/directional/north, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wlP" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/effect/turf_decal/bot, @@ -69024,7 +68905,7 @@ }, /mob/living/basic/mining/hivelord, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wpw" = ( /turf/closed/wall, /area/station/science/xenobiology) @@ -69462,7 +69343,7 @@ /obj/structure/table/wood, /obj/effect/spawner/random/maintenance, /turf/open/floor/carpet/green, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wxI" = ( /obj/item/kirbyplants/organic/plant5, /obj/effect/decal/cleanable/dirt, @@ -69662,7 +69543,7 @@ }, /mob/living/basic/mining/hivelord, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wAz" = ( /obj/structure/railing{ dir = 4 @@ -69996,7 +69877,7 @@ }, /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wGA" = ( /obj/structure/table, /obj/structure/railing, @@ -70739,7 +70620,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/atmospheric_sanity/ignore_area, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wSL" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70823,7 +70704,7 @@ /obj/effect/turf_decal/stripes/line, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wTS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -70843,7 +70724,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wVb" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -70956,7 +70837,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wWD" = ( /obj/structure/table, /obj/item/wrench, @@ -71083,7 +70964,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "wYR" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -72088,7 +71969,7 @@ "xqm" = ( /obj/structure/sign/warning/vacuum, /turf/closed/wall/rust, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "xqw" = ( /turf/open/floor/bronze, /area/station/maintenance/department/chapel) @@ -72396,7 +72277,7 @@ dir = 6 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "xvW" = ( /turf/closed/wall, /area/station/medical/paramedic) @@ -72476,11 +72357,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"xwY" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space) "xxk" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/cmo) @@ -72517,7 +72393,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/station/cargo/warehouse) +/area/station/cargo/warehouse/upper) "xxN" = ( /obj/machinery/portable_atmospherics/canister/plasma, /turf/open/floor/iron/dark, @@ -72950,15 +72826,11 @@ /area/station/hallway/primary/central) "xEZ" = ( /obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, /obj/machinery/camera/directional/west{ c_tag = "Teleporter Access"; name = "command camera" }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, +/obj/machinery/cell_charger, /turf/open/floor/iron/dark, /area/station/command/teleporter) "xFt" = ( @@ -74956,9 +74828,6 @@ pixel_x = -6; pixel_y = 6 }, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, /obj/item/crowbar/red, /obj/item/toy/figure/roboticist{ pixel_x = 6 @@ -91236,7 +91105,7 @@ rNx psC hOm psC -eOs +vTV aeu aeu aeu @@ -105638,7 +105507,7 @@ aeu aeu aeu aeu -ccz +aeu aeu aeu aaa @@ -114683,7 +114552,7 @@ dty cqr lDu mtN -hBa +rZV rZV nfY nfY @@ -116490,7 +116359,7 @@ aLI dVB kyj qAR -vNT +acm aaa aaa hOc @@ -116747,7 +116616,7 @@ izu dVB pmk oUz -vNT +acm aaa aaa bBV @@ -117004,7 +116873,7 @@ gmb fxY tHu oUz -vNT +acm aaa aaa aaa @@ -117261,7 +117130,7 @@ twd dVB gPO oUz -vNT +acm aaa aaa aaa @@ -117518,7 +117387,7 @@ wCe fxY gKI fae -eJy +qJs aaa aaa aaa @@ -117775,7 +117644,7 @@ rcp fxY umw oUz -vNT +acm aaa aaa aaa @@ -117954,11 +117823,11 @@ aeu aeu aeu aeu -dME -itR -itR -itR -dME +eJy +hBa +hBa +hBa +eJy aaa aaa aaa @@ -118032,7 +117901,7 @@ bBK eIQ jJp oUz -vNT +acm aaa aaa aaa @@ -118207,16 +118076,16 @@ aeu aeu aeu aeu -dME +eJy mDD -dME -dME +eJy +eJy mDD qVW gJF rLW mDD -dME +eJy acm qJs aaa @@ -118289,7 +118158,7 @@ aLI fxY umw oUz -vNT +acm aaa aaa aaa @@ -118463,7 +118332,7 @@ aeu aeu aeu aeu -dME +eJy mDD fkI waq @@ -118474,7 +118343,7 @@ nuf vAr sfx mDD -itR +hBa iEB aaa aaa @@ -118546,7 +118415,7 @@ kzr oCu rwa qAR -vNT +acm aaa aaa aaa @@ -118720,7 +118589,7 @@ aeu aeu aeu aeu -dME +eJy gKB scp wTy @@ -118803,7 +118672,7 @@ xPT vld jgC mjW -vNT +acm aaa aaa aaa @@ -118977,11 +118846,11 @@ aeu aeu aeu aeu -dME +eJy wlO wAv qgV -itR +hBa qUZ fSD ibm @@ -119060,7 +118929,7 @@ tRg nuS hpH mjW -vNT +acm aaa aaa aaa @@ -119317,7 +119186,7 @@ vSM gAF miW jgC -vNT +acm aaa aaa aaa @@ -119501,8 +119370,8 @@ cnq oNI hOs lXP -dME -itR +eJy +hBa dgw aaa aaa @@ -119574,13 +119443,13 @@ pra rEu gEs xPT -icG -vNT -xwY -icG -icG -icG -eJy +aeo +acm +aaQ +aeo +aeo +aeo +qJs aaa aaa aaa @@ -119748,17 +119617,17 @@ aeu aeu aeu aeu -dME -itR +eJy +hBa mDD -itR -dME +hBa +eJy gIw wSz eNb sTy ulJ -itR +hBa acm qJs aaa @@ -119831,13 +119700,13 @@ pIb mVu kPI mjW -vNT +acm aaa -vNT +acm aaa aaa aaa -vNT +acm aaa aaa aaa @@ -120005,7 +119874,7 @@ aeu aeu aeu mDD -dME +eJy uCQ mis ipE @@ -120015,7 +119884,7 @@ ngl lhf sTy uQt -itR +hBa aaa aaa aaa @@ -120088,13 +119957,13 @@ kYE gjv oiE mjW -vNT +acm aaa -vNT +acm aaa aaa aaa -vNT +acm aaa aaa aaa @@ -120261,7 +120130,7 @@ aeu aeu aeu aeu -dME +eJy iUV pQT rZi @@ -120272,7 +120141,7 @@ lqp gUT ihD uQt -dME +eJy aaa aaa aaa @@ -120338,7 +120207,7 @@ acm rZV xrA rZV -dLy +jgC mjW mjW xPT @@ -120346,13 +120215,13 @@ iVn xPT jgC ohR -vNT -oRy -vNT -oRy -oRy -vNT -vNT +acm +acK +acm +acK +acK +acm +acm aaa aaa aaa @@ -120518,7 +120387,7 @@ aeu aeu aeu aeu -dME +eJy hBG rZi wpu @@ -120526,11 +120395,11 @@ amU dsD heD wGs -dME +eJy uZS -itR +hBa mDD -dME +eJy qJs aaa aaa @@ -120581,9 +120450,9 @@ cmU aeU aeU aaQ -oRy -vNT -oRy +acK +acm +acK acm aeu aeu @@ -120604,11 +120473,11 @@ vFL xPT acm aaa -vNT +acm aaa aaa aaa -vNT +acm aaa aaa aaa @@ -120783,11 +120652,11 @@ xvP bhR lFr jGU -itR +hBa nuf iQK jSF -dME +eJy acm aaa aaa @@ -120861,11 +120730,11 @@ dFj xPT aaQ aaa -vNT +acm aaa aaa aaa -vNT +acm aaa aaa aaa @@ -121032,19 +120901,19 @@ aeu aeu aeu aeu -dME +eJy mDD rRD -itR +hBa pCF -dME +eJy mob gau vfL ocg fdA wxF -itR +hBa acm aaa aaa @@ -121117,8 +120986,8 @@ ilI xPT ohR qJs -vNT -vNT +acm +acm aaa aaa aaa @@ -121290,7 +121159,7 @@ aeu aeu aeu aeu -dME +eJy qoW hKA rrG @@ -121301,7 +121170,7 @@ mDD mWZ jSF lds -itR +hBa acm aaa aaa @@ -121547,14 +121416,14 @@ aeu aeu aeu aeu -dME +eJy jvR fII cjI -dME +eJy mDD -dME -dME +eJy +eJy rvz rVt gDS @@ -121804,18 +121673,18 @@ aeu aeu aeu aeu -dME +eJy hbr xqm rsY -dME +eJy aeu aeu -dME +eJy mDD -dME -dME -dME +eJy +eJy +eJy qJs aaa aaa diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 5e7ab642c2741..66bfc4654f1dc 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -249,14 +249,6 @@ /obj/structure/window/spawner/directional/south, /turf/open/floor/iron, /area/station/engineering/atmos) -"afz" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron, -/area/station/engineering/atmos) "afD" = ( /turf/open/floor/engine{ name = "Holodeck Projector Floor" @@ -269,6 +261,13 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/carpet, /area/station/commons/dorms) +"afM" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/station/engineering/main) "afZ" = ( /obj/machinery/vending/coffee, /obj/structure/disposalpipe/segment, @@ -798,6 +797,14 @@ /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"apO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "apS" = ( /obj/structure/sink/directional/east, /obj/effect/turf_decal/stripes/line{ @@ -1732,7 +1739,10 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/machinery/firealarm/directional/east, +/obj/machinery/power/apc/auto_name/directional/east{ + areastring = "/area/station/science/ordnance/burnchamber" + }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance) "aHM" = ( @@ -1859,20 +1869,6 @@ /obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/station/engineering/supermatter) -"aJz" = ( -/obj/structure/table/glass, -/obj/item/tank/internals/emergency_oxygen{ - pixel_x = -8 - }, -/obj/item/clothing/mask/breath{ - pixel_x = 4 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "aJI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -2367,15 +2363,6 @@ "aRI" = ( /turf/open/floor/circuit/green, /area/station/science/robotics/mechbay) -"aRS" = ( -/obj/machinery/computer/security/telescreen/ce{ - dir = 1; - pixel_y = -30 - }, -/obj/machinery/pdapainter/engineering, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "aRV" = ( /obj/machinery/porta_turret/ai{ dir = 1 @@ -2730,29 +2717,12 @@ /turf/open/floor/iron, /area/station/engineering/break_room) "aYl" = ( -/obj/structure/table, -/obj/item/assembly/igniter{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/assembly/igniter{ - pixel_x = 5; - pixel_y = -4 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = -1 - }, /obj/machinery/camera/directional/east{ c_tag = "Xenobiology Lab - Test Chamber"; network = list("ss13","rd","xeno") }, /obj/machinery/light/cold/directional/east, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "aYw" = ( /obj/machinery/door/airlock/external{ @@ -2936,6 +2906,12 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"baG" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "baM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3791,7 +3767,7 @@ /obj/item/clothing/mask/animal/horsehead, /obj/structure/table/wood, /obj/machinery/airalarm/directional/south, -/obj/item/clothing/mask/cigarette/pipe, +/obj/item/cigarette/pipe, /obj/item/clothing/mask/fakemoustache, /obj/structure/sign/poster/contraband/random/directional/west, /turf/open/floor/wood, @@ -3814,7 +3790,7 @@ /area/station/engineering/atmospherics_engine) "bqC" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/pipe, +/obj/item/cigarette/pipe, /turf/open/floor/wood, /area/station/commons/lounge) "bqJ" = ( @@ -4233,7 +4209,7 @@ "bxr" = ( /obj/structure/sign/warning/electric_shock/directional/east, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "bxE" = ( /obj/machinery/camera/directional/south{ c_tag = "Chemistry South"; @@ -4297,6 +4273,31 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"byE" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/machinery/button/door/directional/north{ + id = "rdrnd"; + name = "Research and Development Containment Control"; + pixel_x = -6; + req_access = list("rd") + }, +/obj/machinery/button/door/directional/north{ + id = "rdordnance"; + name = "Ordnance Containment Control"; + pixel_x = 6; + req_access = list("rd") + }, +/obj/machinery/button/door/directional/north{ + id = "rdoffice"; + name = "Privacy Control"; + pixel_y = 34; + req_access = list("rd") + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/rd) "byQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4554,7 +4555,7 @@ /obj/effect/mapping_helpers/airlock/locked, /obj/effect/mapping_helpers/airlock/access/all/science/ordnance, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "bEA" = ( /obj/structure/cable, /obj/machinery/camera/directional/south{ @@ -4640,9 +4641,7 @@ /turf/open/floor/iron, /area/station/science/robotics/lab) "bFN" = ( -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/machinery/button/door/directional/north{ id = "pharmacy_shutters"; name = "pharmacy shutters control"; @@ -4872,15 +4871,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) -"bKi" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "bKv" = ( /obj/item/pen, /obj/structure/table/reinforced, @@ -5622,6 +5612,18 @@ }, /turf/open/floor/iron, /area/station/science/lab) +"bXg" = ( +/obj/effect/turf_decal/trimline/purple/filled/warning{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/science/explab) "bXk" = ( /obj/machinery/telecomms/server/presets/command, /turf/open/floor/circuit/telecomms/mainframe, @@ -5712,7 +5714,6 @@ /obj/structure/table, /obj/machinery/button/door{ id = "xenobio6"; - layer = 3.3; name = "Xenobio Pen 6 Blast Doors"; pixel_y = 1; req_access = list("xenobiology") @@ -5802,6 +5803,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"cbp" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/normal/directional/north, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "cbz" = ( /turf/closed/wall, /area/station/cargo/storage) @@ -5857,6 +5869,11 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"cdS" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "cdX" = ( /turf/closed/wall, /area/station/engineering/storage/tech) @@ -5999,7 +6016,7 @@ "cgP" = ( /obj/machinery/air_sensor/ordnance_burn_chamber, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "cgZ" = ( /obj/machinery/light_switch/directional/east, /obj/structure/cable, @@ -7003,15 +7020,6 @@ }, /turf/open/floor/wood, /area/station/service/library) -"cyp" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/siding/purple{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) "cyG" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -7182,7 +7190,7 @@ pixel_x = 6; pixel_y = -4 }, -/obj/item/clothing/mask/cigarette/rollie/cannabis{ +/obj/item/cigarette/rollie/cannabis{ pixel_y = -3 }, /turf/open/space/basic, @@ -7242,6 +7250,17 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/genetics) +"cDO" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "cDP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7417,12 +7436,6 @@ }, /turf/open/floor/plating, /area/station/science/genetics) -"cIl" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "cIK" = ( /obj/machinery/smartfridge/chemistry/preloaded, /obj/effect/turf_decal/tile/yellow/fourcorners, @@ -7550,6 +7563,22 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/carpet, /area/station/commons/dorms) +"cKI" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/box, +/obj/machinery/portable_atmospherics/canister, +/obj/item/radio/intercom/directional/north, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/box, +/obj/machinery/portable_atmospherics/canister, +/obj/item/radio/intercom/directional/north, +/obj/structure/sign/warning/gas_mask/directional/east, +/turf/open/floor/iron, +/area/station/science/xenobiology) "cKN" = ( /obj/structure/table/wood, /obj/structure/cable, @@ -7749,7 +7778,7 @@ dir = 1 }, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "cOX" = ( /obj/structure/sign/warning/radiation/rad_area/directional/north, /obj/effect/turf_decal/stripes/line{ @@ -7936,7 +7965,7 @@ use_power = 0 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "cTl" = ( /obj/structure/table/glass, /obj/item/reagent_containers/syringe, @@ -8933,6 +8962,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) +"dkX" = ( +/obj/structure/cable, +/obj/machinery/light/cold/directional/north, +/obj/machinery/computer/security/telescreen/isolation/directional/north, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "dla" = ( /obj/structure/chair/stool/directional/west, /obj/effect/turf_decal/trimline/red/warning{ @@ -9062,6 +9097,14 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) +"doJ" = ( +/obj/machinery/portable_atmospherics/pipe_scrubber, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/floor/iron, +/area/station/engineering/atmos) "doM" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/firealarm/directional/west, @@ -9192,6 +9235,27 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"dqy" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/porta_turret/ai, +/obj/machinery/computer/security/telescreen/minisat/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/aisat_interior) +"dqE" = ( +/obj/structure/closet/toolcloset, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/obj/item/lightreplacer{ + pixel_y = 7 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/storage_shared) "dqI" = ( /obj/effect/turf_decal/bot, /obj/machinery/vending/cigarette, @@ -9539,9 +9603,7 @@ /obj/structure/window/spawner/directional/south, /obj/structure/window/spawner/directional/north, /obj/structure/window/spawner/directional/west, -/obj/machinery/door/window/right/directional/east{ - layer = 3 - }, +/obj/machinery/door/window/right/directional/east, /turf/open/floor/plating, /area/station/maintenance/disposal) "dwJ" = ( @@ -9644,6 +9706,14 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/robotics/mechbay) +"dzX" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "dzY" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/engine/n2o, @@ -9813,22 +9883,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"dEk" = ( -/obj/effect/turf_decal/bot, -/obj/structure/rack, -/obj/machinery/status_display/evac/directional/east, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -5 - }, -/obj/item/multitool{ - pixel_x = 8 - }, -/turf/open/floor/iron/checker, -/area/station/engineering/storage_shared) "dEx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9846,7 +9900,7 @@ dir = 4 }, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "dEH" = ( /obj/effect/landmark/generic_maintenance_landmark, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -10216,7 +10270,7 @@ /obj/machinery/sparker/directional/north{ id = "Xenobio" }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "dLn" = ( /obj/structure/rack, @@ -10540,6 +10594,20 @@ }, /turf/open/floor/circuit/green/telecomms/mainframe, /area/station/tcommsat/server) +"dQL" = ( +/obj/machinery/light_switch/directional/west{ + pixel_x = -20 + }, +/obj/machinery/computer/records/medical{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/light/small/directional/west, +/obj/machinery/computer/security/telescreen/cmo/directional/west{ + name = "Medbay Monitor" + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) "dQO" = ( /obj/effect/landmark/start/atmospheric_technician, /obj/effect/decal/cleanable/dirt, @@ -10751,7 +10819,7 @@ "dTN" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "dTQ" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 4 @@ -10972,30 +11040,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/station/security/prison) -"dXp" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/crowbar, -/obj/item/grenade/chem_grenade/smart_metal_foam, -/obj/item/grenade/chem_grenade/smart_metal_foam, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_x = 4; - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "dXs" = ( /obj/structure/secure_safe/directional/north{ name = "armory safe A" @@ -11036,7 +11080,7 @@ /area/station/security/execution/education) "dXU" = ( /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "dYa" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, @@ -11685,18 +11729,6 @@ dir = 8 }, /area/station/service/chapel) -"ehL" = ( -/obj/effect/turf_decal/trimline/purple/filled/warning{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/explab) "ehX" = ( /turf/open/floor/iron/dark, /area/station/medical/storage) @@ -12480,6 +12512,25 @@ "eut" = ( /turf/closed/wall, /area/station/science/robotics/lab) +"euw" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/firealarm/directional/west, +/obj/machinery/camera/directional/north{ + c_tag = "Science Mechbay"; + network = list("ss13","rd") + }, +/obj/machinery/button/door/directional/north{ + id = "mechbay"; + name = "Mech Bay Shutters Control"; + req_access = list("robotics") + }, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) "euQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -12691,15 +12742,6 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) -"eyz" = ( -/obj/machinery/cell_charger{ - pixel_y = 4 - }, -/obj/structure/table/glass, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "eyD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, @@ -12735,24 +12777,9 @@ /obj/machinery/camera/directional/north, /obj/machinery/digital_clock/directional/east, /obj/structure/extinguisher_cabinet/directional/north, +/obj/item/poster/traitor, /turf/open/floor/wood/large, /area/station/command/heads_quarters/qm) -"ezP" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching output from station security cameras."; - name = "Security Camera Monitor"; - network = list("ss13"); - pixel_y = 30 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "ezT" = ( /obj/machinery/door/airlock/research{ name = "Research Division Access" @@ -13129,6 +13156,16 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/white, /area/station/science/research) +"eJd" = ( +/obj/structure/table/wood, +/obj/machinery/computer/security/telescreen/prison/directional/north, +/obj/item/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/book/manual/wiki/security_space_law, +/turf/open/floor/wood, +/area/station/service/lawoffice) "eJh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -13641,7 +13678,7 @@ "eRn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "eRR" = ( /obj/structure/table, /obj/item/screwdriver{ @@ -13730,16 +13767,19 @@ pixel_x = -7; pixel_y = 8 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = 4; pixel_y = 3 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = 8 }, /obj/effect/turf_decal/siding/wood{ dir = 9 }, +/obj/machinery/keycard_auth/directional/north{ + pixel_x = -5 + }, /turf/open/floor/wood/large, /area/station/command/heads_quarters/qm) "eTI" = ( @@ -14357,20 +14397,6 @@ /obj/item/aquarium_kit, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"ffO" = ( -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/light/small/directional/north, -/obj/item/lightreplacer{ - pixel_y = 7 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/storage_shared) "ffP" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating/foam{ @@ -14544,6 +14570,15 @@ }, /turf/open/floor/wood/large, /area/station/commons/lounge) +"fhU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/security/telescreen/ordnance/directional/east, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "fia" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/hatch{ @@ -15214,19 +15249,6 @@ /obj/effect/mapping_helpers/airlock/access/all/security/entrance, /turf/open/floor/iron, /area/station/security/brig) -"frK" = ( -/obj/structure/table/glass, -/obj/machinery/cell_charger, -/obj/item/stack/cable_coil, -/obj/item/assembly/igniter, -/obj/item/stock_parts/power_store/cell, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) "frZ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/components/binary/pump{ @@ -15402,20 +15424,6 @@ /obj/structure/marker_beacon/olive, /turf/open/space/basic, /area/space/nearstation) -"fxE" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -8; - pixel_y = 9 - }, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "fxI" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15564,6 +15572,13 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) +"fAA" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/machinery/airalarm/directional/east, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "fAE" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -15969,7 +15984,7 @@ "fIR" = ( /obj/structure/sign/warning/secure_area/directional/north, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "fIS" = ( /obj/machinery/airalarm/directional/south, /obj/structure/disposalpipe/segment{ @@ -16198,13 +16213,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) -"fMR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "fMT" = ( /obj/structure/table, /obj/item/radio/intercom/directional/south, @@ -16239,6 +16247,7 @@ /obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/stripes/corner, /obj/item/reagent_containers/cup/soda_cans/pwr_game, +/obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/iron, /area/station/cargo/warehouse) "fNI" = ( @@ -16841,20 +16850,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"gaP" = ( -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/obj/item/gps, -/obj/structure/closet/crate/engineering, -/turf/open/floor/plating, -/area/station/engineering/main) "gaU" = ( /obj/machinery/button/door/directional/west{ id = "hop"; @@ -16881,6 +16876,25 @@ }, /turf/open/floor/iron/white, /area/station/medical/storage) +"gbn" = ( +/obj/machinery/computer/crew{ + dir = 4 + }, +/obj/machinery/keycard_auth/directional/south{ + pixel_x = 6 + }, +/obj/machinery/button/door/directional/south{ + id = "cmoprivacy"; + name = "CMO Privacy Shutters"; + pixel_x = -8; + req_access = list("cmo") + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/cmo/directional/west, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/cmo) "gbG" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/item/storage/box/lights/mixed, @@ -16911,20 +16925,6 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/science/research) -"gcz" = ( -/obj/structure/closet/crate, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "gcA" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=5-Customs"; @@ -16969,7 +16969,7 @@ pixel_x = 32 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "gdb" = ( /turf/closed/wall/r_wall, /area/station/security/range) @@ -17021,20 +17021,6 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/floor/iron/dark, /area/station/security/office) -"gen" = ( -/obj/structure/table/glass, -/obj/item/folder/blue{ - pixel_y = 3 - }, -/obj/item/pen, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 1; - pixel_y = -28 - }, -/obj/effect/turf_decal/tile/blue, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "gev" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/iron, @@ -17151,17 +17137,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/central) -"ggw" = ( -/obj/structure/filingcabinet, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 8; - pixel_x = 26 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/checkpoint/engineering) "ggH" = ( /obj/effect/spawner/random/structure/chair_maintenance, /turf/open/floor/iron/checker, @@ -17242,7 +17217,7 @@ dir = 4 }, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "giA" = ( /turf/closed/wall/r_wall, /area/station/tcommsat/computer) @@ -17251,15 +17226,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/engineering/main) -"giR" = ( -/obj/machinery/computer/security/telescreen/minisat{ - dir = 1; - pixel_y = -29 - }, -/obj/structure/bed/dogbed/renault, -/mob/living/basic/pet/fox/renault, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain/private) "giT" = ( /obj/effect/spawner/random/structure/closet_maintenance, /obj/effect/spawner/random/maintenance/two, @@ -17328,7 +17294,6 @@ /obj/structure/table, /obj/machinery/button/door{ id = "xenobio7"; - layer = 3.3; name = "Xenobio Pen 7 Blast Doors"; pixel_y = 4; req_access = list("xenobiology") @@ -17939,6 +17904,10 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/science/xenobiology) +"gvc" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/cytology) "gvg" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters{ @@ -18159,7 +18128,7 @@ /area/station/engineering/atmos) "gyK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "gyO" = ( /obj/structure/cable, @@ -18190,9 +18159,6 @@ /area/station/maintenance/port/aft) "gzO" = ( /obj/machinery/firealarm/directional/west, -/obj/machinery/camera/directional/west{ - c_tag = "Restrooms" - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, /turf/open/floor/iron/freezer, @@ -18487,12 +18453,6 @@ /obj/structure/table/wood, /turf/open/floor/carpet, /area/station/service/chapel/funeral) -"gFb" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/space/basic, -/area/space) "gFd" = ( /obj/machinery/power/terminal, /obj/machinery/light/small/directional/east, @@ -18897,6 +18857,10 @@ }, /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/micro_laser, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker + }, +/obj/item/multitool, /turf/open/floor/iron, /area/station/science/lab) "gLY" = ( @@ -19348,6 +19312,19 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"gVE" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/stack/cable_coil, +/obj/item/assembly/igniter, +/obj/item/stock_parts/power_store/cell, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/science/lobby) "gVO" = ( /obj/effect/turf_decal/trimline/purple/corner{ dir = 1 @@ -19436,21 +19413,6 @@ /obj/structure/table, /turf/open/floor/plating, /area/station/maintenance/port) -"gXg" = ( -/obj/structure/table/wood, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = 30 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/restraints/handcuffs, -/turf/open/floor/carpet, -/area/station/security/detectives_office) "gXl" = ( /obj/structure/flora/rock/pile/jungle/style_random, /turf/open/floor/grass, @@ -19611,19 +19573,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/main) -"hac" = ( -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/porta_turret/ai, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of his office."; - dir = 4; - name = "Research Monitor"; - network = list("rd"); - pixel_x = -28 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) "hav" = ( /obj/machinery/door/airlock/maintenance, /obj/structure/cable, @@ -19749,16 +19698,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) -"hcA" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/engine, -/area/station/science/xenobiology) "hcP" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -21854,6 +21793,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/chapel) +"hPF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/window/left/directional/south{ + name = "Cytology Pen"; + req_access = list("research") + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/cytology) "hPK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, @@ -22029,6 +21978,20 @@ }, /turf/open/floor/wood, /area/station/service/cafeteria) +"hSi" = ( +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/obj/item/gps, +/obj/structure/closet/crate/engineering, +/turf/open/floor/plating, +/area/station/engineering/main) "hSl" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 @@ -22091,19 +22054,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"hTt" = ( -/obj/machinery/computer/station_alert{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 1; - pixel_y = -29 - }, -/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/ai_monitored/command/storage/satellite) "hTE" = ( /obj/structure/chair{ dir = 4 @@ -22463,6 +22413,23 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"hZg" = ( +/obj/structure/closet/crate, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/light_switch/directional/north, +/obj/effect/spawner/random/engineering/flashlight, +/obj/effect/spawner/random/engineering/flashlight, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "hZn" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood{ @@ -22891,6 +22858,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) +"ihN" = ( +/obj/machinery/computer/security/telescreen/prison/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron, +/area/station/security/office) "ihW" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/trunk{ @@ -23604,19 +23580,6 @@ }, /turf/open/floor/carpet, /area/station/command/bridge) -"itB" = ( -/obj/machinery/computer/security/telescreen{ - dir = 8; - name = "Telecomms Camera Monitor"; - network = list("tcomms"); - pixel_x = 26 - }, -/obj/machinery/computer/telecomms/monitor{ - dir = 8; - network = "tcommsat" - }, -/turf/open/floor/iron/grimy, -/area/station/tcommsat/computer) "itC" = ( /obj/effect/turf_decal/siding/purple{ dir = 1 @@ -24737,7 +24700,6 @@ /obj/structure/table, /obj/machinery/button/door{ id = "xenobio2"; - layer = 3.3; name = "Xenobio Pen 2 Blast Doors"; pixel_y = 1; req_access = list("xenobiology") @@ -25086,6 +25048,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/main) +"iSU" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/rcl/pre_loaded, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "iTc" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 4 @@ -25123,7 +25095,6 @@ /obj/structure/table, /obj/machinery/button/door{ id = "xenobio1"; - layer = 3.3; name = "Xenobio Pen 1 Blast Doors"; pixel_y = 1; req_access = list("xenobiology") @@ -26674,6 +26645,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/east, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance) "jvr" = ( @@ -26987,6 +26960,9 @@ }, /turf/open/floor/iron, /area/station/security/office) +"jyL" = ( +/turf/open/floor/iron/dark/textured_large, +/area/station/science/cytology) "jyQ" = ( /obj/machinery/computer/records/medical{ dir = 8 @@ -27404,6 +27380,16 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/treatment_center) +"jGN" = ( +/obj/machinery/computer/station_alert{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/obj/machinery/computer/security/telescreen/minisat/directional/south, +/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/ai_monitored/command/storage/satellite) "jGO" = ( /obj/machinery/hydroponics/soil, /obj/item/cultivator, @@ -27444,21 +27430,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai_upload) -"jHN" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - dir = 1; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = -30 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/security/office) "jHQ" = ( /obj/structure/chair/sofa/corp/left{ dir = 1 @@ -27951,14 +27922,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"jPi" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "jPm" = ( /obj/machinery/atmospherics/components/tank/air, /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -28032,8 +27995,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 8 }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "jQM" = ( /obj/machinery/door/firedoor, @@ -28663,6 +28625,7 @@ /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 }, +/obj/item/poster/traitor, /turf/open/floor/iron/dark, /area/station/security/evidence) "kbo" = ( @@ -28754,12 +28717,7 @@ /turf/open/floor/iron/dark, /area/station/command/bridge) "kcu" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron{ - amount = 10 - }, -/obj/item/electropack, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "kcF" = ( /obj/structure/disposalpipe/segment{ @@ -28952,7 +28910,7 @@ "kgC" = ( /obj/machinery/door/poddoor/incinerator_ordmix, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "kgV" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -29025,6 +28983,7 @@ pixel_x = -9 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/iron, /area/station/cargo/warehouse) "kir" = ( @@ -29109,14 +29068,12 @@ /obj/effect/turf_decal/bot, /obj/machinery/button/door/directional/west{ id = "QMLoaddoor"; - layer = 4; name = "Loading Doors"; pixel_y = -8; req_access = list("cargo") }, /obj/machinery/button/door/directional/west{ id = "QMLoaddoor2"; - layer = 4; name = "Loading Doors"; pixel_y = 8; req_access = list("cargo") @@ -29628,40 +29585,10 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"ktt" = ( -/obj/machinery/turretid{ - control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; - icon_state = "control_stun"; - name = "AI Upload Turret Control"; - pixel_y = 28 - }, -/obj/item/radio/intercom/directional/north{ - broadcasting = 1; - frequency = 1447; - name = "Private Channel"; - pixel_x = -26 - }, -/obj/effect/landmark/start/cyborg, -/obj/machinery/light/small/directional/west, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the ai_upload."; - dir = 4; - name = "AI Upload Monitor"; - network = list("aiupload"); - pixel_x = -29 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) "ktw" = ( /obj/structure/sign/warning/electric_shock/directional/north, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "ktz" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -29857,16 +29784,6 @@ /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"kxq" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/porta_turret/ai, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 8; - pixel_x = 28 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) "kxw" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, @@ -29890,6 +29807,32 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, /area/station/security/office) +"kxC" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/pen, +/obj/machinery/button/door/directional/east{ + id = "Engineering"; + name = "Engineering Lockdown"; + pixel_y = 16; + req_access = list("engineering") + }, +/obj/machinery/button/door/directional/east{ + id = "atmos"; + name = "Atmospherics Lockdown"; + pixel_y = 24; + req_access = list("atmospherics") + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/computer/security/telescreen/engine/directional/east, +/turf/open/floor/iron, +/area/station/security/checkpoint/engineering) "kxH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30378,6 +30321,24 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/iron/white, /area/station/science/lab) +"kGR" = ( +/obj/machinery/button/ignition{ + id = "Xenobio"; + pixel_x = -4; + pixel_y = -3 + }, +/obj/machinery/button/door/directional/north{ + id = "Xenolab"; + name = "Test Chamber Blast Doors"; + pixel_x = 6; + pixel_y = -2; + req_access = list("xenobiology") + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/computer/security/telescreen/test_chamber/directional/north, +/turf/open/floor/iron, +/area/station/science/xenobiology) "kHg" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -32141,6 +32102,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/fore) +"loY" = ( +/obj/structure/rack, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "lpo" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 @@ -32755,6 +32725,14 @@ "lBA" = ( /turf/open/floor/wood/large, /area/station/commons/lounge) +"lBN" = ( +/obj/machinery/computer/security/telescreen/tcomms/directional/east, +/obj/machinery/computer/telecomms/monitor{ + dir = 8; + network = "tcommsat" + }, +/turf/open/floor/iron/grimy, +/area/station/tcommsat/computer) "lCb" = ( /obj/structure/cable, /obj/structure/sign/poster/ripped/directional/south, @@ -33359,14 +33337,6 @@ /obj/effect/mapping_helpers/mail_sorting/science/experimentor_lab, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"lPB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) "lPC" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -33388,7 +33358,6 @@ /obj/structure/table, /obj/machinery/button/door{ id = "xenobio8"; - layer = 3.3; name = "Xenobio Pen 8 Blast Doors"; pixel_y = 4; req_access = list("xenobiology") @@ -33751,12 +33720,6 @@ /obj/structure/sign/warning/vacuum/directional/east, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) -"lWS" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/effect/turf_decal/box, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron, -/area/station/science/xenobiology) "lXl" = ( /obj/machinery/hydroponics/constructable, /obj/effect/turf_decal/bot, @@ -33863,22 +33826,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"lYM" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the turbine vent."; - dir = 8; - name = "turbine vent monitor"; - network = list("turbine"); - pixel_x = 29 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "lYP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -34063,7 +34010,6 @@ /obj/structure/table, /obj/machinery/button/door{ id = "xenobio4"; - layer = 3.3; name = "Xenobio Pen 4 Blast Doors"; pixel_y = 4; req_access = list("xenobiology"); @@ -34936,16 +34882,6 @@ /obj/structure/sign/warning/pods, /turf/closed/wall, /area/station/hallway/secondary/entry) -"mtM" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/delivery, -/obj/structure/table, -/obj/machinery/computer/security/telescreen/ordnance{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "mtO" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron, @@ -35278,7 +35214,6 @@ "mzm" = ( /obj/structure/table, /obj/item/reagent_containers/condiment/saltshaker{ - layer = 3.1; pixel_x = -2; pixel_y = 2 }, @@ -35538,7 +35473,6 @@ /obj/structure/table, /obj/machinery/button/door{ id = "xenobio5"; - layer = 3.3; name = "Xenobio Pen 5 Blast Doors"; pixel_y = 4; req_access = list("xenobiology") @@ -35615,19 +35549,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"mES" = ( -/obj/structure/rack, -/obj/item/aicard, -/obj/item/radio/off, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 1; - pixel_y = -29 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "mET" = ( /obj/item/wrench, /obj/effect/decal/cleanable/dirt, @@ -36400,6 +36321,30 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"mSI" = ( +/obj/machinery/turretid{ + control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; + icon_state = "control_stun"; + name = "AI Upload Turret Control"; + pixel_y = 28 + }, +/obj/item/radio/intercom/directional/north{ + broadcasting = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = -26 + }, +/obj/effect/landmark/start/cyborg, +/obj/machinery/light/small/directional/west, +/obj/machinery/computer/security/telescreen/aiupload/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) "mSM" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -36579,7 +36524,7 @@ dir = 4 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "mWA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -36709,6 +36654,11 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/qm) +"mYb" = ( +/obj/structure/chair, +/obj/machinery/computer/security/telescreen/interrogation/directional/west, +/turf/open/floor/iron/grimy, +/area/station/security/interrogation) "mYq" = ( /obj/effect/turf_decal/plaque{ icon_state = "L8" @@ -37220,6 +37170,13 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/plating, /area/station/commons/toilet/auxiliary) +"nhU" = ( +/obj/machinery/status_display/ai/directional/north, +/obj/machinery/porta_turret/ai, +/obj/machinery/computer/security/telescreen/research/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/aisat_interior) "nib" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 @@ -37496,7 +37453,7 @@ pixel_x = -4; pixel_y = 2 }, -/obj/item/clothing/mask/cigarette/cigar, +/obj/item/cigarette/cigar, /obj/item/reagent_containers/cup/glass/flask/gold, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain/private) @@ -37537,13 +37494,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/office) -"nnu" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/engineering/main) "nnD" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 @@ -38155,8 +38105,7 @@ /obj/machinery/computer/upload/ai, /obj/machinery/door/window/right/directional/south{ name = "Upload Console Window"; - req_access = list("ai_upload"); - layer = 3.1 + req_access = list("ai_upload") }, /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, @@ -38819,9 +38768,7 @@ /turf/open/floor/iron, /area/station/hallway/secondary/command) "nJn" = ( -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, @@ -38839,7 +38786,7 @@ /area/station/medical/treatment_center) "nJr" = ( /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "nJu" = ( /obj/structure/closet/secure_closet/security/sec, @@ -38864,7 +38811,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/science/ordnance, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "nJG" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -39018,7 +38965,7 @@ "nLZ" = ( /obj/item/toy/beach_ball/branded, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "nMf" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -39225,6 +39172,15 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"nPj" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/spawner/random/structure/twelve_percent_spirit_board, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) "nPt" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39350,6 +39306,14 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/wood, /area/station/command/heads_quarters/captain/private) +"nRQ" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/delivery, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/security/telescreen/ordnance/directional/south, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "nRU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -39529,12 +39493,6 @@ /obj/effect/turf_decal/trimline/blue/filled/warning, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"nWF" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/space/basic, -/area/space) "nWS" = ( /obj/structure/window/reinforced/spawner/directional/west, /turf/open/space, @@ -39693,7 +39651,7 @@ dir = 8 }, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "oac" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -39864,12 +39822,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"obU" = ( -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/crap, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) "ocg" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/structure/cable, @@ -40006,7 +39958,7 @@ dir = 1 }, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "oew" = ( /turf/open/floor/iron, /area/station/commons/fitness/recreation) @@ -40339,6 +40291,14 @@ /obj/structure/sign/poster/random/directional/south, /turf/open/floor/plating, /area/station/hallway/secondary/service) +"omd" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "ome" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40758,16 +40718,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"oue" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/item/plunger{ - pixel_x = -7; - pixel_y = 20 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/cytology) "ouj" = ( /obj/structure/bed/medical/emergency, /obj/structure/bed/medical/emergency, @@ -40835,37 +40785,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) -"ouU" = ( -/obj/machinery/light/directional/east, -/obj/structure/table, -/obj/machinery/recharger{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/paper_bin{ - pixel_x = -11; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = -11; - pixel_y = 7 - }, -/obj/item/hand_labeler{ - pixel_x = -10; - pixel_y = -6 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - dir = 8; - name = "Prison Monitor"; - network = list("prison"); - pixel_x = 30 - }, -/turf/open/floor/iron, -/area/station/security/warden) "ouX" = ( /obj/effect/turf_decal/box, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -41249,6 +41168,30 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"oDH" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/crowbar, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 4; + pixel_y = 6 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "oDJ" = ( /obj/structure/sign/warning/vacuum/external, /turf/closed/wall, @@ -41474,6 +41417,31 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/space/basic, /area/space/nearstation) +"oGH" = ( +/obj/machinery/light/directional/east, +/obj/structure/table, +/obj/machinery/recharger{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/paper_bin{ + pixel_x = -11; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = -11; + pixel_y = 7 + }, +/obj/item/hand_labeler{ + pixel_x = -10; + pixel_y = -6 + }, +/obj/effect/turf_decal/trimline/dark_red/filled/line{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/prison/directional/east, +/turf/open/floor/iron, +/area/station/security/warden) "oGK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -41596,15 +41564,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) -"oIO" = ( -/obj/machinery/computer/security/telescreen/interrogation{ - dir = 8; - pixel_x = 30 - }, -/obj/effect/turf_decal/trimline/red/filled/corner, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/security/brig) "oIW" = ( /obj/structure/sign/warning/vacuum/directional/east, /obj/effect/turf_decal/delivery, @@ -41769,6 +41728,14 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/hos) +"oMh" = ( +/obj/structure/filingcabinet, +/obj/machinery/computer/security/telescreen/minisat/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/security/checkpoint/engineering) "oMx" = ( /obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, /obj/machinery/door/airlock/maintenance{ @@ -41949,21 +41916,6 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"oQc" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for the Auxiliary Mining Base."; - dir = 1; - name = "Auxiliary Base Monitor"; - network = list("auxbase"); - pixel_y = -28 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) "oQg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42013,32 +41965,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) -"oRA" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/obj/item/stack/cable_coil, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/clothing/ears/earmuffs{ - pixel_x = -3; - pixel_y = -2 - }, -/obj/item/clothing/ears/earmuffs{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_x = -4; - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "oRM" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 @@ -42276,6 +42202,14 @@ "oWk" = ( /turf/closed/wall/r_wall, /area/station/maintenance/starboard/aft) +"oWm" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/computer/security/telescreen/engine/directional/east, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "oWF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, @@ -42614,15 +42548,6 @@ }, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) -"pcP" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/command/gateway) "pcS" = ( /obj/item/stack/ore/silver, /obj/item/stack/ore/silver, @@ -43056,13 +42981,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"pkP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/plumbing/growing_vat, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/cytology) "pkQ" = ( /obj/machinery/door/airlock/external{ name = "Security External Airlock" @@ -43280,16 +43198,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/genetics) -"ppm" = ( -/obj/structure/cable, -/obj/machinery/computer/security/telescreen/interrogation{ - name = "isolation room monitor"; - network = list("isolation"); - pixel_y = 31 - }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "ppB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, @@ -45440,6 +45348,16 @@ }, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"qcD" = ( +/obj/structure/rack, +/obj/item/aicard, +/obj/item/radio/off, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/minisat/directional/south, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "qcP" = ( /obj/effect/landmark/blobstart, /obj/effect/mapping_helpers/burnt_floor, @@ -45842,6 +45760,10 @@ /obj/item/food/pie/cream, /turf/open/floor/wood/large, /area/station/service/theater) +"qiZ" = ( +/obj/machinery/vatgrower, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/cytology) "qjf" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -46158,6 +46080,30 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"qqs" = ( +/obj/structure/table, +/obj/item/multitool{ + pixel_x = 4; + pixel_y = 12 + }, +/obj/item/multitool{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = -4 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -4; + pixel_y = -6 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer5, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/obj/item/multitool{ + pixel_y = 10 + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos) "qrg" = ( /obj/machinery/light_switch/directional/north, /turf/open/floor/circuit/green{ @@ -46188,6 +46134,12 @@ }, /turf/open/floor/engine/co2, /area/station/engineering/atmos) +"qrw" = ( +/obj/structure/bed/dogbed/renault, +/mob/living/basic/pet/fox/renault, +/obj/machinery/computer/security/telescreen/minisat/directional/south, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/captain/private) "qrF" = ( /obj/machinery/computer/exodrone_control_console{ dir = 1 @@ -46324,6 +46276,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) +"qtq" = ( +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/crap, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/station/command/corporate_showroom) "qua" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 1 @@ -46997,6 +46955,12 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"qHm" = ( +/obj/machinery/pdapainter/engineering, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/security/telescreen/ce/directional/south, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "qHs" = ( /obj/structure/sign/warning/docking, /turf/closed/wall, @@ -47420,6 +47384,17 @@ }, /turf/open/floor/iron, /area/station/security/prison) +"qNO" = ( +/obj/structure/table/glass, +/obj/item/folder/blue{ + pixel_y = 3 + }, +/obj/item/pen, +/obj/machinery/computer/security/telescreen/minisat/directional/south, +/obj/effect/turf_decal/tile/blue, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "qNV" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47656,6 +47631,21 @@ }, /turf/open/floor/iron, /area/station/commons/locker) +"qRq" = ( +/obj/structure/table/glass, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "qRz" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/effect/spawner/random/trash/janitor_supplies, @@ -47930,20 +47920,6 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"qVD" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring the engine."; - dir = 8; - name = "Engine Monitor"; - network = list("engine"); - pixel_x = 32 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "qWg" = ( /obj/structure/lattice, /obj/structure/sign/warning/secure_area/directional/east, @@ -48526,10 +48502,6 @@ }, /turf/open/floor/iron, /area/station/cargo/drone_bay) -"rgM" = ( -/obj/structure/sign/poster/traitor/random, -/turf/closed/wall, -/area/station/cargo/warehouse) "rgS" = ( /obj/machinery/modular_computer/preset/civilian{ dir = 1 @@ -48700,6 +48672,32 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"rkx" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stack/cable_coil, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "rkA" = ( /obj/structure/table, /obj/item/cultivator, @@ -49022,24 +49020,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"rqc" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring medbay to ensure patient safety."; - dir = 4; - name = "Medbay Monitor"; - network = list("medbay"); - pixel_x = -32 - }, -/obj/machinery/light_switch/directional/west{ - pixel_x = -20 - }, -/obj/machinery/computer/records/medical{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) "rqs" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -49187,7 +49167,7 @@ "rtj" = ( /obj/machinery/igniter/incinerator_ordmix, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "rtz" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/effect/turf_decal/siding/wood{ @@ -50289,7 +50269,6 @@ /obj/structure/table, /obj/machinery/button/door{ id = "xenobio3"; - layer = 3.3; name = "Xenobio Pen 3 Blast Doors"; pixel_y = 4; req_access = list("xenobiology") @@ -50523,7 +50502,7 @@ /obj/machinery/light/small/directional/north, /obj/structure/table/reinforced, /obj/machinery/requests_console/directional/north{ - department = "Quartermaster's Desk"; + department = "Security"; name = "Security Requests Console" }, /obj/effect/mapping_helpers/requests_console/assistance, @@ -50596,29 +50575,6 @@ /obj/effect/spawner/random/entertainment/cigarette, /turf/open/floor/wood, /area/station/commons/lounge) -"rRo" = ( -/obj/machinery/button/ignition{ - id = "Xenobio"; - pixel_x = -4; - pixel_y = -3 - }, -/obj/machinery/button/door/directional/north{ - id = "Xenolab"; - name = "Test Chamber Blast Doors"; - pixel_x = 6; - pixel_y = -2; - req_access = list("xenobiology") - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/computer/security/telescreen{ - name = "Test Chamber Monitor"; - network = list("xeno"); - pixel_y = 9 - }, -/obj/item/radio/intercom/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron, -/area/station/science/xenobiology) "rRB" = ( /obj/machinery/door/airlock/external{ name = "Solar Maintenance" @@ -50950,6 +50906,9 @@ }, /turf/open/floor/iron, /area/station/security/prison/visit) +"rXT" = ( +/turf/closed/wall/r_wall, +/area/station/science/ordnance/burnchamber) "rXW" = ( /obj/item/radio/intercom/directional/west, /obj/structure/table/glass, @@ -51947,10 +51906,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, /area/station/service/library) -"sri" = ( -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/cytology) "srk" = ( /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, @@ -52623,13 +52578,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"sDl" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/machinery/airalarm/directional/east, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "sDo" = ( /obj/structure/cable, /obj/effect/landmark/event_spawn, @@ -53257,6 +53205,15 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"sOx" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/portable_atmospherics/pipe_scrubber, +/obj/effect/turf_decal/siding/purple{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) "sOF" = ( /obj/structure/light_construct/directional/east, /turf/open/floor/wood, @@ -54430,6 +54387,20 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/hallway/primary/port) +"tjc" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -8; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "tjf" = ( /obj/machinery/hydroponics/soil{ pixel_y = 8 @@ -54542,30 +54513,6 @@ /obj/item/radio/intercom/prison/directional/north, /turf/open/floor/iron, /area/station/security/prison) -"tkT" = ( -/obj/structure/table, -/obj/item/multitool{ - pixel_x = 4; - pixel_y = 12 - }, -/obj/item/multitool{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_y = -4 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -4; - pixel_y = -6 - }, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer5, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/obj/item/multitool{ - pixel_y = 10 - }, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) "tlh" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -54722,6 +54669,7 @@ "tnF" = ( /obj/machinery/light/small/dim/directional/west, /obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/directional/west, /turf/open/floor/iron, /area/station/cargo/warehouse) "tnG" = ( @@ -54799,6 +54747,15 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/dark, /area/station/ai_monitored/aisat/exterior) +"tpA" = ( +/obj/machinery/cell_charger{ + pixel_y = 4 + }, +/obj/structure/table/glass, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "tpD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -54958,14 +54915,6 @@ /obj/item/knife/kitchen, /turf/open/floor/iron/white, /area/station/science/cytology) -"tsN" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/light_switch/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "tsT" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -55888,7 +55837,7 @@ "tLb" = ( /obj/structure/sign/warning/electric_shock/directional/south, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "tLc" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -56561,7 +56510,7 @@ /obj/machinery/firealarm/directional/south, /obj/structure/rack, /obj/item/storage/briefcase/secure, -/obj/item/clothing/mask/cigarette/cigar, +/obj/item/cigarette/cigar, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, @@ -57565,6 +57514,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"unK" = ( +/obj/structure/table/wood, +/obj/machinery/computer/security/telescreen/prison/directional/north, +/obj/item/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/restraints/handcuffs, +/turf/open/floor/carpet, +/area/station/security/detectives_office) "unL" = ( /turf/closed/wall, /area/station/maintenance/starboard/greater) @@ -57800,25 +57759,6 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/iron, /area/station/commons/dorms) -"urN" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/firealarm/directional/west, -/obj/machinery/camera/directional/north{ - c_tag = "Science Mechbay"; - network = list("ss13","rd") - }, -/obj/machinery/button/door/directional/north{ - id = "mechbay"; - name = "Mech Bay Shutters Control"; - req_access = list("robotics") - }, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) "urQ" = ( /obj/structure/lattice/catwalk, /obj/item/stack/cable_coil, @@ -58321,7 +58261,7 @@ use_power = 0 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "uzJ" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 @@ -58443,13 +58383,6 @@ dir = 8 }, /area/station/medical/medbay/lobby) -"uCe" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/plumbing/input{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/science/cytology) "uCq" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -58904,6 +58837,22 @@ /obj/machinery/computer/accounting, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) +"uJz" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -5 + }, +/obj/item/multitool{ + pixel_x = 8 + }, +/turf/open/floor/iron/checker, +/area/station/engineering/storage_shared) "uJB" = ( /obj/structure/chair/stool/directional/east, /turf/open/floor/iron, @@ -59260,14 +59209,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics/garden) -"uPS" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "uQe" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59387,21 +59328,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/prison) -"uSq" = ( -/obj/structure/table/wood, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = 30 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/wood, -/area/station/service/lawoffice) "uSz" = ( /obj/structure/table, /obj/item/phone{ @@ -59600,12 +59526,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/white, /area/station/science/research) -"uVG" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) "uVJ" = ( /obj/effect/spawner/random/structure/grille, /obj/structure/girder, @@ -59686,38 +59606,6 @@ /obj/structure/cable, /turf/open/floor/circuit, /area/station/maintenance/port/aft) -"uWN" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -1; - pixel_y = 5 - }, -/obj/item/pen, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring the engine."; - dir = 8; - name = "Engine Monitor"; - network = list("engine"); - pixel_x = 26 - }, -/obj/machinery/button/door/directional/east{ - id = "Engineering"; - name = "Engineering Lockdown"; - pixel_y = 16; - req_access = list("engineering") - }, -/obj/machinery/button/door/directional/east{ - id = "atmos"; - name = "Atmospherics Lockdown"; - pixel_y = 24; - req_access = list("atmospherics") - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/station/security/checkpoint/engineering) "uWS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59904,14 +59792,6 @@ /obj/structure/aquarium/lawyer, /turf/open/floor/wood, /area/station/service/lawoffice) -"uZM" = ( -/obj/structure/table, -/obj/machinery/computer/security/telescreen/ordnance{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "uZP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -59931,6 +59811,13 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/white, /area/station/security/prison/safe) +"vag" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "vaB" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -60233,9 +60120,7 @@ /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) "vhb" = ( -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, @@ -60310,12 +60195,12 @@ /obj/item/folder/documents, /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/poster/traitor, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "viF" = ( /obj/machinery/computer/upload/borg, /obj/machinery/door/window/left/directional/south{ - layer = 3.1; name = "Cyborg Upload Console Window"; req_access = list("ai_upload") }, @@ -61100,6 +60985,20 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"vuz" = ( +/obj/structure/closet/crate, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/spawner/random/engineering/flashlight, +/obj/effect/spawner/random/engineering/flashlight, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "vuJ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering/glass{ @@ -61183,7 +61082,7 @@ /area/station/hallway/secondary/entry) "vwi" = ( /obj/structure/table, -/obj/item/clothing/mask/cigarette/pipe, +/obj/item/cigarette/pipe, /turf/open/floor/plating, /area/station/maintenance/port) "vwn" = ( @@ -61527,9 +61426,6 @@ /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/machinery/camera/directional/west{ - c_tag = "Auxilary Restrooms" - }, /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron, /area/station/commons/toilet/auxiliary) @@ -61652,6 +61548,23 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port) +"vEv" = ( +/obj/machinery/computer/mecha{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 5 + }, +/obj/machinery/requests_console/directional/east{ + department = "Research Director's Desk"; + name = "Research Director's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/computer/security/telescreen/rd/directional/north, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/rd) "vEw" = ( /obj/structure/chair/stool/directional/south, /obj/item/radio/intercom/prison/directional/north, @@ -62273,28 +62186,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos) -"vPO" = ( -/obj/machinery/computer/crew{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/cmo{ - dir = 4; - pixel_x = -30 - }, -/obj/machinery/keycard_auth/directional/south{ - pixel_x = 6 - }, -/obj/machinery/button/door/directional/south{ - id = "cmoprivacy"; - name = "CMO Privacy Shutters"; - pixel_x = -8; - req_access = list("cmo") - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) "vPV" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -63002,6 +62893,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"waf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/obj/structure/cable, +/obj/machinery/computer/security/telescreen/turbine/directional/east, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "wag" = ( /obj/machinery/computer/records/medical, /obj/structure/cable, @@ -63348,6 +63249,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/commons/toilet/auxiliary) +"wgc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/cytology) "wgf" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet/firecloset, @@ -63522,16 +63429,6 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"wiQ" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/rcl/pre_loaded, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "wiS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -63707,14 +63604,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"wne" = ( -/obj/structure/chair, -/obj/machinery/computer/security/telescreen/interrogation{ - dir = 4; - pixel_x = -30 - }, -/turf/open/floor/iron/grimy, -/area/station/security/interrogation) "wnQ" = ( /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)."; @@ -63831,15 +63720,15 @@ pixel_x = -2; pixel_y = 3 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = 4; pixel_y = 1 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = -4; pixel_y = 1 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba, +/obj/item/cigarette/cigar/cohiba, /obj/structure/table/wood, /turf/open/floor/carpet, /area/station/command/corporate_showroom) @@ -64432,17 +64321,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) -"wAc" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "wAk" = ( /obj/machinery/status_display/evac/directional/south, /obj/structure/disposalpipe/segment{ @@ -65805,15 +65683,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/main) -"xbb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/transit_tube) "xbd" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/structure/disposalpipe/segment{ @@ -65824,6 +65693,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) +"xbg" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/gateway) "xbT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66806,7 +66684,7 @@ "xtw" = ( /obj/item/stack/rods, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "xtz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -66820,6 +66698,15 @@ /obj/effect/turf_decal/trimline/brown/filled/corner, /turf/open/floor/iron, /area/station/cargo/storage) +"xtY" = ( +/obj/machinery/computer/security/telescreen/auxbase/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "xtZ" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/green/visible, @@ -66966,6 +66853,12 @@ /obj/effect/turf_decal/trimline/yellow/filled/corner, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"xwF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/cytology) "xwP" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67006,35 +66899,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"xxh" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/button/door/directional/north{ - id = "rdrnd"; - name = "Research and Development Containment Control"; - pixel_x = -6; - req_access = list("rd") - }, -/obj/machinery/button/door/directional/north{ - id = "rdordnance"; - name = "Ordnance Containment Control"; - pixel_x = 6; - req_access = list("rd") - }, -/obj/machinery/button/door/directional/north{ - id = "rdoffice"; - name = "Privacy Control"; - pixel_y = 34; - req_access = list("rd") - }, -/obj/machinery/computer/security/telescreen/rd{ - pixel_x = 31; - pixel_y = 30 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) "xxk" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -67693,7 +67557,6 @@ "xIK" = ( /obj/structure/table, /obj/item/reagent_containers/condiment/enzyme{ - layer = 5; pixel_x = -7; pixel_y = 13 }, @@ -68329,6 +68192,12 @@ }, /turf/open/floor/engine/vacuum, /area/station/engineering/atmos) +"xWr" = ( +/obj/effect/turf_decal/trimline/red/filled/corner, +/obj/machinery/light/directional/east, +/obj/machinery/computer/security/telescreen/interrogation/directional/east, +/turf/open/floor/iron, +/area/station/security/brig) "xWE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -68545,7 +68414,7 @@ "xYZ" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "xZb" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, @@ -68554,23 +68423,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/security/courtroom) -"xZe" = ( -/obj/structure/closet/crate, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/light_switch/directional/north, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "xZu" = ( /obj/structure/sink/kitchen/directional/east{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -68763,6 +68615,7 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "ycv" = ( +/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/white, /area/station/science/xenobiology) "ycw" = ( @@ -68903,22 +68756,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) -"yfa" = ( -/obj/machinery/computer/mecha{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 5 - }, -/obj/machinery/requests_console/directional/east{ - department = "Research Director's Desk"; - name = "Research Director's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) "yfg" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -81479,7 +81316,7 @@ aDa aDa iYU oSc -oQc +xtY aDb rew lGL @@ -85318,7 +85155,7 @@ lMJ lMJ lMJ pnI -gcz +vuz xDu pcS pnI @@ -85855,7 +85692,7 @@ cbz dBE vQs vQs -rgM +vQs hor vQs vQs @@ -86115,7 +85952,7 @@ ePj tnF dKY kif -rgM +vQs dHc dHc bZY @@ -86859,7 +86696,7 @@ jXu bZz vRr paD -xZe +hZg dSG apC sUD @@ -87144,7 +86981,7 @@ kZI nbd vKn fNz -rgM +vQs vQs hyW xOw @@ -88201,7 +88038,7 @@ kRA jUb xYq dqN -cIl +baG jUb rvI jUb @@ -90726,7 +90563,7 @@ cNg kQP kQP mXO -uVG +mXO kQP kQP kQP @@ -90812,7 +90649,7 @@ gwS oxT sEE hrG -lPB +nPj vQg gYU pIs @@ -92839,7 +92676,7 @@ rQd cJm jGw bJG -vPO +gbn bqX ulR qXL @@ -93073,7 +92910,7 @@ jIg dTr rIL bwN -uPS +omd ukk rGm gqX @@ -93083,7 +92920,7 @@ qPJ luN wde jJd -rqc +dQL umS qPJ bgS @@ -94029,7 +93866,7 @@ sjP sjP sjP sjP -ppm +dkX yey jTZ aBL @@ -94330,7 +94167,7 @@ aPv oWF eQg aJS -ktt +mSI aUx qhF htd @@ -94353,7 +94190,7 @@ ndS urA pFG gBD -tsN +dzX fRu hVE xXw @@ -95311,7 +95148,7 @@ aaa aaa aaa aaa -nWF +sKY aaa sIe gkn @@ -95885,7 +95722,7 @@ dUj gGy hmq fUj -mES +qcD duI duI lwt @@ -96100,7 +95937,7 @@ aaa aaa aeq xCo -bKi +loY tTP fdQ uou @@ -96142,7 +95979,7 @@ gGy qVc dMY jYL -eyz +tpA aAt duI pCO @@ -96414,7 +96251,7 @@ haP jzN fEC eQe -obU +qtq iAA oSo cgF @@ -96883,7 +96720,7 @@ ewj bkl wZU pMy -ouU +oGH orx eeq sDS @@ -97455,7 +97292,7 @@ rgZ suW hJF cZK -urN +euw cXg nyy gVl @@ -97491,7 +97328,7 @@ jjs dKC xLu dKC -ezP +cbp ctL oPD iUm @@ -98490,7 +98327,7 @@ cBV xlv eut bUo -fxE +tjc jtS bFH mMl @@ -98985,7 +98822,7 @@ nse bmb lwg aAK -pcP +xbg tvE qJU hPM @@ -99506,7 +99343,7 @@ kON ylQ bGC wHu -frK +gVE ibw ibw nIP @@ -99704,7 +99541,7 @@ wVt jzD wxj kZG -jHN +ihN kYg kYg ylZ @@ -99745,7 +99582,7 @@ jxv sqJ gPA lZM -giR +qrw syo lSz vQe @@ -100232,7 +100069,7 @@ jAP fEn xXC xNU -uSq +eJd xlf lWg byw @@ -100571,12 +100408,12 @@ fhi fhi uEo fiS -gyQ +rXT eRn -gyQ -gyQ -gyQ -gyQ +rXT +rXT +rXT +rXT lMJ uGg nFa @@ -100735,11 +100572,11 @@ pyY sNB xWm mLL -oIO +xWr vkb cLl sWV -gXg +unK mOt clq aKa @@ -101334,7 +101171,7 @@ jVy jTN vAH kIY -cyp +sOx gyQ rbD jwj @@ -101504,7 +101341,7 @@ gMZ cju gMZ mFf -wne +mYb sHt qrn qRg @@ -102083,7 +101920,7 @@ ftj wXF doM tZo -ehL +bXg oFT gvS oYZ @@ -103397,7 +103234,7 @@ guG iAs coe tfV -mtM +nRQ oLS lMJ aaa @@ -103629,7 +103466,7 @@ sIW bRb cKm tAg -xxh +byE poq vYE lAH @@ -103886,7 +103723,7 @@ sIW jSk rkT tAg -yfa +vEv pkx hBB wnY @@ -104939,8 +104776,8 @@ qBF nCG tqx bOm -jPi -uZM +fhU +cdS kYD aaa aaa @@ -107697,10 +107534,10 @@ psZ psZ qXB gAU -wAc +cDO oUK eRR -sDl +fAA cdX sDE hjS @@ -107711,7 +107548,7 @@ ggM ggM dLq lzL -fMR +vag lzL lzL scG @@ -108454,7 +108291,7 @@ rpx dPy loA poc -dXp +oDH uXd tfg tfg @@ -108711,12 +108548,12 @@ oKx gLK joo sHT -oRA +rkx uXd dVc bYp gXu -gaP +hSi uXd gMG dWG @@ -108728,7 +108565,7 @@ nLz fEL rSi pCt -aRS +qHm sqE mEO gnS @@ -109239,7 +109076,7 @@ woL jLo nwC nLz -wiQ +iSU hYE rEd sby @@ -109487,7 +109324,7 @@ cnK jPe dPy poc -nnu +afM cnK giH aJj @@ -109497,7 +109334,7 @@ fbf nie qtm fyJ -qVD +oWm cuc adz tUw @@ -109534,7 +109371,7 @@ svK yec xhb uQk -lYM +waf vzc gUY pnH @@ -110549,7 +110386,7 @@ dkC dwz dwz frE -afz +doJ uwQ siy lgL @@ -111293,7 +111130,7 @@ qLw tdf mdk kYG -ffO +dqE oFH oFH sSz @@ -111603,7 +111440,7 @@ lMJ aaa aaa uaR -oue +wgc wRL tyj myr @@ -111807,7 +111644,7 @@ hko uLp qTX kYG -dEk +uJz iHy vSC eKw @@ -111860,10 +111697,10 @@ dxK aaa aaa oMA -pkP -sri -sri -uCe +xwF +qiZ +jyL +gvc tsy sRa ppC @@ -112076,8 +111913,8 @@ dRA wCe khu hUu -uWN -ggw +kxC +oMh mEG nRp dtY @@ -112120,7 +111957,7 @@ uaR jHX oQk toR -toR +hPF syV jsi eoZ @@ -112590,9 +112427,9 @@ wsI fia sRW hKi -xbb +apO lLB -aJz +qRq rzT cWy xRZ @@ -113361,7 +113198,7 @@ rLZ fJy ygp tyE -gen +qNO bDq rRR laE @@ -113630,7 +113467,7 @@ efd nwK fFC uVf -tkT +qqs gDq ich jnQ @@ -116190,7 +116027,7 @@ twf lMJ lMJ blx -gFb +hHO aaa aaa fuu @@ -117005,7 +116842,7 @@ goW msN xiL jlU -rRo +kGR lyL mao mCu @@ -117262,7 +117099,7 @@ rDf uhs fjd jlU -lWS +cKI sZN msR xkv @@ -117475,7 +117312,7 @@ oAQ lMJ lMJ blx -gFb +hHO aaa aaa fuu @@ -117519,7 +117356,7 @@ rDf eUe eSb nnc -hdy +nnc nnc rvK nnc @@ -117776,11 +117613,11 @@ hbK mgS hbK jlU -mtu -mtu +kcu +kcu gyK -mtu -mtu +kcu +kcu jlU hbK mTg @@ -118034,10 +117871,10 @@ fGy wyo jlU dLm -mtu +kcu gyK -mtu -mtu +kcu +kcu jlU qgn mCV @@ -118290,11 +118127,11 @@ pWT rDf uLa jlU -mtu -mtu +kcu +kcu jQz nJr -mtu +kcu jlU lUS pHt @@ -118503,7 +118340,7 @@ oAQ lMJ lMJ blx -gFb +hHO aaa aaa aaa @@ -118547,11 +118384,11 @@ hbK wrc wrc jlU -mtu -mtu -mtu -mtu -mtu +kcu +kcu +kcu +kcu +kcu jlU wrc wrc @@ -118805,7 +118642,7 @@ aaa lMJ jlU jlU -hcA +kcu aYl kcu jlU @@ -123637,7 +123474,7 @@ uUX azv dKG bjQ -hac +nhU pQv tSP qiH @@ -124665,7 +124502,7 @@ iCV mCL pIE bjQ -kxq +dqy rNs tSP mZW @@ -124928,7 +124765,7 @@ txh bjQ giA hSe -itB +lBN pDe ueE jGr @@ -125439,7 +125276,7 @@ ldP xgE uFw tXz -hTt +jGN gfU gfU gfU diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index b38b99867ab47..5bc3a711a1b03 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -7308,7 +7308,7 @@ }, /area/mine/laborcamp) "Sc" = ( -/obj/item/clothing/mask/cigarette/robust{ +/obj/item/cigarette/robust{ pixel_x = 3; pixel_y = -10 }, @@ -7608,7 +7608,7 @@ /turf/open/floor/plating, /area/mine/laborcamp/security/maintenance) "TX" = ( -/obj/item/clothing/mask/cigarette/robust{ +/obj/item/cigarette/robust{ pixel_x = 8; pixel_y = 8 }, diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 0791f34e05b23..ffaad262d5483 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -72,6 +72,13 @@ /obj/machinery/duct, /turf/open/floor/iron, /area/station/commons/toilet) +"aaN" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "aaO" = ( /obj/machinery/computer/atmos_alert{ dir = 4 @@ -207,7 +214,7 @@ dir = 8 }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "acp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, @@ -284,7 +291,7 @@ /area/station/maintenance/floor3/starboard/fore) "acL" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar/cohiba, +/obj/item/cigarette/cigar/cohiba, /obj/effect/turf_decal/trimline/blue/line{ dir = 1 }, @@ -3219,19 +3226,6 @@ }, /turf/open/floor/engine/xenobio, /area/station/science/xenobiology) -"aRl" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Upload" - }, -/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/command/ai_upload, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) "aRz" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -3434,7 +3428,7 @@ dir = 4 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "aTU" = ( /obj/effect/turf_decal/trimline/purple/line, /obj/effect/turf_decal/trimline/purple/line{ @@ -4147,11 +4141,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) -"bbN" = ( -/obj/machinery/pdapainter/engineering, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) "bcb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6897,6 +6886,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "bJQ" = ( @@ -7103,14 +7093,6 @@ /obj/machinery/light/floor, /turf/open/floor/wood/tile, /area/station/service/library) -"bMu" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/computer/security/telescreen/rd{ - pixel_x = -30 - }, -/obj/machinery/pdapainter/research, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) "bMz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/girder, @@ -7230,7 +7212,7 @@ dir = 4 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "bOq" = ( /obj/machinery/door/airlock/maintenance/external, /obj/effect/turf_decal/stripes/line{ @@ -8449,6 +8431,12 @@ /obj/structure/closet/firecloset, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/port/aft) +"cep" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/computer/security/telescreen/minisat/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "cev" = ( /obj/structure/cable, /obj/machinery/door/airlock/hatch{ @@ -10682,6 +10670,20 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"cIc" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "AI Upload" + }, +/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/command/ai_upload, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/structure/sign/departments/aiupload/directional/south, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) "cId" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 @@ -11440,6 +11442,10 @@ pixel_y = 9 }, /obj/effect/turf_decal/tile/purple/fourcorners, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker + }, +/obj/item/multitool, /turf/open/floor/iron/white, /area/station/science/lab) "cSc" = ( @@ -12685,7 +12691,7 @@ dir = 4 }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "djd" = ( /obj/structure/cable, /turf/open/floor/iron/dark, @@ -12792,7 +12798,7 @@ dir = 4 }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "dks" = ( /obj/structure/girder, /obj/item/stack/sheet/iron, @@ -12839,6 +12845,17 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison/safe) +"dlR" = ( +/obj/item/radio/intercom/directional/north{ + broadcasting = 1; + frequency = 1447; + listening = 0; + name = "Private Channel" + }, +/obj/machinery/recharge_station, +/obj/machinery/computer/security/telescreen/minisat/directional/east, +/turf/open/floor/circuit, +/area/station/ai_monitored/turret_protected/aisat/service) "dlW" = ( /turf/closed/wall, /area/station/maintenance/floor4/starboard/aft) @@ -13695,14 +13712,6 @@ /obj/structure/cable, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) -"dyE" = ( -/obj/machinery/plumbing/growing_vat{ - dir = 4 - }, -/obj/machinery/light/cold/no_nightlight/directional/north, -/obj/machinery/status_display/ai/directional/north, -/turf/open/misc/dirt/jungle, -/area/station/science/cytology) "dyG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14442,6 +14451,7 @@ /area/station/maintenance/floor1/starboard/fore) "dIJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) "dIO" = ( @@ -14726,6 +14736,16 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/hallway/secondary/exit/departure_lounge) +"dMt" = ( +/obj/machinery/computer/security/telescreen/minisat/directional/east, +/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) "dMA" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -15620,9 +15640,7 @@ /obj/item/storage/box/syringes{ pixel_y = 6 }, -/obj/item/stack/medical/mesh{ - layer = 3.01 - }, +/obj/item/stack/medical/mesh, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "dXz" = ( @@ -17124,6 +17142,21 @@ }, /turf/open/floor/plating, /area/station/engineering/supermatter) +"etb" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/airalarm/directional/north, +/obj/structure/rack, +/obj/item/stock_parts/power_store/cell/lead, +/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/storage) "etj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -18182,6 +18215,21 @@ dir = 4 }, /area/station/command/bridge) +"eIg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/blue/filled/corner, +/obj/machinery/turretid{ + control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; + icon_state = "control_stun"; + name = "AI Upload turret control"; + pixel_y = 28 + }, +/obj/machinery/computer/security/telescreen/aiupload/directional/west, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) "eIq" = ( /obj/structure/chair/stool/directional/west, /obj/effect/turf_decal/trimline/red/warning{ @@ -18284,6 +18332,14 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/pod/light, /area/station/maintenance/floor3/port) +"eJW" = ( +/obj/machinery/vatgrower{ + dir = 4 + }, +/obj/machinery/light/cold/no_nightlight/directional/south, +/obj/machinery/status_display/evac/directional/south, +/turf/open/misc/sandy_dirt, +/area/station/science/cytology) "eJX" = ( /obj/effect/turf_decal/tile/blue/half, /obj/item/radio/intercom/directional/north, @@ -18802,10 +18858,10 @@ /area/station/service/kitchen) "eSq" = ( /obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/simple/purple, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ dir = 8 }, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "eSw" = ( @@ -20545,11 +20601,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/virology) -"frG" = ( -/obj/structure/rack, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "frL" = ( /turf/closed/wall, /area/station/engineering/gravity_generator) @@ -21214,9 +21265,6 @@ /obj/structure/stairs/north, /turf/open/floor/iron/white/small, /area/station/medical/chemistry) -"fCp" = ( -/turf/open/floor/plating/airless, -/area/space) "fCq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/landmark/generic_maintenance_landmark, @@ -23246,9 +23294,7 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /obj/structure/table/reinforced/rglass, /obj/item/pai_card, -/obj/item/reagent_containers/spray/cleaner{ - layer = 3.01 - }, +/obj/item/reagent_containers/spray/cleaner, /turf/open/floor/iron/white/textured, /area/station/medical/treatment_center) "gcs" = ( @@ -23606,6 +23652,24 @@ }, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/disposal) +"ghy" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/table/reinforced/rglass, +/obj/machinery/cell_charger{ + pixel_y = 10 + }, +/obj/machinery/cell_charger{ + pixel_y = 1 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 9; + pixel_x = -1 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -1 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/treatment_center) "ghH" = ( /obj/effect/turf_decal/tile/blue/half{ dir = 4 @@ -24269,24 +24333,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/prison/visit) -"gra" = ( -/obj/structure/rack, -/obj/item/stock_parts/micro_laser{ - pixel_y = 7 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -4; - pixel_y = -6 - }, -/obj/item/vending_refill/wardrobe/science_wardrobe{ - pixel_y = 18 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/science/lower) "grb" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -24657,6 +24703,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) "gwl" = ( @@ -25659,6 +25706,10 @@ /obj/effect/landmark/start/captain, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain/private) +"gJl" = ( +/obj/machinery/computer/security/telescreen/engine_waste/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "gJm" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -26211,21 +26262,6 @@ initial_gas_mix = "TEMP=2.7" }, /area/station/science/ordnance/bomb) -"gQW" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/obj/structure/rack, -/obj/item/stock_parts/power_store/cell/lead, -/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/storage) "gRf" = ( /obj/machinery/door/airlock/public/glass{ name = "Public Airlock" @@ -26307,16 +26343,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard) -"gSr" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/cable, -/obj/machinery/computer/security/telescreen/engine{ - name = "Engineering and atmospherics monitor" - }, -/mob/living/basic/parrot/poly, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/heads_quarters/ce) "gSs" = ( /obj/effect/turf_decal/trimline/neutral/warning{ dir = 1 @@ -26427,6 +26453,14 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) +"gTZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/computer/security/telescreen/engine_waste/directional/east, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark/textured_large, +/area/station/engineering/atmos/pumproom) "gUc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light_switch/directional/south, @@ -26487,6 +26521,10 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/science/server) +"gVi" = ( +/obj/effect/spawner/random/structure/twelve_percent_spirit_board, +/turf/open/floor/iron/white/textured_large, +/area/station/service/chapel/office) "gVm" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -27007,9 +27045,7 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "hbW" = ( -/obj/structure/railing{ - layer = 3.1 - }, +/obj/structure/railing, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, @@ -28219,7 +28255,6 @@ /area/station/maintenance/floor2/starboard/aft) "hsA" = ( /obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/commons/toilet) "hsG" = ( @@ -28830,7 +28865,7 @@ /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/simple/purple, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "hAI" = ( @@ -29289,6 +29324,24 @@ /obj/machinery/atmospherics/pipe/smart/simple/purple, /turf/open/floor/engine/vacuum, /area/station/science/ordnance/freezerchamber) +"hGG" = ( +/obj/structure/rack, +/obj/item/stock_parts/micro_laser{ + pixel_y = 7 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -4; + pixel_y = -6 + }, +/obj/item/vending_refill/wardrobe/science_wardrobe{ + pixel_y = 18 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/white, +/area/station/science/lower) "hGL" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, @@ -30853,14 +30906,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/engineering/engine_smes) -"ibO" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high/empty, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "ibT" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, @@ -31451,6 +31496,12 @@ dir = 1 }, /area/station/security/office) +"ijV" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/machinery/computer/security/telescreen/rd/directional/west, +/obj/machinery/pdapainter/research, +/turf/open/floor/iron/white, +/area/station/command/heads_quarters/rd) "ijX" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/hollow/directional, @@ -32115,14 +32166,6 @@ /obj/structure/railing/corner, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard/aft) -"isp" = ( -/obj/machinery/computer/security/telescreen{ - name = "\improper Engine Waste Monitor"; - network = list("waste"); - pixel_y = 26 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "isq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/navigate_destination/dockaux, @@ -33217,6 +33260,13 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter) +"iGR" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron/white, +/area/station/science/circuits) "iGY" = ( /obj/machinery/door/airlock/medical{ name = "Medical Break Room" @@ -33271,6 +33321,12 @@ name = "lab floor" }, /area/station/science/robotics/lab) +"iHL" = ( +/obj/machinery/pdapainter/engineering, +/obj/machinery/camera/autoname/directional/west, +/obj/machinery/computer/security/telescreen/engine/directional/south, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/ce) "iHM" = ( /obj/machinery/vending/wallmed/directional/west, /obj/effect/turf_decal/tile/blue/opposingcorners, @@ -33292,20 +33348,6 @@ /obj/item/weldingtool/largetank, /turf/open/floor/iron, /area/station/cargo/warehouse) -"iIb" = ( -/obj/item/kirbyplants/random, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/interrogation{ - pixel_y = 30 - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) "iIm" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Hatch" @@ -33627,16 +33669,6 @@ dir = 1 }, /area/station/hallway/floor2/fore) -"iNA" = ( -/obj/machinery/computer/security/telescreen/vault{ - dir = 8; - pixel_x = 26 - }, -/obj/machinery/computer/security{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) "iNB" = ( /obj/machinery/light/directional/north, /obj/machinery/camera/autoname/directional/east, @@ -33772,8 +33804,7 @@ }, /obj/machinery/door/window/right/directional/south{ name = "Upload Console Window"; - req_access = list("ai_upload"); - layer = 3 + req_access = list("ai_upload") }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) @@ -35263,6 +35294,7 @@ /obj/effect/turf_decal/stripes{ dir = 1 }, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) "jjo" = ( @@ -35346,6 +35378,17 @@ }, /turf/open/floor/mineral/silver, /area/station/service/chapel) +"jkD" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east{ + cell_type = /obj/item/stock_parts/power_store/battery/hyper + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/smooth_large, +/area/station/tcommsat/server) "jkH" = ( /obj/machinery/holopad, /turf/open/floor/iron/white, @@ -36571,15 +36614,6 @@ /obj/effect/turf_decal/trimline/green/filled/line, /turf/open/floor/iron, /area/station/service/hydroponics) -"jAe" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 4; - pixel_x = -32 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "jAl" = ( /obj/structure/table/wood/fancy/red, /obj/effect/turf_decal/siding/wood{ @@ -37314,7 +37348,7 @@ /area/station/maintenance/floor4/starboard) "jJM" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/purple, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "jJP" = ( @@ -40875,21 +40909,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/miningdock) -"kFk" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/computer/security/telescreen{ - dir = 1; - name = "\improper Engine Waste Monitor"; - network = list("waste"); - pixel_y = -26 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos/pumproom) "kFp" = ( /obj/effect/turf_decal/trimline/blue/warning{ dir = 10 @@ -41221,19 +41240,6 @@ }, /turf/open/floor/iron, /area/station/hallway/floor2/fore) -"kIT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/computer/security/telescreen{ - dir = 8; - name = "\improper Engine Waste Monitor"; - network = list("waste"); - pixel_x = 26 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/pumproom) "kJg" = ( /obj/effect/turf_decal/trimline/purple/line{ dir = 1 @@ -41480,28 +41486,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard) -"kMl" = ( -/obj/structure/table, -/obj/item/ai_module/reset/purge, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/spawner/random/aimodule/neutral{ - pixel_x = 15 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the AI Upload."; - dir = 4; - name = "AI Upload Monitor"; - network = list("aiupload"); - pixel_x = -29 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) "kMv" = ( /obj/machinery/plumbing/receiver, /obj/effect/turf_decal/tile/yellow/opposingcorners, @@ -41968,14 +41952,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/engineering/engine_smes) -"kSG" = ( -/obj/effect/turf_decal/bot, -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/mechbay) "kSN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42178,19 +42154,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, @@ -42514,6 +42477,20 @@ /obj/machinery/light/directional/north, /turf/open/floor/eighties, /area/station/commons/dorms/room2) +"kZr" = ( +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/obj/item/gps, +/obj/structure/closet/crate/engineering, +/turf/open/floor/plating, +/area/station/engineering/lobby) "kZv" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, @@ -42538,14 +42515,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/floor3/fore) -"kZI" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "kZS" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -44133,9 +44102,7 @@ /obj/effect/turf_decal/arrows{ dir = 4 }, -/obj/structure/railing{ - layer = 3.1 - }, +/obj/structure/railing, /obj/effect/decal/cleanable/robot_debris, /obj/effect/landmark/start/bitrunner, /turf/open/floor/iron/dark/textured_large, @@ -46011,7 +45978,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/door/window/left/directional/south{ - layer = 3.1; name = "Cyborg Upload Console Window"; req_access = list("ai_upload") }, @@ -47444,6 +47410,22 @@ /obj/machinery/duct, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness) +"mko" = ( +/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/ordnance/directional/north, +/obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver, +/obj/structure/table, +/obj/item/binoculars{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/turf/open/floor/iron/white, +/area/station/science/ordnance/storage) "mkE" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/item/wrench, @@ -49081,6 +49063,12 @@ dir = 1 }, /area/station/hallway/secondary/exit) +"mFQ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/ai_monitored/command/storage/eva) "mFV" = ( /obj/structure/bodycontainer/morgue, /obj/machinery/light/small/directional/west, @@ -49305,21 +49293,6 @@ }, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain) -"mIV" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for the Auxiliary Mining Base."; - dir = 1; - name = "Auxiliary Base Monitor"; - network = list("auxbase"); - pixel_y = -28 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) "mIX" = ( /obj/machinery/ai_slipper{ uses = 10 @@ -51984,6 +51957,28 @@ }, /turf/open/floor/iron/dark/textured, /area/station/medical/cryo) +"nqP" = ( +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/obj/structure/table/reinforced/plasmarglass, +/obj/item/stock_parts/power_store/cell/lead{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/usb_cable{ + name = "jumper cable"; + pixel_x = -10; + pixel_y = 12 + }, +/obj/item/lead_pipe{ + pixel_x = -5 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 6; + pixel_y = 7 + }, +/obj/item/reagent_containers/syringe, +/turf/open/floor/pod/dark, +/area/station/service/kitchen/abandoned) "nqU" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -52391,12 +52386,6 @@ dir = 4 }, /area/station/hallway/floor1/fore) -"nwk" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) "nwx" = ( /obj/item/wallframe/button, /obj/effect/mapping_helpers/burnt_floor, @@ -52453,28 +52442,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) -"nxB" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/structure/table/reinforced/plasmarglass, -/obj/item/stock_parts/power_store/cell/lead{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/usb_cable{ - name = "jumper cable"; - pixel_x = -10; - pixel_y = 12 - }, -/obj/item/lead_pipe{ - pixel_x = -5 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 6; - pixel_y = 7 - }, -/obj/item/reagent_containers/syringe, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) "nxC" = ( /obj/effect/turf_decal/stripes/full, /obj/machinery/door/airlock{ @@ -52951,6 +52918,30 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"nDQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/table/reinforced, +/obj/structure/window/spawner/directional/south, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/multitool{ + pixel_x = 7; + pixel_y = 10 + }, +/turf/open/floor/iron/corner{ + dir = 4 + }, +/area/station/engineering/lobby) "nEa" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -53011,7 +53002,7 @@ /obj/item/fishing_rod, /obj/structure/closet, /obj/effect/spawner/random/maintenance/three, -/obj/item/clothing/mask/cigarette/pipe, +/obj/item/cigarette/pipe, /turf/open/floor/pod/light, /area/station/maintenance/floor2/starboard/fore) "nEO" = ( @@ -53411,16 +53402,6 @@ /obj/structure/foamedmetal, /turf/open/floor/engine, /area/station/maintenance/floor1/port/aft) -"nJz" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/auxlab) "nJC" = ( /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, @@ -54603,26 +54584,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"nYQ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/reinforced/rglass, -/obj/machinery/cell_charger{ - pixel_y = 10 - }, -/obj/machinery/cell_charger{ - pixel_y = 1; - layer = 2.91 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_y = 9; - pixel_x = -1 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -1; - layer = 3.01 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) "nYZ" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -55564,6 +55525,13 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/port/aft) +"omq" = ( +/obj/machinery/computer/security/telescreen/vault/directional/east, +/obj/machinery/computer/security{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/hop) "omr" = ( /turf/open/floor/iron/stairs{ dir = 8 @@ -55753,6 +55721,20 @@ /obj/machinery/light/warm/directional/north, /turf/open/floor/carpet/orange, /area/station/service/chapel/funeral) +"ooT" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/item/folder/white{ + pixel_y = 13 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/lab) "ooV" = ( /obj/effect/decal/cleanable/dirt, /obj/item/ammo_casing/c38{ @@ -56000,17 +55982,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/medical/psychology) -"orW" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east{ - cell_type = /obj/item/stock_parts/power_store/battery/hyper - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/tcommsat/server) "osk" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56150,6 +56121,16 @@ /obj/structure/chair, /turf/open/floor/iron/kitchen/herringbone, /area/station/service/kitchen/diner) +"ouy" = ( +/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/computer/security/telescreen/engine_waste/directional/south, +/turf/open/floor/catwalk_floor/iron, +/area/station/engineering/atmos/pumproom) "ouD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -57373,6 +57354,16 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"oLE" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 8 + }, +/obj/machinery/airalarm/directional/east, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "oLG" = ( /obj/structure/beebox, /turf/open/floor/grass, @@ -57609,6 +57600,11 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/white, /area/station/science/lower) +"oOW" = ( +/obj/structure/rack, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "oOY" = ( /obj/structure/table/wood/fancy/red, /obj/item/flashlight/flare/candle, @@ -58376,6 +58372,15 @@ /obj/item/tank/internals/emergency_oxygen, /turf/open/floor/iron/smooth, /area/station/tcommsat/computer) +"oZd" = ( +/obj/machinery/computer/security/telescreen/auxbase/directional/south, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "oZj" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -58414,12 +58419,6 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/dark, /area/station/security/checkpoint/second) -"oZB" = ( -/obj/structure/sign/departments/aiupload/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) "oZE" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Hatch" @@ -59551,6 +59550,10 @@ /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 }, +/obj/machinery/power/apc/auto_name/directional/north{ + areastring = "/area/station/science/ordnance/burnchamber" + }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "pqO" = ( @@ -60663,6 +60666,14 @@ /obj/structure/closet/firecloset, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard/aft) +"pEY" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/structure/sign/poster/contraband/random/directional/east, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "pEZ" = ( /obj/structure/closet/radiation, /obj/effect/turf_decal/box, @@ -60769,6 +60780,10 @@ dir = 8 }, /area/station/security/office) +"pGz" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "pGG" = ( /obj/structure/ladder, /obj/structure/lattice/catwalk, @@ -61328,7 +61343,7 @@ dir = 4 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "pNW" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 @@ -63075,20 +63090,6 @@ }, /turf/open/floor/iron, /area/station/cargo/miningdock) -"qlT" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/item/folder/white{ - pixel_y = 13 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/lab) "qmb" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -64228,20 +64229,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/station/science/cytology) -"qzq" = ( -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/obj/item/gps, -/obj/structure/closet/crate/engineering, -/turf/open/floor/plating, -/area/station/engineering/lobby) "qzx" = ( /obj/structure/bookcase/random/fiction, /turf/open/floor/carpet/royalblack, @@ -65276,6 +65263,11 @@ }, /turf/open/floor/iron, /area/station/hallway/floor3/aft) +"qNP" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/pipe_scrubber, +/turf/open/floor/iron, +/area/station/engineering/atmos) "qNW" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 @@ -65340,12 +65332,6 @@ /obj/effect/turf_decal/trimline/blue/filled/corner, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/aft) -"qOL" = ( -/obj/structure/rack, -/obj/item/mod/core/standard, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) "qON" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/airalarm/directional/south, @@ -65635,7 +65621,7 @@ dir = 8 }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "qRW" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -66523,6 +66509,12 @@ }, /turf/open/floor/glass/reinforced, /area/station/service/library) +"rdv" = ( +/obj/structure/rack, +/obj/item/mod/core/standard, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "rdx" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{ dir = 4 @@ -66792,6 +66784,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor/iron, /area/station/engineering/atmos) +"rgx" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) "rgy" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -66911,6 +66913,18 @@ /obj/machinery/light/small/blacklight/directional/east, /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard) +"rhO" = ( +/obj/item/kirbyplants/random, +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/interrogation/directional/north, +/turf/open/floor/iron/dark, +/area/station/security/interrogation) "rhR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -67019,7 +67033,6 @@ /turf/open/floor/iron/dark, /area/station/hallway/floor1/aft) "rjB" = ( -/obj/structure/sign/warning/biohazard/directional/east, /obj/machinery/light/cold/no_nightlight/directional/east, /turf/open/floor/engine/xenobio, /area/station/science/xenobiology) @@ -67886,20 +67899,6 @@ }, /turf/open/floor/iron/dark/side, /area/station/hallway/secondary/entry) -"rxu" = ( -/obj/item/radio/intercom/directional/north{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "Private Channel" - }, -/obj/machinery/recharge_station, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 8; - pixel_x = 28 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) "rxz" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -69863,6 +69862,7 @@ /area/station/maintenance/floor1/port) "sav" = ( /obj/effect/turf_decal/box/corners, +/obj/structure/sign/warning/biohazard/directional/east, /turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "saA" = ( @@ -70237,22 +70237,6 @@ dir = 9 }, /area/station/security/brig) -"sfE" = ( -/obj/structure/table, -/obj/item/storage/toolbox/emergency{ - pixel_y = 12 - }, -/obj/item/stack/cable_coil/cut{ - pixel_y = 7 - }, -/obj/item/stock_parts/power_store/cell/lead{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/wirecutters, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) "sfG" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -70513,6 +70497,14 @@ /obj/effect/mapping_helpers/airlock/access/any/service/theatre, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/port/aft) +"sjM" = ( +/obj/machinery/vatgrower{ + dir = 4 + }, +/obj/machinery/light/cold/no_nightlight/directional/north, +/obj/machinery/status_display/ai/directional/north, +/turf/open/misc/dirt/jungle, +/area/station/science/cytology) "sjW" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance/five, @@ -70624,6 +70616,13 @@ /obj/structure/bookcase/random/fiction, /turf/open/floor/wood/tile, /area/station/service/library) +"slC" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/cable, +/mob/living/basic/parrot/poly, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/command/heads_quarters/ce) "slI" = ( /obj/item/radio/intercom/directional/west, /obj/structure/window/reinforced/spawner/directional/south, @@ -71649,13 +71648,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"sAf" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) "sAi" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/arrow_ccw{ @@ -71953,20 +71945,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/stairs/old, /area/station/service/theater) -"sEw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/machinery/turretid{ - control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; - icon_state = "control_stun"; - name = "AI Upload turret control"; - pixel_y = 28 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) "sEA" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -72534,7 +72512,7 @@ c_tag = "Minisat - Aft" }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "sLe" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, @@ -74591,7 +74569,7 @@ "tlJ" = ( /obj/machinery/camera/autoname/directional/east, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "tlK" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -74753,6 +74731,16 @@ /obj/effect/spawner/random/contraband/prison, /turf/open/floor/iron/dark, /area/station/maintenance/floor2/starboard/aft) +"tnM" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stack/cable_coil, +/obj/item/multitool, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/pod, +/area/station/maintenance/floor4/port/fore) "tnN" = ( /obj/structure/railing{ dir = 8 @@ -75155,6 +75143,14 @@ dir = 8 }, /area/station/hallway/floor2/aft) +"tsB" = ( +/obj/effect/turf_decal/siding/white, +/obj/structure/railing, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/table/reinforced/rglass, +/turf/open/floor/iron/large, +/area/station/science/robotics/lab) "tsN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -75692,16 +75688,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/abandoned) -"tzz" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "tzA" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -78324,7 +78310,7 @@ "ujI" = ( /obj/structure/railing, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "ujQ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -80911,6 +80897,14 @@ }, /turf/open/floor/iron/checker, /area/station/cargo/miningdock) +"uSL" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/robotics/mechbay) "uSN" = ( /obj/structure/railing, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -81274,6 +81268,12 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/security/armory) +"uXt" = ( +/obj/effect/turf_decal/tile/neutral/full, +/obj/machinery/portable_atmospherics/pipe_scrubber, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/science/ordnance/testlab) "uXw" = ( /obj/item/shard, /obj/effect/decal/cleanable/glass, @@ -82559,9 +82559,7 @@ /area/station/maintenance/floor4/port/fore) "voX" = ( /obj/machinery/door/firedoor/border_only, -/obj/structure/railing{ - layer = 3.1 - }, +/obj/structure/railing, /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 1 }, @@ -82746,24 +82744,6 @@ /obj/structure/marker_beacon/burgundy, /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard/aft) -"vqW" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/ordnance{ - pixel_y = 32 - }, -/obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver, -/obj/structure/table, -/obj/item/binoculars{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) "vrh" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -83458,9 +83438,7 @@ /area/station/cargo/lobby) "vzo" = ( /obj/machinery/netpod, -/obj/structure/railing{ - layer = 3.1 - }, +/obj/structure/railing, /turf/open/floor/catwalk_floor/iron_dark, /area/station/cargo/bitrunning/den) "vzu" = ( @@ -84668,6 +84646,21 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/cafeteria, /area/station/engineering/atmos) +"vQf" = ( +/obj/structure/table, +/obj/item/ai_module/reset/purge, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/spawner/random/aimodule/neutral{ + pixel_x = 15 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/turret_protected/ai_upload_foyer) "vQg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -84932,6 +84925,7 @@ /obj/effect/turf_decal/box/corners{ dir = 4 }, +/obj/structure/sign/warning/gas_mask/directional/east, /turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "vTY" = ( @@ -85169,6 +85163,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_large, /area/station/hallway/secondary/entry) +"vWP" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/robotics/lab) "vWQ" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -85600,7 +85601,7 @@ dir = 1 }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "wci" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -85956,14 +85957,6 @@ dir = 4 }, /area/station/command/bridge) -"wfG" = ( -/obj/machinery/plumbing/growing_vat{ - dir = 4 - }, -/obj/machinery/light/cold/no_nightlight/directional/south, -/obj/machinery/status_display/evac/directional/south, -/turf/open/misc/sandy_dirt, -/area/station/science/cytology) "wfI" = ( /obj/machinery/light_switch/directional/west, /turf/open/floor/wood, @@ -86338,7 +86331,6 @@ "wkP" = ( /obj/structure/table, /obj/item/reagent_containers/condiment/saltshaker{ - layer = 3.1; pixel_x = -2; pixel_y = 2 }, @@ -87445,30 +87437,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) -"wyg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/table/reinforced, -/obj/structure/window/spawner/directional/south, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 4 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 8; - pixel_y = -4 - }, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/multitool{ - pixel_x = 7; - pixel_y = 10 - }, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/station/engineering/lobby) "wym" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -87579,10 +87547,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/holding_cell) -"wzt" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) "wzB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/red/dim/directional/south, @@ -88199,14 +88163,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor4/port/aft) -"wIf" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/railing, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/table/reinforced/rglass, -/turf/open/floor/iron/large, -/area/station/science/robotics/lab) "wIn" = ( /obj/structure/sign/poster/official/random/directional/west, /obj/structure/easel, @@ -88319,6 +88275,22 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) +"wIX" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency{ + pixel_y = 12 + }, +/obj/item/stack/cable_coil/cut{ + pixel_y = 7 + }, +/obj/item/stock_parts/power_store/cell/lead{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/wirecutters, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/starboard/fore) "wJf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -90469,7 +90441,7 @@ dir = 4 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "xlu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -90601,16 +90573,6 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) -"xof" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) "xoj" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -90686,6 +90648,9 @@ }, /turf/open/floor/grass, /area/station/service/hydroponics/garden/abandoned) +"xpw" = ( +/turf/open/space/basic, +/area/space/nearstation) "xpA" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -91160,9 +91125,7 @@ /obj/item/reagent_containers/cup/beaker{ pixel_x = 5 }, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, +/obj/item/reagent_containers/condiment/enzyme, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "xvO" = ( @@ -91305,6 +91268,7 @@ /area/station/commons/vacant_room/office) "xxA" = ( /obj/machinery/holopad, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) "xxC" = ( @@ -92255,6 +92219,9 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor4/starboard) +"xIV" = ( +/turf/open/space/openspace, +/area/space/nearstation) "xJk" = ( /obj/machinery/seed_extractor, /obj/effect/turf_decal/tile/green/full, @@ -92340,7 +92307,7 @@ /area/station/maintenance/floor3/port) "xJX" = ( /obj/structure/table, -/obj/item/clothing/mask/cigarette/candy{ +/obj/item/cigarette/candy{ pixel_x = 4 }, /turf/open/floor/iron/dark/smooth_large, @@ -92378,7 +92345,7 @@ "xKt" = ( /obj/structure/railing/corner, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "xKy" = ( /obj/machinery/modular_computer/preset/id{ dir = 8 @@ -92531,6 +92498,14 @@ dir = 8 }, /area/station/hallway/floor3/aft) +"xMV" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "xMW" = ( /obj/structure/cable, /obj/structure/disposalpipe/junction{ @@ -93055,7 +93030,7 @@ dir = 1 }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "xUB" = ( /obj/machinery/light/floor, /turf/open/floor/iron/dark/side{ @@ -93703,13 +93678,6 @@ /obj/structure/table/reinforced, /turf/open/floor/iron/kitchen/herringbone, /area/station/service/kitchen) -"ydf" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron/white, -/area/station/science/circuits) "ydi" = ( /obj/machinery/firealarm/directional/south, /obj/effect/landmark/navigate_destination/chapel, @@ -110649,7 +110617,7 @@ wUH hyN wBR pTR -mIV +oZd wBR wBR wBR @@ -116266,7 +116234,7 @@ owI owI oic oic -sfE +wIX laR oic jdc @@ -118591,7 +118559,7 @@ eaW lSJ mxC jUP -gQW +etb myW kga uTH @@ -131976,7 +131944,7 @@ nor rcc sHG uxT -orW +jkD qkL snO jRp @@ -135037,7 +135005,7 @@ oIJ hRR qXk hHB -hHB +qNP gmw hOy lHR @@ -136607,7 +136575,7 @@ sQD lOI sjs oFr -bbN +iHL kzE fmb xgH @@ -136862,7 +136830,7 @@ nPb rCO cjc aRI -gSr +slC bgs hZt kzE @@ -137886,7 +137854,7 @@ wmU pVZ uKL rGe -wyg +nDQ wWw xFR gPc @@ -138639,7 +138607,7 @@ kDg vsL kDg rBP -qzq +kZr ykU mMO tCC @@ -140439,7 +140407,7 @@ oIy irk nDr kBz -kIT +gTZ bwl wlA kGK @@ -141465,13 +141433,13 @@ hQy vmr vmr skj -kFk +ouy sAH hhb gGt qEw sAH -isp +gJl jSD ppd uyD @@ -147102,245 +147070,25 @@ owI owI owI owI -aTO -fCp -pNV -aTO -fCp -fCp -xln -aTO -fCp -fCp -xln -teq -teq -teq -teq -teq -teq -teq -teq -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -iSU -iSU -iSU -iSU -iSU -iSU -iSU -iSU -fCp -fCp -xln -aTO -fCp -fCp -xln -aTO -fCp -pNV -aTO -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(207,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI +aTO +rcO +pNV +aTO +rcO +rcO +xln +aTO +rcO +rcO +xln +teq +teq +teq +teq +teq +teq +teq +teq owI owI owI @@ -147360,18 +147108,29 @@ owI owI owI owI -fCp -fCp owI -fCp -fCp -fCp owI -fCp -fCp -fCp owI owI +iSU +iSU +iSU +iSU +iSU +iSU +iSU +iSU +rcO +rcO +xln +aTO +rcO +rcO +xln +aTO +rcO +pNV +aTO owI owI owI @@ -147409,16 +147168,8 @@ owI owI owI owI -fCp -fCp -fCp owI -fCp -fCp -fCp owI -fCp -fCp owI owI owI @@ -147477,6 +147228,15 @@ owI owI owI owI +"} +(207,1,1) = {" +owI +owI +owI +owI +owI +owI +owI owI owI owI @@ -147517,8 +147277,6 @@ owI owI owI owI -"} -(208,1,1) = {" owI owI owI @@ -147570,8 +147328,16 @@ owI owI owI owI +rcO +rcO owI +rcO +rcO +rcO owI +rcO +rcO +rcO owI owI owI @@ -147611,8 +147377,16 @@ owI owI owI owI +rcO +rcO +rcO owI +rcO +rcO +rcO owI +rcO +rcO owI owI owI @@ -147711,6 +147485,200 @@ owI owI owI owI +"} +(208,1,1) = {" +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +xpw +xpw +xpw +owI +xpw +xpw +xpw +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +xpw +xpw +xpw +owI +xpw +xpw +xpw +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI +owI owI owI owI @@ -174656,7 +174624,7 @@ oyh oyh oyh oyh -ucA +xIV ucA ucA ucA @@ -174913,7 +174881,7 @@ oyh oyh oyh oyh -ucA +xIV ucA ucA ucA @@ -175170,7 +175138,7 @@ oyh oyh oyh oyh -ucA +xIV ucA ucA ucA @@ -175427,7 +175395,7 @@ oyh oyh oyh oyh -ucA +xIV ucA ucA ucA @@ -175684,7 +175652,7 @@ oyh oyh oyh oyh -ucA +xIV ucA ucA ucA @@ -175941,7 +175909,7 @@ oyh oyh oyh oyh -ucA +xIV ucA ucA ucA @@ -181592,7 +181560,7 @@ lQI lQI ozr jJu -nxB +nqP qiR rkZ kms @@ -182071,7 +182039,7 @@ mKZ sxl naI lNN -ydf +iGR xuv jBm xuv @@ -182850,7 +182818,7 @@ oFY mBZ ijS obj -nJz +rgx sEL biW xWe @@ -184650,7 +184618,7 @@ kJg kmR lcB kGf -qlT +ooT wXC ePa rNg @@ -187978,7 +187946,7 @@ hge hge hge oiO -bMu +ijV pKO aiN jDc @@ -189018,7 +188986,7 @@ kXZ wbS eGF dpL -gra +hGG bvx btp dpL @@ -191833,13 +191801,13 @@ iuW eHf dGa rkM -dyE +sjM nuv cLA npF lcT aAE -wfG +eJW qun nVT iCi @@ -197257,7 +197225,7 @@ woE biz dzM kUl -nYQ +ghy dzM dYM scx @@ -200859,7 +200827,7 @@ bet iAb bif fSi -sAf +vWP aal aAK ybG @@ -202899,7 +202867,7 @@ xDM ddA pZW wCG -oZB +jZS caF dKS bsv @@ -203157,7 +203125,7 @@ lkA pZW nyE nyE -aRl +cIc nyE nyE kuB @@ -203168,7 +203136,7 @@ igE hcr jbR cqR -kSG +uSL aFs jeF blv @@ -203413,9 +203381,9 @@ sBb ybB rkY nyE -sEw +eIg eiD -kMl +vQf nyE sgJ kzK @@ -204200,7 +204168,7 @@ bgz bid grk bmL -wIf +tsB mOH jhU btW @@ -262026,7 +261994,7 @@ oNV eLw cmh kSU -ibO +pEY piR piR roj @@ -267688,7 +267656,7 @@ hLo piR xRs bKR -qOL +rdv piR mom hcT @@ -309554,7 +309522,7 @@ bfx eGK onE aNs -kZI +xMV wFT gaJ qOq @@ -309566,7 +309534,7 @@ qNY iTN qGF uIx -xof +tnM lvm vSG mpK @@ -313168,7 +313136,7 @@ fUm oTx uqc nYe -jAe +cep fwj lOe uIx @@ -315455,7 +315423,7 @@ hHi fMc gOF ddH -ddH +uXt nPE pDq vfi @@ -315706,8 +315674,8 @@ dWz lYx unQ wMU -oUW -rDL +aaN +pGz jjj dIJ oTq @@ -316234,7 +316202,7 @@ fkN fQx nTJ iXS -nwk +mFQ hNh hNh hNh @@ -317777,7 +317745,7 @@ xvr hIB nTo hns -tzz +oLE jbr iXS eHr @@ -318785,7 +318753,7 @@ ucA xuh lln lln -vqW +mko eNX bNP nQj @@ -320088,7 +320056,7 @@ nPE qPv iQe wqP -iNA +omq obK kpI dJC @@ -322683,7 +322651,7 @@ cbw lOp ira dtX -frG +oOW qjr qjr qjr @@ -326538,7 +326506,7 @@ bJm oZo gXi gDx -iIb +rhO ftZ tBk sCO @@ -327785,7 +327753,7 @@ kTV wlX sxo vyW -wzt +gVi mcD rNo tKY @@ -333461,7 +333429,7 @@ oyh nbP tIl fEv -kVs +dMt nbP oyh oyh @@ -337822,7 +337790,7 @@ oyh aFj aFj aFj -rxu +dlR cRs uEb uEb diff --git a/_maps/map_files/ProtoBoxStation/ProtoBoxStation.dmm b/_maps/map_files/ProtoBoxStation/ProtoBoxStation.dmm index 6f24561865590..a68aabd20a997 100644 --- a/_maps/map_files/ProtoBoxStation/ProtoBoxStation.dmm +++ b/_maps/map_files/ProtoBoxStation/ProtoBoxStation.dmm @@ -108,7 +108,7 @@ "aaz" = ( /obj/structure/sign/warning/secure_area/directional/east, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "aaE" = ( /obj/structure/table, /obj/machinery/button/ignition{ @@ -164,10 +164,14 @@ /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/abandoned, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "aaX" = ( /obj/structure/cable, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/brig) "aaZ" = ( @@ -211,32 +215,33 @@ "abj" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/engineering/atmos) "abk" = ( /obj/machinery/keycard_auth{ pixel_x = 24; pixel_y = 10 }, -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -9 +/obj/machinery/modular_computer/preset/id{ + dir = 8 }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = 8; - pixel_y = 8 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 }, -/obj/item/reagent_containers/cup/glass/bottle/vodka/badminka{ - pixel_y = 7 +/obj/item/paper/crumpled{ + default_raw_text = "Here's your ID console, dickhead!

- the technician"; + name = "technician's note"; + pixel_x = -8; + pixel_y = 5 }, -/turf/open/floor/carpet, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "abl" = ( /obj/machinery/vending/security, /turf/open/floor/iron/dark, /area/station/security/lockers) "abm" = ( -/obj/structure/table, /obj/item/storage/box/firingpins, /obj/item/storage/box/firingpins, /obj/item/key/security, @@ -250,6 +255,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "abn" = ( @@ -267,6 +273,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "abr" = ( @@ -332,7 +339,6 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "abH" = ( -/obj/structure/table, /obj/item/storage/box/chemimp{ pixel_x = 6 }, @@ -350,6 +356,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "abI" = ( @@ -368,6 +375,7 @@ /obj/effect/spawner/random/armory/riot_armor, /obj/effect/spawner/random/armory/riot_helmet, /obj/effect/spawner/random/armory/riot_shield, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "abJ" = ( @@ -387,10 +395,12 @@ }, /obj/effect/spawner/random/armory/bulletproof_armor, /obj/effect/spawner/random/armory/bulletproof_helmet, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "abN" = ( /obj/structure/closet/secure_closet/tac, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "abO" = ( @@ -398,11 +408,13 @@ /turf/open/floor/iron/dark, /area/station/security/lockers) "abP" = ( -/obj/structure/closet/secure_closet/security/sec, /obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/siding/red{ dir = 8 }, +/obj/structure/closet/secure_closet/security/sec{ + anchored = 1 + }, /turf/open/floor/iron/dark, /area/station/security/lockers) "abQ" = ( @@ -421,23 +433,29 @@ dir = 8 }, /obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "abR" = ( -/obj/structure/closet/secure_closet/security/sec, /obj/machinery/light/directional/east, /obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, /obj/effect/turf_decal/tile/red{ dir = 4 }, +/obj/effect/turf_decal/siding/red{ + dir = 9 + }, +/obj/structure/closet/secure_closet/security/sec{ + anchored = 1 + }, /turf/open/floor/iron/dark, /area/station/security/lockers) "abS" = ( /obj/machinery/computer/records/security, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "abT" = ( /obj/machinery/requests_console{ @@ -448,28 +466,27 @@ /obj/effect/mapping_helpers/requests_console/announcement, /obj/effect/mapping_helpers/requests_console/information, /obj/effect/mapping_helpers/requests_console/assistance, -/obj/item/radio/intercom{ - dir = 4; - pixel_x = -31 - }, /obj/structure/table/wood, /obj/item/storage/box/seccarts{ pixel_x = 3; pixel_y = 2 }, /obj/item/storage/box/deputy, -/obj/machinery/button/door{ - id = "hosspace"; - name = "Space Shutters Control"; - pixel_x = -26; - pixel_y = 34 +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, -/turf/open/floor/carpet, +/obj/machinery/newscaster{ + pixel_x = -30 + }, +/turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "abV" = ( /obj/machinery/computer/security/hos, /obj/structure/cable, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "abW" = ( /obj/structure/table/wood, @@ -482,7 +499,10 @@ }, /obj/structure/reagent_dispensers/wall/peppertank/directional/east, /obj/machinery/airalarm/directional/north, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 5 + }, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "abY" = ( /obj/structure/grille, @@ -514,24 +534,39 @@ /area/station/maintenance/starboard/fore) "aci" = ( /obj/vehicle/ridden/secway, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "acj" = ( /obj/machinery/light/directional/east, -/obj/machinery/suit_storage_unit/hos, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/item/radio/intercom/directional/east, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -9 + }, +/obj/item/reagent_containers/cup/glass/bottle/vodka/badminka{ + pixel_y = 7 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 8; + pixel_y = 8 + }, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "ack" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "acl" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "acm" = ( /obj/effect/mapping_helpers/apc/cell_5k, @@ -540,42 +575,55 @@ }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "acn" = ( /obj/structure/secure_safe/hos{ pixel_x = 35 }, -/obj/structure/closet/secure_closet/hos, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/machinery/suit_storage_unit/hos, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "aco" = ( /obj/structure/closet/bombcloset/security, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/siding/red{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/security/lockers) "acp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/lockers) "acq" = ( /obj/effect/turf_decal/bot, /obj/structure/cable, -/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/siding/red{ + dir = 8 + }, +/obj/effect/turf_decal/siding/red{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/closet/secure_closet/security/sec{ + anchored = 1 + }, /turf/open/floor/iron/checker, /area/station/security/lockers) "acr" = ( /obj/structure/chair/comfy/black, -/turf/open/floor/carpet, +/turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "acs" = ( -/obj/machinery/newscaster{ - pixel_x = -30 - }, /obj/machinery/camera/directional/west{ c_tag = "Head of Security's Office" }, @@ -583,16 +631,27 @@ pixel_y = 4 }, /obj/structure/table/wood, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/button/door/directional/west{ + id = "hosspace"; + name = "Space Shutters Control" + }, +/turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "act" = ( /obj/machinery/holopad/secure, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "acv" = ( /obj/structure/closet/secure_closet/contraband/armory, /obj/effect/spawner/random/maintenance/three, /obj/effect/spawner/random/contraband/armory, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "acw" = ( @@ -625,28 +684,26 @@ /area/station/science/genetics) "acF" = ( /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "acH" = ( -/obj/structure/chair/stool, -/turf/open/floor/iron/chapel{ +/obj/structure/chair/pew/left{ dir = 1 }, +/turf/open/floor/iron/chapel, /area/station/service/chapel) "acL" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "acM" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/spawner/random/armory/e_gun, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "acN" = ( /obj/effect/turf_decal/tile/bar/opposingcorners, @@ -661,23 +718,28 @@ /obj/machinery/camera/directional/west{ c_tag = "Brig Equipment Room" }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/siding/red{ + dir = 6 + }, /turf/open/floor/iron/dark, /area/station/security/lockers) "acP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/lockers) +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/brig) "acQ" = ( /obj/structure/table/wood, /obj/item/folder/red, /obj/item/stamp/head/hos, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "acR" = ( /obj/structure/table/wood, @@ -690,7 +752,10 @@ pixel_x = -3; pixel_y = 7 }, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "acS" = ( /obj/structure/table/wood, @@ -706,7 +771,10 @@ pixel_x = -3; pixel_y = 8 }, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "acT" = ( /obj/machinery/door/window/left/directional/east{ @@ -718,7 +786,7 @@ req_access = list("armory") }, /obj/structure/table/reinforced, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "acU" = ( /obj/machinery/door/airlock/external{ @@ -744,8 +812,10 @@ /area/station/security/execution/transfer) "ada" = ( /obj/machinery/modular_computer/preset/civilian, -/obj/structure/fireaxecabinet/mechremoval/directional/north, -/turf/open/floor/iron/white, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, /area/station/science/robotics/lab) "adb" = ( /obj/structure/table/wood, @@ -773,16 +843,17 @@ name = "Armory Shutters"; pixel_x = 26; pixel_y = -26; - req_access_txt = "3" + req_access = list("armory") }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "adh" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/structure/cable, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 6 + }, +/obj/structure/closet/secure_closet/hos, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "adi" = ( /obj/machinery/flasher/portable, @@ -801,22 +872,18 @@ "adj" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/spawner/random/armory/disablers, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "adk" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/spawner/random/armory/shotgun, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "adl" = ( /obj/machinery/door/poddoor/shutters{ @@ -824,29 +891,37 @@ name = "Armoury Shutter" }, /obj/effect/turf_decal/delivery, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "adm" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/command/heads_quarters/hos) "adn" = ( /obj/structure/chair{ dir = 1 }, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "ado" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 9 + }, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "adp" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "adq" = ( /obj/structure/table/wood, @@ -975,8 +1050,7 @@ id = "executionspaceblast"; name = "Vent to Space"; pixel_x = 25; - pixel_y = -5; - req_access_txt = "2" + pixel_y = -5 }, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) @@ -995,21 +1069,11 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "adL" = ( -/obj/structure/closet{ - name = "Evidence Closet" - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/brig) +/turf/open/floor/iron/dark, +/area/station/service/chapel) "adM" = ( /obj/machinery/light/directional/south, /obj/effect/turf_decal/tile/yellow, @@ -1026,18 +1090,27 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 10 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "adP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark_red/corner, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "adQ" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "adS" = ( /obj/machinery/door/poddoor/shutters/preopen{ @@ -1047,10 +1120,8 @@ /obj/effect/turf_decal/loading_area{ dir = 4 }, -/obj/machinery/ticket_machine{ - pixel_y = 32 - }, -/turf/open/floor/iron, +/obj/machinery/ticket_machine/directional/south, +/turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) "adT" = ( /obj/structure/lattice/catwalk, @@ -1080,6 +1151,7 @@ /area/station/engineering/main) "adY" = ( /obj/structure/closet/firecloset, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) "adZ" = ( @@ -1105,7 +1177,7 @@ /obj/machinery/door/window{ dir = 8; name = "Mass Driver"; - req_access_txt = "22" + req_access = list("chapel_office") }, /obj/machinery/mass_driver{ dir = 4; @@ -1121,9 +1193,12 @@ /turf/closed/wall/r_wall, /area/station/ai_monitored/command/nuke_storage) "aej" = ( -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /turf/open/floor/iron, /area/station/security/brig) "ael" = ( @@ -1140,28 +1215,38 @@ "aem" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/large, /area/station/security/brig) "aen" = ( /obj/machinery/computer/security/telescreen/prison{ pixel_y = 30 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "aeo" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /turf/open/floor/iron, /area/station/security/brig) "aeq" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/machinery/button/door{ id = "cell1outer"; name = "Outer Bolt Control"; @@ -1176,6 +1261,12 @@ pixel_y = 25; pixel_x = 6 }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/iron, /area/station/security/brig) "aer" = ( @@ -1184,43 +1275,39 @@ /obj/machinery/power/apc/auto_name/directional/east, /obj/effect/mapping_helpers/apc/cell_5k, /obj/structure/cable, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, /obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, /turf/open/floor/iron, /area/station/security/brig) "aes" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "aet" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "aeu" = ( /obj/machinery/camera/directional/north{ c_tag = "Engineering Access" }, /obj/structure/closet/radiation, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) "aev" = ( /obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/reagent_dispensers/wall/peppertank/directional/east, /turf/open/floor/iron/dark, /area/station/security/lockers) "aew" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/lockers) "aey" = ( @@ -1231,20 +1318,24 @@ /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/security/hos, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "aez" = ( -/obj/structure/closet{ - name = "Evidence Closet" - }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/siding/thinplating_new{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/tile/brown/opposingcorners, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 }, /turf/open/floor/iron, -/area/station/security/brig) +/area/station/cargo/storage) "aeA" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -1271,6 +1362,7 @@ /obj/machinery/camera/directional/west{ c_tag = "Security Escape Pod" }, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/security/office) "aeE" = ( @@ -1279,6 +1371,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/iron, /area/station/engineering/gravity_generator) "aeP" = ( @@ -1293,6 +1386,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) "aeR" = ( @@ -1325,7 +1419,10 @@ pixel_x = 3; pixel_y = -3 }, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/dark, /area/station/security/warden) "aeY" = ( /obj/machinery/door/window/left/directional/south{ @@ -1337,7 +1434,7 @@ dir = 10 }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "afa" = ( /obj/structure/disposalpipe/segment, @@ -1351,18 +1448,18 @@ /area/station/science/genetics) "afb" = ( /obj/machinery/recharger, -/obj/structure/table, +/obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/station/security/lockers) "afc" = ( -/obj/structure/table, /obj/machinery/recharger, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/station/security/lockers) "afd" = ( -/obj/item/radio/intercom{ - pixel_x = 29 - }, /obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/iron/dark, /area/station/security/lockers) @@ -1377,74 +1474,53 @@ /area/station/security/lockers) "aff" = ( /obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/corner, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/small, /area/station/security/office) "afg" = ( /obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "afi" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, /obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "afj" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - 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/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/office) -"afk" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) +"afk" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/station/command/heads_quarters/hos) "afl" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -1455,20 +1531,17 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/dark, /area/station/security/office) "afm" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "afo" = ( /obj/machinery/door/airlock/external{ @@ -1522,16 +1595,16 @@ dir = 4; pixel_x = 27 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - 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/red/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "afD" = ( -/obj/structure/table, /obj/item/storage/box/hug{ pixel_x = 4; pixel_y = 3 @@ -1540,14 +1613,14 @@ pixel_x = -8; pixel_y = 3 }, -/obj/effect/turf_decal/tile/red/half/contrasted, /obj/machinery/button/door/directional/south{ id = "secmechbay" }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/floor/iron, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark, /area/station/security/brig) "afE" = ( /obj/machinery/light/small/directional/south, @@ -1559,8 +1632,12 @@ /turf/open/floor/plating, /area/station/maintenance/department/electrical) "afH" = ( -/obj/structure/closet/secure_closet/brig, -/obj/effect/turf_decal/tile/red/half/contrasted, +/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/corner{ + dir = 4 + }, /turf/open/floor/iron, /area/station/security/brig) "afI" = ( @@ -1570,55 +1647,41 @@ /obj/machinery/door/airlock/security/glass{ name = "Evidence Storage" }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/machinery/door/firedoor, +/obj/structure/cable, /turf/open/floor/iron, /area/station/security/brig) "afL" = ( -/obj/structure/closet{ - name = "Evidence Closet" - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/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/corner, /turf/open/floor/iron, /area/station/security/brig) "afM" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "afN" = ( /obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "afO" = ( -/obj/machinery/door/airlock/command{ - name = "Command Tool Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"afP" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/command{ - name = "Command Tool Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/item/kirbyplants/random, +/obj/structure/cable, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) +"afP" = ( +/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/structure/crate_loot, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "afQ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/secure_area/directional/west, @@ -1632,31 +1695,36 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/security/brig, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark, /area/station/security/lockers) "afT" = ( /obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/structure/chair{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "afU" = ( /turf/open/floor/iron, /area/station/engineering/atmos) "afV" = ( -/obj/structure/table, /obj/item/restraints/handcuffs, /obj/item/assembly/timer, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "afW" = ( @@ -1668,6 +1736,10 @@ /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/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "afY" = ( @@ -1675,37 +1747,53 @@ /obj/structure/chair{ dir = 8 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "afZ" = ( -/obj/structure/table, /obj/item/radio/off, /obj/item/screwdriver{ pixel_y = 10 }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "aga" = ( /obj/structure/sign/warning/pods/directional/east, /obj/effect/turf_decal/stripes/end, +/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/iron/dark, /area/station/security/office) "agb" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/small, /area/station/security/office) "agc" = ( /obj/structure/closet/emcloset, /obj/machinery/light/small/directional/west, /turf/open/floor/plating, /area/station/security/office) +"agd" = ( +/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, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron, +/area/station/security/brig) "agf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1713,25 +1801,19 @@ /turf/open/floor/iron/dark, /area/station/security/interrogation) "agi" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/machinery/door/airlock/security/glass{ name = "Prison Wing" }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/security/brig, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled, +/turf/open/floor/iron/dark, /area/station/security/brig) "agj" = ( /turf/closed/wall, /area/station/security/brig) "agk" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/airlock/security/glass{ @@ -1739,7 +1821,8 @@ }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/security/brig, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled, +/turf/open/floor/iron/dark, /area/station/security/brig) "agl" = ( /obj/machinery/door/poddoor/shutters{ @@ -1749,23 +1832,33 @@ /turf/open/floor/iron/dark, /area/station/security/mechbay) "agm" = ( -/obj/machinery/light/directional/west, -/obj/structure/table, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) +/obj/machinery/light/directional/south, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "agn" = ( /turf/closed/wall/r_wall, /area/station/security/warden) "ago" = ( /obj/machinery/computer/security, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/herringbone, /area/station/security/warden) "agp" = ( /obj/machinery/computer/prisoner/management, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/siding/dark{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/herringbone, /area/station/security/warden) "agq" = ( /obj/machinery/door/firedoor, @@ -1779,24 +1872,39 @@ /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, +/turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "agr" = ( /obj/machinery/computer/records/security, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/siding/dark{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/herringbone, /area/station/security/warden) "ags" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, /turf/open/floor/iron/recharge_floor, /area/station/security/mechbay) "agt" = ( -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/warden) "agu" = ( /obj/structure/table, /obj/machinery/recharger, /obj/structure/reagent_dispensers/wall/peppertank/directional/north, /obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/warden) "agv" = ( /obj/machinery/camera/directional/west{ @@ -1807,54 +1915,44 @@ /turf/open/floor/iron, /area/station/cargo/miningdock) "agw" = ( -/obj/structure/table, /obj/machinery/syndicatebomb/training, /obj/item/gun/energy/laser/practice, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 }, -/turf/open/floor/iron, +/obj/structure/table/reinforced, +/turf/open/floor/iron/small, /area/station/security/office) "agx" = ( -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "agy" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - 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/security/office) -"agz" = ( -/obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/structure/chair{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/arrows{ + dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) +"agz" = ( +/obj/structure/chair/pew/left{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "agA" = ( /obj/machinery/requests_console{ department = "Security"; @@ -1862,58 +1960,69 @@ }, /obj/effect/mapping_helpers/requests_console/information, /obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/turf_decal/tile/red{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "agB" = ( -/obj/structure/table, /obj/item/assembly/flash/handheld, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "agC" = ( /obj/structure/cable, -/obj/machinery/holopad/secure, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/chair/comfy/black, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/security/office) "agD" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/machinery/door/poddoor/preopen{ id = "Prison Gate"; name = "prison blast door" }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark, /area/station/security/brig) "agE" = ( -/obj/structure/table, /obj/item/folder/red, /obj/item/pen, -/turf/open/floor/iron/dark, -/area/station/security/office) -"agF" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/security/office) +"agF" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/sign/warning/secure_area/directional/west, @@ -1921,18 +2030,24 @@ id = "Prison Gate"; name = "prison blast door" }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/end{ + dir = 8 + }, +/turf/open/floor/iron/dark, /area/station/security/brig) "agG" = ( /obj/machinery/light/directional/east, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/machinery/airalarm/directional/east, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/security/office) "agH" = ( /obj/structure/table, @@ -1941,6 +2056,7 @@ /obj/effect/turf_decal/stripes/end{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/mechbay) "agI" = ( @@ -1953,6 +2069,7 @@ /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/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/mechbay) "agJ" = ( @@ -1969,10 +2086,10 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/mechbay) "agK" = ( -/obj/structure/cable, /obj/effect/turf_decal/tile/red/opposingcorners, /obj/item/reagent_containers/condiment/rice, /obj/item/storage/fancy/egg_box, @@ -1982,6 +2099,7 @@ /area/station/security/prison/mess) "agL" = ( /obj/vehicle/sealed/mecha/ripley/paddy/preset, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/recharge_floor, /area/station/security/mechbay) "agM" = ( @@ -1989,25 +2107,10 @@ /obj/item/clothing/mask/surgical, /obj/item/reagent_containers/spray/cleaner, /obj/structure/table/glass, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /turf/open/floor/iron/white, /area/station/security/brig) "agN" = ( /obj/structure/table/glass, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/item/storage/medkit/regular, /obj/item/storage/medkit/regular{ pixel_x = 4; @@ -2020,39 +2123,30 @@ /turf/open/floor/iron/white, /area/station/security/brig) "agO" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, /turf/open/floor/iron, /area/station/security/brig) "agP" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /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/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/security/brig) "agQ" = ( /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/warden) "agS" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, +/turf/open/floor/iron/dark/small, /area/station/security/warden) "agT" = ( /obj/machinery/door/poddoor/preopen{ @@ -2067,14 +2161,16 @@ /area/station/engineering/main) "agU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/warden) "agV" = ( /obj/structure/cable, /obj/machinery/holopad/secure, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/warden) "agW" = ( /obj/effect/spawner/structure/window/reinforced, @@ -2083,34 +2179,47 @@ "agX" = ( /obj/structure/table, /obj/machinery/recharger, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, /area/station/security/warden) "agY" = ( -/obj/structure/table, /obj/item/storage/fancy/donut_box, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/turf/open/floor/iron, +/obj/structure/table/reinforced, +/turf/open/floor/iron/small, /area/station/security/office) "ahb" = ( /obj/effect/landmark/start/security_officer, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/red/end{ + dir = 8 + }, +/turf/open/floor/iron/checker, /area/station/security/office) "ahc" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/effect/turf_decal/siding/dark{ + dir = 7 + }, /turf/open/floor/iron/dark, /area/station/security/office) "ahd" = ( -/obj/structure/table, /obj/item/book/manual/wiki/security_space_law, /obj/item/book/manual/wiki/security_space_law, /obj/item/storage/box/deputy, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/end, +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "ahe" = ( @@ -2118,6 +2227,10 @@ dir = 4 }, /obj/effect/mapping_helpers/mail_sorting/security/hos_office, +/obj/effect/turf_decal/siding/dark{ + dir = 7 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "ahf" = ( @@ -2127,11 +2240,7 @@ /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/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "ahg" = ( /obj/structure/disposalpipe/segment{ @@ -2141,18 +2250,24 @@ /obj/structure/chair{ dir = 8 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "ahh" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/table, /obj/item/paper_bin/carbon, /obj/item/pen/fountain, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/end, +/obj/effect/turf_decal/siding/dark{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "ahi" = ( @@ -2162,13 +2277,12 @@ /obj/effect/turf_decal/loading_area{ dir = 8 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/mail_sorting/security/general, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/security/office) "ahj" = ( /obj/machinery/door/window/right/directional/east{ @@ -2206,13 +2320,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/iv_drip, /obj/item/reagent_containers/blood, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /turf/open/floor/iron/white, /area/station/security/brig) "ahn" = ( @@ -2225,32 +2332,31 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/mechbay) "ahp" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/mechbay) "ahq" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/mechbay) "ahr" = ( -/obj/structure/closet{ - name = "Evidence Closet" - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - 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/turf_decal/trimline/red/filled/corner{ + dir = 1 }, /turf/open/floor/iron, /area/station/security/brig) @@ -2260,20 +2366,14 @@ }, /obj/structure/table/glass, /obj/machinery/computer/records/medical/laptop, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /turf/open/floor/iron/white, /area/station/security/brig) "aht" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/machinery/door/airlock/public/glass{ + name = "Chapel" }, -/turf/open/floor/iron/white, -/area/station/security/brig) +/turf/open/floor/iron/dark/herringbone, +/area/station/service/chapel) "ahu" = ( /obj/item/storage/box/bodybags, /obj/structure/extinguisher_cabinet/directional/west, @@ -2284,26 +2384,21 @@ /obj/item/reagent_containers/cup/bottle/epinephrine, /obj/machinery/light/directional/west, /obj/structure/table/glass, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /turf/open/floor/iron/white, /area/station/security/brig) "ahv" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark, /area/station/security/warden) "ahw" = ( -/obj/effect/turf_decal/siding/brown, /obj/machinery/computer/shuttle/mining, -/obj/effect/turf_decal/trimline/brown/filled, /obj/effect/turf_decal/bot_red, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/brown/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/cargo/miningdock) "ahx" = ( /obj/machinery/door/poddoor/preopen{ @@ -2318,21 +2413,18 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/warden) "ahA" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ +/obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "ahB" = ( /obj/structure/sign/warning/secure_area, @@ -2343,10 +2435,6 @@ dir = 4; name = "Brig Infirmary" }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /turf/open/floor/iron/white, /area/station/security/brig) "ahE" = ( @@ -2355,7 +2443,8 @@ }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/security/armory, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/red/full, +/turf/open/floor/iron/dark, /area/station/security/warden) "ahF" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -2378,14 +2467,11 @@ /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/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/small, /area/station/security/office) "ahJ" = ( /obj/effect/turf_decal/tile/yellow{ @@ -2407,43 +2493,34 @@ /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/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "ahM" = ( -/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/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/obj/structure/chair{ + dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/office) "ahN" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/small, /area/station/security/office) "ahP" = ( /turf/open/floor/iron/white, @@ -2451,7 +2528,11 @@ "ahQ" = ( /obj/structure/closet/secure_closet/warden, /obj/structure/cable, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, /area/station/security/warden) "ahR" = ( /obj/structure/chair/office, @@ -2461,31 +2542,31 @@ name = "Prison Wing Lockdown"; pixel_x = -27; pixel_y = 8; - req_access_txt = "2" + req_access = list("security") }, /obj/machinery/button/door{ id = "Secure Gate"; name = "Cell Shutters"; pixel_x = -27; - pixel_y = -2 + pixel_y = -2; + req_access = list("security") }, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/dark/small, /area/station/security/warden) "ahS" = ( /obj/structure/table, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/dark/small, /area/station/security/warden) "ahU" = ( /obj/structure/closet{ name = "Evidence Closet" }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /turf/open/floor/iron, /area/station/security/brig) "ahV" = ( @@ -2506,13 +2587,25 @@ /obj/machinery/computer/crew{ dir = 8 }, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/siding/dark{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/small, /area/station/security/warden) "ahZ" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "aia" = ( @@ -2520,6 +2613,13 @@ dir = 1; pixel_y = -27 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "aib" = ( @@ -2539,36 +2639,39 @@ /turf/open/floor/plating, /area/station/maintenance/fore) "aid" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/effect/turf_decal/siding/red/end, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/closet/secure_closet/security/sec{ + anchored = 1 }, -/turf/open/floor/iron/white, -/area/station/security/brig) +/turf/open/floor/iron/checker, +/area/station/security/lockers) "aie" = ( /obj/structure/table, /obj/item/folder/red, /obj/item/pen, /obj/item/hand_labeler, /obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/dark, /area/station/security/warden) "aih" = ( -/obj/structure/closet{ - name = "Evidence Closet" - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/bot, +/obj/structure/cable, +/obj/effect/turf_decal/siding/red/end{ + dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/closet/secure_closet/security/sec{ + anchored = 1 }, -/turf/open/floor/iron, -/area/station/security/brig) +/turf/open/floor/iron/checker, +/area/station/security/lockers) "aii" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2584,42 +2687,61 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/warden) "aik" = ( /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/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/arrows, /turf/open/floor/iron/dark, /area/station/security/office) "ail" = ( /obj/machinery/mech_bay_recharge_port{ dir = 1 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/security/mechbay) "aim" = ( /obj/machinery/light_switch{ pixel_y = -23 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "ain" = ( -/obj/effect/turf_decal/tile/red{ +/obj/structure/chair/pew/right{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/security/brig) +/turf/open/floor/iron/dark, +/area/station/service/chapel) "aio" = ( -/obj/structure/table, -/obj/item/stack/sheet/rglass{ - amount = 50 +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 }, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) +/turf/open/floor/stone, +/area/station/command/heads_quarters/hos) "aip" = ( /obj/machinery/light/directional/south, /obj/machinery/modular_computer/preset/cargochat/security{ @@ -2627,6 +2749,12 @@ }, /obj/effect/turf_decal/box, /obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/security/office) "aiq" = ( @@ -2637,16 +2765,31 @@ dir = 1 }, /obj/effect/turf_decal/bot/left, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "air" = ( /obj/machinery/computer/records/security, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/detectives_office) "ais" = ( /obj/structure/filingcabinet, /obj/structure/extinguisher_cabinet/directional/south, /obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "ait" = ( @@ -2657,6 +2800,12 @@ dir = 1 }, /obj/effect/turf_decal/bot/left, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/security/office) "aiu" = ( @@ -2665,6 +2814,13 @@ }, /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 = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "aiv" = ( @@ -2682,10 +2838,6 @@ icon_state = "right"; name = "Brig Infirmary" }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /turf/open/floor/iron/white, /area/station/security/brig) "aix" = ( @@ -2695,22 +2847,28 @@ /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/dark{ + dir = 7 + }, +/obj/machinery/holopad/secure, /turf/open/floor/iron/dark, /area/station/security/office) "aiy" = ( -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "aiz" = ( /obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, /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/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "aiB" = ( @@ -2729,37 +2887,26 @@ dir = 8 }, /obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/security/mechbay) "aiF" = ( -/obj/structure/bed, /obj/item/clothing/suit/jacket/straight_jacket, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/structure/bed, /turf/open/floor/iron/white, /area/station/security/brig) "aiG" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/brig) "aiH" = ( -/obj/effect/turf_decal/tile/red{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/security/brig) "aiI" = ( @@ -2819,31 +2966,27 @@ /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/security/armory, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/trimline/red/filled, +/turf/open/floor/iron/dark, /area/station/security/warden) "aiO" = ( /obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/bed, /obj/item/clothing/suit/jacket/straight_jacket, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/structure/bed, /turf/open/floor/iron/white, /area/station/security/brig) "aiQ" = ( /obj/machinery/camera/directional/north{ c_tag = "Brig East" }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "aiS" = ( @@ -2871,20 +3014,20 @@ /turf/open/floor/iron, /area/station/security/courtroom) "aiZ" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, /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/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/security/brig) "ajc" = ( -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, /turf/open/floor/iron, /area/station/security/brig) @@ -2892,35 +3035,27 @@ /obj/structure/plaque/static_plaque/golden{ pixel_y = 32 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /turf/open/floor/iron, /area/station/security/brig) "aje" = ( /obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/tile/red{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/security/brig) "ajf" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - 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/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "ajh" = ( @@ -2995,7 +3130,7 @@ /turf/open/space/basic, /area/station/solars/starboard/aft) "ajp" = ( -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) "ajq" = ( /obj/structure/closet/secure_closet/engineering_personal, @@ -3008,11 +3143,17 @@ /area/station/engineering/main) "ajr" = ( /obj/machinery/computer/prisoner/gulag_teleporter_computer, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/processing) "ajs" = ( /obj/machinery/gulag_teleporter, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot/left, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/processing) "ajt" = ( /obj/structure/sign/warning/secure_area/directional/east, @@ -3021,36 +3162,35 @@ /obj/machinery/camera/directional/north{ c_tag = "Labor Shuttle Dock North" }, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot/right, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/processing) "aju" = ( /obj/machinery/computer/security/labor, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/processing) "ajv" = ( /obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/security/brig) "ajx" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - 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/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron, /area/station/security/brig) "ajy" = ( @@ -3062,15 +3202,12 @@ /obj/machinery/computer/security/telescreen/interrogation{ pixel_y = 30 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - 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/turf_decal/trimline/red/filled/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/security/brig) "ajB" = ( @@ -3084,7 +3221,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "ajE" = ( /obj/effect/turf_decal/tile/neutral{ @@ -3104,10 +3241,8 @@ name = "Cell 1"; pixel_y = -32 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "ajH" = ( @@ -3142,12 +3277,12 @@ /turf/open/floor/iron, /area/station/security/courtroom) "ajN" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, /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 = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "ajO" = ( @@ -3229,13 +3364,12 @@ /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) "ajW" = ( -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance"; - req_access_txt = "10; 13" - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) "ajY" = ( @@ -3255,31 +3389,39 @@ /obj/structure/chair{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/small, /area/station/security/processing) "akb" = ( /obj/machinery/light/directional/west, /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/caution, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/dark, /area/station/security/processing) "akc" = ( /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, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "ake" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /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/line{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron, /area/station/security/brig) "akf" = ( @@ -3291,13 +3433,13 @@ /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/security/brig, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/security/brig) "akg" = ( /obj/machinery/camera/directional/south{ c_tag = "Brig West" }, -/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron, /area/station/security/brig) "aki" = ( @@ -3318,14 +3460,18 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "akk" = ( -/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron, /area/station/security/brig) "akm" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/siding/red{ + dir = 10 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/herringbone, /area/station/security/brig) "akn" = ( /obj/structure/table/wood, @@ -3342,17 +3488,14 @@ name = "Cell 2"; pixel_y = -32 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "akp" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "akq" = ( @@ -3364,41 +3507,28 @@ name = "Cell 3"; pixel_y = -32 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron, /area/station/security/brig) "akr" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "aks" = ( -/obj/effect/turf_decal/tile/red{ +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/security/brig) "akt" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/security/brig) "aku" = ( @@ -3415,6 +3545,10 @@ id = "cell4"; pixel_x = 24 }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "aky" = ( @@ -3432,7 +3566,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "akA" = ( /obj/structure/chair{ @@ -3490,17 +3624,23 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/security/processing) "akI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "akJ" = ( /obj/machinery/light_switch/directional/east, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, /area/station/security/processing) "akL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3519,7 +3659,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/iron, +/obj/effect/turf_decal/trimline/red/filled/end, +/turf/open/floor/iron/dark, /area/station/security/brig) "akP" = ( /obj/structure/lattice, @@ -3529,13 +3670,13 @@ /turf/open/space, /area/space/nearstation) "akQ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, /turf/open/floor/plating, /area/station/engineering/supermatter) "akR" = ( @@ -3543,14 +3684,11 @@ id = "Cell 2"; name = "Cell 2" }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - 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/iron, +/obj/effect/turf_decal/trimline/red/filled/end, +/turf/open/floor/iron/dark, /area/station/security/brig) "akS" = ( /obj/effect/spawner/random/food_or_drink/donkpockets{ @@ -3567,14 +3705,11 @@ id = "Cell 3"; name = "Cell 3" }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - 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/iron, +/obj/effect/turf_decal/trimline/red/filled/end, +/turf/open/floor/iron/dark, /area/station/security/brig) "akU" = ( /obj/machinery/door/airlock/security/glass{ @@ -3584,46 +3719,32 @@ /turf/open/floor/iron/dark, /area/station/security/brig) "akW" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/security/glass{ id_tag = "innerbrig"; name = "Brig" }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, /turf/open/floor/iron, /area/station/security/brig) "akX" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/security/glass{ id_tag = "innerbrig"; name = "Brig" }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, /turf/open/floor/iron, /area/station/security/brig) "akY" = ( -/obj/structure/table, -/obj/item/circuitboard/machine/chem_dispenser/drinks, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/turf/closed/wall/r_wall, +/area/station/command/heads_quarters/rd) "akZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -3636,11 +3757,22 @@ /turf/open/floor/iron, /area/station/engineering/storage) "ala" = ( -/obj/machinery/door/window/right/directional/east{ - name = "Bar Access" +/obj/structure/bed/double{ + dir = 4 }, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/obj/item/toy/plush/lizard_plushie{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/toy/plush/moth{ + pixel_x = -7; + pixel_y = -2 + }, +/obj/effect/spawner/random/bedsheet/any/double{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/security/prison) "alb" = ( /obj/structure/chair{ dir = 4; @@ -3685,9 +3817,14 @@ /turf/open/floor/iron, /area/station/security/courtroom) "alg" = ( -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/obj/effect/turf_decal/siding/brown/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/brown/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "alh" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -3695,7 +3832,7 @@ /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/machinery/door/airlock/external{ - name = "External Access" + name = "Solar Maintenance" }, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) @@ -3737,21 +3874,20 @@ /turf/open/floor/plating, /area/station/security/processing) "alq" = ( -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/security/processing) "alr" = ( /obj/machinery/airalarm/directional/east, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/small, /area/station/security/processing) "als" = ( -/obj/structure/mineral_door/wood{ - name = "Maintenance Bar" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/entertainment/arcade, +/turf/open/floor/iron, +/area/station/security/prison) "alt" = ( /obj/structure/cable, /obj/effect/landmark/event_spawn, @@ -3772,42 +3908,38 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "alv" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "alw" = ( /obj/machinery/light/small/directional/east, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "alx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "aly" = ( -/obj/item/radio/intercom{ - desc = "Talk through this. It looks like it has been modified to not broadcast."; - name = "Prison Intercom (General)"; - pixel_x = -25; - pixel_y = -2; - prison_radio = 1 - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "alz" = ( /obj/machinery/button/door{ id = "briggate"; name = "Desk Shutters"; pixel_x = -26; - pixel_y = 6 + pixel_y = 6; + req_access = list("security") }, /obj/machinery/button/flasher{ id = "brigentry"; @@ -3882,9 +4014,24 @@ /turf/open/floor/iron, /area/station/security/courtroom) "alK" = ( -/obj/machinery/vending/boozeomat/all_access, -/turf/closed/wall, -/area/station/maintenance/port/aft) +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/folder/yellow{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/pen/red{ + pixel_x = 0; + pixel_y = 0 + }, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/qm) "alM" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, @@ -3922,13 +4069,8 @@ /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) "alT" = ( -/obj/structure/rack, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/turf/closed/wall, +/area/station/cargo/drone_bay) "alU" = ( /turf/closed/wall, /area/station/maintenance/port/fore) @@ -3959,7 +4101,8 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/dark, /area/station/security/processing) "amc" = ( /obj/machinery/computer/shuttle/labor{ @@ -3968,22 +4111,25 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/turf/open/floor/iron/dark/small, /area/station/security/processing) "ame" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/security/processing) "amf" = ( /obj/structure/bed, /obj/item/bedsheet, -/obj/machinery/flasher{ - id = "Cell 1"; - pixel_x = -28 - }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, +/obj/machinery/flasher/directional/west{ + id = "Cell 2"; + pixel_y = -22 + }, +/turf/open/floor/iron/small, /area/station/security/brig) "amg" = ( /obj/structure/closet/secure_closet/brig{ @@ -3991,43 +4137,36 @@ name = "Cell 1 Locker" }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, +/obj/structure/cable, +/turf/open/floor/iron/small, /area/station/security/brig) "amh" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/flasher{ - id = "Cell 2"; - pixel_x = -28 +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/station/security/brig) +/area/station/hallway/primary/starboard) "ami" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 2"; name = "Cell 2 Locker" }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, +/obj/structure/cable, +/turf/open/floor/iron/small, /area/station/security/brig) "amj" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/flasher{ - id = "Cell 3"; - pixel_x = -28 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/security/brig) +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/broken_flooring/side/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "amk" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 3"; name = "Cell 3 Locker" }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "aml" = ( /obj/machinery/light/small/directional/west, @@ -4038,7 +4177,7 @@ normaldoorcontrol = 1; pixel_x = -26; pixel_y = -5; - req_access_txt = "63" + req_access = list("security") }, /obj/machinery/button/door{ desc = "A remote control switch for the medbay foyer."; @@ -4047,7 +4186,7 @@ normaldoorcontrol = 1; pixel_x = -26; pixel_y = 5; - req_access_txt = "63" + req_access = list("security") }, /turf/open/floor/iron/dark, /area/station/security/brig) @@ -4076,14 +4215,8 @@ id = "brigentry"; pixel_x = 28 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/brig) "amp" = ( @@ -4102,7 +4235,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "amr" = ( /obj/effect/spawner/structure/window/reinforced, @@ -4110,20 +4243,19 @@ /area/station/security/courtroom) "amt" = ( /obj/machinery/door/airlock/public/glass{ - name = "Courtroom"; - req_access_txt = "42" + name = "Courtroom" }, /obj/effect/mapping_helpers/airlock/access/all/security/court, /turf/open/floor/iron/dark, /area/station/security/courtroom) "amv" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) "amw" = ( @@ -4135,6 +4267,9 @@ dir = 1 }, /obj/effect/mapping_helpers/burnt_floor, +/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, /area/station/maintenance/starboard/fore) "amy" = ( @@ -4188,18 +4323,21 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "amI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 +/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/plating, -/area/station/maintenance/port/aft) +/obj/machinery/door/window, +/turf/open/floor/wood, +/area/station/service/theater) "amJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/turf/closed/wall, -/area/station/maintenance/port/aft) +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) "amK" = ( /obj/structure/sign/warning/docking, /turf/closed/wall/r_wall, @@ -4211,7 +4349,8 @@ /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "amN" = ( /obj/structure/table, @@ -4231,21 +4370,29 @@ pixel_x = -3; pixel_y = -2 }, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, /area/station/security/warden) "amO" = ( -/obj/structure/musician/piano{ - icon_state = "piano" - }, /obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/wood, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/two, +/turf/open/floor/plating, /area/station/maintenance/port/aft) "amP" = ( -/obj/structure/chair/wood{ - dir = 8 +/obj/item/cultivator, +/obj/item/crowbar, +/obj/item/plant_analyzer, +/obj/item/reagent_containers/cup/watering_can, +/obj/structure/table/glass, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 }, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "amQ" = ( /obj/machinery/door/poddoor/preopen{ id = "Secure Gate"; @@ -4256,21 +4403,17 @@ /turf/open/floor/plating, /area/station/security/brig) "amR" = ( -/obj/structure/light_construct, /obj/structure/sign/poster/contraband/random/directional/south, /obj/effect/mapping_helpers/broken_floor, /obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/wood, +/turf/open/floor/plating, /area/station/maintenance/port/aft) "amS" = ( -/obj/item/stack/cable_coil{ - amount = 7; - pixel_x = -3; - pixel_y = 3 +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 }, -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "amT" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -4308,53 +4451,37 @@ /area/station/security/brig) "amW" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, /obj/machinery/door/airlock/security/glass{ id_tag = "outerbrig"; name = "Brig" }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, /turf/open/floor/iron, /area/station/security/brig) "amX" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, /obj/machinery/door/airlock/security/glass{ id_tag = "outerbrig"; name = "Brig" }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/structure/cable, /obj/effect/landmark/navigate_destination, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, /turf/open/floor/iron, /area/station/security/brig) "amY" = ( /obj/structure/chair{ dir = 1 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) "and" = ( /obj/machinery/light/small/directional/east, @@ -4386,7 +4513,9 @@ pixel_y = -32 }, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, +/obj/effect/spawner/random/maintenance/two, +/obj/structure/rack, +/turf/open/floor/plating, /area/station/maintenance/port/aft) "ank" = ( /obj/machinery/door/airlock/maintenance, @@ -4419,10 +4548,10 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "anq" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/turf/open/floor/wood, +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, /area/station/maintenance/port/aft) "anr" = ( /obj/structure/disposalpipe/segment{ @@ -4435,15 +4564,11 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "ans" = ( -/obj/effect/turf_decal/tile/red{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "ant" = ( /obj/machinery/gulag_item_reclaimer{ @@ -4452,7 +4577,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "anu" = ( /obj/machinery/button/door{ @@ -4463,25 +4591,17 @@ pixel_x = 26; pixel_y = -6 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "anv" = ( -/obj/effect/turf_decal/tile/red{ +/obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "anw" = ( /obj/effect/turf_decal/tile/red{ @@ -4514,9 +4634,11 @@ /turf/open/floor/iron, /area/station/hallway/primary/fore) "anB" = ( -/obj/item/chair/wood, /obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/wood, +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, /area/station/maintenance/port/aft) "anC" = ( /obj/effect/spawner/structure/window, @@ -4557,11 +4679,9 @@ /area/station/maintenance/port/fore) "anM" = ( /obj/item/radio/intercom/directional/north, -/obj/structure/closet/crate/hydroponics, -/obj/item/reagent_containers/cup/watering_can, -/obj/item/wirecutters, -/obj/item/wrench, -/obj/item/shovel/spade, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/vending/wardrobe/hydro_wardrobe, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "anN" = ( @@ -4613,6 +4733,13 @@ /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/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/corner, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) "anU" = ( @@ -4628,15 +4755,23 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/security/courtroom) "anW" = ( /obj/machinery/camera/directional/north{ c_tag = "Hydroponics Storage" }, /obj/machinery/light/small/directional/north, -/obj/structure/table, /obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/closet/crate/hydroponics, +/obj/item/shovel/spade, +/obj/item/reagent_containers/cup/watering_can, +/obj/item/wrench, +/obj/item/wirecutters, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "anX" = ( @@ -4646,13 +4781,13 @@ }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/security/courtroom) "anY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) "anZ" = ( /obj/structure/disposalpipe/segment{ @@ -4662,15 +4797,15 @@ /turf/open/floor/plating, /area/station/maintenance/fore) "aoa" = ( -/obj/machinery/door/airlock/maintenance, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/fore) +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 5 + }, +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/herringbone, +/area/station/hallway/primary/central) "aob" = ( /obj/machinery/light_switch/directional/west, -/obj/item/radio/intercom{ - pixel_y = 25 - }, /obj/structure/aquarium/lawyer, /turf/open/floor/wood, /area/station/service/lawoffice) @@ -4729,51 +4864,38 @@ /turf/open/floor/plating, /area/station/security/processing) "aor" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "aos" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "aot" = ( /obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/structure/cable, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "aou" = ( /obj/machinery/camera/directional/south{ c_tag = "Labor Shuttle Dock South" }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "aov" = ( /obj/effect/turf_decal/tile/red{ @@ -4803,6 +4925,12 @@ /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/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) "aoz" = ( @@ -4841,7 +4969,7 @@ pixel_x = -3; pixel_y = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/security/courtroom) "aoI" = ( /obj/structure/disposalpipe/segment{ @@ -4967,6 +5095,9 @@ /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/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/port/central) "apj" = ( @@ -4974,22 +5105,34 @@ /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, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/fore) "apk" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/red{ +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/stripes/red/line{ dir = 1 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/small, /area/station/hallway/primary/fore) "apm" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/small, /area/station/hallway/primary/fore) "app" = ( /obj/structure/lattice, @@ -4997,12 +5140,29 @@ /turf/open/space/basic, /area/space/nearstation) "apr" = ( -/obj/effect/spawner/random/maintenance, -/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, -/area/station/maintenance/port/aft) +/obj/item/clipboard, +/obj/item/computer_disk/quartermaster, +/obj/item/computer_disk/quartermaster, +/obj/item/computer_disk/quartermaster, +/obj/item/coin/silver, +/obj/item/paper_bin/carbon{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/stamp/head/qm, +/obj/machinery/requests_console/directional/south{ + name = "Quartermaster's Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/qm) "aps" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/box, @@ -5020,6 +5180,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/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/fore) "apu" = ( @@ -5045,8 +5208,7 @@ /area/station/maintenance/fore) "apx" = ( /obj/machinery/door/airlock/atmos{ - name = "Atmospherics Maintenance"; - req_access_txt = "12;24" + name = "Atmospherics Maintenance" }, /obj/effect/mapping_helpers/airlock/abandoned, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, @@ -5143,7 +5305,11 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/iron/stairs{ + dir = 4 + }, /area/station/commons/fitness) "apU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5222,7 +5388,10 @@ /obj/structure/chair/stool{ pixel_y = 8 }, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "aqp" = ( /obj/structure/rack, @@ -5354,15 +5523,15 @@ /turf/open/floor/plating, /area/station/maintenance/fore) "aqR" = ( -/turf/open/floor/plating, -/area/station/maintenance/fore) +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) "aqS" = ( /obj/machinery/light/small/directional/east, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/potato{ - name = "\improper Beepsky's emergency battery" - }, /turf/open/floor/plating, /area/station/security/processing) "aqW" = ( @@ -5378,10 +5547,11 @@ "aqY" = ( /obj/machinery/light/small/directional/west, /obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/siding/dark{ dir = 1 }, -/obj/machinery/firealarm/directional/west, +/obj/structure/cable, /turf/open/floor/iron/grimy, /area/station/security/detectives_office) "ara" = ( @@ -5402,13 +5572,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/item/book/manual/wiki/security_space_law, /obj/item/pen/red, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, /turf/open/floor/carpet/blue, /area/station/service/lawoffice) "arc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "ard" = ( /obj/structure/cable, @@ -5423,6 +5596,13 @@ pixel_x = 1; pixel_y = 5 }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/clothing/glasses/sunglasses{ + pixel_x = -3; + pixel_y = 4 + }, /turf/open/floor/carpet/blue, /area/station/service/lawoffice) "arh" = ( @@ -5430,6 +5610,9 @@ name = "Dormitories Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/fore) "ari" = ( @@ -5481,6 +5664,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/commons/fitness) "aro" = ( @@ -5626,6 +5810,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron/grimy, /area/station/security/detectives_office) "arX" = ( @@ -5639,6 +5824,9 @@ name = "Detective Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, /turf/open/floor/plating, /area/station/maintenance/port) "arZ" = ( @@ -5673,30 +5861,20 @@ dir = 4 }, /obj/machinery/light/directional/north, +/obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/commons/fitness) "asf" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, /obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/commons/dorms) "asg" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/dark/corner{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "ash" = ( /obj/machinery/door/airlock/maintenance, @@ -5706,7 +5884,10 @@ /area/station/maintenance/port/fore) "ask" = ( /obj/structure/dresser, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "asl" = ( /obj/structure/table/wood, @@ -5716,9 +5897,17 @@ /turf/open/floor/carpet, /area/station/security/detectives_office) "asm" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, /area/station/commons/dorms) "asn" = ( /obj/structure/chair/comfy/brown{ @@ -5742,6 +5931,8 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/commons/fitness) "asr" = ( @@ -5752,10 +5943,11 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/commons/fitness) "ass" = ( -/obj/structure/closet/lasertag/red, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -5763,8 +5955,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, +/turf/closed/wall, /area/station/commons/fitness) "ast" = ( /obj/structure/closet/lasertag/blue, @@ -5774,6 +5965,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/commons/fitness) "asu" = ( @@ -5785,7 +5979,12 @@ pixel_y = -25; specialfunctions = 4 }, -/turf/open/floor/wood, +/obj/effect/spawner/random/bedsheet, +/obj/item/pillow/random, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "asv" = ( /obj/structure/table, @@ -5871,6 +6070,7 @@ /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/iron, /area/station/commons/fitness) "asN" = ( @@ -5911,6 +6111,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness) "ata" = ( @@ -5923,6 +6124,9 @@ /obj/effect/turf_decal/siding/thinplating_new{ dir = 4 }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) "atb" = ( @@ -5940,6 +6144,9 @@ "atc" = ( /obj/structure/chair/office, /obj/effect/landmark/start/lawyer, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /turf/open/floor/carpet/blue, /area/station/service/lawoffice) "atd" = ( @@ -5964,12 +6171,12 @@ /turf/open/floor/carpet, /area/station/commons/dorms) "atg" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm4"; - name = "Dorm 4" - }, /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 = "Cabin_4"; + name = "Cabin 4" + }, /turf/open/floor/wood, /area/station/commons/dorms) "ath" = ( @@ -5987,6 +6194,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/iron, /area/station/commons/dorms) "atj" = ( @@ -6001,12 +6209,9 @@ /turf/open/floor/iron, /area/station/commons/dorms) "ato" = ( -/obj/machinery/light_switch{ - pixel_y = -23 - }, /obj/effect/landmark/event_spawn, -/obj/structure/cable, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "atp" = ( /obj/machinery/door/airlock/external{ @@ -6127,12 +6332,13 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "atQ" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm5"; - name = "Cabin 1" - }, /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 = "Cabin_1"; + name = "Cabin 1" + }, +/obj/effect/turf_decal/siding/wood/end, /turf/open/floor/wood, /area/station/commons/dorms) "atR" = ( @@ -6232,6 +6438,9 @@ pixel_x = 11; pixel_y = 5 }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /turf/open/floor/carpet/blue, /area/station/service/lawoffice) "auh" = ( @@ -6254,15 +6463,13 @@ /area/station/maintenance/starboard/fore) "auj" = ( /obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - 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/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, /turf/open/floor/iron, /area/station/security/brig) "aul" = ( @@ -6272,18 +6479,29 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/camera/directional/west{ + c_tag = "Dormitory South" + }, /turf/open/floor/iron, /area/station/commons/dorms) "aum" = ( /turf/closed/wall, /area/station/service/kitchen) -"aup" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm6"; - name = "Cabin 2" +"aun" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"aup" = ( /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 = "Cabin_2"; + name = "Cabin 2" + }, +/obj/effect/turf_decal/siding/wood/end, /turf/open/floor/wood, /area/station/commons/dorms) "aur" = ( @@ -6298,6 +6516,7 @@ /area/station/commons/fitness) "aus" = ( /obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness) "aut" = ( @@ -6323,15 +6542,13 @@ /obj/effect/landmark/start/hangover, /obj/effect/spawner/random/bedsheet, /obj/item/pillow/random, -/turf/open/floor/wood, +/turf/open/floor/carpet, /area/station/commons/dorms) "aux" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "auz" = ( /obj/structure/lattice/catwalk, @@ -6405,6 +6622,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/dorms) "auS" = ( @@ -6415,27 +6633,20 @@ /obj/machinery/camera/directional/north{ c_tag = "Dormitory North" }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "auU" = ( /obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/commons/dorms) "auW" = ( /obj/machinery/airalarm/directional/west, @@ -6448,6 +6659,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/iron, /area/station/commons/fitness) "auX" = ( @@ -6564,7 +6776,7 @@ /area/station/security/detectives_office) "avw" = ( /obj/structure/chair/sofa/bench/solo, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/vacant_room/commissary) "avx" = ( /obj/effect/spawner/structure/window, @@ -6658,7 +6870,7 @@ "avR" = ( /obj/structure/table/wood, /obj/item/storage/medkit/regular, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/commons/dorms) "avS" = ( /obj/item/circuitboard/machine/stasis, @@ -6747,6 +6959,9 @@ /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/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, /turf/open/floor/plating, /area/station/maintenance/port/central) "awl" = ( @@ -6765,32 +6980,36 @@ }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, /turf/open/floor/plating, /area/station/maintenance/fore) "awo" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm3"; - name = "Dorm 3" - }, /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 = "Cabin_3"; + name = "Cabin 3" + }, /turf/open/floor/wood, /area/station/commons/dorms) "awp" = ( /obj/structure/table/wood, /obj/item/storage/dice, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "aws" = ( /obj/structure/table/wood, /obj/item/coin/silver, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "awu" = ( /obj/structure/chair/stool{ pixel_y = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "aww" = ( /obj/effect/landmark/event_spawn, @@ -6798,13 +7017,15 @@ /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, +/turf/open/floor/iron/small, /area/station/security/brig) "awy" = ( /obj/structure/disposalpipe/segment, /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/stairs{ + dir = 4 + }, /area/station/commons/fitness) "awz" = ( /obj/machinery/door/firedoor, @@ -6831,7 +7052,10 @@ /turf/open/floor/iron, /area/station/commons/fitness) "awC" = ( -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "awD" = ( /obj/effect/spawner/random/maintenance, @@ -7018,14 +7242,21 @@ /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/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, /turf/open/floor/plating, /area/station/maintenance/port/fore) "axu" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 9 +/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/corner, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 }, /turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) +/area/station/security/brig) "axx" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -7068,17 +7299,21 @@ /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/dorms) "axM" = ( /obj/structure/table/wood, /obj/item/pai_card, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "axN" = ( /obj/structure/table/wood, /obj/item/storage/crayons, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/commons/dorms) "axO" = ( /obj/structure/chair/stool{ @@ -7086,7 +7321,8 @@ }, /obj/effect/landmark/start/assistant, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "axP" = ( /obj/structure/table/wood, @@ -7097,12 +7333,14 @@ pixel_x = -8; pixel_y = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/commons/dorms) "axQ" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/stairs{ + dir = 4 + }, /area/station/commons/fitness) "axR" = ( /obj/machinery/door/firedoor, @@ -7110,6 +7348,7 @@ name = "Fitness" }, /obj/structure/cable, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness) "axS" = ( @@ -7124,11 +7363,13 @@ /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/iron, /area/station/commons/fitness) "axU" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/commons/fitness) "axW" = ( @@ -7140,6 +7381,7 @@ /obj/structure/window/reinforced/spawner/directional/south, /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/commons/fitness) "axY" = ( @@ -7239,8 +7481,20 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "ayv" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner, +/obj/machinery/space_heater, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 4 + }, /area/station/ai_monitored/command/storage/eva) "ayx" = ( /obj/structure/closet/firecloset, @@ -7271,100 +7525,137 @@ /turf/open/floor/plating, /area/station/maintenance/port/central) "ayK" = ( -/obj/machinery/camera/directional/north{ - c_tag = "EVA Motion Sensor" - }, -/obj/structure/rack, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 4; - pixel_y = 2 +/obj/structure/table, +/obj/item/crowbar, +/obj/item/wrench, +/obj/item/assembly/infra{ + pixel_x = 3 }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 8 +/obj/item/assembly/igniter{ + pixel_y = -2 }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_y = 4 +/obj/effect/turf_decal/trimline/neutral/warning, +/obj/effect/turf_decal/trimline/neutral/mid_joiner, +/obj/item/assembly/signaler, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/turf/open/floor/iron/dark, +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/iron/dark/smooth_edge, /area/station/ai_monitored/command/storage/eva) "ayL" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/command/storage/eva) "ayM" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 4 + }, /area/station/ai_monitored/command/storage/eva) "ayN" = ( -/obj/structure/rack, -/obj/machinery/light/directional/north, -/obj/item/hand_labeler, -/obj/item/flashlight, -/obj/item/flashlight, -/obj/item/flashlight, -/obj/item/flashlight, -/obj/item/clothing/head/utility/welding, -/turf/open/floor/iron/dark, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/structure/table, +/obj/effect/turf_decal/trimline/neutral/warning, +/obj/effect/turf_decal/trimline/neutral/mid_joiner, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/storage/box/smart_metal_foam, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_edge, /area/station/ai_monitored/command/storage/eva) "ayO" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = -1 +/obj/effect/turf_decal/trimline/neutral/warning, +/obj/effect/turf_decal/trimline/neutral/mid_joiner, +/obj/item/flashlight{ + pixel_y = 9 }, -/obj/item/screwdriver{ - pixel_x = 2; - pixel_y = 11 +/obj/item/flashlight{ + pixel_y = 9 }, -/turf/open/floor/iron/dark, +/obj/item/flashlight{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/structure/rack, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_edge, /area/station/ai_monitored/command/storage/eva) "ayP" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron, +/obj/machinery/camera/motion/directional/north{ + c_tag = "EVA Storage North" + }, +/obj/structure/sign/warning/secure_area/directional/north, +/obj/structure/tank_dispenser/oxygen, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/ai_monitored/command/storage/eva) "ayQ" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/trimline/neutral/warning, +/obj/effect/turf_decal/trimline/neutral/mid_joiner, +/obj/machinery/space_heater, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/machinery/cell_charger, -/obj/item/radio/intercom/directional/north, -/obj/item/assembly/timer, -/obj/item/radio/off, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_edge, /area/station/ai_monitored/command/storage/eva) "ayR" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 +/obj/machinery/cell_charger, +/obj/item/radio/intercom/directional/north, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 }, -/obj/item/multitool, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "ayS" = ( -/obj/structure/sign/warning/secure_area/directional/north, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/ai_monitored/command/storage/eva) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "ayT" = ( +/obj/structure/railing/corner, +/obj/item/storage/belt/utility, +/obj/machinery/newscaster/directional/north, /obj/machinery/light/directional/north, -/obj/structure/table, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, -/turf/open/floor/iron, +/obj/item/clothing/glasses/welding, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "ayU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, +/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/smooth_half, /area/station/ai_monitored/command/storage/eva) "ayV" = ( /obj/structure/bed, @@ -7386,12 +7677,16 @@ /area/station/ai_monitored/command/storage/eva) "ayX" = ( /obj/structure/table, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/clothing/head/utility/welding, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) +/obj/item/exodrone, +/obj/item/exodrone{ + pixel_y = 10 + }, +/obj/item/exodrone{ + pixel_y = 8 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "ayY" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -7402,26 +7697,25 @@ /turf/open/floor/iron, /area/station/hallway/primary/fore) "ayZ" = ( -/obj/effect/turf_decal/tile/blue, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) "aza" = ( /obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/commons/dorms) "azb" = ( /obj/structure/chair/stool{ pixel_y = 8 }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "azd" = ( /obj/effect/turf_decal/tile/neutral, @@ -7432,16 +7726,16 @@ dir = 8 }, /obj/structure/cable, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, /turf/open/floor/iron, /area/station/commons/dorms) "aze" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "azf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7476,7 +7770,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/stairs{ + dir = 4 + }, /area/station/commons/fitness) "azk" = ( /obj/structure/disposalpipe/segment{ @@ -7485,6 +7782,7 @@ /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/iron, /area/station/commons/fitness) "azl" = ( @@ -7497,19 +7795,27 @@ /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/iron, /area/station/commons/fitness) "azm" = ( /obj/structure/chair/stool{ pixel_y = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness) "azn" = ( /obj/structure/table, /obj/item/storage/medkit/regular, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness) +"azq" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) "azr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -7525,13 +7831,16 @@ /turf/open/floor/plating, /area/station/maintenance/department/electrical) "azy" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Port Docking Bay 1"; - safety_mode = 1 +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/blue/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/treatment_center) "azz" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7565,10 +7874,20 @@ /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/entry) "azE" = ( -/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, +/obj/effect/spawner/random/engineering/tracking_beacon, +/obj/structure/cable, +/obj/effect/landmark/navigate_destination/eva, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/ai_monitored/command/storage/eva) "azF" = ( /turf/closed/wall, @@ -7624,36 +7943,45 @@ /turf/open/floor/iron/dark, /area/station/command/gateway) "azQ" = ( -/obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ name = "EVA 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/access/all/command/eva, -/turf/open/floor/iron, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, /area/station/maintenance/port/central) "azR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/storage/eva) "azS" = ( -/obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ - name = "EVA Storage" + name = "Secure EVA Storage" }, -/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/eva, -/turf/open/floor/iron, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/command/storage/eva) "azT" = ( /obj/effect/turf_decal/tile/neutral, /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, /area/station/commons/dorms) "azV" = ( @@ -7661,10 +7989,22 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/dorms) "azW" = ( -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/iron/textured, /area/station/ai_monitored/command/storage/eva) "azX" = ( /obj/machinery/door/airlock{ @@ -7674,13 +8014,15 @@ /turf/open/floor/iron/freezer, /area/station/commons/toilet) "azY" = ( -/obj/structure/table, -/obj/item/radio/off, -/obj/item/radio/off, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) +/obj/machinery/door/airlock/mining{ + name = "Drone Bay" + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "azZ" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -7689,6 +8031,7 @@ /area/station/hallway/primary/fore) "aAa" = ( /obj/effect/turf_decal/tile/blue, +/obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/fore) "aAb" = ( @@ -7708,6 +8051,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/dorms) "aAe" = ( @@ -7720,6 +8067,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/dorms) "aAg" = ( @@ -7730,6 +8081,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/dorms) "aAi" = ( @@ -7741,6 +8096,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/dorms) "aAk" = ( @@ -7868,11 +8227,10 @@ /turf/open/floor/iron, /area/station/maintenance/starboard/fore) "aAy" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, /obj/machinery/light/directional/north, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, /turf/open/floor/iron/dark, /area/station/security/brig) "aAz" = ( @@ -7932,15 +8290,20 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/secondary/entry) "aAJ" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, /obj/structure/cable, -/turf/open/floor/iron/white/corner, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/secondary/entry) "aAP" = ( /obj/machinery/hydroponics/soil, @@ -7949,15 +8312,27 @@ "aAS" = ( /obj/structure/extinguisher_cabinet/directional/north, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark_green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) "aAT" = ( /obj/machinery/seed_extractor, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark_green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) "aAU" = ( /obj/structure/sink/directional/south, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark_green{ + dir = 9 + }, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) "aAV" = ( /obj/effect/spawner/random/maintenance, @@ -7967,16 +8342,23 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "aAW" = ( -/obj/structure/rack, -/obj/item/tank/jetpack/carbondioxide, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/smooth_edge{ dir = 1 }, -/turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) "aAZ" = ( /obj/structure/cable, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) "aBe" = ( /turf/open/floor/iron/dark, @@ -7995,13 +8377,34 @@ /turf/open/floor/plating, /area/station/maintenance/port/central) "aBj" = ( -/obj/structure/rack, -/obj/machinery/light/directional/west, -/obj/item/tank/jetpack/carbondioxide, -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/structure/railing, +/obj/structure/table, +/obj/item/radio/off{ + pixel_x = 3; + pixel_y = 8 + }, +/obj/item/radio/off{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 1 + }, +/obj/item/radio/off{ + pixel_y = 5 + }, +/obj/item/radio/off{ + pixel_y = 5 + }, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 }, -/turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) "aBl" = ( /obj/machinery/door/airlock/maintenance{ @@ -8015,7 +8418,8 @@ /obj/effect/landmark/start/assistant, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) "aBn" = ( /obj/structure/disposalpipe/segment, @@ -8025,41 +8429,72 @@ /turf/open/floor/iron, /area/station/hallway/primary/aft) "aBo" = ( -/obj/machinery/holopad, -/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, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/ai_monitored/command/storage/eva) "aBp" = ( -/obj/structure/rack, -/obj/item/clothing/shoes/magboots, -/obj/effect/turf_decal/stripes/line{ - dir = 5 +/obj/structure/railing, +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 }, -/turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) "aBq" = ( -/obj/structure/rack, -/obj/item/clothing/shoes/magboots, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/railing/corner, +/obj/effect/turf_decal/trimline/neutral/warning{ dir = 1 }, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"aBr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 + }, +/area/station/ai_monitored/command/storage/eva) +"aBr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aBt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/cable, +/obj/item/assembly/timer{ + pixel_y = 3 + }, +/obj/item/assembly/voice{ + pixel_y = 6 + }, +/obj/item/assembly/signaler{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/assembly/flash, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aBu" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) "aBw" = ( @@ -8073,18 +8508,19 @@ /obj/item/seeds/watermelon, /obj/structure/table/glass, /obj/item/seeds/tower, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) "aBy" = ( -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aBz" = ( /obj/machinery/shower/directional/east, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) "aBA" = ( /obj/machinery/shower/directional/west, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) "aBC" = ( /obj/machinery/door/airlock/maintenance, @@ -8126,24 +8562,27 @@ /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/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/port/fore) "aBM" = ( /obj/effect/landmark/start/assistant, -/turf/open/floor/iron, +/turf/open/floor/iron/half, /area/station/service/hydroponics/garden) "aBO" = ( -/obj/machinery/requests_console{ - department = "EVA"; - pixel_x = -32 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, +/obj/effect/turf_decal/delivery/red, +/obj/machinery/light/directional/west, +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/iron/textured, /area/station/ai_monitored/command/storage/eva) "aBQ" = ( -/turf/closed/wall, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aBR" = ( /turf/closed/wall/r_wall, @@ -8209,24 +8648,31 @@ /turf/open/floor/iron/dark, /area/station/command/gateway) "aCa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "aCb" = ( -/obj/item/pen{ - desc = "Writes upside down!"; - name = "astronaut pen" +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/iron/textured, /area/station/ai_monitored/command/storage/eva) "aCc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, +/obj/effect/turf_decal/delivery/red, +/obj/machinery/status_display/ai/directional/east, +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/iron/textured, /area/station/ai_monitored/command/storage/eva) "aCd" = ( /obj/structure/bed, @@ -8241,6 +8687,9 @@ /obj/effect/landmark/start/hangover, /obj/effect/spawner/random/bedsheet, /obj/item/pillow/random, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, /turf/open/floor/wood, /area/station/commons/dorms) "aCe" = ( @@ -8250,7 +8699,7 @@ /obj/effect/spawner/random/trash/soap{ spawn_scatter_radius = 1 }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) "aCf" = ( /obj/machinery/camera/directional/north{ @@ -8275,10 +8724,25 @@ /turf/open/floor/plating, /area/station/ai_monitored/command/storage/eva) "aCj" = ( -/obj/machinery/camera/directional/south{ - c_tag = "EVA East" +/obj/structure/rack, +/obj/effect/turf_decal/delivery/red, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/item/clothing/shoes/magboots{ + pixel_x = -4; + pixel_y = 3 }, -/turf/open/floor/iron, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/shoes/magboots{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/machinery/door/window/left/directional/west{ + name = "Magboot Storage"; + pixel_x = -1; + req_access = list("eva") + }, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/command/storage/eva) "aCm" = ( /obj/structure/sink/directional/east, @@ -8286,13 +8750,14 @@ pixel_x = -28 }, /obj/machinery/light/directional/north, -/turf/open/floor/iron/freezer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aCn" = ( /obj/structure/urinal{ pixel_y = 32 }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aCp" = ( /obj/machinery/camera/directional/east{ @@ -8328,7 +8793,10 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/herringbone, /area/station/security/checkpoint/arrivals) "aCt" = ( /obj/structure/disposalpipe/segment, @@ -8400,7 +8868,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/security/checkpoint/arrivals) "aCS" = ( /obj/effect/spawner/structure/window/reinforced, @@ -8449,7 +8917,7 @@ dir = 4 }, /obj/structure/reagent_dispensers/wall/peppertank/directional/north, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "aCZ" = ( /obj/effect/turf_decal/tile/red{ @@ -8460,17 +8928,21 @@ dir = 4 }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "aDb" = ( -/obj/structure/table, /obj/item/wirecutters, /obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, /obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aDc" = ( /obj/machinery/modular_computer/preset/id, @@ -8484,14 +8956,21 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "aDd" = ( /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, +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/commons/storage/primary) +"aDe" = ( +/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/herringbone, +/area/station/hallway/primary/central) "aDf" = ( /obj/machinery/computer/records/security, /obj/machinery/requests_console{ @@ -8506,14 +8985,18 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "aDg" = ( /obj/machinery/biogenerator, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark_green, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) "aDh" = ( /obj/machinery/vending/assist, +/obj/effect/turf_decal/stripes/box, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/commons/storage/primary) "aDi" = ( @@ -8529,7 +9012,6 @@ /turf/open/floor/iron/dark, /area/station/command/gateway) "aDk" = ( -/obj/structure/table, /obj/item/assembly/igniter{ pixel_x = -8; pixel_y = -4 @@ -8545,42 +9027,68 @@ /obj/item/screwdriver{ pixel_y = 5 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aDl" = ( -/obj/structure/table, /obj/item/t_scanner, /obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aDm" = ( -/obj/structure/table, /obj/machinery/cell_charger, /obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aDn" = ( -/obj/structure/table, /obj/item/assembly/signaler, /obj/item/assembly/signaler, /obj/item/radio/intercom{ pixel_y = 20 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aDo" = ( -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow/end{ + dir = 1 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aDp" = ( -/obj/structure/table, /obj/item/storage/toolbox/mechanical{ pixel_x = -2; pixel_y = -1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aDq" = ( /obj/machinery/vending/tool, +/obj/effect/turf_decal/stripes/box, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/commons/storage/primary) "aDr" = ( @@ -8624,6 +9132,11 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/item/piggy_bank/vault{ + pixel_x = 0; + pixel_y = 5 + }, +/obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "aDw" = ( @@ -8654,36 +9167,42 @@ /turf/open/floor/plating, /area/station/maintenance/port/central) "aDB" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 4 + }, /area/station/ai_monitored/command/storage/eva) "aDC" = ( +/obj/effect/turf_decal/delivery/red, +/obj/item/radio/intercom/directional/west, /obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/iron, +/turf/open/floor/iron/textured, /area/station/ai_monitored/command/storage/eva) "aDD" = ( /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/station/maintenance/port/central) "aDE" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/machinery/light/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "EVA Storage" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron, +/obj/machinery/camera/directional/west{ + c_tag = "EVA Secure Storage" + }, +/turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/storage/eva) "aDF" = ( +/obj/effect/turf_decal/delivery/red, /obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/iron, +/turf/open/floor/iron/textured, /area/station/ai_monitored/command/storage/eva) "aDH" = ( /obj/machinery/door/firedoor/heavy, @@ -8696,8 +9215,11 @@ /turf/open/floor/iron/white, /area/station/science/ordnance) "aDI" = ( -/obj/structure/sign/warning/electric_shock, -/turf/closed/wall/r_wall, +/obj/structure/chair/sofa/bench{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aDK" = ( /obj/machinery/door/airlock{ @@ -8709,31 +9231,34 @@ /turf/open/floor/wood, /area/station/commons/dorms) "aDL" = ( -/obj/structure/sink/directional/east, -/obj/structure/sink/directional/east, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron/freezer, +/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/showroomfloor, /area/station/commons/toilet) "aDM" = ( /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/freezer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aDN" = ( /obj/machinery/light/small/directional/south, -/turf/open/floor/iron/freezer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aDO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aDP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) "aDQ" = ( /obj/effect/turf_decal/loading_area, @@ -8767,13 +9292,13 @@ /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/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) "aDT" = ( /obj/machinery/light/small/directional/south, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) "aDU" = ( /obj/structure/cable, @@ -8781,7 +9306,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) "aDX" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -8834,8 +9359,7 @@ "aEh" = ( /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/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/service/chapel) "aEi" = ( /obj/machinery/door/airlock/maintenance{ @@ -8844,6 +9368,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /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) "aEl" = ( @@ -8888,7 +9415,10 @@ /area/station/maintenance/disposal/incinerator) "aEE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/herringbone, /area/station/security/checkpoint/arrivals) "aEF" = ( /obj/structure/table/glass, @@ -8903,7 +9433,10 @@ /obj/item/food/grown/carrot, /obj/item/food/grown/cocoapod, /obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/end{ + dir = 8 + }, +/turf/open/floor/iron/large, /area/station/service/hydroponics/garden) "aEG" = ( /obj/effect/turf_decal/tile/red{ @@ -8913,7 +9446,7 @@ dir = 8 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/security/checkpoint/arrivals) "aEJ" = ( /obj/effect/turf_decal/tile/red, @@ -8921,7 +9454,7 @@ dir = 4 }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "aEL" = ( /obj/machinery/door/airlock{ @@ -9005,19 +9538,33 @@ /turf/open/floor/plating, /area/station/maintenance/port/central) "aEX" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "EVA Storage" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/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/eva, -/turf/open/floor/iron, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/ai_monitored/command/storage/eva) "aEZ" = ( -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 1 + }, /area/station/ai_monitored/command/storage/eva) "aFa" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -9026,44 +9573,64 @@ /turf/open/floor/iron/white, /area/station/medical/cryo) "aFb" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/door/poddoor/shutters/window{ + id = "eva_shutters"; + name = "EVA Shutters" + }, +/obj/effect/turf_decal/siding/dark_blue, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/turf/open/floor/iron/textured_half, /area/station/ai_monitored/command/storage/eva) "aFc" = ( -/obj/structure/sign/warning/secure_area, -/turf/closed/wall/r_wall, -/area/station/ai_monitored/command/storage/eva) -"aFe" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Dormitory South" +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) +"aFe" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 }, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitory" + }, +/obj/machinery/door/firedoor, +/obj/effect/landmark/navigate_destination, +/obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron, /area/station/commons/dorms) "aFf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) -"aFh" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, +/turf/open/floor/wood/parquet, +/area/station/commons/dorms) +"aFh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/dorms) "aFi" = ( /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/east, -/turf/open/floor/iron/freezer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aFj" = ( /obj/effect/turf_decal/tile/red, @@ -9104,8 +9671,8 @@ /area/station/maintenance/starboard/fore) "aFt" = ( /obj/structure/transit_tube/crossing/horizontal, -/obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) "aFu" = ( @@ -9130,6 +9697,7 @@ /area/station/service/chapel/office) "aFA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aFG" = ( @@ -9145,7 +9713,10 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/herringbone, /area/station/security/checkpoint/arrivals) "aFI" = ( /obj/machinery/camera/directional/south{ @@ -9161,7 +9732,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light_switch/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/security/checkpoint/arrivals) "aFJ" = ( /obj/effect/landmark/event_spawn, @@ -9179,7 +9750,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "aFL" = ( /obj/item/radio/off, @@ -9195,7 +9766,7 @@ }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "aFM" = ( /obj/machinery/recharger{ @@ -9206,7 +9777,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "aFN" = ( /obj/structure/table/glass, @@ -9219,17 +9790,16 @@ /obj/effect/turf_decal/tile/green{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/half, /area/station/service/hydroponics/garden) "aFO" = ( /obj/machinery/camera/directional/east{ c_tag = "Garden" }, /obj/machinery/airalarm/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/half, /area/station/service/hydroponics/garden) "aFQ" = ( -/obj/structure/table, /obj/item/stack/cable_coil{ pixel_x = 2; pixel_y = -2 @@ -9242,19 +9812,32 @@ /obj/item/screwdriver{ pixel_y = 5 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aFS" = ( /obj/effect/landmark/start/assistant, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aFU" = ( /obj/effect/landmark/start/assistant, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aFW" = ( /obj/structure/chair/stool, @@ -9271,16 +9854,25 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aFZ" = ( -/obj/structure/table, /obj/item/storage/toolbox/mechanical{ pixel_x = -2; pixel_y = -1 }, /obj/machinery/light/directional/east, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aGa" = ( /obj/machinery/light/directional/south, @@ -9358,18 +9950,21 @@ /turf/open/floor/plating, /area/station/maintenance/port/central) "aGj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/storage/eva) "aGk" = ( /obj/structure/sink/directional/east, -/turf/open/floor/iron/freezer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aGl" = ( /obj/machinery/light_switch/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/freezer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aGm" = ( /obj/structure/toilet{ @@ -9386,37 +9981,45 @@ /obj/effect/landmark/blobstart, /obj/effect/landmark/generic_maintenance_landmark, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aGo" = ( -/obj/structure/table, -/obj/item/stack/sheet/rglass{ - amount = 50 - }, -/obj/item/stack/sheet/rglass{ - amount = 50 +/obj/structure/railing{ + dir = 1 }, -/obj/item/stack/rods/fifty, -/obj/item/stack/rods/fifty, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/structure/table, +/obj/machinery/newscaster/directional/west, +/obj/item/stack/sheet/iron/fifty{ + pixel_x = 6; + pixel_y = 3 }, -/turf/open/floor/iron, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aGp" = ( /obj/machinery/light/small/directional/west, /obj/machinery/recharge_station, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aGq" = ( -/obj/item/stack/sheet/plasteel{ - amount = 10 +/obj/structure/railing{ + dir = 1 }, /obj/structure/table, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/item/clothing/head/utility/welding{ + pixel_x = 4; + pixel_y = 5 }, -/turf/open/floor/iron, +/obj/item/clothing/head/utility/welding{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/clothing/head/utility/welding, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/sign/poster/official/safety_internals/directional/east, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aGr" = ( /obj/structure/chair/stool, @@ -9438,6 +10041,7 @@ /obj/effect/turf_decal/siding/purple{ dir = 6 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/science/ordnance) "aGv" = ( @@ -9480,7 +10084,7 @@ layer = 3.3; name = "Xenobio Pen 5 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -9547,6 +10151,7 @@ /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/service/crematorium, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "aGQ" = ( @@ -9628,12 +10233,18 @@ /turf/open/floor/wood, /area/station/service/library) "aHe" = ( -/obj/structure/table, /obj/item/storage/toolbox/electrical{ pixel_x = 1; pixel_y = -1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aHf" = ( /obj/item/radio/intercom{ @@ -9687,7 +10298,9 @@ /area/station/maintenance/aft) "aHp" = ( /obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/dark, /area/station/security/warden) "aHq" = ( /obj/machinery/light/small/directional/west, @@ -9713,7 +10326,11 @@ /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "aHx" = ( /obj/effect/spawner/structure/window, @@ -9728,7 +10345,7 @@ /obj/effect/turf_decal/tile/green{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/half, /area/station/service/hydroponics/garden) "aHA" = ( /obj/item/reagent_containers/spray/plantbgone, @@ -9752,19 +10369,28 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/half, /area/station/service/hydroponics/garden) "aHB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/stack/sheet/plasteel{ + amount = 25; + pixel_x = 4; + pixel_y = 3 }, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aHC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/command/storage/eva) "aHD" = ( /obj/structure/chair/stool{ @@ -9772,17 +10398,26 @@ }, /obj/effect/landmark/start/assistant, /obj/structure/cable, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/commons/storage/primary) "aHE" = ( -/obj/structure/table, /obj/item/weldingtool, /obj/item/crowbar, /obj/item/stack/package_wrap, /obj/item/stack/package_wrap, /obj/item/stack/package_wrap, /obj/item/stack/package_wrap, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aHG" = ( /obj/effect/mapping_helpers/airlock/locked, @@ -9807,18 +10442,11 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "aHH" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Dormitory" - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - 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/commons/dorms) +/obj/effect/turf_decal/tile/neutral/full, +/turf/open/floor/iron/herringbone, +/area/station/hallway/primary/central) "aHI" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -9859,51 +10487,58 @@ /turf/open/floor/iron, /area/station/command/gateway) "aHN" = ( -/obj/structure/table, -/obj/item/crowbar, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/requests_console/auto_name/directional/west, +/obj/machinery/camera/directional/west{ + c_tag = "EVA Storage South" }, -/obj/item/stack/sheet/iron/fifty, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, +/obj/machinery/recharge_station, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aHO" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, +/obj/structure/cable, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aHP" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ name = "Central Access" }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "aHQ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ name = "Central Access" }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "aHR" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Central Access" - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/trimline/neutral/line{ dir = 4 }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/hallway/primary/central) +/area/station/hallway/primary/fore) "aHS" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/maintenance{ @@ -9915,26 +10550,17 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "aHT" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Dormitory" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/iron, -/area/station/commons/dorms) +/obj/effect/turf_decal/tile/neutral/full, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/herringbone, +/area/station/hallway/primary/central) "aHU" = ( /obj/structure/sink/directional/east, /obj/structure/mirror{ pixel_x = -28 }, /obj/effect/landmark/start/assistant, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aHW" = ( /obj/machinery/door/airlock{ @@ -9946,7 +10572,7 @@ /obj/machinery/door/airlock{ name = "Unit B" }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aHZ" = ( /obj/machinery/airalarm/directional/west, @@ -9963,6 +10589,16 @@ }, /turf/open/floor/iron, /area/station/service/theater) +"aIa" = ( +/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/effect/turf_decal/siding/red{ + dir = 4 + }, +/turf/open/floor/iron/herringbone, +/area/station/security/brig) "aId" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -10004,16 +10640,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/duct, -/obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=2"; location = "Hydroponics" }, +/obj/effect/turf_decal/bot, /obj/machinery/door/window/right/directional/east{ name = "Hydroponics Delivery"; - req_access = list("hydroponics") + req_access = list("hydroponics"); + dir = 8 }, -/obj/effect/turf_decal/bot, +/obj/structure/plasticflaps/opaque, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "aIl" = ( @@ -10145,7 +10782,7 @@ id = "aux_base_shutters"; name = "Public Shutters Control"; pixel_x = 24; - req_one_access_txt = "32;47;48" + req_access = list("aux_base") }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -10172,10 +10809,11 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "aIN" = ( -/obj/structure/table, /obj/item/wrench, /obj/item/analyzer, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow/end, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aIO" = ( /obj/machinery/camera/directional/north{ @@ -10218,7 +10856,7 @@ /obj/effect/turf_decal/tile/green{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/half, /area/station/service/hydroponics/garden) "aIT" = ( /obj/item/storage/bag/plants/portaseeder, @@ -10234,7 +10872,7 @@ dir = 8 }, /obj/machinery/light_switch/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/half, /area/station/service/hydroponics/garden) "aIU" = ( /obj/machinery/navbeacon{ @@ -10242,7 +10880,8 @@ location = "Tool Storage" }, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/commons/storage/primary) "aIV" = ( /obj/machinery/button/door{ @@ -10256,29 +10895,37 @@ /turf/open/floor/iron, /area/station/command/gateway) "aIW" = ( -/obj/structure/table, /obj/item/crowbar, /obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, /obj/item/clothing/gloves/color/fyellow, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/obj/structure/table/reinforced, +/turf/open/floor/iron/diagonal, /area/station/commons/storage/primary) "aIX" = ( /obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 6 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aIY" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 10 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aIZ" = ( -/obj/structure/table, /obj/item/storage/belt/utility, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/obj/structure/table/reinforced, +/turf/open/floor/iron/diagonal, /area/station/commons/storage/primary) "aJa" = ( /obj/structure/cable, @@ -10288,13 +10935,17 @@ /turf/open/floor/iron, /area/station/command/gateway) "aJb" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 6 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aJc" = ( /obj/structure/disposalpipe/trunk, /obj/machinery/disposal/bin, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow/end, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "aJd" = ( /obj/effect/spawner/structure/window/reinforced, @@ -10318,21 +10969,29 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/port) "aJf" = ( -/obj/machinery/camera/directional/south{ - c_tag = "EVA South" +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 }, -/turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) "aJg" = ( /obj/structure/extinguisher_cabinet/directional/east, /obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, /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/stairs, /area/station/hallway/primary/central) "aJh" = ( /turf/open/floor/iron, @@ -10347,26 +11006,16 @@ /area/station/command/gateway) "aJj" = ( /obj/structure/table, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/extinguisher, -/obj/item/extinguisher, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 4; + pixel_y = 3 }, -/turf/open/floor/iron, +/obj/machinery/firealarm/directional/west, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/rods/fifty, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aJk" = ( /obj/machinery/door/airlock{ @@ -10376,11 +11025,30 @@ /turf/open/floor/iron, /area/station/service/theater) "aJl" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/item/storage/toolbox/electrical{ + pixel_x = 4; + pixel_y = 6 }, -/turf/open/floor/iron, +/obj/machinery/button/door/directional/east{ + id = "eva_shutters"; + pixel_x = 26; + pixel_y = 6; + req_access = list("command") + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/light_switch/directional/east{ + pixel_y = -6 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/storage/toolbox/emergency, +/obj/structure/rack, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "aJm" = ( /obj/structure/sink/kitchen/directional/south, @@ -10392,27 +11060,32 @@ /turf/open/floor/plating, /area/station/hallway/primary/central) "aJo" = ( -/obj/machinery/light/directional/north, /obj/machinery/camera/directional/north{ c_tag = "Central Hallway North" }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/obj/structure/sign/directions/supply{ + dir = 8; + pixel_y = 32 }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/structure/sign/directions/vault{ + dir = 8; + pixel_y = 24 + }, +/obj/structure/sign/directions/command{ + pixel_y = 40 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aJp" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/structure/sign/nanotrasen{ + pixel_x = -32; + pixel_y = 32 }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 }, /turf/open/floor/iron, /area/station/hallway/primary/central) @@ -10463,6 +11136,10 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/structure/sign/nanotrasen{ + pixel_x = 32; + pixel_y = 32 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aJw" = ( @@ -10475,19 +11152,13 @@ /turf/open/floor/wood, /area/station/service/bar) "aJy" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) +/turf/closed/wall, +/area/station/hallway/primary/fore) "aJz" = ( /obj/machinery/camera/directional/south{ c_tag = "Dormitory Toilets" }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "aJA" = ( /obj/machinery/door/airlock/maintenance{ @@ -10574,13 +11245,14 @@ /turf/open/floor/iron, /area/station/maintenance/starboard/fore) "aJL" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/light_construct/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/obj/machinery/camera/directional/east{ + c_tag = "Mining Dock External" + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark, +/area/station/cargo/miningdock) "aJM" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp{ @@ -10597,7 +11269,7 @@ /area/station/service/hydroponics) "aJO" = ( /obj/structure/table, -/obj/machinery/reagentgrinder, +/obj/item/toy/plush/beeplushie, /turf/open/floor/iron, /area/station/service/hydroponics) "aJP" = ( @@ -10656,14 +11328,16 @@ /obj/effect/landmark/navigate_destination, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/box, +/turf/open/floor/iron/small, /area/station/commons/storage/primary) "aKa" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ name = "Primary Tool Storage" }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/box, +/turf/open/floor/iron/small, /area/station/commons/storage/primary) "aKb" = ( /obj/effect/turf_decal/tile/red/opposingcorners, @@ -10682,10 +11356,22 @@ /obj/effect/mapping_helpers/airlock/access/all/command/gateway, /turf/open/floor/iron, /area/station/command/gateway) +"aKd" = ( +/obj/effect/turf_decal/siding/dark_green{ + dir = 6 + }, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/station/service/hydroponics/garden) "aKj" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/secondary/entry) "aKk" = ( /obj/effect/turf_decal/tile/neutral, @@ -10710,7 +11396,7 @@ /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, +/turf/open/floor/iron/large, /area/station/service/hydroponics/garden) "aKo" = ( /obj/effect/turf_decal/tile/neutral, @@ -10770,6 +11456,9 @@ /obj/machinery/door/airlock/maintenance, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/port/central) "aKA" = ( @@ -10805,13 +11494,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aKE" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 }, /turf/open/floor/iron, @@ -10827,14 +11514,26 @@ /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/effect/turf_decal/trimline/red/filled/corner, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/security/brig) "aKH" = ( -/obj/machinery/duct, +/obj/machinery/newscaster/directional/north, +/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aKI" = ( /obj/structure/closet/secure_closet/hydroponics, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aKJ" = ( @@ -10902,7 +11601,6 @@ req_access = list("kitchen") }, /obj/effect/turf_decal/delivery, -/obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron, /area/station/service/kitchen) "aKW" = ( @@ -10912,9 +11610,9 @@ /turf/open/floor/carpet, /area/station/commons/vacant_room/office) "aKX" = ( -/obj/structure/sink/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) +/obj/structure/chair/sofa/bench/left, +/turf/open/floor/iron/dark/herringbone, +/area/station/hallway/primary/central) "aKY" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage{ @@ -10963,6 +11661,7 @@ pixel_y = 5 }, /obj/item/watertank, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aLe" = ( @@ -10997,6 +11696,9 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "aLm" = ( @@ -11004,11 +11706,20 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "aLn" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "aLu" = ( @@ -11069,7 +11780,13 @@ pixel_y = 32 }, /obj/machinery/light/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/secondary/entry) "aLE" = ( /turf/open/floor/iron, @@ -11077,10 +11794,16 @@ "aLG" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "aLI" = ( /obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aLJ" = ( @@ -11094,6 +11817,9 @@ "aLK" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "aLL" = ( @@ -11110,7 +11836,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/port) "aLN" = ( /obj/effect/turf_decal/stripes/line{ @@ -11140,6 +11872,9 @@ c_tag = "Central Hallway North-East" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aLR" = ( @@ -11173,6 +11908,9 @@ "aLV" = ( /obj/machinery/light/directional/north, /obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aLW" = ( @@ -11180,6 +11918,9 @@ c_tag = "Central Hallway North-West" }, /obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aLX" = ( @@ -11190,7 +11931,17 @@ /area/station/hallway/primary/central) "aLY" = ( /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "aLZ" = ( /obj/effect/turf_decal/plaque{ @@ -11202,6 +11953,7 @@ /obj/effect/turf_decal/plaque{ icon_state = "L1" }, +/obj/machinery/light/floor, /turf/open/floor/iron, /area/station/hallway/primary/central) "aMb" = ( @@ -11209,6 +11961,12 @@ icon_state = "L7" }, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aMc" = ( @@ -11233,17 +11991,21 @@ /obj/effect/turf_decal/plaque{ icon_state = "L13" }, +/obj/machinery/light/floor, /turf/open/floor/iron, /area/station/hallway/primary/central) "aMg" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/obj/effect/turf_decal/tile/blue/diagonal_centre, +/obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 }, -/turf/open/floor/iron, -/area/station/hallway/primary/central) +/turf/open/floor/iron/diagonal, +/area/station/hallway/primary/fore) "aMi" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/bartender, /turf/open/floor/wood, /area/station/service/bar) "aMj" = ( @@ -11260,6 +12022,9 @@ /area/station/service/kitchen) "aMm" = ( /obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aMn" = ( @@ -11268,6 +12033,9 @@ /area/station/hallway/primary/central) "aMo" = ( /obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aMp" = ( @@ -11318,6 +12086,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aMw" = ( @@ -11347,6 +12116,7 @@ /obj/machinery/power/apc/auto_name/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aMz" = ( @@ -11356,6 +12126,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aMA" = ( @@ -11366,6 +12137,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aMB" = ( @@ -11379,7 +12151,13 @@ /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, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half{ + dir = 1 + }, +/turf/open/floor/iron/half, /area/station/hallway/primary/central) "aMD" = ( /obj/effect/turf_decal/stripes/line, @@ -11400,6 +12178,7 @@ dir = 8 }, /obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aMF" = ( @@ -11423,8 +12202,10 @@ /area/station/service/library) "aMI" = ( /obj/machinery/light/small/directional/south, -/obj/machinery/vending/wardrobe/hydro_wardrobe, -/obj/machinery/duct, +/obj/structure/sign/poster/random/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink/directional/east, +/obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/service/hydroponics) "aMJ" = ( @@ -11460,7 +12241,8 @@ /turf/open/floor/iron/dark, /area/station/service/chapel/office) "aMN" = ( -/obj/machinery/chem_master/condimaster, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aMO" = ( @@ -11472,6 +12254,7 @@ /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, /turf/open/floor/iron, /area/station/hallway/primary/port) "aMU" = ( @@ -11479,6 +12262,10 @@ /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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "aMW" = ( @@ -11510,7 +12297,11 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "aNd" = ( /obj/structure/table/wood, @@ -11531,7 +12322,11 @@ /area/station/hallway/secondary/entry) "aNh" = ( /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/small, /area/station/hallway/secondary/entry) "aNi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -11546,16 +12341,24 @@ /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/neutral/end{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "aNl" = ( /obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "aNs" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "aNt" = ( @@ -11563,21 +12366,27 @@ /turf/open/floor/carpet, /area/station/service/theater) "aNu" = ( -/obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" - }, +/obj/structure/closet/secure_closet/bar, /turf/open/floor/wood, /area/station/service/bar) "aNv" = ( /obj/effect/turf_decal/plaque{ icon_state = "L4" }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aNw" = ( /obj/effect/turf_decal/plaque{ icon_state = "L2" }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aNx" = ( @@ -11585,6 +12394,11 @@ /obj/effect/turf_decal/plaque{ icon_state = "L8" }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 4 + }, +/obj/machinery/light/floor, /turf/open/floor/iron, /area/station/hallway/primary/central) "aNy" = ( @@ -11595,12 +12409,20 @@ /obj/effect/turf_decal/plaque{ icon_state = "L6" }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aNz" = ( /obj/effect/turf_decal/plaque{ icon_state = "L12" }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aNA" = ( @@ -11611,12 +12433,20 @@ /obj/effect/turf_decal/plaque{ icon_state = "L10" }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aNB" = ( /obj/effect/turf_decal/plaque{ icon_state = "L14" }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aNC" = ( @@ -11626,6 +12456,12 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 5 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aND" = ( @@ -11709,8 +12545,11 @@ /area/station/service/hydroponics) "aNO" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/effect/turf_decal/stripes/corner, /obj/machinery/duct, +/obj/effect/decal/cleanable/blood, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/iron/showroomfloor, /area/station/service/kitchen) "aNP" = ( @@ -11735,6 +12574,7 @@ }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "aNU" = ( @@ -11843,6 +12683,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "aOj" = ( @@ -11864,6 +12705,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/siding/thinplating_new, /turf/open/floor/iron, /area/station/hallway/primary/port) "aOm" = ( @@ -11872,6 +12714,7 @@ }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "aOo" = ( @@ -11879,6 +12722,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "aOp" = ( @@ -11888,18 +12732,21 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "aOq" = ( /obj/structure/disposalpipe/junction{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "aOr" = ( /obj/structure/disposalpipe/junction/flip{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "aOs" = ( @@ -11907,19 +12754,28 @@ dir = 4 }, /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/port) "aOt" = ( /obj/machinery/light/directional/south, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "aOw" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/effect/turf_decal/siding/thinplating_new, /turf/open/floor/iron, /area/station/hallway/primary/port) "aOz" = ( @@ -11933,6 +12789,12 @@ location = "CHW" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aOE" = ( @@ -11945,20 +12807,26 @@ /obj/machinery/light/directional/south, /obj/structure/sign/warning/electric_shock/directional/south, /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/stripes/red/line{ dir = 8 }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "aOG" = ( /obj/structure/sign/warning/electric_shock/directional/south, /obj/machinery/door/firedoor, /obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/stripes/red/line{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "aOH" = ( /turf/open/floor/carpet, @@ -12038,7 +12906,7 @@ pixel_y = 30 }, /obj/effect/mapping_helpers/requests_console/supplies, -/obj/machinery/duct, +/obj/effect/turf_decal/siding/dark, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "aOR" = ( @@ -12046,6 +12914,8 @@ dir = 5 }, /obj/machinery/duct, +/obj/effect/turf_decal/siding/dark, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "aOS" = ( @@ -12059,25 +12929,36 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/turf_decal/caution{ + dir = 8 + }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/service/kitchen) "aOV" = ( -/obj/structure/sink/directional/east, +/obj/structure/table/glass, +/obj/machinery/reagentgrinder{ + pixel_y = 4 + }, +/obj/effect/turf_decal/siding/dark/corner, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "aOW" = ( -/obj/machinery/hydroponics/constructable, /obj/machinery/camera/directional/north{ c_tag = "Hydroponics North" }, -/obj/machinery/duct, +/obj/machinery/seed_extractor, +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/bot/left, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "aOX" = ( -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/table, +/obj/item/food/grown/poppy/lily, +/turf/open/floor/iron, /area/station/service/hydroponics) "aOY" = ( /obj/structure/chair/comfy/beige{ @@ -12091,6 +12972,9 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "aPb" = ( @@ -12151,9 +13035,7 @@ /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/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "aPr" = ( @@ -12223,18 +13105,27 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port) "aPC" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/small, /area/station/commons/locker) "aPD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, /obj/effect/landmark/navigate_destination, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/small, /area/station/commons/locker) "aPE" = ( /obj/machinery/status_display/evac, @@ -12255,17 +13146,20 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port) "aPL" = ( /obj/structure/table, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/hallway/primary/port) "aPN" = ( /obj/structure/table, /obj/item/storage/toolbox/emergency, /obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/hallway/primary/port) "aPR" = ( /turf/closed/wall/r_wall, @@ -12274,7 +13168,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - name = "bridge blast door" + name = "Bridge blast door" }, /obj/structure/cable, /turf/open/floor/plating, @@ -12282,7 +13176,7 @@ "aPT" = ( /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - name = "bridge blast door" + name = "Bridge blast door" }, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -12293,7 +13187,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - name = "bridge blast door" + name = "Bridge blast door" }, /obj/structure/cable, /turf/open/floor/plating, @@ -12310,9 +13204,6 @@ /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = -31 }, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, /obj/item/pai_card, /obj/structure/table/wood, /turf/open/floor/carpet, @@ -12358,33 +13249,35 @@ /turf/open/floor/wood, /area/station/service/theater) "aQf" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, /obj/effect/turf_decal/tile/green{ dir = 4 }, /obj/effect/turf_decal/tile/green{ dir = 8 }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/iron, /area/station/service/hydroponics) "aQg" = ( -/obj/effect/spawner/structure/window, /obj/machinery/door/poddoor/preopen{ id = "barShutters"; - name = "privacy shutters" + name = "Privacy shutters" }, +/obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/bar) "aQh" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ dir = 4 }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/machinery/duct, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aQi" = ( @@ -12410,12 +13303,12 @@ /turf/open/floor/iron/showroomfloor, /area/station/service/kitchen) "aQm" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, /obj/effect/turf_decal/tile/green{ dir = 4 }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/iron, /area/station/service/hydroponics) "aQo" = ( @@ -12472,8 +13365,8 @@ /area/station/maintenance/port/central) "aQw" = ( /obj/structure/altar_of_gods, -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/chapel) "aQA" = ( @@ -12526,11 +13419,14 @@ /area/station/hallway/secondary/entry) "aQI" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/hallway/secondary/entry) "aQJ" = ( /obj/effect/turf_decal/tile/neutral{ @@ -12560,11 +13456,13 @@ /area/station/maintenance/port) "aQO" = ( /obj/structure/closet/wardrobe/white, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, /area/station/commons/locker) "aQP" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/commons/locker) "aQQ" = ( @@ -12583,7 +13481,7 @@ dir = 4; icon_state = "right"; name = "Core Modules"; - req_access_txt = "20" + req_access = list("captain") }, /obj/structure/window/reinforced/spawner/directional/south, /obj/effect/spawner/random/aimodule/harmless, @@ -12592,7 +13490,7 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/item/ai_module/core/full/custom, /obj/structure/table/wood/fancy/blue, -/turf/open/floor/circuit, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "aQV" = ( /obj/machinery/vending/clothing, @@ -12647,8 +13545,7 @@ "aRf" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ - name = "Auxiliary Tool Storage"; - req_access_txt = "12" + name = "Auxiliary Tool Storage" }, /obj/structure/cable, /obj/effect/landmark/navigate_destination, @@ -12676,6 +13573,9 @@ /area/station/service/bar) "aRh" = ( /obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aRi" = ( @@ -12804,6 +13704,7 @@ /area/station/command/bridge) "aRt" = ( /obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "aRu" = ( @@ -12888,6 +13789,12 @@ "aRF" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/machinery/light/directional/north, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen) "aRG" = ( @@ -12938,7 +13845,9 @@ /area/station/service/library) "aRR" = ( /obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/chair/comfy/black{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/service/chapel) "aRV" = ( @@ -13005,7 +13914,8 @@ /obj/item/radio/intercom{ pixel_x = -27 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, /area/station/commons/locker) "aSi" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -13061,9 +13971,8 @@ /area/station/command/bridge) "aSv" = ( /obj/structure/table/reinforced, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/secure_safe/caps_spare, /turf/open/floor/iron/dark, /area/station/command/bridge) "aSw" = ( @@ -13086,7 +13995,7 @@ name = "Bridge Blast Door Control"; pixel_x = 28; pixel_y = -2; - req_access_txt = "19" + req_access = list("command") }, /obj/machinery/keycard_auth{ pixel_x = 29; @@ -13129,7 +14038,6 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/structure/secure_safe/caps_spare, /obj/effect/turf_decal/siding/thinplating_new{ dir = 5 }, @@ -13164,8 +14072,12 @@ /turf/open/floor/iron, /area/station/service/bar) "aSG" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/sandy_dirt, /area/station/service/bar) "aSH" = ( /obj/effect/turf_decal/siding/wood{ @@ -13210,17 +14122,24 @@ /area/station/service/kitchen) "aSP" = ( /obj/machinery/smartfridge, -/turf/closed/wall, +/turf/open/floor/plating, /area/station/service/kitchen) "aSR" = ( -/turf/open/floor/iron/dark, +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/turf/open/floor/iron, /area/station/service/hydroponics) "aSS" = ( -/obj/machinery/seed_extractor, +/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/service/hydroponics) "aST" = ( -/obj/machinery/biogenerator, +/obj/machinery/holopad, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aSU" = ( @@ -13292,13 +14211,19 @@ /turf/closed/wall, /area/station/service/chapel/office) "aTf" = ( -/obj/structure/chair/stool, -/turf/open/floor/iron/chapel, +/obj/structure/chair/pew/right{ + dir = 1 + }, +/turf/open/floor/iron/chapel{ + dir = 4 + }, /area/station/service/chapel) "aTg" = ( -/obj/structure/chair/stool, +/obj/structure/chair/pew/left{ + dir = 1 + }, /turf/open/floor/iron/chapel{ - dir = 8 + dir = 4 }, /area/station/service/chapel) "aTi" = ( @@ -13334,8 +14259,7 @@ dir = 4 }, /obj/machinery/door/airlock/external{ - name = "Escape Airlock"; - safety_mode = 1 + name = "Escape Airlock" }, /obj/structure/sign/warning/vacuum/external/directional/north, /turf/open/floor/plating, @@ -13345,8 +14269,7 @@ dir = 8 }, /obj/machinery/door/airlock/external{ - name = "Escape Airlock"; - safety_mode = 1 + name = "Escape Airlock" }, /turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) @@ -13373,7 +14296,8 @@ "aTw" = ( /obj/structure/closet/wardrobe/green, /obj/machinery/light/directional/west, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, /area/station/commons/locker) "aTx" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -13426,6 +14350,10 @@ /area/station/hallway/primary/port) "aTH" = ( /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "qmroom" + }, +/obj/structure/cable, /turf/open/floor/plating, /area/station/command/heads_quarters/qm) "aTI" = ( @@ -13505,6 +14433,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/radio/intercom/command/directional/north, /turf/open/floor/iron/dark/textured, /area/station/command/bridge) "aTS" = ( @@ -13526,6 +14455,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark/textured, /area/station/command/bridge) "aTU" = ( @@ -13536,6 +14466,8 @@ /obj/structure/table/reinforced, /obj/machinery/recharger, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/iron/dark, /area/station/command/bridge) "aTW" = ( @@ -13602,6 +14534,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/radio/intercom/command/directional/north, /turf/open/floor/iron/dark/textured, /area/station/command/bridge) "aUe" = ( @@ -13611,6 +14544,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark/textured, /area/station/command/bridge) "aUf" = ( @@ -13644,26 +14578,22 @@ /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen) "aUi" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/green{ dir = 8 }, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "aUj" = ( -/obj/machinery/vending/hydronutrients, -/turf/open/floor/iron, -/area/station/service/hydroponics) +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/lockers) "aUk" = ( -/obj/machinery/vending/hydroseeds{ - slogan_delay = 700 - }, +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/service/hydroponics) "aUl" = ( @@ -13685,15 +14615,23 @@ /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "aUy" = ( -/obj/structure/steam_vent, -/turf/open/floor/plating, -/area/station/maintenance/fore) +/obj/structure/chair/sofa/bench{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/diagonal_centre, +/turf/open/floor/iron/dark/diagonal, +/area/station/hallway/primary/fore) "aUz" = ( -/obj/machinery/hydroponics/constructable, /obj/machinery/airalarm/directional/east, +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/cup/watering_can, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "aUA" = ( @@ -13742,15 +14680,16 @@ /area/station/service/library) "aUG" = ( /obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/chapel{ + dir = 8 + }, /area/station/service/chapel) "aUH" = ( -/obj/structure/chair/stool, /obj/effect/landmark/start/assistant, -/turf/open/floor/iron/chapel{ - dir = 4 +/obj/structure/chair/pew/right{ + dir = 1 }, +/turf/open/floor/iron/dark, /area/station/service/chapel) "aUI" = ( /obj/structure/disposalpipe/segment{ @@ -13773,7 +14712,6 @@ /area/station/hallway/secondary/entry) "aUN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/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, @@ -13821,7 +14759,8 @@ department = "Locker Room"; pixel_x = -32 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, /area/station/commons/locker) "aUW" = ( /obj/structure/table/wood, @@ -13845,6 +14784,7 @@ dir = 4 }, /obj/effect/landmark/start/hangover, +/obj/structure/hedge, /turf/open/floor/iron/dark/smooth_large, /area/station/command/bridge) "aVc" = ( @@ -13852,7 +14792,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - name = "bridge blast door" + name = "Bridge blast door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark/smooth_large, @@ -13935,7 +14875,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - name = "bridge blast door" + name = "Bridge blast door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark/smooth_large, @@ -13951,6 +14891,7 @@ /obj/machinery/camera/directional/north{ c_tag = "Bridge East Entrance" }, +/obj/structure/hedge, /turf/open/floor/iron/dark/smooth_large, /area/station/command/bridge) "aVv" = ( @@ -14039,18 +14980,25 @@ /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen) "aVI" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, /obj/effect/turf_decal/tile/green{ dir = 8 }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/iron, /area/station/service/hydroponics) "aVJ" = ( /obj/machinery/light/directional/west, /obj/machinery/hydroponics/constructable, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/iron, /area/station/service/hydroponics) "aVK" = ( /obj/effect/landmark/start/botanist, @@ -14063,11 +15011,13 @@ }, /obj/structure/cable, /obj/effect/mapping_helpers/mail_sorting/service/library, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/hallway/primary/starboard) "aVM" = ( -/obj/machinery/hydroponics/constructable, /obj/machinery/light/directional/east, +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/cup/watering_can, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "aVO" = ( @@ -14075,7 +15025,8 @@ dir = 4 }, /obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/hallway/primary/starboard) "aVP" = ( /obj/structure/table/wood, @@ -14172,7 +15123,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "aWj" = ( /obj/structure/grille, @@ -14194,7 +15145,8 @@ "aWn" = ( /obj/structure/closet/wardrobe/black, /obj/item/clothing/shoes/jackboots, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, /area/station/commons/locker) "aWo" = ( /obj/machinery/camera/directional/south{ @@ -14209,6 +15161,8 @@ /obj/effect/turf_decal/siding/wood/corner{ 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/commons/vacant_room/office) "aWs" = ( @@ -14251,7 +15205,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - name = "bridge blast door" + name = "Bridge blast door" }, /obj/effect/turf_decal/delivery, /obj/structure/cable, @@ -14290,7 +15244,7 @@ }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/command/general, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/command/bridge) "aWN" = ( /obj/structure/cable, @@ -14391,7 +15345,7 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - name = "bridge blast door" + name = "Bridge blast door" }, /obj/effect/turf_decal/delivery, /obj/structure/cable, @@ -14413,7 +15367,7 @@ /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/general, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/command/bridge) "aXd" = ( /obj/structure/disposalpipe/segment{ @@ -14456,6 +15410,12 @@ /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/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "aXh" = ( @@ -14523,10 +15483,10 @@ /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen) "aXo" = ( -/obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ dir = 4 }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/station/service/hydroponics) "aXp" = ( @@ -14544,6 +15504,11 @@ }, /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/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "aXs" = ( @@ -14602,12 +15567,14 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/north, /obj/effect/turf_decal/bot{ dir = 1 }, /obj/machinery/power/smes/engineering, -/turf/open/floor/iron/dark, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/engineering/engine_smes) "aXF" = ( /obj/effect/landmark/event_spawn, @@ -14621,6 +15588,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/commons/fitness) "aXG" = ( @@ -14629,26 +15597,28 @@ dir = 4 }, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) "aXI" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, /obj/machinery/door/airlock/external{ - name = "Port Docking Bay 2" + name = "Transport Airlock" }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) "aXM" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Cargo Bay Warehouse Maintenance"; - req_access_txt = "31" - }, /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/supply/general, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Bay Maintenance" + }, /turf/open/floor/plating, /area/station/maintenance/port) "aXN" = ( @@ -14667,6 +15637,10 @@ /obj/structure/disposalpipe/segment, /obj/machinery/light/directional/west, /obj/structure/cable, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "aXT" = ( @@ -14725,15 +15699,9 @@ /turf/open/floor/carpet, /area/station/security/detectives_office) "aYk" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ +/turf/open/floor/iron/stairs{ dir = 8 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/iron, /area/station/hallway/primary/central) "aYl" = ( /obj/effect/turf_decal/tile/blue, @@ -14747,26 +15715,24 @@ /obj/machinery/camera/directional/south{ c_tag = "Bridge West Entrance" }, +/obj/structure/hedge, /turf/open/floor/iron/dark/smooth_large, /area/station/command/bridge) "aYo" = ( /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - name = "bridge blast door" + name = "Bridge blast door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark/smooth_large, /area/station/command/bridge) "aYr" = ( -/obj/item/radio/intercom{ - pixel_y = -29 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/flora/bush/jungle/b/style_random, +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/sandy_dirt, /area/station/command/bridge) "aYs" = ( /obj/effect/turf_decal/tile/blue, @@ -14784,21 +15750,10 @@ /turf/open/floor/plating, /area/station/maintenance/fore) "aYu" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron/dark, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/flora/bush/jungle/a, +/obj/structure/flora/rock/pile/style_3, +/turf/open/misc/sandy_dirt, /area/station/command/bridge) "aYw" = ( /obj/structure/cable, @@ -14810,16 +15765,12 @@ /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai_upload) "aYC" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/filingcabinet/filingcabinet, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/flora/bush/jungle/b, +/obj/structure/flora/rock/pile/style_2{ + pixel_x = -3 }, -/turf/open/floor/iron/dark, +/turf/open/misc/sandy_dirt, /area/station/command/bridge) "aYD" = ( /obj/structure/disposalpipe/segment, @@ -14838,6 +15789,7 @@ dir = 8 }, /obj/machinery/light/directional/south, +/obj/structure/hedge, /turf/open/floor/iron/dark/smooth_large, /area/station/command/bridge) "aYG" = ( @@ -14918,23 +15870,24 @@ /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen) "aYP" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/item/reagent_containers/cup/watering_can, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"aYQ" = ( -/obj/machinery/hydroponics/constructable, /obj/effect/turf_decal/tile/green{ - dir = 1 + dir = 8 }, -/obj/effect/turf_decal/tile/green{ - dir = 4 +/obj/effect/turf_decal/tile/blue, +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"aYQ" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "aYR" = ( /obj/structure/chair/stool, /obj/effect/landmark/start/botanist, +/obj/effect/turf_decal/trimline/green/filled/line, /turf/open/floor/iron, /area/station/service/hydroponics) "aYS" = ( @@ -14954,9 +15907,13 @@ /obj/machinery/camera/directional/east{ c_tag = "Hydroponics South" }, -/obj/structure/reagent_dispensers/watertank/high, -/obj/item/reagent_containers/cup/watering_can, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/turf/open/floor/iron/dark, /area/station/service/hydroponics) "aYV" = ( /turf/open/floor/iron, @@ -15022,7 +15979,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) "aZn" = ( /obj/structure/table/wood, @@ -15057,7 +16017,10 @@ name = "Security Shutters"; pixel_y = 24 }, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "aZr" = ( /obj/machinery/light/small/directional/west, @@ -15070,10 +16033,11 @@ /turf/open/floor/plating, /area/station/maintenance/port) "aZt" = ( -/obj/structure/closet/radiation, -/obj/structure/sign/warning/radiation/rad_area/directional/east, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, /turf/open/floor/iron, -/area/station/engineering/gravity_generator) +/area/station/commons/locker) "aZv" = ( /obj/machinery/door/airlock{ name = "Unit 1" @@ -15093,13 +16057,19 @@ /obj/machinery/camera/directional/north{ c_tag = "Conference Room" }, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "aZz" = ( /obj/machinery/newscaster{ pixel_y = 32 }, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "aZA" = ( /obj/machinery/portable_atmospherics/scrubber, @@ -15114,7 +16084,10 @@ "aZC" = ( /obj/machinery/light_switch/directional/north, /obj/machinery/light/directional/north, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "aZE" = ( /turf/closed/wall, @@ -15125,7 +16098,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "aZH" = ( /obj/machinery/conveyor{ @@ -15147,8 +16120,7 @@ /area/station/engineering/engine_smes) "aZQ" = ( /obj/machinery/door/airlock/command{ - name = "Conference Room"; - req_access_txt = "19" + name = "Conference Room" }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -15161,7 +16133,7 @@ "aZS" = ( /obj/structure/table, /obj/item/ai_module/supplied/freeform, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "aZT" = ( /obj/structure/cable, @@ -15171,7 +16143,6 @@ /area/station/ai_monitored/turret_protected/ai_upload) "aZU" = ( /obj/structure/closet/radiation, -/obj/structure/sign/warning/radiation/rad_area/directional/west, /turf/open/floor/iron, /area/station/engineering/gravity_generator) "aZX" = ( @@ -15191,7 +16162,11 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "aZZ" = ( /obj/effect/turf_decal/siding/wood, @@ -15218,7 +16193,6 @@ /turf/open/floor/wood, /area/station/service/theater) "bad" = ( -/obj/machinery/light/directional/south, /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -15243,9 +16217,9 @@ /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{ - dir = 10 + dir = 8 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "bag" = ( /obj/structure/cable, @@ -15288,7 +16262,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ id = "kitchen"; - name = "kitchen shutters" + name = "Kitchen shutters" }, /obj/structure/desk_bell{ pixel_x = -4; @@ -15301,7 +16275,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ id = "kitchen"; - name = "kitchen shutters" + name = "Kitchen shutters" }, /obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -3 @@ -15312,8 +16286,8 @@ /turf/open/floor/iron/kitchen/diagonal, /area/station/service/kitchen) "bal" = ( -/obj/structure/sink/directional/east, -/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/green/fourcorners, +/obj/machinery/vending/hydronutrients, /turf/open/floor/iron, /area/station/service/hydroponics) "bam" = ( @@ -15327,6 +16301,9 @@ name = "Hydroponics Desk"; req_access = list("hydroponics") }, +/obj/structure/desk_bell{ + pixel_x = -8 + }, /turf/open/floor/iron, /area/station/service/hydroponics) "bao" = ( @@ -15395,12 +16372,22 @@ "bay" = ( /obj/structure/chair/comfy/black, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 1 + }, /turf/open/floor/carpet, /area/station/command/meeting_room) "baA" = ( -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/food/grown/poppy{ + pixel_x = -8; + pixel_y = 7 + }, +/obj/item/food/grown/poppy{ + pixel_y = 2 }, +/turf/open/floor/iron/dark, /area/station/service/chapel) "baD" = ( /obj/effect/turf_decal/trimline/green/filled/line{ @@ -15432,6 +16419,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 9 + }, /turf/open/floor/carpet, /area/station/command/meeting_room) "baJ" = ( @@ -15494,21 +16484,11 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "baX" = ( -/obj/structure/lattice, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) +/turf/open/floor/iron/dark/herringbone, +/area/station/hallway/primary/central) "baY" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, /obj/structure/rack, -/obj/item/stock_parts/cell{ - maxcharge = 2000 - }, -/obj/item/electronics/apc, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, @@ -15519,6 +16499,9 @@ layer = 4; pixel_y = 32 }, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bbb" = ( @@ -15552,7 +16535,10 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bbi" = ( /obj/structure/disposalpipe/segment{ @@ -15560,12 +16546,17 @@ }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bbl" = ( /obj/effect/landmark/event_spawn, /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, /area/station/commons/dorms) "bbm" = ( @@ -15678,6 +16669,9 @@ /obj/structure/chair/comfy/black{ dir = 8 }, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 4 + }, /turf/open/floor/carpet, /area/station/command/meeting_room) "bbD" = ( @@ -15760,20 +16754,23 @@ "bbW" = ( /obj/machinery/door/poddoor/preopen{ id = "heads_meeting"; - name = "privacy shutters" + name = "Privacy shutters" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/command/meeting_room) "bbX" = ( -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "bbY" = ( /obj/machinery/recharger{ pixel_y = 4 }, /obj/structure/table, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bbZ" = ( /obj/structure/table/wood, @@ -15786,18 +16783,23 @@ /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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bcc" = ( /obj/effect/spawner/random/vending/colavend, -/turf/open/floor/wood, +/obj/effect/turf_decal/bot/left, +/turf/open/floor/iron/dark/smooth_large, /area/station/command/meeting_room) "bcd" = ( /obj/structure/disposalpipe/segment, /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, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bcj" = ( /obj/structure/disposalpipe/junction{ @@ -15806,6 +16808,10 @@ /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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bck" = ( @@ -15815,10 +16821,15 @@ /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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bcl" = ( /obj/effect/landmark/start/medical_doctor, +/obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/storage) "bcm" = ( @@ -15838,6 +16849,12 @@ /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/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bcp" = ( @@ -15855,7 +16872,13 @@ /area/station/hallway/primary/central) "bcq" = ( /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/starboard) "bcr" = ( /obj/effect/spawner/random/trash/grille_or_waste, @@ -15863,6 +16886,7 @@ /area/station/maintenance/port/aft) "bcs" = ( /obj/machinery/firealarm/directional/north, +/obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bct" = ( @@ -15893,18 +16917,21 @@ /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bcy" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/red{ - 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/turf_decal/trimline/neutral/end, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/hallway/primary/central) "bcB" = ( /obj/structure/sign/warning/vacuum/external/directional/east, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) "bcE" = ( /obj/effect/decal/cleanable/dirt, @@ -15993,19 +17020,14 @@ /obj/item/stack/tile/iron/base, /turf/open/space, /area/space/nearstation) -"bcX" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "heads_meeting"; - name = "privacy shutters" - }, -/turf/open/floor/plating, -/area/station/command/meeting_room) "bcY" = ( /obj/item/hand_labeler, /obj/item/assembly/timer, /obj/structure/table, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bcZ" = ( /obj/structure/table/wood, @@ -16020,10 +17042,13 @@ /obj/structure/chair/comfy/black{ dir = 4 }, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 8 + }, /turf/open/floor/carpet, /area/station/command/meeting_room) "bdb" = ( -/turf/open/floor/iron/white/side, +/turf/open/floor/iron/white/corner, /area/station/hallway/primary/starboard) "bdc" = ( /obj/structure/extinguisher_cabinet/directional/south, @@ -16032,14 +17057,15 @@ /area/station/hallway/primary/starboard) "bdd" = ( /obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/wood, +/obj/effect/turf_decal/bot/left, +/turf/open/floor/iron/dark/smooth_large, /area/station/command/meeting_room) "bdf" = ( /obj/machinery/porta_turret/ai{ dir = 4 }, /obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "bdg" = ( /obj/structure/cable, @@ -16047,7 +17073,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) "bdh" = ( -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "bdi" = ( /obj/effect/spawner/random/entertainment/arcade{ @@ -16060,9 +17086,9 @@ /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{ - dir = 10 + dir = 8 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "bdn" = ( /obj/machinery/camera/directional/west{ @@ -16101,8 +17127,10 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable{ - pixel_x = -1 +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) @@ -16113,22 +17141,24 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable{ - pixel_x = -1 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"bdy" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/cable, +/obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable{ - pixel_x = -1 +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) +"bdy" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge blast door" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/command/bridge) "bdz" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -16140,8 +17170,7 @@ dir = 4 }, /obj/machinery/door/airlock/external{ - name = "Cargo Escape Airlock"; - safety_mode = 1 + name = "Escape Airlock" }, /turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) @@ -16182,6 +17211,7 @@ dir = 8 }, /obj/structure/cable, +/obj/effect/turf_decal/siding/thinplating_new/terracotta, /turf/open/floor/carpet, /area/station/command/meeting_room) "bdH" = ( @@ -16197,6 +17227,7 @@ /area/station/commons/toilet/locker) "bdK" = ( /obj/machinery/holopad, +/obj/effect/turf_decal/siding/thinplating_new/terracotta, /turf/open/floor/carpet, /area/station/command/meeting_room) "bdL" = ( @@ -16219,6 +17250,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/aft) "bdS" = ( @@ -16256,7 +17288,10 @@ "bdX" = ( /obj/item/storage/fancy/donut_box, /obj/structure/table, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bdY" = ( /obj/item/paper_bin{ @@ -16278,7 +17313,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "bee" = ( /obj/effect/turf_decal/bot_white, @@ -16306,17 +17341,25 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "bei" = ( /obj/machinery/light/directional/west, /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 + dir = 1 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) +"bej" = ( +/obj/machinery/door/airlock/external{ + name = "MiniSat Space Access Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/mapping_helpers/airlock/access/any/command/minisat, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "bek" = ( /obj/structure/chair, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16326,7 +17369,7 @@ /obj/effect/turf_decal/siding/thinplating_new/corner{ dir = 1 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "bem" = ( /obj/structure/cable, @@ -16354,6 +17397,12 @@ /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/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bep" = ( @@ -16434,10 +17483,17 @@ /turf/open/floor/iron, /area/station/cargo/warehouse) "bey" = ( -/turf/open/floor/iron/white/corner{ - dir = 8 +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/area/station/hallway/primary/starboard) +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/blue/filled/warning, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/aft) "bez" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -16471,7 +17527,13 @@ /area/station/cargo/sorting) "beG" = ( /obj/machinery/door/firedoor, -/turf/open/floor/iron/white/corner, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) "beH" = ( /obj/structure/table/glass, @@ -16486,6 +17548,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/machinery/light/directional/south, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) "beJ" = ( @@ -16496,17 +17559,21 @@ "beK" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ - name = "Port Docking Bay 4" + name = "Arrival Airlock" }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) "beL" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Port Docking Bay 3" +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/blue/filled/end{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/medical/medbay/aft) "beM" = ( /obj/structure/chair{ dir = 1 @@ -16576,9 +17643,7 @@ /turf/open/floor/plating, /area/station/maintenance/disposal) "beW" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/firealarm/directional/east, /obj/structure/table/reinforced, /obj/item/stack/wrapping_paper{ @@ -16600,12 +17665,16 @@ "beX" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "beZ" = ( -/obj/machinery/mineral/stacking_unit_console{ - machinedir = 8 - }, +/obj/machinery/mineral/stacking_unit_console, /turf/closed/wall, /area/station/maintenance/disposal) "bfb" = ( @@ -16614,6 +17683,7 @@ name = "Chapel Launcher Bay Door" }, /obj/effect/turf_decal/delivery, +/obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "bfg" = ( @@ -16637,6 +17707,13 @@ }, /turf/open/floor/plating, /area/station/cargo/sorting) +"bfm" = ( +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/large/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) "bfn" = ( /obj/machinery/disposal/delivery_chute{ dir = 8 @@ -16650,6 +17727,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bfp" = ( @@ -16664,14 +17744,18 @@ /obj/machinery/light/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bfr" = ( /obj/structure/noticeboard{ dir = 8; pixel_x = 27 }, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bfv" = ( /turf/closed/wall/r_wall, @@ -16722,7 +17806,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "bfE" = ( /obj/structure/table/wood, @@ -16769,8 +17853,15 @@ /area/station/medical/morgue) "bfN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/structure/chair/office{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/minisat/directional/north, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "bfO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -16812,10 +17903,6 @@ /turf/closed/wall/r_wall, /area/station/science/robotics/lab) "bfW" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -16838,15 +17925,14 @@ /obj/item/radio/intercom{ pixel_y = -29 }, -/obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/obj/structure/table, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bfZ" = ( /obj/structure/sign/warning/secure_area/directional/south, -/obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -16867,33 +17953,24 @@ /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bgb" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, /obj/item/paper_bin{ pixel_x = -3; pixel_y = 7 }, /obj/item/pen, /obj/structure/table/reinforced, -/turf/open/floor/iron, +/turf/open/floor/holofloor/plating, /area/station/hallway/primary/starboard) "bgc" = ( /turf/closed/wall/r_wall, /area/station/science/lab) "bgd" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/structure/closet/firecloset, /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/corner, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "bge" = ( /obj/effect/decal/cleanable/dirt, @@ -16907,7 +17984,6 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/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, @@ -16954,7 +18030,11 @@ "bgp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron/white/diagonal, /area/station/science/research) "bgr" = ( /obj/machinery/door/airlock{ @@ -16975,11 +18055,16 @@ req_access = list("cargo") }, /obj/machinery/light/directional/north, +/obj/effect/turf_decal/trimline/brown/filled/shrink_cw{ + dir = 1 + }, /turf/open/floor/iron, /area/station/cargo/storage) "bgz" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/siding/thinplating_new/corner, +/obj/effect/turf_decal/trimline/brown/filled/corner, /turf/open/floor/iron, /area/station/cargo/office) "bgB" = ( @@ -17010,6 +18095,8 @@ "bgE" = ( /obj/machinery/airalarm/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/station/cargo/sorting) "bgF" = ( @@ -17042,22 +18129,30 @@ /obj/machinery/computer/slot_machine, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bgJ" = ( /obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bgL" = ( /obj/machinery/computer/security/telescreen/entertainment{ pixel_y = -32 }, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bgM" = ( /obj/machinery/vending/coffee, /obj/machinery/light/directional/east, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bgP" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, @@ -17105,7 +18200,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "bgX" = ( /obj/structure/table/wood, @@ -17121,15 +18216,24 @@ /area/station/command/heads_quarters/captain) "bgY" = ( /obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "bgZ" = ( /obj/structure/table, -/obj/item/hand_labeler, /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, +/obj/item/construction/plumbing{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/construction/plumbing{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/hand_labeler, /turf/open/floor/iron/white, /area/station/medical/pharmacy) "bhb" = ( @@ -17260,7 +18364,7 @@ /area/station/command/heads_quarters/cmo) "bhr" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/light/cold/directional/west, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) "bhs" = ( @@ -17296,27 +18400,15 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, /area/station/science/robotics/lab) "bhx" = ( -/obj/machinery/requests_console{ - department = "Robotics"; - name = "Robotics RC"; - pixel_y = 30 - }, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/machinery/light/directional/north, /obj/machinery/rnd/production/circuit_imprinter/department/science, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, /area/station/science/robotics/lab) "bhy" = ( /obj/machinery/door/poddoor/shutters/preopen{ @@ -17354,7 +18446,9 @@ /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/science/general, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/iron/white/diagonal, /area/station/science/research) "bhC" = ( /obj/machinery/door/poddoor/shutters/preopen{ @@ -17388,8 +18482,6 @@ /obj/machinery/cell_charger{ pixel_y = 5 }, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, /turf/open/floor/iron/checker, /area/station/science/lab) "bhF" = ( @@ -17470,7 +18562,11 @@ /area/station/maintenance/port) "bhU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron/white/diagonal, /area/station/science/research) "bhV" = ( /obj/structure/disposalpipe/segment{ @@ -17479,7 +18575,7 @@ /obj/effect/turf_decal/siding/purple{ dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/science/lab) "bhW" = ( /obj/machinery/door/poddoor/shutters{ @@ -17634,7 +18730,10 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) "biv" = ( -/obj/effect/turf_decal/tile/brown{ +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new/corner{ dir = 8 }, /turf/open/floor/iron, @@ -17679,7 +18778,7 @@ dir = 8 }, /obj/effect/landmark/event_spawn, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "biD" = ( /obj/machinery/netpod, @@ -17700,7 +18799,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/mail_sorting/supply/cargo_bay, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/office) "biG" = ( /obj/machinery/mech_bay_recharge_port{ @@ -17739,12 +18838,6 @@ /turf/open/floor/iron/white, /area/station/science/robotics/lab) "biN" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/structure/table, /obj/item/mod/core/standard{ pixel_x = -4 @@ -17755,19 +18848,16 @@ /obj/item/mod/core/standard{ pixel_y = 4 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/red/diagonal_edge, +/turf/open/floor/iron/white/diagonal, /area/station/science/robotics/lab) "biO" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Robotics Lab"; - network = list("ss13","rd") - }, /obj/machinery/button/door{ - id = "genetics_shutters"; + id = "robotics"; name = "Shutters Control Button"; pixel_x = 6; pixel_y = 24; - req_access_txt = "29" + req_access = list("robotics") }, /obj/structure/table, /obj/item/book/manual/wiki/robotics_cyborgs{ @@ -17778,34 +18868,35 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"biP" = ( -/obj/structure/filingcabinet/chestdrawer, /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/iron/white, /area/station/science/robotics/lab) +"biP" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/requests_console/auto_name/directional/east, +/obj/effect/mapping_helpers/requests_console/ore_update, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/turf_decal/tile/red/diagonal_edge, +/turf/open/floor/iron/white/diagonal, +/area/station/science/robotics/lab) "biQ" = ( /obj/structure/chair/stool, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/red/diagonal_edge, +/turf/open/floor/iron/white/diagonal, /area/station/science/robotics/lab) "biR" = ( /obj/structure/closet/emcloset, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/diagonal, /area/station/science/research) "biS" = ( /obj/machinery/camera/directional/north{ @@ -17818,12 +18909,21 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding{ + dir = 8 + }, +/turf/open/floor/iron/white/small, /area/station/science/research) "biT" = ( /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/office) "biU" = ( @@ -17834,6 +18934,8 @@ /obj/effect/turf_decal/tile/purple{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/checker, /area/station/science/lab) "biV" = ( @@ -17853,7 +18955,7 @@ /obj/effect/turf_decal/siding/purple{ dir = 5 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/science/lab) "biX" = ( /obj/machinery/camera/directional/north{ @@ -17865,8 +18967,7 @@ id = "rnd"; name = "Shutters Control Button"; pixel_x = -6; - pixel_y = 24; - req_access_txt = "47" + pixel_y = 24 }, /obj/effect/turf_decal/siding/purple/corner{ dir = 4 @@ -17877,7 +18978,7 @@ /obj/effect/turf_decal/siding/purple/corner{ dir = 1 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/science/lab) "biY" = ( /obj/structure/disposalpipe/segment, @@ -17982,7 +19083,7 @@ pixel_y = 30 }, /obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "bjn" = ( /obj/structure/table, @@ -17991,16 +19092,15 @@ /obj/item/storage/box/shipping{ pixel_x = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "bjo" = ( /obj/machinery/camera/directional/north{ c_tag = "Cargo Bay North" }, /obj/machinery/vending/wardrobe/cargo_wardrobe, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "bjp" = ( /obj/structure/table, @@ -18008,7 +19108,7 @@ /obj/item/radio/intercom{ pixel_y = 20 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "bjq" = ( /obj/effect/turf_decal/trimline/green/filled/line{ @@ -18029,7 +19129,7 @@ /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/supply/shipping, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/sorting) "bjt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18047,6 +19147,12 @@ /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/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bjz" = ( @@ -18067,7 +19173,10 @@ /area/station/maintenance/central) "bjE" = ( /obj/machinery/airalarm/directional/west, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "bjF" = ( /obj/machinery/newscaster{ @@ -18199,17 +19308,19 @@ /area/station/medical/medbay/lobby) "bjZ" = ( /obj/structure/closet/firecloset, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/diagonal, /area/station/science/research) "bka" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/purple{ dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/science/lab) "bkb" = ( /obj/structure/cable, @@ -18252,12 +19363,24 @@ "bkj" = ( /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/siding/thinplating_new/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) "bkn" = ( /obj/machinery/light/directional/north, /obj/machinery/firealarm/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 1 + }, /turf/open/floor/iron, /area/station/cargo/storage) "bko" = ( @@ -18266,15 +19389,18 @@ pixel_x = 32 }, /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/red/diagonal_edge, +/turf/open/floor/iron/white/diagonal, /area/station/science/robotics/lab) "bkq" = ( /obj/structure/closet/firecloset, /obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/diagonal, /area/station/science/research) "bkr" = ( /obj/structure/sign/warning/secure_area/directional/east, @@ -18282,7 +19408,10 @@ dir = 4 }, /obj/machinery/shower/directional/west, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding{ + dir = 8 + }, +/turf/open/floor/iron/white/small, /area/station/science/research) "bks" = ( /obj/machinery/requests_console{ @@ -18295,6 +19424,8 @@ /obj/machinery/computer/rdconsole{ dir = 4 }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/checker, /area/station/science/lab) "bkt" = ( @@ -18310,7 +19441,7 @@ /obj/effect/turf_decal/siding/purple{ dir = 4 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/science/lab) "bkw" = ( /obj/structure/disposalpipe/segment, @@ -18342,7 +19473,7 @@ "bkA" = ( /obj/effect/landmark/event_spawn, /mob/living/simple_animal/bot/secbot/beepsky/armsky, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "bkB" = ( /obj/machinery/button/door{ @@ -18350,7 +19481,7 @@ name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; - req_access_txt = "12" + req_access = list("maint_tunnels") }, /obj/machinery/button/massdriver{ id = "trash"; @@ -18380,8 +19511,7 @@ /area/station/maintenance/port) "bkG" = ( /obj/machinery/door/airlock/maintenance{ - name = "Cargo Bay Maintenance"; - req_access_txt = "31" + name = "Cargo Bay Maintenance" }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18409,6 +19539,9 @@ dir = 8 }, /obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bkT" = ( @@ -18416,6 +19549,9 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, /turf/open/floor/plating, /area/station/maintenance/central) "bkW" = ( @@ -18460,6 +19596,9 @@ "blf" = ( /obj/machinery/light/directional/north, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bli" = ( @@ -18542,11 +19681,17 @@ /obj/machinery/light_switch/directional/west, /obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/machinery/camera/directional/west, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "blz" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "blA" = ( @@ -18562,7 +19707,7 @@ /area/station/science/robotics/lab) "blC" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 5 }, /turf/open/floor/iron, /area/station/science/robotics/lab) @@ -18570,14 +19715,14 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/table, /obj/item/healthanalyzer, /obj/item/healthanalyzer, /obj/item/healthanalyzer, /obj/item/radio/intercom{ pixel_x = 29 }, -/turf/open/floor/iron, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark, /area/station/science/robotics/lab) "blF" = ( /obj/effect/turf_decal/stripes/line{ @@ -18597,10 +19742,15 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding{ + dir = 8 + }, +/turf/open/floor/iron/white/small, /area/station/science/research) "blI" = ( /obj/machinery/rnd/production/protolathe/department/science, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/checker, /area/station/science/lab) "blJ" = ( @@ -18616,20 +19766,19 @@ /obj/effect/turf_decal/siding/purple{ dir = 4 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/science/lab) "blM" = ( /obj/effect/turf_decal/bot, /obj/effect/landmark/start/roboticist, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/science/robotics/lab) "blO" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - pixel_x = -1 - }, +/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/tile/blue/half/contrasted, @@ -18679,12 +19828,16 @@ /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, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "blU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "blV" = ( /obj/machinery/light/small/directional/south, @@ -18702,11 +19855,14 @@ name = "Research Division Access" }, /obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/mapping_helpers/airlock/unres, +/turf/open/floor/iron/white/diagonal, /area/station/science/research) "blY" = ( -/obj/effect/turf_decal/stripes/corner, /obj/structure/closet/emcloset, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron, /area/station/cargo/storage) "bma" = ( @@ -18746,14 +19902,14 @@ /turf/open/floor/iron/dark, /area/station/science/genetics) "bmf" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 }, -/obj/effect/turf_decal/tile/brown{ +/obj/effect/turf_decal/siding/thinplating_new{ dir = 8 }, -/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/office) "bmg" = ( @@ -18763,7 +19919,14 @@ /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/supply/general, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/brown/full, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/textured_large, /area/station/cargo/storage) "bmh" = ( /obj/structure/cable, @@ -18793,6 +19956,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bmo" = ( @@ -18832,13 +19998,13 @@ /turf/open/floor/wood, /area/station/command/heads_quarters/hop) "bmt" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 +/obj/structure/cable, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 }, -/obj/effect/turf_decal/tile/brown{ +/obj/effect/turf_decal/siding/thinplating_new{ dir = 8 }, -/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/office) "bmz" = ( @@ -18903,7 +20069,14 @@ }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/supply/general, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/brown/full, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/textured_large, /area/station/cargo/storage) "bmI" = ( /obj/structure/table/glass, @@ -18957,6 +20130,12 @@ pixel_y = -2 }, /obj/structure/table, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/cargo/office) "bmS" = ( @@ -18971,6 +20150,13 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"bmY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/exodrone_launcher, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "bnb" = ( /obj/machinery/recharge_station, /turf/open/floor/iron, @@ -19000,7 +20186,6 @@ /turf/open/floor/iron, /area/station/science/robotics/lab) "bnj" = ( -/obj/structure/table, /obj/item/stack/sheet/plasteel{ amount = 10 }, @@ -19012,7 +20197,8 @@ /obj/item/assembly/flash/handheld, /obj/item/assembly/flash/handheld, /obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark, /area/station/science/robotics/lab) "bnk" = ( /obj/structure/disposalpipe/segment, @@ -19021,27 +20207,34 @@ /obj/effect/turf_decal/siding/purple/corner{ dir = 1 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/turf/open/floor/iron/white/diagonal, /area/station/science/lab) "bnl" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/purple{ dir = 4 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/turf/open/floor/iron/white/diagonal, /area/station/science/lab) "bno" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 1 }, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) "bnp" = ( /obj/effect/turf_decal/siding/thinplating_new{ - dir = 5 + dir = 4 }, -/turf/open/floor/iron/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "bnq" = ( /obj/machinery/computer/scan_consolenew{ @@ -19060,17 +20253,18 @@ /turf/open/floor/iron/white, /area/station/medical/storage) "bnv" = ( +/obj/structure/fans/tiny, /obj/machinery/door/poddoor{ id = "trash"; - name = "disposal bay door" + name = "Disposal bay door" }, -/obj/structure/fans/tiny, /turf/open/floor/plating, /area/station/maintenance/disposal) "bnw" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/tile/brown/opposingcorners, /turf/open/floor/iron, /area/station/cargo/storage) "bny" = ( @@ -19080,7 +20274,7 @@ /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, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/office) "bnz" = ( /obj/effect/landmark/start/cargo_technician, @@ -19094,12 +20288,22 @@ dir = 10 }, /obj/structure/cable, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/cargo/office) "bnC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron, /area/station/hallway/primary/fore) "bnG" = ( @@ -19154,15 +20358,13 @@ id = "hop"; name = "Privacy Shutters Control"; pixel_x = 6; - pixel_y = 25; - req_access_txt = "57" + pixel_y = 25 }, /obj/machinery/button/door{ id = "hopqueue"; name = "Queue Shutters Control"; pixel_x = -4; - pixel_y = 25; - req_access_txt = "57" + pixel_y = 25 }, /obj/machinery/pdapainter, /obj/effect/turf_decal/tile/blue{ @@ -19248,7 +20450,6 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /turf/open/floor/plating, /area/station/maintenance/aft) "bod" = ( @@ -19298,6 +20499,7 @@ /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/trimline/blue/filled, /turf/open/floor/iron/dark, /area/station/medical/cryo) "bor" = ( @@ -19311,13 +20513,17 @@ /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/siding/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "bou" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/science/robotics/lab) "bov" = ( -/obj/structure/table, /obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 @@ -19339,31 +20545,49 @@ /obj/item/radio/headset/headset_sci{ pixel_x = -3 }, -/turf/open/floor/iron, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark, /area/station/science/robotics/lab) "box" = ( /turf/closed/wall, /area/station/science/robotics/lab) "boy" = ( /obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, /obj/effect/turf_decal/bot, /obj/structure/noticeboard{ pixel_y = 32 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard containment door" + }, +/turf/open/floor/iron/herringbone, /area/station/science/research) "boz" = ( /obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/caution/stand_clear/red, /obj/machinery/door/poddoor/preopen{ id = "Biohazard"; - name = "biohazard containment door" + name = "Biohazard containment door" }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/science/research) "boA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -19372,7 +20596,9 @@ /obj/effect/turf_decal/siding/purple{ dir = 1 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/turf_decal/siding/yellow, +/turf/open/floor/iron/white/diagonal, /area/station/science/lab) "boB" = ( /turf/closed/wall, @@ -19426,9 +20652,7 @@ "boK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, /obj/machinery/light/directional/west, /turf/open/floor/plating, @@ -19442,7 +20666,12 @@ /turf/open/floor/iron/white/corner, /area/station/science/research) "boN" = ( -/obj/effect/turf_decal/tile/brown{ +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/corner{ dir = 1 }, /turf/open/floor/iron, @@ -19480,7 +20709,7 @@ /obj/effect/turf_decal/loading_area{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) "boY" = ( /obj/structure/disposalpipe/segment{ @@ -19524,7 +20753,7 @@ dir = 4 }, /obj/effect/turf_decal/delivery, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) "bpb" = ( /obj/structure/disposalpipe/segment{ @@ -19566,7 +20795,6 @@ pixel_x = -4; pixel_y = 2 }, -/obj/item/clothing/mask/cigarette/cigar, /obj/item/reagent_containers/cup/glass/flask/gold, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) @@ -19586,7 +20814,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/turf/open/floor/iron/white/diagonal, /area/station/science/lab) "bpq" = ( /obj/effect/spawner/structure/window/reinforced, @@ -19601,6 +20830,7 @@ dir = 10; id = "QMLoad2" }, +/obj/machinery/light/floor, /turf/open/floor/iron, /area/station/cargo/storage) "bpt" = ( @@ -19616,6 +20846,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/aft) "bpv" = ( @@ -19628,6 +20864,9 @@ dir = 1 }, /obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/blue/filled/end{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) "bpz" = ( @@ -19640,6 +20879,8 @@ /obj/machinery/computer/cargo{ dir = 1 }, +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/station/cargo/office) "bpD" = ( @@ -19717,6 +20958,10 @@ dir = 9 }, /obj/structure/cable, +/obj/effect/turf_decal/siding{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "bpS" = ( @@ -19738,11 +20983,9 @@ /turf/open/floor/iron, /area/station/science/robotics/lab) "bpU" = ( -/obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark, /area/station/science/robotics/lab) "bpW" = ( /obj/machinery/door/poddoor/shutters/preopen{ @@ -19766,8 +21009,7 @@ /area/station/science/research) "bqa" = ( /obj/machinery/door/window/right/directional/east{ - name = "Robotics Surgery"; - req_access_txt = "29" + name = "Robotics Surgery" }, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) @@ -19842,12 +21084,12 @@ "bqo" = ( /obj/machinery/light_switch/directional/west, /obj/machinery/autolathe, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/brown/opposingcorners, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark, /area/station/cargo/office) "bqp" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/table/reinforced, /obj/item/dest_tagger, /obj/item/dest_tagger, @@ -19867,11 +21109,18 @@ /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/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/security/processing) "bqv" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/east, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, /area/station/hallway/primary/central) "bqw" = ( /obj/effect/turf_decal/tile/red{ @@ -19893,6 +21142,9 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "bqz" = ( +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 6 + }, /turf/open/floor/carpet, /area/station/command/meeting_room) "bqA" = ( @@ -19941,7 +21193,11 @@ "bqL" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "bqO" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -19950,6 +21206,9 @@ /obj/effect/turf_decal/trimline/yellow/filled/end, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 4 + }, /turf/open/floor/iron/textured, /area/station/medical/chem_storage) "bqP" = ( @@ -19992,12 +21251,11 @@ /obj/structure/chair/sofa/corp/left{ dir = 1 }, +/obj/machinery/light/directional/south, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "bqV" = ( /obj/structure/sign/warning/chem_diamond/directional/west, -/obj/machinery/light/small/directional/west, -/obj/machinery/light/directional/south, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 }, @@ -20037,8 +21295,12 @@ name = "Shutters Control Button"; pixel_x = 24; pixel_y = -24; - req_access_txt = "29" + req_access = list("robotics") }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/science/robotics/lab) "brs" = ( @@ -20048,7 +21310,7 @@ dir = 8; icon_state = "left"; name = "Robotics Desk"; - req_access_txt = "29" + req_access = list("robotics") }, /obj/machinery/door/poddoor/shutters/preopen{ id = "robotics2"; @@ -20061,6 +21323,7 @@ "bru" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/north, +/obj/item/food/grown/banana/bombanana, /turf/open/floor/grass, /area/station/science/genetics) "brv" = ( @@ -20068,7 +21331,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/turf_decal/siding/purple, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/trimline/purple/filled/line, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "brw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -20094,6 +21358,12 @@ "brB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "brE" = ( @@ -20132,6 +21402,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/effect/turf_decal/tile/brown/opposingcorners, /turf/open/floor/iron, /area/station/cargo/storage) "brM" = ( @@ -20155,14 +21426,21 @@ c_tag = "Cargo Office" }, /obj/machinery/rnd/production/techfab/department/cargo, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/brown/opposingcorners, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/iron/dark, /area/station/cargo/office) "brQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/purple{ dir = 1 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 8 + }, +/turf/open/floor/iron/white/diagonal, /area/station/science/lab) "brU" = ( /obj/structure/sign/warning/electric_shock/directional/south, @@ -20197,20 +21475,21 @@ /turf/closed/wall, /area/station/command/teleporter) "bsi" = ( -/obj/structure/table, /obj/item/hand_tele, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/light_switch/directional/north, +/obj/structure/table/reinforced, /turf/open/floor/iron/dark/smooth_large, /area/station/command/teleporter) "bsj" = ( /obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/table, /obj/item/beacon, /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/station/command/teleporter) "bsk" = ( @@ -20236,21 +21515,21 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/command/teleporter) "bsn" = ( /obj/machinery/camera/directional/north{ c_tag = "Teleporter" }, /obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/command/teleporter) "bso" = ( /obj/machinery/light_switch/directional/east, /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, +/turf/open/floor/iron/small, /area/station/command/teleporter) "bsq" = ( /obj/structure/closet/wardrobe/miner, @@ -20328,6 +21607,10 @@ }, /obj/structure/cable, /obj/machinery/mechpad, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/siding{ + dir = 8 + }, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "bsT" = ( @@ -20368,13 +21651,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/research) -"bta" = ( -/obj/structure/disposalpipe/segment, -/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, -/area/station/maintenance/starboard) "btc" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -20468,6 +21744,7 @@ /obj/machinery/computer/cargo{ dir = 4 }, +/obj/effect/turf_decal/tile/brown/opposingcorners, /turf/open/floor/iron, /area/station/cargo/storage) "bts" = ( @@ -20478,7 +21755,8 @@ /obj/structure/table, /obj/machinery/firealarm/directional/west, /obj/item/storage/medkit/regular, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/brown/opposingcorners, +/turf/open/floor/iron/dark, /area/station/cargo/office) "btu" = ( /turf/open/floor/iron, @@ -20498,6 +21776,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "btA" = ( @@ -20561,6 +21842,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/table/reinforced, /turf/open/floor/iron/dark/smooth_large, /area/station/command/teleporter) "btJ" = ( @@ -20581,7 +21863,7 @@ "btL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/command/teleporter) "btM" = ( /obj/machinery/door/firedoor, @@ -20593,7 +21875,7 @@ /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/teleporter, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/command/teleporter) "btN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, @@ -20668,6 +21950,12 @@ /obj/effect/turf_decal/tile/brown, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/cargo/office) "bud" = ( @@ -20729,6 +22017,7 @@ /obj/effect/landmark/start/hangover, /obj/effect/landmark/start/scientist, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner, /turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "bux" = ( @@ -20759,6 +22048,12 @@ id = "QMLoad" }, /obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/cargo/storage) "buD" = ( @@ -20771,15 +22066,17 @@ home_destination = "QM #1"; suffix = "#1" }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/storage) "buE" = ( /obj/structure/table, /obj/machinery/airalarm/directional/west, /obj/item/multitool, /obj/item/folder/yellow, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/brown/opposingcorners, +/turf/open/floor/iron/dark, /area/station/cargo/office) "buF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -20813,7 +22110,7 @@ /obj/machinery/light/directional/east, /obj/effect/turf_decal/bot, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) "buL" = ( /obj/structure/disposalpipe/segment{ @@ -20859,8 +22156,11 @@ /turf/open/floor/iron, /area/station/command/heads_quarters/hop) "buT" = ( -/obj/machinery/hydroponics/constructable, -/obj/machinery/duct, +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "buU" = ( @@ -20876,7 +22176,22 @@ /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, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/caution/stand_clear/red{ + dir = 4 + }, +/turf/open/floor/iron/herringbone, /area/station/science/research) "buV" = ( /obj/effect/turf_decal/stripes/line{ @@ -20891,20 +22206,26 @@ "buX" = ( /obj/machinery/power/shieldwallgen, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark, +/turf/open/floor/iron/dark/small, /area/station/command/teleporter) "buY" = ( /obj/machinery/power/shieldwallgen, /obj/structure/window/reinforced/spawner/directional/west, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 9 + }, +/turf/open/floor/iron/dark/small, /area/station/command/teleporter) "buZ" = ( /obj/structure/closet/crate, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 6 + }, +/turf/open/floor/iron/dark/small, /area/station/command/teleporter) "bva" = ( -/obj/structure/sign/warning/secure_area/directional/west, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -21005,6 +22326,9 @@ /obj/item/radio/intercom{ pixel_y = -35 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "bvI" = ( @@ -21029,6 +22353,7 @@ pixel_y = 10 }, /obj/item/radio/off, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/security/checkpoint/supply) "bvQ" = ( @@ -21073,6 +22398,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/light/directional/south, /turf/open/floor/plating, /area/station/cargo/storage) "bvX" = ( @@ -21091,8 +22417,8 @@ home_destination = "QM #2"; suffix = "#2" }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/storage) "bvZ" = ( /obj/structure/table, @@ -21100,7 +22426,8 @@ fax_name = "Cargo Office"; name = "Cargo Office Fax Machine" }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/brown/opposingcorners, +/turf/open/floor/iron/dark, /area/station/cargo/office) "bwa" = ( /obj/structure/disposalpipe/segment{ @@ -21109,7 +22436,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half{ + dir = 1 + }, +/turf/open/floor/iron/half, /area/station/hallway/primary/central) "bwd" = ( /obj/effect/spawner/structure/window/reinforced, @@ -21126,6 +22459,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bwh" = ( @@ -21133,7 +22469,13 @@ dir = 1 }, /obj/structure/sign/warning/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half{ + dir = 1 + }, +/turf/open/floor/iron/half, /area/station/hallway/primary/central) "bwi" = ( /obj/item/radio/intercom{ @@ -21157,23 +22499,23 @@ /area/station/command/heads_quarters/hop) "bwq" = ( /obj/machinery/teleport/station, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/smooth_half, /area/station/command/teleporter) "bwr" = ( /obj/machinery/computer/teleporter{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/smooth_half, /area/station/command/teleporter) "bws" = ( /obj/structure/rack, /obj/item/tank/internals/oxygen, /obj/item/clothing/mask/gas, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/smooth_half, /area/station/command/teleporter) "bwt" = ( /obj/machinery/teleport/hub, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/smooth_half, /area/station/command/teleporter) "bwu" = ( /obj/structure/disposalpipe/segment, @@ -21187,6 +22529,12 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bww" = ( @@ -21214,6 +22562,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bwE" = ( @@ -21259,6 +22611,9 @@ pixel_x = 7; pixel_y = 28 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, /turf/open/floor/iron, /area/station/security/checkpoint/science) "bwR" = ( @@ -21270,7 +22625,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/command/heads_quarters/rd) "bwS" = ( /obj/structure/window/spawner/directional/west, @@ -21281,6 +22636,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/aft) "bwU" = ( @@ -21388,7 +22747,10 @@ /area/station/science/ordnance) "bxk" = ( /obj/effect/landmark/event_spawn, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 5 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "bxl" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater, @@ -21421,6 +22783,9 @@ dir = 4 }, /obj/effect/landmark/start/depsec/science, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) "bxw" = ( @@ -21430,6 +22795,9 @@ /obj/effect/turf_decal/siding/thinplating_new{ dir = 6 }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, /turf/open/floor/iron, /area/station/cargo/storage) "bxy" = ( @@ -21474,6 +22842,7 @@ /obj/machinery/camera/directional/east{ c_tag = "Central Hallway South-East" }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "bxM" = ( @@ -21483,7 +22852,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "bxP" = ( /obj/effect/spawner/structure/window/reinforced, @@ -21508,29 +22877,17 @@ }, /area/station/science/explab) "byc" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) "byd" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) "bye" = ( /turf/closed/wall, @@ -21541,14 +22898,8 @@ "byg" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) "byh" = ( /obj/machinery/door/firedoor, @@ -21557,6 +22908,8 @@ }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/science/rd, +/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/server) "byi" = ( @@ -21577,28 +22930,36 @@ /turf/open/floor/plating, /area/station/security/checkpoint/science) "byl" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 +/obj/structure/table/wood/fancy/black, +/obj/item/storage/fancy/cigarettes/cigars/cohiba{ + pixel_x = -2; + pixel_y = 13 }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 +/obj/item/reagent_containers/cup/glass/bottle/champagne{ + pixel_x = -4; + pixel_y = 8 }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/item/cigarette/cigar{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/cigarette/cigar{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) "byn" = ( /obj/structure/closet/secure_closet/quartermaster, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, /obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/effect/turf_decal/tile/neutral/full, +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) "byp" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -21609,7 +22970,7 @@ "byq" = ( /obj/machinery/vending/wardrobe/science_wardrobe, /obj/effect/turf_decal/tile/purple/diagonal_edge, -/turf/open/floor/iron/dark/smooth_large, +/turf/open/floor/iron/dark/diagonal, /area/station/science/breakroom) "byr" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -21635,17 +22996,23 @@ /area/station/maintenance/starboard) "byz" = ( /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 = 5 + }, /obj/effect/turf_decal/loading_area{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "byA" = ( /obj/machinery/camera/directional/south{ c_tag = "Cargo Bay South" }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "byB" = ( @@ -21654,8 +23021,8 @@ location = "QM #4" }, /obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/storage) "byC" = ( /obj/structure/disposalpipe/segment, @@ -21727,13 +23094,16 @@ }, /obj/structure/table, /obj/item/book/manual/wiki/security_space_law, -/obj/machinery/airalarm/directional/east, +/obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/station/security/checkpoint/supply) "byN" = ( /obj/machinery/newscaster{ pixel_y = 32 }, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "byO" = ( @@ -21773,6 +23143,9 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "byR" = ( @@ -21802,17 +23175,18 @@ /area/station/security/checkpoint/supply) "byU" = ( /obj/machinery/light/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/herringbone, /area/station/hallway/primary/central) "byV" = ( /obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/herringbone, /area/station/hallway/primary/central) "byW" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "byY" = ( @@ -21885,6 +23259,8 @@ "bzv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/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/server) "bzw" = ( @@ -21909,6 +23285,9 @@ }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/science/server) "bzz" = ( @@ -21955,6 +23334,9 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) "bzE" = ( @@ -21967,11 +23349,7 @@ /turf/open/floor/iron, /area/station/cargo/miningdock) "bzG" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Central Access" - }, -/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "bzH" = ( @@ -21999,9 +23377,9 @@ /turf/open/floor/iron/dark, /area/station/science/ordnance) "bzM" = ( -/obj/machinery/light/directional/south, /obj/item/kirbyplants/random, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/floor/iron/checker, /area/station/science/lab) "bzN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -22017,7 +23395,8 @@ /obj/effect/turf_decal/siding/purple, /obj/effect/landmark/start/geneticist, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/trimline/purple/filled/line, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "bzP" = ( /turf/closed/wall, @@ -22028,9 +23407,7 @@ "bzT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "bzU" = ( @@ -22038,9 +23415,11 @@ /area/station/command/heads_quarters/captain) "bzZ" = ( /obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/white/side{ - dir = 9 +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 }, +/turf/open/floor/iron/herringbone, /area/station/science/research) "bAa" = ( /obj/machinery/door/firedoor/heavy, @@ -22048,13 +23427,18 @@ /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, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/herringbone, /area/station/science/research) "bAb" = ( /obj/structure/chair/office{ dir = 8 }, /obj/effect/landmark/start/shaft_miner, +/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningdock) "bAd" = ( @@ -22062,10 +23446,6 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/item/radio/intercom{ - dir = 4; - pixel_x = 27 - }, /obj/machinery/computer/records/security{ dir = 8 }, @@ -22086,6 +23466,13 @@ /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/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/corner, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bAg" = ( @@ -22098,6 +23485,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bAh" = ( @@ -22108,10 +23499,17 @@ /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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bAi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bAj" = ( @@ -22172,6 +23570,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/carpet/blue, /area/station/medical/psychology) +"bAr" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 6 + }, +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/herringbone, +/area/station/hallway/primary/central) "bAu" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -22203,6 +23609,7 @@ /area/station/science/server) "bAA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/science/server) "bAB" = ( @@ -22220,6 +23627,9 @@ "bAD" = ( /obj/structure/chair/office/light, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/science/server) "bAE" = ( @@ -22246,11 +23656,14 @@ /area/station/security/checkpoint/science) "bAH" = ( /obj/structure/table, -/obj/item/book/manual/wiki/security_space_law, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 4 }, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) "bAI" = ( @@ -22300,25 +23713,12 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "bAS" = ( -/obj/machinery/requests_console{ - department = "Cargo Bay"; - pixel_x = -30 - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, /obj/machinery/modular_computer/preset/id{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) "bAT" = ( /obj/machinery/vending/wardrobe/jani_wardrobe, @@ -22383,6 +23783,7 @@ /area/station/hallway/primary/central) "bBj" = ( /obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "bBk" = ( @@ -22390,7 +23791,13 @@ /obj/machinery/camera/directional/south{ c_tag = "Central Primary Hallway South-West" }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "bBn" = ( /obj/effect/turf_decal/stripes/line, @@ -22399,6 +23806,10 @@ }, /obj/machinery/door/firedoor, /obj/structure/cable, +/obj/effect/turf_decal/trimline/blue/filled/warning, +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) "bBq" = ( @@ -22428,6 +23839,10 @@ /obj/machinery/status_display/evac{ pixel_y = -32 }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bBt" = ( @@ -22437,7 +23852,7 @@ /obj/machinery/camera/directional/south{ c_tag = "Central Primary Hallway South" }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/herringbone, /area/station/hallway/primary/central) "bBu" = ( /obj/structure/disposalpipe/segment{ @@ -22445,13 +23860,17 @@ }, /obj/machinery/light/directional/south, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/herringbone, /area/station/hallway/primary/central) "bBv" = ( /obj/structure/disposalpipe/sorting/mail/flip{ dir = 8 }, /obj/effect/mapping_helpers/mail_sorting/service/janitor_closet, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bBx" = ( @@ -22459,13 +23878,20 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "bBy" = ( /obj/machinery/light/directional/south, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "bBz" = ( @@ -22479,12 +23905,14 @@ dir = 8 }, /obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "bBB" = ( /obj/structure/disposalpipe/junction{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "bBD" = ( @@ -22518,7 +23946,7 @@ }, /obj/machinery/light/small/directional/north, /obj/structure/bed/medical/anchored{ - dir = 8 + dir = 4 }, /turf/open/floor/iron/dark, /area/station/medical/virology) @@ -22573,10 +24001,6 @@ /turf/open/floor/iron, /area/station/security/checkpoint/science) "bBZ" = ( -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/item/radio/off, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -22591,14 +24015,13 @@ }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, /turf/open/floor/iron, /area/station/security/checkpoint/science) "bCb" = ( /obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, /obj/item/pen, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -22607,6 +24030,11 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/radio/off, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) "bCc" = ( @@ -22623,6 +24051,9 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/science) "bCd" = ( @@ -22633,9 +24064,6 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"bCf" = ( -/turf/closed/wall, -/area/station/science/ordnance) "bCg" = ( /obj/structure/table/reinforced, /obj/item/experi_scanner, @@ -22662,6 +24090,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/tank_dispenser, /obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/science/ordnance) "bCj" = ( @@ -22680,6 +24109,7 @@ }, /obj/item/assembly/timer, /obj/effect/turf_decal/siding/purple, +/obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/station/science/ordnance) "bCk" = ( @@ -22724,6 +24154,7 @@ /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port/aft) "bCt" = ( @@ -22739,10 +24170,11 @@ /obj/machinery/door/airlock/public/glass{ name = "Central Access" }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "bCw" = ( /obj/structure/disposalpipe/segment{ @@ -22769,6 +24201,7 @@ /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/aft) "bCA" = ( @@ -22806,6 +24239,9 @@ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, /turf/open/floor/iron, /area/station/engineering/atmos) "bCL" = ( @@ -22827,10 +24263,10 @@ /turf/open/floor/iron/white, /area/station/medical/cryo) "bCV" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ +/obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "bCX" = ( /obj/effect/decal/cleanable/oil, @@ -22866,13 +24302,19 @@ "bDd" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/white/side{ - dir = 5 +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 }, +/turf/open/floor/iron/herringbone, /area/station/science/research) "bDe" = ( /obj/effect/landmark/event_spawn, /obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "bDf" = ( @@ -22893,19 +24335,18 @@ /turf/open/floor/plating, /area/station/maintenance/starboard) "bDi" = ( -/obj/structure/sign/warning/docking/directional/north, -/turf/open/space, -/area/space) +/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, +/area/station/security/prison) "bDk" = ( /obj/structure/table, /obj/item/folder/yellow, /obj/item/pen, -/obj/machinery/requests_console{ - department = "Mining"; - pixel_x = -30 - }, /obj/machinery/light/directional/west, /obj/effect/turf_decal/bot, +/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningdock) "bDl" = ( @@ -22994,10 +24435,12 @@ /turf/open/floor/plating, /area/station/engineering/storage/tech) "bDG" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, -/area/station/hallway/primary/aft) +/area/station/hallway/primary/central) "bDH" = ( /obj/structure/closet/l3closet/janitor, /obj/machinery/airalarm/directional/north, @@ -23131,6 +24574,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/security/prison/work) "bEl" = ( @@ -23199,8 +24643,7 @@ /turf/open/floor/iron/dark, /area/station/science/ordnance) "bED" = ( -/obj/machinery/light/directional/west, -/turf/closed/wall, +/turf/open/floor/iron/dark/herringbone, /area/station/service/chapel) "bEE" = ( /obj/structure/disposalpipe/segment{ @@ -23231,7 +24674,14 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/turf/open/floor/iron, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/purple/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, /area/station/maintenance/starboard) "bEQ" = ( /obj/effect/landmark/start/shaft_miner, @@ -23262,7 +24712,13 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 4 + }, +/turf/open/floor/iron/half, /area/station/hallway/primary/central) "bFc" = ( /obj/effect/landmark/blobstart, @@ -23376,6 +24832,19 @@ /obj/effect/mapping_helpers/airlock/access/all/service/janitor, /turf/open/floor/plating, /area/station/maintenance/aft) +"bFt" = ( +/obj/structure/table/glass, +/obj/item/storage/box/syringes, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/siding/dark{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) "bFz" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/camera{ @@ -23487,11 +24956,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/starboard) "bGc" = ( /obj/structure/table, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "bGd" = ( /obj/effect/turf_decal/bot, @@ -23655,7 +25125,8 @@ /obj/structure/disposalpipe/sorting/mail/flip{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/purple/filled, +/turf/open/floor/iron/dark, /area/station/maintenance/starboard) "bGJ" = ( /obj/machinery/door/firedoor, @@ -23678,7 +25149,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/purple/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark, /area/station/maintenance/starboard) "bGL" = ( /obj/effect/turf_decal/stripes/line{ @@ -23687,7 +25161,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, +/obj/effect/turf_decal/trimline/purple/filled/end{ + dir = 8 + }, +/turf/open/floor/iron/dark, /area/station/maintenance/starboard) "bGM" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -23740,6 +25217,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, +/obj/effect/turf_decal/siding/yellow{ + dir = 5 + }, /turf/open/floor/iron/white, /area/station/security/prison) "bHb" = ( @@ -23832,13 +25312,23 @@ /turf/open/floor/plating, /area/station/maintenance/aft) "bHs" = ( -/obj/machinery/light/small/directional/east, /obj/effect/turf_decal/stripes/corner, -/turf/open/floor/iron, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/purple/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, /area/station/maintenance/starboard) "bHt" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "bHu" = ( @@ -23847,7 +25337,6 @@ }, /obj/machinery/light/small/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/table, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, /obj/item/raw_anomaly_core/random{ @@ -23859,7 +25348,11 @@ /obj/item/raw_anomaly_core/random{ pixel_y = 5 }, -/turf/open/floor/iron, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "bHv" = ( /obj/effect/turf_decal/stripes/line{ @@ -23869,7 +25362,8 @@ pixel_x = 28 }, /obj/structure/table/reinforced, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "bHw" = ( /obj/item/target, @@ -23899,14 +25393,11 @@ /turf/open/floor/iron/dark, /area/station/cargo/miningdock) "bHA" = ( -/obj/effect/turf_decal/tile/brown{ +/obj/effect/turf_decal/siding/brown{ dir = 1 }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/siding/brown, +/turf/open/floor/iron, /area/station/cargo/miningdock) "bHC" = ( /obj/effect/decal/cleanable/dirt, @@ -23915,7 +25406,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/turf/open/floor/iron/large, +/turf/open/floor/iron/small, /area/station/cargo/miningoffice) "bHD" = ( /obj/machinery/light/small/directional/north, @@ -23923,7 +25414,7 @@ /obj/structure/chair/sofa/left/brown{ dir = 4 }, -/turf/open/floor/iron/large, +/turf/open/floor/iron/small, /area/station/cargo/miningoffice) "bHE" = ( /turf/open/floor/plating, @@ -23994,6 +25485,9 @@ "bHS" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, /turf/open/floor/iron/white, /area/station/security/prison) "bHU" = ( @@ -24120,7 +25614,7 @@ "bIB" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/engineering/atmos) "bIC" = ( /obj/effect/decal/cleanable/dirt, @@ -24145,6 +25639,10 @@ /area/station/science/research) "bIG" = ( /obj/structure/railing, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "bIH" = ( @@ -24220,7 +25718,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/science/ordnance/testlab) "bIX" = ( /obj/structure/sign/warning/secure_area{ @@ -24265,7 +25763,7 @@ dir = 8 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "bJd" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -24284,7 +25782,8 @@ dir = 4 }, /obj/effect/turf_decal/siding/thinplating_new, -/turf/open/floor/iron, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/small, /area/station/cargo/miningoffice) "bJf" = ( /obj/structure/closet/firecloset, @@ -24335,6 +25834,9 @@ /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/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, /turf/open/floor/plating, /area/station/maintenance/aft) "bJs" = ( @@ -24350,7 +25852,7 @@ /obj/structure/light_construct{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/plating, /area/station/construction) "bJx" = ( /obj/effect/landmark/event_spawn, @@ -24445,7 +25947,11 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/purple/line, +/turf/open/floor/iron/dark, /area/station/maintenance/starboard) "bKd" = ( /obj/machinery/camera/directional/south{ @@ -24454,15 +25960,21 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/purple/line, +/turf/open/floor/iron/dark, /area/station/maintenance/starboard) "bKf" = ( /obj/machinery/door/window/left/directional/south{ - name = "Mass Driver Door"; - req_access_txt = "8" + name = "Mass Driver Door" }, /obj/effect/turf_decal/loading_area, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "bKg" = ( /turf/open/floor/plating/airless, @@ -24483,13 +25995,13 @@ /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) "bKj" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Mining Dock External" +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/computer/libraryconsole/bookmanagement{ + dir = 4 }, -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/station/cargo/miningdock) +/turf/open/floor/iron, +/area/station/security/prison) "bKk" = ( /obj/item/stack/ore/silver, /obj/item/stack/ore/silver, @@ -24500,16 +26012,41 @@ /turf/open/floor/iron/dark, /area/station/cargo/miningdock) "bKl" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/tile/brown{ - dir = 1 +/obj/structure/table/wood, +/obj/item/stamp/head/qm{ + pixel_x = 1; + pixel_y = 12 }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 +/obj/item/stamp/granted{ + pixel_x = -7; + pixel_y = 12 }, -/turf/open/floor/iron/dark, -/area/station/cargo/miningdock) +/obj/item/stamp/denied{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/item/stamp/void{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/effect/spawner/random/entertainment/money_medium{ + pixel_y = -6; + pixel_x = -3 + }, +/obj/item/clipboard{ + pixel_x = 10; + pixel_y = 8 + }, +/obj/item/coin/gold{ + pixel_y = -5; + pixel_x = 10 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/qm) "bKm" = ( /obj/structure/sign/warning/vacuum/external, /turf/closed/wall, @@ -24597,17 +26134,23 @@ dir = 4 }, /obj/effect/landmark/start/cargo_technician, +/obj/effect/turf_decal/siding/thinplating_new/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 8 + }, /turf/open/floor/iron, /area/station/cargo/sorting) "bKG" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/structure/window/spawner/directional/south, +/obj/item/borg/cookbook, +/obj/structure/table, /obj/item/reagent_containers/condiment/saltshaker{ - layer = 3.1; pixel_x = -2; pixel_y = 2 }, -/obj/item/book/manual/chef_recipes, /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; @@ -24617,7 +26160,6 @@ pixel_x = 9; pixel_y = 3 }, -/obj/structure/table, /turf/open/floor/iron/dark, /area/station/security/prison/mess) "bKI" = ( @@ -24683,7 +26225,7 @@ id = "misclab"; name = "Test Chamber Blast Doors"; pixel_y = -2; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/structure/table/reinforced, /obj/structure/window/reinforced/spawner/directional/east, @@ -24747,7 +26289,7 @@ /area/station/science/xenobiology) "bLh" = ( /obj/structure/sign/warning/fire, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/station/science/research) "bLi" = ( /obj/machinery/door/firedoor/heavy, @@ -24898,13 +26440,15 @@ /obj/structure/filingcabinet/filingcabinet, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/sorting) "bLG" = ( /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/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/tile/red/diagonal_centre, +/turf/open/floor/iron/dark/diagonal, /area/station/hallway/primary/fore) "bLH" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -24919,17 +26463,17 @@ "bLJ" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/engineering/atmos) "bLL" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/engineering/atmos) "bLM" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/engineering/atmos) "bLO" = ( /obj/effect/decal/cleanable/dirt, @@ -25080,6 +26624,7 @@ /obj/effect/mapping_helpers/requests_console/supplies, /obj/machinery/chem_master, /obj/effect/turf_decal/siding/purple, +/obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/science/xenobiology) "bMp" = ( @@ -25097,6 +26642,7 @@ /obj/item/clothing/gloves/latex, /obj/item/clothing/glasses/science, /obj/effect/turf_decal/siding/purple, +/obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/station/science/xenobiology) "bMr" = ( @@ -25145,6 +26691,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/science/ordnance) "bMA" = ( @@ -25154,7 +26703,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/science/ordnance) "bMB" = ( /obj/structure/reagent_dispensers/fueltank, @@ -25293,9 +26842,10 @@ /turf/closed/wall/r_wall, /area/station/engineering/atmos/pumproom) "bNb" = ( -/obj/item/airlock_painter, /obj/structure/lattice, /obj/structure/closet, +/obj/item/clothing/head/costume/delinquent, +/obj/effect/spawner/random/maintenance/four, /turf/open/space, /area/space/nearstation) "bNd" = ( @@ -25387,12 +26937,18 @@ /area/station/science/ordnance/burnchamber) "bNx" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/science/ordnance) "bNy" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/science/ordnance) "bNz" = ( @@ -25403,6 +26959,9 @@ }, /obj/machinery/light/directional/east, /obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -25466,6 +27025,12 @@ /obj/item/folder/yellow{ pixel_x = 4 }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/cargo/sorting) "bNI" = ( @@ -25484,16 +27049,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/any/supply/mining, /obj/effect/mapping_helpers/airlock/access/any/supply/general, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/office) "bNL" = ( /obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, +/turf/open/floor/plating, /area/station/construction) "bNN" = ( /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/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron, /area/station/hallway/primary/aft) "bNO" = ( @@ -25512,6 +27081,9 @@ /obj/item/radio/intercom{ pixel_x = -30 }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, /turf/open/floor/iron, /area/station/engineering/atmos) "bNR" = ( @@ -25588,7 +27160,8 @@ pixel_y = 26 }, /obj/structure/cable, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "bOp" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -25598,11 +27171,9 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/aft) "bOq" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, -/obj/structure/grille, -/turf/open/floor/iron/dark, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/station/medical/virology) "bOr" = ( /turf/open/floor/iron/white, @@ -25646,7 +27217,8 @@ "bOC" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "bOD" = ( /obj/structure/chair/office{ @@ -25655,7 +27227,8 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "bOF" = ( /obj/structure/sign/warning/fire/directional/south, @@ -25698,10 +27271,15 @@ /turf/open/floor/plating, /area/station/science/ordnance/bomb) "bOK" = ( -/obj/structure/barricade/wooden, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/effect/turf_decal/stripes/line, +/obj/machinery/computer/exodrone_control_console{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "bOM" = ( /obj/structure/table, /obj/item/stock_parts/subspace/transmitter, @@ -25715,7 +27293,8 @@ /obj/effect/turf_decal/siding/dark{ dir = 10 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/commons/vacant_room/commissary) "bOO" = ( /obj/machinery/newscaster{ @@ -25948,7 +27527,7 @@ name = "Containment Blast Doors"; pixel_x = 1; pixel_y = -26; - req_access_txt = "55" + req_access = list("xenobiology") }, /turf/open/floor/iron/dark, /area/station/science/xenobiology) @@ -26071,22 +27650,19 @@ /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/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) -"bPS" = ( -/turf/open/floor/wood, -/area/station/maintenance/port/aft) "bPT" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/obj/effect/turf_decal/siding{ + dir = 6 + }, +/turf/open/floor/iron/white/small, +/area/station/medical/storage) "bPZ" = ( /obj/structure/chair{ 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/plating, /area/station/maintenance/port/aft) "bQa" = ( @@ -26109,14 +27685,6 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/machinery/button/door{ - desc = "A remote control-switch for the engineering security doors."; - id = "Engineering"; - name = "Engineering Lockdown"; - pixel_x = -24; - pixel_y = -6; - req_access_txt = "10" - }, /obj/item/radio/off, /obj/effect/turf_decal/tile/red{ dir = 1 @@ -26226,7 +27794,7 @@ /area/station/medical/psychology) "bQF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "bQH" = ( /obj/effect/landmark/start/hangover, @@ -26267,10 +27835,6 @@ /area/station/science/xenobiology) "bQM" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, @@ -26278,18 +27842,20 @@ id = "xenobiomain"; name = "containment blast door" }, +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, /turf/open/floor/iron/white, /area/station/science/xenobiology) "bQN" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, /obj/machinery/door/poddoor/preopen{ id = "xenobiomain"; name = "containment blast door" }, +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, /turf/open/floor/iron/white, /area/station/science/xenobiology) "bQO" = ( @@ -26303,7 +27869,17 @@ /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, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/aft) "bQT" = ( /obj/structure/table/reinforced, @@ -26314,7 +27890,10 @@ name = "Chief Engineer's Fax Machine" }, /mob/living/basic/parrot/poly, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark{ + dir = 5 + }, +/turf/open/floor/iron/checker, /area/station/command/heads_quarters/ce) "bQU" = ( /obj/structure/closet/emcloset, @@ -26328,24 +27907,24 @@ /turf/open/floor/plating, /area/station/security/execution/transfer) "bRc" = ( -/obj/structure/table/wood, -/obj/item/soap/nanotrasen, /obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, +/turf/open/floor/plating, /area/station/maintenance/port/aft) "bRe" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/maintenance/four, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/white/small, +/area/station/medical/storage) "bRf" = ( -/obj/structure/table/wood, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall, +/area/station/security/prison/shower) "bRg" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, +/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/maintenance/port/aft) "bRk" = ( @@ -26514,7 +28093,10 @@ "bRO" = ( /obj/structure/cable, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "bRP" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -26593,7 +28175,8 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "bSh" = ( /obj/effect/turf_decal/stripes/line{ @@ -26618,23 +28201,17 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "bSn" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, /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/small, /area/station/commons/dorms) "bSo" = ( -/obj/structure/chair/stool, +/obj/effect/turf_decal/siding/dark{ + dir = 7 + }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/turf/open/floor/iron/white, +/area/station/medical/storage) "bSq" = ( /obj/structure/rack, /obj/item/tank/internals/emergency_oxygen, @@ -26654,7 +28231,8 @@ c_tag = "Telecomms Monitoring"; network = list("tcomms") }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "bSu" = ( /obj/item/stack/cable_coil{ @@ -26719,7 +28297,7 @@ name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 4; - req_access_txt = "24" + req_access = list("atmospherics") }, /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -26784,7 +28362,7 @@ layer = 3.3; name = "Xenobio Pen 7 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -26804,6 +28382,12 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/large, /area/station/medical/treatment_center) +"bSR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/herringbone, +/area/station/hallway/primary/central) "bSS" = ( /obj/structure/table, /obj/item/storage/belt/medical{ @@ -26886,9 +28470,22 @@ /turf/open/floor/iron, /area/station/science/xenobiology) "bTc" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding/purple{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/book/manual/wiki/cytology{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/biopsy_tool{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/white/herringbone, /area/station/science/xenobiology) "bTd" = ( /obj/structure/cable, @@ -26952,10 +28549,8 @@ /turf/open/floor/iron, /area/station/security/prison) "bTx" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, +/obj/effect/spawner/random/maintenance/two, +/obj/structure/rack, /turf/open/floor/plating, /area/station/maintenance/port/aft) "bTz" = ( @@ -26994,7 +28589,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, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "bTJ" = ( /obj/structure/disposalpipe/segment, @@ -27057,6 +28653,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron/cafeteria, /area/station/engineering/atmos) "bUc" = ( @@ -27068,7 +28665,8 @@ /obj/effect/mapping_helpers/requests_console/announcement, /obj/effect/mapping_helpers/requests_console/information, /obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "bUg" = ( /obj/structure/window/reinforced/spawner/directional/north, @@ -27133,9 +28731,9 @@ dir = 1 }, /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/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/maintenance/port/aft) "bUE" = ( @@ -27233,6 +28831,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/prison/work) +"bUV" = ( +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown/opposingcorners, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "bUW" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/engine/n2o, @@ -27243,7 +28851,8 @@ /area/station/medical/psychology) "bVb" = ( /obj/machinery/light_switch/directional/east, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "bVc" = ( /obj/structure/disposalpipe/segment{ @@ -27306,19 +28915,23 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology) "bVs" = ( -/obj/structure/table/glass, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "bVt" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/siding/purple{ dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/science/lab) "bVv" = ( /obj/structure/lattice, @@ -27476,8 +29089,9 @@ /turf/open/floor/iron/showroomfloor, /area/station/engineering/atmos) "bVY" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, /obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "bWb" = ( @@ -27494,6 +29108,7 @@ /obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 }, +/obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron/white/corner, /area/station/engineering/atmos) "bWd" = ( @@ -27546,31 +29161,22 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "bWm" = ( -/obj/machinery/door/window/left/directional/north{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Containment Pen 10"; - req_access = list("xenobiology") +/obj/effect/turf_decal/siding/purple{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/white/herringbone, /area/station/science/xenobiology) "bWn" = ( -/obj/machinery/door/window/left/directional/north{ - dir = 4; - name = "Containment Pen 10"; - req_access = list("xenobiology") - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio10"; - name = "Xenobio Pen 10 Blast Door" +/obj/structure/chair/office/light{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/engine, +/turf/open/floor/iron/white/small, /area/station/science/xenobiology) "bWo" = ( /obj/structure/window/reinforced/spawner/directional/west, @@ -27589,7 +29195,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/turf/open/floor/iron, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "bWw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, @@ -27627,9 +29233,9 @@ /area/station/tcommsat/server) "bWF" = ( /obj/machinery/light/directional/north, -/obj/effect/mapping_helpers/apc/cell_5k, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/cell_10k, /turf/open/floor/circuit/telecomms/mainframe, /area/station/tcommsat/server) "bWG" = ( @@ -27650,27 +29256,31 @@ /obj/structure/cable, /obj/item/radio/off, /obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "bWI" = ( -/obj/structure/table, -/obj/item/folder/yellow, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 +/obj/effect/turf_decal/bot, +/obj/machinery/computer/security/qm{ + dir = 4 }, -/obj/item/pen/red, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/machinery/keycard_auth/directional/west{ + pixel_x = -26; + pixel_y = 5 + }, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) "bWK" = ( /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/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/aft) "bWL" = ( @@ -27806,17 +29416,9 @@ /turf/open/floor/plating, /area/station/science/xenobiology) "bXg" = ( -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio10"; - name = "Xenobio Pen 10 Blast Door" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/electric_shock, -/turf/open/floor/plating, +/obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/trimline/purple/filled/line, +/turf/open/floor/iron/white/herringbone, /area/station/science/xenobiology) "bXh" = ( /obj/structure/window/reinforced/spawner/directional/south, @@ -27833,6 +29435,10 @@ /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/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, /turf/open/floor/iron, /area/station/hallway/primary/aft) "bXn" = ( @@ -27872,7 +29478,11 @@ /area/station/science/ordnance) "bXt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/turf/open/floor/iron/white/diagonal, /area/station/science/lab) "bXv" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -27924,10 +29534,12 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "bXG" = ( -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "bXJ" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -28011,6 +29623,7 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, +/obj/machinery/portable_atmospherics/pump, /turf/open/floor/iron, /area/station/engineering/atmos) "bXV" = ( @@ -28027,6 +29640,7 @@ /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) "bXX" = ( @@ -28087,10 +29701,12 @@ /turf/open/floor/iron, /area/station/hallway/primary/aft) "bYo" = ( -/obj/structure/table, /obj/item/electropack, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark, /area/station/security/brig) "bYp" = ( /turf/closed/wall/r_wall, @@ -28170,7 +29786,8 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "bYE" = ( /obj/effect/turf_decal/tile/yellow, @@ -28285,7 +29902,7 @@ name = "Isolation A" }, /obj/structure/cable, -/turf/open/floor/iron/white, +/turf/open/floor/iron/dark, /area/station/medical/virology) "bYY" = ( /turf/closed/wall/r_wall, @@ -28374,7 +29991,11 @@ "bZx" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/aft) "bZy" = ( /obj/effect/spawner/structure/window/reinforced, @@ -28396,16 +30017,17 @@ /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/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port/aft) "bZD" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/machinery/door/poddoor/preopen{ id = "ceprivacy"; - name = "privacy shutter" + name = "Privacy shutter" }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/command/heads_quarters/ce) "bZE" = ( @@ -28447,6 +30069,7 @@ dir = 6 }, /obj/effect/turf_decal/tile/purple/anticorner/contrasted, +/obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron, /area/station/engineering/atmos) "bZM" = ( @@ -28491,14 +30114,15 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/aft) "bZS" = ( -/obj/machinery/atmospherics/components/tank/air, /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/atmospherics/components/tank/air{ + dir = 8 + }, /turf/open/floor/plating, /area/station/maintenance/aft) "bZT" = ( @@ -28634,8 +30258,14 @@ dir = 8 }, /obj/structure/table/reinforced, -/obj/item/wrench, -/obj/item/crowbar, +/obj/item/multitool{ + pixel_x = 9; + pixel_y = 0 + }, +/obj/item/flatpack{ + pixel_x = -6; + pixel_y = 6 + }, /turf/open/floor/iron/dark, /area/station/engineering/lobby) "cax" = ( @@ -28679,6 +30309,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ dir = 8 }, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/iron, /area/station/engineering/atmos) "caI" = ( @@ -28709,8 +30340,6 @@ /area/station/engineering/lobby) "caP" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/aft) "caQ" = ( @@ -28721,8 +30350,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/aft) "caR" = ( @@ -28773,6 +30400,7 @@ "caX" = ( /obj/effect/spawner/random/maintenance/two, /obj/structure/rack, +/obj/structure/railing/corner, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) "caY" = ( @@ -28833,6 +30461,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) "cbq" = ( @@ -28848,6 +30477,12 @@ /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/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/aft) "cbt" = ( @@ -28931,6 +30566,7 @@ /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) "cbJ" = ( @@ -28954,8 +30590,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/aft) "cbP" = ( @@ -29066,16 +30700,8 @@ "cci" = ( /obj/structure/table, /obj/item/multitool, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "ccj" = ( /obj/effect/turf_decal/tile/neutral{ @@ -29159,7 +30785,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/command/heads_quarters/rd) "ccA" = ( /obj/machinery/computer/atmos_control/carbon_tank{ @@ -29297,13 +30923,8 @@ dir = 4; network = "tcommsat" }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "cdh" = ( /obj/structure/disposalpipe/sorting/mail/flip{ @@ -29315,17 +30936,9 @@ /area/station/maintenance/port/aft) "cdk" = ( /obj/machinery/computer/atmos_alert, -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/dark/smooth_half{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron/dark, /area/station/engineering/engine_smes) "cdl" = ( /turf/closed/wall/r_wall, @@ -29344,8 +30957,16 @@ dir = 8 }, /obj/structure/cable, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) +"cdp" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/security/brig) "cdq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -29376,6 +30997,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/atmos) +"cdy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/dark_green, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/station/service/hydroponics/garden) "cdz" = ( /obj/structure/table, /obj/item/stock_parts/subspace/analyzer, @@ -29409,6 +31037,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/iron, /area/station/engineering/atmos) "cdH" = ( @@ -29448,7 +31077,7 @@ dir = 4 }, /obj/effect/landmark/start/chief_engineer, -/turf/open/floor/iron, +/turf/open/floor/iron/checker, /area/station/command/heads_quarters/ce) "cdV" = ( /obj/structure/table, @@ -29483,20 +31112,15 @@ "cee" = ( /obj/structure/table, /obj/item/book/manual/wiki/tcomms, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "ceg" = ( /obj/machinery/light/directional/south, /obj/structure/filingcabinet/chestdrawer, /obj/machinery/airalarm/directional/south, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "ceh" = ( /obj/effect/landmark/event_spawn, @@ -29508,13 +31132,16 @@ pixel_x = -2; pixel_y = -1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "ceo" = ( /obj/machinery/keycard_auth{ pixel_y = -28 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/turf/open/floor/iron/checker, /area/station/command/heads_quarters/ce) "cew" = ( /turf/closed/wall/r_wall, @@ -29563,7 +31190,7 @@ /obj/machinery/door/airlock/maintenance{ name = "Testing Lab Maintenance" }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "ceR" = ( @@ -29615,7 +31242,6 @@ /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/engineering/engine_equipment, -/obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/engine_smes) "cfa" = ( @@ -29680,7 +31306,7 @@ }, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/area/station/maintenance/disposal/incinerator) "cfv" = ( /obj/machinery/door/airlock/maintenance{ name = "Firefighting Equipment" @@ -29710,9 +31336,7 @@ /area/station/maintenance/port/aft) "cfF" = ( /obj/machinery/suit_storage_unit/ce, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, +/obj/effect/turf_decal/stripes/box, /turf/open/floor/iron/white, /area/station/command/heads_quarters/ce) "cfH" = ( @@ -29750,12 +31374,11 @@ /turf/open/floor/iron, /area/station/engineering/storage) "cfN" = ( -/obj/machinery/portable_atmospherics/scrubber, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, +/obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/engineering/atmos) "cfO" = ( -/obj/machinery/portable_atmospherics/pump, /obj/machinery/atmospherics/pipe/smart/manifold/green/visible{ dir = 8 }, @@ -29853,6 +31476,18 @@ }, /turf/open/floor/plating, /area/station/science/xenobiology) +"cgn" = ( +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/duct, +/obj/item/plunger{ + pixel_x = -7; + pixel_y = 20 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/xenobiology) "cgo" = ( /turf/closed/wall, /area/station/science/ordnance/testlab) @@ -29958,6 +31593,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) "cgR" = ( @@ -29965,7 +31601,6 @@ /area/station/engineering/main) "cgW" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/obj/machinery/portable_atmospherics/pump, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -29973,6 +31608,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron, /area/station/engineering/atmos) "cgX" = ( @@ -29989,6 +31625,7 @@ name = "N2 To Pure" }, /obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron, /area/station/engineering/atmos) "cgZ" = ( @@ -30003,6 +31640,7 @@ /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 }, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron, /area/station/engineering/atmos) "chb" = ( @@ -30011,6 +31649,7 @@ name = "O2 To Pure" }, /obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron, /area/station/engineering/atmos) "chc" = ( @@ -30027,6 +31666,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/cafeteria, /area/station/engineering/atmos) "che" = ( @@ -30065,7 +31705,7 @@ "chk" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/closed/wall, -/area/station/maintenance/starboard/aft) +/area/station/maintenance/disposal/incinerator) "chl" = ( /obj/structure/cable, /obj/machinery/light/directional/north, @@ -30090,6 +31730,10 @@ "chq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) "chr" = ( @@ -30156,18 +31800,17 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) "chS" = ( /obj/machinery/door/airlock/engineering{ - name = "Port Quarter Solar Access"; - req_access_txt = "10" + name = "Port Quarter Solar Access" }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, @@ -30204,17 +31847,16 @@ dir = 1 }, /obj/structure/table, -/obj/machinery/light/small/directional/west, /obj/item/stack/sheet/iron/fifty{ pixel_x = -2; pixel_y = 2 }, /obj/item/stack/sheet/glass/fifty, -/obj/item/stock_parts/cell/emproof{ - pixel_x = 6; - pixel_y = -2 +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 }, -/turf/open/floor/iron/dark, /area/station/engineering/engine_smes) "cic" = ( /obj/effect/turf_decal/tile/neutral{ @@ -30230,28 +31872,22 @@ /obj/effect/turf_decal/bot{ dir = 1 }, -/obj/machinery/airalarm/directional/north, /obj/machinery/power/smes/engineering, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) -"cid" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/cable, +/obj/structure/sign/warning/electric_shock/directional/north, +/turf/open/floor/iron/dark/smooth_half{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/area/station/engineering/engine_smes) +"cid" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/power/smes/engineering, +/obj/structure/sign/warning/electric_shock/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) +/area/station/ai_monitored/command/storage/eva) "cie" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -30267,8 +31903,27 @@ dir = 1 }, /obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/iron/dark, +/obj/machinery/airalarm/directional/north, +/obj/item/clothing/shoes/magboots{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/shoes/magboots{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/machinery/door/window/left/directional/west{ + name = "Magboot Storage"; + pixel_x = -1; + req_access = list("engineering"); + dir = 2 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/engineering/engine_smes) "cig" = ( /turf/closed/wall, @@ -30288,18 +31943,9 @@ /area/station/engineering/supermatter/room) "cij" = ( /obj/machinery/modular_computer/preset/engineering, -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/dark/smooth_half{ 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/structure/cable, -/turf/open/floor/iron/dark, /area/station/engineering/engine_smes) "cik" = ( /obj/machinery/computer/apc_control{ @@ -30316,6 +31962,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) "cin" = ( @@ -30340,7 +31987,10 @@ /obj/item/stamp/head/ce, /obj/structure/disposalpipe/segment, /obj/effect/landmark/event_spawn, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/iron/checker, /area/station/command/heads_quarters/ce) "cip" = ( /obj/effect/turf_decal/stripes/line{ @@ -30348,6 +31998,13 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"ciq" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/diagonal_centre, +/turf/open/floor/iron/dark/diagonal, +/area/station/hallway/primary/fore) "cit" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, /turf/closed/wall/r_wall, @@ -30382,7 +32039,8 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "ciP" = ( -/obj/machinery/conveyor/inverted{ +/obj/machinery/conveyor{ + dir = 1; id = "mining" }, /turf/open/floor/plating, @@ -30430,7 +32088,7 @@ "ciY" = ( /obj/machinery/door/poddoor{ id = "Secure Storage"; - name = "secure storage" + name = "Secure storage" }, /turf/open/floor/plating, /area/station/engineering/engine_smes) @@ -30439,7 +32097,10 @@ /area/station/engineering/main) "cjb" = ( /obj/effect/turf_decal/delivery, -/turf/open/floor/iron, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/engineering/engine_smes) "cjc" = ( /obj/effect/turf_decal/stripes/line{ @@ -30472,6 +32133,7 @@ /obj/machinery/modular_computer/preset/id{ dir = 4 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) "cji" = ( @@ -30512,7 +32174,7 @@ /area/space/nearstation) "cjo" = ( /obj/structure/closet/toolcloset, -/turf/open/floor/iron, +/turf/open/floor/plating, /area/station/construction) "cjr" = ( /obj/effect/decal/cleanable/dirt, @@ -30598,6 +32260,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) "cjX" = ( @@ -30626,7 +32289,10 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark{ + dir = 6 + }, +/turf/open/floor/iron/checker, /area/station/command/heads_quarters/ce) "cka" = ( /obj/structure/table, @@ -30677,10 +32343,7 @@ /area/station/maintenance/solars/starboard/aft) "ckt" = ( /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west{ - areastring = "/area/maintenance/solars/starboard/aft"; - pixel_y = 3 - }, +/obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) "cku" = ( @@ -30697,16 +32360,6 @@ /turf/open/floor/plating, /area/station/engineering/engine_smes) "ckD" = ( -/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/bot{ dir = 1 }, @@ -30714,8 +32367,10 @@ /obj/item/storage/box/lights/mixed, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/emproof, -/turf/open/floor/iron/dark, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/engineering/engine_smes) "ckF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, @@ -30725,59 +32380,35 @@ /turf/open/floor/engine, /area/station/engineering/supermatter) "ckG" = ( -/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/bot{ dir = 1 }, /obj/structure/closet/crate/solarpanel_small, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/engineering/engine_smes) "ckH" = ( /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/main) "ckI" = ( -/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/bot{ dir = 1 }, /obj/machinery/suit_storage_unit/engine, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) -"ckK" = ( -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/dark/smooth_half{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/area/station/engineering/engine_smes) +"ckK" = ( /obj/effect/turf_decal/bot{ dir = 1 }, /obj/structure/tank_dispenser, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/engineering/engine_smes) "ckL" = ( /obj/effect/spawner/structure/window/reinforced, @@ -30786,8 +32417,7 @@ /area/station/engineering/storage/tech) "ckO" = ( /obj/machinery/door/airlock/command/glass{ - name = "Chief Engineer"; - req_access_txt = "56" + name = "Chief Engineer" }, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -30978,6 +32608,13 @@ /area/station/engineering/main) "clS" = ( /obj/machinery/rnd/production/techfab/department/security, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "clT" = ( @@ -31139,8 +32776,7 @@ /area/station/engineering/atmos) "cmX" = ( /obj/machinery/light_switch/directional/east, -/obj/structure/broken_flooring/side, -/turf/open/floor/iron, +/turf/open/floor/plating, /area/station/construction) "cna" = ( /obj/structure/lattice, @@ -31168,12 +32804,12 @@ /area/station/maintenance/solars/starboard/aft) "cnk" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) "cnm" = ( @@ -31216,16 +32852,6 @@ /turf/open/floor/iron, /area/station/engineering/main) "cnA" = ( -/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/bot{ dir = 1 }, @@ -31234,12 +32860,10 @@ /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow, -/obj/item/stock_parts/cell/emproof{ - pixel_x = -4; - pixel_y = -1 - }, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/engineering/engine_smes) "cnX" = ( /obj/structure/cable, @@ -31322,11 +32946,9 @@ "coS" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/spawner/random/armory/laser_gun, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "coZ" = ( /obj/structure/closet/secure_closet/engineering_electrical, @@ -31358,7 +32980,6 @@ /turf/open/space, /area/space) "cpg" = ( -/obj/structure/table, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -31370,6 +32991,7 @@ dir = 8 }, /obj/effect/spawner/random/armory/barrier_grenades, +/obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "cps" = ( @@ -31404,7 +33026,7 @@ dir = 4 }, /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "cpC" = ( /obj/effect/landmark/event_spawn, @@ -31426,6 +33048,7 @@ /area/station/engineering/main) "cpN" = ( /obj/structure/transit_tube/horizontal, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) "cpP" = ( @@ -31523,7 +33146,7 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_y = -24; - req_access_txt = "10" + req_access = list("engineering") }, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/open/floor/engine, @@ -31678,6 +33301,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "cqN" = ( @@ -31705,7 +33329,6 @@ "cqR" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, /turf/open/floor/iron/dark, /area/station/engineering/storage) "cqS" = ( @@ -31863,14 +33486,12 @@ /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/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/small, /area/station/security/office) "crT" = ( /obj/structure/lattice/catwalk, @@ -31995,10 +33616,10 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "csT" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/structure/tank_dispenser/oxygen, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/obj/structure/tank_dispenser/oxygen, /turf/open/floor/iron/dark, /area/station/security/brig) "cte" = ( @@ -32019,12 +33640,20 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "ctx" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/window/right/directional/south{ + name = "First-Aid Supplies"; + red_alert_access = 1; + req_access = list("medical") }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, +/obj/structure/table/glass, +/obj/item/mod/module/plasma_stabilizer, +/obj/item/mod/module/thermal_regulator, +/obj/effect/turf_decal/tile/blue/full, +/obj/item/mod/module/signlang_radio, +/obj/structure/table/glass, +/turf/open/floor/iron/dark/smooth_large, /area/station/medical/storage) "ctB" = ( /obj/item/ai_module/supplied/oxygen, @@ -32032,7 +33661,7 @@ /obj/machinery/door/window{ dir = 8; name = "High-Risk Modules"; - req_access_txt = "20" + req_access = list("captain") }, /obj/item/ai_module/reset/purge, /obj/structure/window/reinforced/spawner/directional/south, @@ -32041,7 +33670,7 @@ /obj/structure/window/reinforced/spawner/directional/east, /obj/item/ai_module/supplied/protect_station, /obj/structure/table/wood/fancy/red, -/turf/open/floor/circuit/red, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "ctW" = ( /obj/effect/spawner/random/structure/closet_maintenance, @@ -32054,6 +33683,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai_upload) +"cuP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "cva" = ( /obj/machinery/porta_turret/ai{ dir = 8 @@ -32061,12 +33700,12 @@ /obj/structure/sign/plaques/kiddie{ pixel_x = 32 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "cvk" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) "cvl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -32075,7 +33714,10 @@ "cvv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "cvO" = ( /obj/structure/disposalpipe/segment{ @@ -32125,6 +33767,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) "cwT" = ( @@ -32159,7 +33802,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/iron/showroomfloor, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/security/warden) "cxl" = ( /obj/structure/disposalpipe/segment, @@ -32184,7 +33828,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "cxB" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, @@ -32231,12 +33875,12 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) "cxP" = ( @@ -32302,13 +33946,22 @@ /turf/open/space/basic, /area/space) "cyg" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 10 + }, +/obj/structure/railing/corner{ dir = 1 }, -/obj/machinery/door/airlock/command{ - name = "Command Tool Storage" +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "cyh" = ( @@ -32334,7 +33987,7 @@ dir = 8 }, /obj/machinery/door/airlock/external{ - name = "Port Docking Bay 2" + name = "Transport Airlock" }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) @@ -32342,43 +33995,32 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/machinery/door/airlock/external{ - name = "Escape Airlock"; - safety_mode = 1 - }, /obj/effect/landmark/navigate_destination{ location = "Escape" }, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) -"cyr" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, /obj/machinery/door/airlock/external{ - name = "Cargo Escape Airlock"; - safety_mode = 1 + name = "Escape Airlock" }, /turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) -"cyt" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +"cyr" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 1 }, -/obj/machinery/door/airlock/external{ - name = "Port Docking Bay 4" - }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"cyt" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/hallway/secondary/entry) +/area/station/hallway/primary/central) "cyu" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external{ - name = "Port Docking Bay 3" - }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /turf/open/floor/plating, -/area/station/hallway/secondary/entry) +/area/station/command/teleporter) "cyC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -32417,12 +34059,12 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) "cyL" = ( @@ -32447,18 +34089,19 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/machinery/door/airlock/external{ - name = "Solar Maintenance" - }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance" + }, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) "cyW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/hallway/secondary/service) "czg" = ( @@ -32476,9 +34119,8 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) "czA" = ( @@ -32510,9 +34152,7 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "czP" = ( @@ -32549,6 +34189,9 @@ /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/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "czY" = ( @@ -32727,9 +34370,13 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "cAL" = ( -/obj/item/stack/sheet/iron/five, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/structure/filingcabinet, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/qm) "cAN" = ( /obj/machinery/door/airlock/maintenance{ name = "Security Maintenance" @@ -32786,6 +34433,10 @@ /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "cBl" = ( @@ -32794,7 +34445,7 @@ /area/station/hallway/secondary/exit/departure_lounge) "cBm" = ( /obj/effect/landmark/event_spawn, -/turf/open/floor/iron, +/turf/open/floor/iron/white/corner, /area/station/hallway/primary/starboard) "cBn" = ( /obj/machinery/camera/directional/east{ @@ -32832,7 +34483,7 @@ "cBr" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) "cBu" = ( /obj/machinery/portable_atmospherics/scrubber, @@ -32856,7 +34507,17 @@ /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, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "cBx" = ( /obj/effect/landmark/event_spawn, @@ -32891,7 +34552,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_edge, /area/station/science/ordnance/testlab) "cBB" = ( /obj/effect/landmark/event_spawn, @@ -32934,6 +34595,12 @@ /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/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/aft) "cBI" = ( @@ -32953,7 +34620,8 @@ }, /obj/effect/landmark/event_spawn, /obj/item/radio/off, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "cBL" = ( /obj/effect/landmark/event_spawn, @@ -32963,7 +34631,10 @@ /obj/structure/table/reinforced, /obj/machinery/cell_charger, /obj/item/rcl/pre_loaded, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/iron/checker, /area/station/command/heads_quarters/ce) "cBN" = ( /obj/effect/landmark/event_spawn, @@ -33011,9 +34682,7 @@ "cBV" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ - name = "Security Office"; - req_access_txt = null; - req_one_access_txt = "1;4" + name = "Security Office" }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33049,11 +34718,15 @@ /turf/open/floor/plating, /area/station/construction) "cCd" = ( -/turf/open/floor/iron, -/area/station/construction) +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 1 + }, +/turf/open/floor/iron/large, +/area/station/service/hydroponics/garden) "cCe" = ( /obj/structure/closet/crate, -/turf/open/floor/iron, +/turf/open/floor/plating, /area/station/construction) "cCf" = ( /obj/machinery/disposal/bin, @@ -33377,14 +35050,14 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "cEt" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, /turf/open/floor/plating, /area/station/engineering/supermatter) "cEu" = ( @@ -33420,14 +35093,14 @@ /turf/open/floor/engine, /area/station/engineering/supermatter) "cEA" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, /turf/open/floor/plating, /area/station/engineering/supermatter) "cEB" = ( @@ -33463,28 +35136,28 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "cEM" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"cET" = ( -/obj/machinery/door/poddoor/shutters/preopen{ +/obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "engsm"; name = "Radiation Chamber Shutters" }, +/turf/open/floor/plating, +/area/station/engineering/supermatter) +"cET" = ( /obj/effect/decal/cleanable/oil, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/structure/cable, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, /turf/open/floor/plating, /area/station/engineering/supermatter) "cEW" = ( @@ -33514,18 +35187,20 @@ /obj/machinery/camera/directional/east{ c_tag = "Research Division South" }, -/turf/open/floor/iron/white/side{ - dir = 9 +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/herringbone, /area/station/science/research) "cFj" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, /turf/open/floor/plating, /area/station/engineering/supermatter) "cFk" = ( @@ -33585,12 +35260,28 @@ /mob/living/carbon/human/species/monkey, /turf/open/floor/grass, /area/station/science/genetics) +"cFF" = ( +/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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "cFJ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 1 + }, +/turf/open/floor/iron/half, /area/station/hallway/primary/central) "cFK" = ( /obj/effect/turf_decal/stripes/line{ @@ -33660,6 +35351,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"cGe" = ( +/obj/structure/disposalpipe/segment, +/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 + }, +/turf/open/floor/wood/large, +/area/station/command/meeting_room) "cGh" = ( /obj/effect/turf_decal/stripes/corner, /obj/structure/cable, @@ -33771,7 +35472,7 @@ "cGM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/plating/airless, -/area/station/engineering/supermatter/room) +/area/space/nearstation) "cGS" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -33930,6 +35631,9 @@ /obj/structure/chair/office/light{ dir = 1 }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "cHN" = ( @@ -33941,6 +35645,7 @@ /obj/machinery/conveyor_switch/oneway{ id = "robo1" }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "cHP" = ( @@ -33983,6 +35688,10 @@ /area/station/science/robotics/lab) "cHT" = ( /obj/machinery/holopad, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/science/robotics/lab) "cHU" = ( @@ -33993,7 +35702,8 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/white/small, /area/station/science/robotics/lab) "cHV" = ( /obj/machinery/conveyor_switch/oneway{ @@ -34032,7 +35742,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/small, /area/station/science/robotics/lab) "cIb" = ( /obj/effect/turf_decal/stripes/line{ @@ -34048,10 +35758,15 @@ /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/bot, /obj/effect/landmark/start/roboticist, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/science/robotics/lab) "cId" = ( /obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/science/robotics/lab) "cIe" = ( @@ -34065,7 +35780,7 @@ /obj/machinery/computer/mechpad{ dir = 1 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/small, /area/station/science/robotics/lab) "cIg" = ( /obj/docking_port/stationary{ @@ -34084,8 +35799,8 @@ dir = 1 }, /obj/machinery/door/airlock/external{ - name = "Port Docking Bay 1"; - safety_mode = 1 + name = "Arrival Airlock"; + space_dir = 2 }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) @@ -34126,7 +35841,10 @@ }, /obj/structure/table/reinforced, /obj/item/binoculars, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, /area/station/science/ordnance/testlab) "cJT" = ( /obj/structure/cable, @@ -34135,6 +35853,13 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"cJU" = ( +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "cKV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34225,6 +35950,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "cNZ" = ( @@ -34245,12 +35971,13 @@ "cOn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/command{ +/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, +/obj/machinery/door/airlock/hatch{ name = "MiniSat Access" }, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, +/obj/structure/cable, /turf/open/floor/iron, -/area/station/engineering/main) +/area/station/engineering/transit_tube) "cOp" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 @@ -34259,7 +35986,10 @@ /turf/open/space, /area/space/nearstation) "cOw" = ( -/obj/effect/spawner/structure/window, +/obj/machinery/door/airlock/maintenance, +/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/maintenance/port/aft) "cOx" = ( @@ -34271,6 +36001,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"cPe" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/siding/thinplating_new/corner{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "cPl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/portable_atmospherics/canister/nitrous_oxide, @@ -34306,6 +36043,13 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"cPO" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/bush/large/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) "cQb" = ( /obj/machinery/camera{ c_tag = "Medbay Storage"; @@ -34319,6 +36063,20 @@ "cQi" = ( /turf/open/floor/iron, /area/station/maintenance/port/aft) +"cQQ" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/engine, +/area/station/science/xenobiology) +"cRN" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "cSb" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -34369,14 +36127,14 @@ name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 10; - req_access_txt = "24" + req_access = list("atmospherics") }, /obj/machinery/button/door{ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = -24; - req_access_txt = "11" + req_access = list("engineering") }, /obj/machinery/button/door{ desc = "A remote control-switch for the engineering security doors."; @@ -34384,7 +36142,7 @@ name = "Engineering Lockdown"; pixel_x = -24; pixel_y = -10; - req_access_txt = "10" + req_access = list("engineering") }, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -34406,17 +36164,9 @@ /obj/item/radio/intercom{ pixel_y = 20 }, -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/dark/smooth_half{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron/dark, /area/station/engineering/engine_smes) "cSN" = ( /obj/effect/turf_decal/stripes/line{ @@ -34490,30 +36240,27 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark{ + dir = 7 + }, +/turf/open/floor/iron/checker, /area/station/command/heads_quarters/ce) "cTa" = ( /obj/effect/turf_decal/delivery, /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/engine_smes) -"cTb" = ( -/obj/effect/turf_decal/tile/neutral{ +/turf/open/floor/iron/dark/smooth_half{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/area/station/engineering/engine_smes) +"cTb" = ( /obj/effect/turf_decal/bot{ dir = 1 }, /obj/machinery/portable_atmospherics/pump, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, /area/station/engineering/engine_smes) "cTf" = ( /obj/machinery/requests_console{ @@ -34568,6 +36315,7 @@ /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/department/medical/morgue) "cTK" = ( @@ -34594,6 +36342,11 @@ /obj/effect/turf_decal/tile/blue/full, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"cUu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) "cUK" = ( /obj/effect/turf_decal/tile/blue, /obj/machinery/light/directional/east, @@ -34642,7 +36395,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/thinplating_new, -/turf/open/floor/iron/large, +/turf/open/floor/iron/small, /area/station/cargo/miningoffice) "cYq" = ( /obj/structure/table/glass, @@ -34712,7 +36465,11 @@ /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/effect/turf_decal/siding/red, +/obj/effect/turf_decal/siding/red{ + dir = 1 + }, +/turf/open/floor/iron/checker, /area/station/security/office) "ddi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34760,18 +36517,35 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "dgS" = ( -/obj/machinery/light_switch/directional/west, /obj/effect/turf_decal/siding/purple{ dir = 1 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/siding/yellow, +/turf/open/floor/iron/white/diagonal, /area/station/science/lab) +"dhg" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "dhL" = ( /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/effect/turf_decal/siding/red{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/herringbone, /area/station/security/brig) +"dib" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) "diV" = ( /obj/structure/table/wood, /obj/effect/spawner/random/trash/food_packaging, @@ -34796,6 +36570,9 @@ /area/station/maintenance/starboard/aft) "djt" = ( /obj/machinery/light/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) "dkI" = ( @@ -34821,6 +36598,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/mechbay) "dls" = ( @@ -34847,11 +36625,11 @@ /turf/open/floor/iron/dark/textured_half, /area/station/service/bar) "dmr" = ( -/obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/station/service/hydroponics) "dnd" = ( @@ -34875,22 +36653,25 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "dno" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space, -/area/space/nearstation) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) "dnF" = ( /obj/structure/broken_flooring/corner/directional/west, /turf/open/floor/plating, /area/station/maintenance/port/aft) "dnY" = ( -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio10"; - name = "Xenobio Pen 10 Blast Door" +/obj/effect/turf_decal/siding/purple{ + dir = 1 }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, +/obj/structure/table/glass, +/obj/structure/microscope, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/white/herringbone, /area/station/science/xenobiology) "dob" = ( /obj/structure/cable, @@ -34917,18 +36698,28 @@ /area/station/maintenance/department/medical/morgue) "dpa" = ( /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "dpb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/commons/storage/primary) "dpr" = ( -/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/turf_decal/siding/yellow{ + dir = 6 + }, +/turf/open/floor/iron/white, +/area/station/security/prison) +"dpS" = ( +/obj/effect/mapping_helpers/burnt_floor, /obj/structure/cable, -/turf/closed/wall, -/area/station/medical/chem_storage) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "dpU" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -34962,6 +36753,11 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/station/maintenance/port/central) +"dra" = ( +/obj/machinery/drone_dispenser, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "drd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown/half/contrasted, @@ -35010,6 +36806,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/main) +"dsK" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_2, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/misc/grass/jungle, +/area/station/hallway/secondary/exit/departure_lounge) "dtc" = ( /obj/machinery/photocopier, /turf/open/floor/carpet/blue, @@ -35033,6 +36836,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"duw" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central) "duA" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer1{ dir = 5 @@ -35055,7 +36873,6 @@ "dvv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, -/obj/structure/closet/toolcloset, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "dvD" = ( @@ -35110,18 +36927,19 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) "dyk" = ( -/obj/machinery/turretid{ - control_area = "/area/ai_monitored/turret_protected/ai_upload"; - name = "AI Upload turret control"; - pixel_y = -25 - }, /obj/machinery/camera/directional/south{ c_tag = "Bridge Center" }, /obj/effect/turf_decal/tile/blue/half/contrasted, +/obj/machinery/turretid{ + control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; + name = "AI Upload turret control"; + pixel_y = -25 + }, /turf/open/floor/iron/dark, /area/station/command/bridge) "dyw" = ( @@ -35142,10 +36960,12 @@ network = list("ss13","rd") }, /obj/effect/turf_decal/siding/purple, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/science/ordnance) "dyN" = ( /obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/security/detectives_office) "dzi" = ( @@ -35179,18 +36999,9 @@ /turf/open/floor/iron/white, /area/station/medical/treatment_center) "dAO" = ( -/obj/docking_port/stationary{ - dheight = 1; - dir = 8; - dwidth = 12; - height = 17; - id = "syndicate_ne"; - name = "northeast of station"; - width = 23 - }, -/turf/open/space/basic, -/area/space, -/area/space/nearstation) +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/herringbone, +/area/station/hallway/primary/central) "dAS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/reagent_dispensers/plumbed{ @@ -35215,9 +37026,15 @@ network = list("minisat"); start_active = 1 }, -/obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"dBk" = ( +/obj/structure/closet/crate, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 5 + }, +/turf/open/floor/iron/dark/small, +/area/station/command/teleporter) "dBu" = ( /obj/structure/sign/warning/no_smoking/circle/directional/west, /obj/machinery/light/directional/west, @@ -35307,7 +37124,8 @@ /area/station/maintenance/port/aft) "dDH" = ( /obj/machinery/bouldertech/refinery/smelter, -/obj/machinery/conveyor/inverted{ +/obj/machinery/conveyor{ + dir = 1; id = "mining" }, /turf/open/floor/plating, @@ -35418,6 +37236,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, /turf/open/floor/plating, /area/station/maintenance/port/aft) "dJd" = ( @@ -35456,6 +37277,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) "dKM" = ( @@ -35464,7 +37289,6 @@ network = list("minisat"); start_active = 1 }, -/obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) "dKQ" = ( @@ -35483,10 +37307,15 @@ /turf/open/floor/iron/dark, /area/station/engineering/lobby) "dMb" = ( -/obj/effect/turf_decal/tile/brown{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ dir = 8 }, -/obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/hallway/primary/central) "dMZ" = ( @@ -35542,6 +37371,16 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"dPj" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table/wood, +/obj/item/flashlight/lantern{ + pixel_y = 7 + }, +/turf/open/floor/iron/chapel{ + dir = 1 + }, +/area/station/service/chapel) "dPl" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -35573,25 +37412,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"dQl" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine" - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "dQy" = ( /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/food_or_drink/snack, /turf/open/floor/iron/checker, /area/station/science/breakroom) "dQL" = ( @@ -35626,7 +37451,6 @@ }, /obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, /obj/structure/cable/layer3, -/mob/living/simple_animal/bot/secbot/pingsky, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/hallway) "dRI" = ( @@ -35662,6 +37486,24 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"dTe" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Chapel - Fore" + }, +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/food/grown/poppy{ + pixel_y = 11 + }, +/obj/item/book/bible{ + pixel_y = 3 + }, +/obj/item/food/grown/harebell{ + pixel_x = -11; + pixel_y = 2 + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "dTx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -35672,6 +37514,13 @@ /obj/structure/cable, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/aisat/hallway) +"dTN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/dorms) "dTV" = ( /obj/machinery/conveyor{ dir = 4; @@ -35697,7 +37546,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "dVs" = ( /obj/effect/turf_decal/bot, @@ -35717,7 +37566,7 @@ start_active = 1 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "dWh" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -35726,6 +37575,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"dWH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "dXD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35739,8 +37598,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"dZd" = ( +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) "dZq" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /obj/structure/lattice, @@ -35749,6 +37621,12 @@ "dZy" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/cargo/office) "dZB" = ( @@ -35799,6 +37677,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/light/directional/west, +/obj/effect/turf_decal/siding/yellow, /turf/open/floor/iron/white, /area/station/security/prison) "ecD" = ( @@ -35819,7 +37698,7 @@ /turf/open/floor/plating, /area/station/maintenance/aft) "ecO" = ( -/obj/effect/turf_decal/siding/dark{ +/obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 }, /turf/open/floor/iron, @@ -35841,7 +37720,7 @@ /obj/structure/chair{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "edF" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ @@ -35857,17 +37736,12 @@ /turf/open/floor/iron, /area/station/cargo/warehouse) "efs" = ( -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck/cas{ - pixel_x = 5; - pixel_y = 10 - }, -/obj/item/toy/cards/deck/cas/black{ - pixel_x = -7 +/obj/machinery/requests_console{ + department = "Mining"; + pixel_x = -30 }, -/mob/living/simple_animal/hostile/retaliate/goose/vomit, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) +/turf/open/floor/iron, +/area/station/cargo/miningdock) "efW" = ( /obj/effect/spawner/random/maintenance, /obj/effect/spawner/random/structure/closet_maintenance, @@ -35877,11 +37751,27 @@ /obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron/dark, /area/station/security/prison/mess) +"ehv" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/east, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/station/hallway/primary/central) "ehC" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/prison) +"ehO" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) "eix" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/spawner/random/trash/moisture_trap, @@ -35928,6 +37818,9 @@ /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/neutral/end{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/aft) "ekN" = ( @@ -35950,6 +37843,9 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, /turf/open/floor/iron, /area/station/commons/dorms) "emK" = ( @@ -35957,6 +37853,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/machinery/light/directional/west, /turf/open/floor/iron/white/corner{ dir = 1 }, @@ -36056,6 +37953,10 @@ /obj/item/stamp/denied{ pixel_y = -1 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "epx" = ( @@ -36093,7 +37994,7 @@ /area/station/ai_monitored/turret_protected/aisat/atmos) "epI" = ( /obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/command/heads_quarters/rd) "epW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -36165,17 +38066,42 @@ }, /turf/open/floor/plating, /area/station/science/genetics) +"etB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"etE" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/security/prison/garden) "euA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) "euI" = ( -/obj/structure/cable, +/obj/machinery/light_switch/directional/west, +/obj/structure/table/wood, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/item/food/grown/poppy{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/food/grown/poppy{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/flashlight/flare/candle{ + pixel_x = 12; + pixel_y = 4 }, /obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/service/chapel) "evi" = ( @@ -36203,7 +38129,7 @@ "evE" = ( /obj/machinery/shower/directional/east, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) "evF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -36271,6 +38197,22 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"exA" = ( +/obj/structure/disposalpipe/segment{ + 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/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/security/office) "eyf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36308,7 +38250,8 @@ /area/station/service/abandoned_gambling_den) "eAi" = ( /obj/structure/closet/emcloset, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/hallway/primary/port) "eAI" = ( /obj/machinery/door/airlock/command/glass{ @@ -36319,10 +38262,14 @@ }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/command/general, -/turf/open/floor/iron, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, /area/station/command/bridge) "eAR" = ( /obj/structure/sink/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) "eBt" = ( @@ -36376,7 +38323,7 @@ dir = 1 }, /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "eDg" = ( /obj/structure/extinguisher_cabinet/directional/east, /obj/structure/table/wood, @@ -36388,7 +38335,7 @@ /area/station/hallway/secondary/entry) "eDx" = ( /obj/machinery/power/port_gen/pacman, -/turf/open/floor/iron, +/turf/open/floor/plating, /area/station/construction) "eDH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -36409,6 +38356,19 @@ }, /turf/open/floor/engine/n2, /area/station/engineering/atmos) +"eEO" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/abandoned, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"eFh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/pdapainter/supply, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/qm) "eFu" = ( /obj/structure/steam_vent, /obj/structure/railing{ @@ -36424,12 +38384,9 @@ /turf/open/floor/iron/grimy, /area/station/service/abandoned_gambling_den) "eGn" = ( -/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/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/herringbone, +/area/station/hallway/primary/central) "eGx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -36461,7 +38418,8 @@ "eHA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/commons/dorms) "eIh" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, @@ -36480,10 +38438,11 @@ /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) "eIH" = ( -/obj/machinery/light/directional/south, /obj/effect/turf_decal/trimline/green/filled/line, /obj/structure/chair/sofa/corp/right{ - dir = 4 + desc = "Looks like someone threw it out. Covered in donut crumbs."; + dir = 1; + name = "couch" }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) @@ -36493,6 +38452,7 @@ dir = 4 }, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/commons/dorms) "eJx" = ( @@ -36535,7 +38495,7 @@ name = "Shutters Control Button"; pixel_x = 6; pixel_y = 24; - req_access_txt = "29" + req_access = list("science") }, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/siding/purple{ @@ -36634,7 +38594,7 @@ /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "eUa" = ( /obj/structure/disposalpipe/segment{ @@ -36653,6 +38613,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"eVn" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "eVt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, @@ -36669,7 +38639,7 @@ /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "kitchen"; - name = "kitchen shutters" + name = "Kitchen shutters" }, /obj/machinery/door/firedoor, /turf/open/floor/iron/kitchen/diagonal, @@ -36686,12 +38656,20 @@ /area/station/medical/virology) "eXD" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/small, /area/station/security/office) +"eXH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "eXN" = ( /obj/effect/spawner/random/trash/garbage{ spawn_scatter_radius = 1 @@ -36701,7 +38679,7 @@ "eXZ" = ( /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/herringbone, /area/station/security/processing) "eYK" = ( /obj/effect/spawner/random/vending/colavend, @@ -36709,6 +38687,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) +"eZF" = ( +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) "eZN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36727,12 +38715,23 @@ }, /area/station/cargo/bitrunning/den) "fah" = ( -/turf/open/space/basic, -/area/space/nearstation) +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "qmroom" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/cargo/bitrunning/den) "fai" = ( /obj/structure/broken_flooring/corner/always_floorplane/directional/east, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"fav" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/end, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "faI" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 @@ -36747,6 +38746,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/port) "faW" = ( @@ -36758,12 +38758,16 @@ }, /turf/open/floor/iron/white, /area/station/medical/break_room) +"fbu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet) "fbw" = ( /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/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "fcF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -36773,7 +38777,11 @@ /obj/machinery/door/firedoor/heavy, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/herringbone, /area/station/science/research) "fdk" = ( /obj/machinery/button/door/directional/east{ @@ -36797,6 +38805,12 @@ /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/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/aft) "fep" = ( @@ -36844,6 +38858,11 @@ /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/closed/wall/r_wall, /area/station/engineering/atmos) +"fgX" = ( +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/trimline/brown/filled/line, +/turf/open/floor/iron, +/area/station/cargo/sorting) "fhg" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -36855,15 +38874,16 @@ location = "QM #3" }, /obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/storage) "fhF" = ( -/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/grille, +/obj/machinery/light/directional/south, /turf/open/floor/iron/white, -/area/station/medical/virology) +/area/station/science/research) "fif" = ( /obj/structure/cable, /obj/item/storage/fancy/cigarettes, @@ -36883,21 +38903,39 @@ }, /area/station/hallway/secondary/entry) "fiM" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, /obj/effect/turf_decal/tile/green{ dir = 8 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/iron, /area/station/service/hydroponics) +"fjs" = ( +/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/line, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/brig) "fkm" = ( /obj/effect/turf_decal/siding/purple{ dir = 6 }, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"fky" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "fkI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36911,6 +38949,7 @@ /turf/open/floor/iron/white, /area/station/medical/treatment_center) "fkO" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/hallway/secondary/service) "fla" = ( @@ -36931,7 +38970,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/command/heads_quarters/rd) "flp" = ( /obj/effect/landmark/start/ai/secondary, @@ -36959,23 +38998,32 @@ /area/station/maintenance/aft) "flN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "fnh" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/turf/open/floor/iron/stairs{ + dir = 4 }, -/turf/open/floor/iron, /area/station/hallway/primary/central) "fnj" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/medical/cryo) +"fnw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "fnC" = ( /obj/structure/closet/secure_closet/hydroponics, /obj/effect/turf_decal/trimline/green/filled, @@ -36996,7 +39044,7 @@ base_state = "right"; dir = 8; icon_state = "right"; - name = "Containment Pen 9"; + name = "Vat Access"; req_access = list("xenobiology") }, /obj/effect/turf_decal/stripes/line{ @@ -37012,6 +39060,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"fqE" = ( +/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/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/security/brig) "fqO" = ( /obj/machinery/door/airlock/maintenance/external{ name = "Mass Driver Intersection" @@ -37022,14 +39079,15 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /obj/effect/mapping_helpers/airlock/unres{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/iron/dark, /area/station/maintenance/starboard/fore) "fqQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "fqU" = ( @@ -37041,6 +39099,14 @@ /obj/machinery/piratepad/civilian, /turf/open/floor/iron, /area/station/hallway/primary/central) +"frc" = ( +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/bot, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "frg" = ( /obj/machinery/door/airlock/hatch{ name = "MiniSat Foyer" @@ -37064,9 +39130,17 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "fsm" = ( -/obj/item/extinguisher, +/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/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, -/area/station/hallway/primary/starboard) +/area/station/hallway/primary/aft) "fsD" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -37097,7 +39171,8 @@ /area/station/maintenance/starboard/aft) "fti" = ( /obj/effect/landmark/start/paramedic, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "ftD" = ( /obj/effect/turf_decal/bot_white/right, @@ -37134,7 +39209,10 @@ /area/station/command/heads_quarters/cmo) "fxi" = ( /obj/structure/table/wood, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "fxP" = ( /obj/effect/turf_decal/bot_white, @@ -37151,29 +39229,34 @@ /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) "fyg" = ( -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/red, +/obj/effect/turf_decal/siding/red{ + dir = 1 + }, +/turf/open/floor/iron/checker, /area/station/security/office) "fyv" = ( /obj/effect/landmark/start/medical_doctor, /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 8 }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/storage) "fyA" = ( /turf/closed/wall, /area/station/medical/chem_storage) "fyS" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/item/clothing/gloves/color/orange, /obj/item/restraints/handcuffs, /obj/item/reagent_containers/spray/pepper, /obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/iron/dark, /area/station/security/brig) "fzd" = ( /obj/structure/chair/sofa/corp{ @@ -37188,6 +39271,7 @@ "fzq" = ( /obj/machinery/gibber, /obj/machinery/duct, +/obj/effect/decal/cleanable/blood, /turf/open/floor/iron/dark/textured, /area/station/service/kitchen) "fzE" = ( @@ -37248,10 +39332,23 @@ "fDk" = ( /obj/structure/table, /obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/trash/food_packaging, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_x = -5; + pixel_y = 5 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "fDz" = ( +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -37271,6 +39368,17 @@ /obj/structure/cable/layer3, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/hallway) +"fEo" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"fEz" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 9 + }, +/turf/open/floor/iron/checker, +/area/station/command/heads_quarters/ce) "fEE" = ( /obj/machinery/button/door{ id = "cell2outer"; @@ -37290,9 +39398,13 @@ c_tag = "Prisoner Processing"; network = list("ss13","prison") }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "fFa" = ( @@ -37322,7 +39434,6 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/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, @@ -37357,12 +39468,23 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/central) +"fIw" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "fJf" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box/white{ color = "#52B4E9" }, /obj/machinery/airalarm/directional/west, +/obj/machinery/light/cold/directional/south, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/treatment_center) "fJi" = ( @@ -37382,15 +39504,8 @@ /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) "fJP" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/carpet/orange, /area/station/command/heads_quarters/qm) "fJT" = ( /obj/machinery/door/window/left/directional/north{ @@ -37422,12 +39537,14 @@ /turf/open/floor/iron/dark, /area/station/engineering/gravity_generator) "fKv" = ( -/obj/structure/closet/secure_closet/security/sec, /obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, /obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/siding/red{ + dir = 10 + }, +/obj/structure/closet/secure_closet/security/sec{ + anchored = 1 + }, /turf/open/floor/iron/dark, /area/station/security/lockers) "fLd" = ( @@ -37442,6 +39559,13 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"fLl" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/warden) "fLo" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37461,9 +39585,31 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/storage) +"fLU" = ( +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/white/side{ + dir = 9 + }, +/area/station/science/research) "fLX" = ( /turf/closed/wall/r_wall, /area/station/science/breakroom) +"fMy" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/science/robotics/lab) +"fMH" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/station/service/bar) "fMU" = ( /obj/structure/sign/warning/electric_shock/directional/south, /obj/structure/cable, @@ -37499,6 +39645,14 @@ /obj/structure/table, /turf/open/floor/iron/dark, /area/station/engineering/storage) +"fOA" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "fOC" = ( /obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, @@ -37516,6 +39670,23 @@ }, /turf/open/floor/stone, /area/station/service/bar) +"fRx" = ( +/obj/machinery/door/firedoor, +/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/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central) "fRJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -37531,29 +39702,6 @@ /obj/effect/spawner/random/vending/colavend, /turf/open/floor/iron, /area/station/commons/locker) -"fSw" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Quartermaster's Office" - }, -/obj/item/radio/intercom{ - pixel_y = -35 - }, -/obj/machinery/status_display/supply{ - pixel_x = -32 - }, -/obj/machinery/computer/security/qm{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) "fSN" = ( /obj/machinery/portable_atmospherics/canister/anesthetic_mix, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -37572,8 +39720,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, -/obj/structure/cable{ - pixel_x = -1 +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) @@ -37584,11 +39734,12 @@ /area/station/service/library) "fTC" = ( /obj/machinery/light/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "fTR" = ( /obj/effect/landmark/start/hangover, -/obj/effect/turf_decal/siding/dark{ +/obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 }, /turf/open/floor/iron, @@ -37627,6 +39778,12 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/cargo/storage) "fVQ" = ( @@ -37654,6 +39811,7 @@ "fWv" = ( /obj/effect/turf_decal/tile/blue, /obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/siding/thinplating_new/corner, /turf/open/floor/iron, /area/station/hallway/primary/fore) "fWY" = ( @@ -37664,10 +39822,13 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "fXW" = ( -/obj/structure/closet/firecloset, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/structure/closet/toolcloset, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"fYG" = ( +/turf/open/floor/iron/dark/small, +/area/station/security/courtroom) "fYM" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -37678,6 +39839,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/aft) "fZc" = ( @@ -37697,7 +39859,6 @@ /turf/open/floor/iron, /area/station/commons/fitness) "fZA" = ( -/obj/structure/railing, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -37722,12 +39883,17 @@ pixel_y = 3 }, /obj/item/storage/box/rxglasses, -/obj/item/hand_labeler, /obj/item/gun/syringe, /obj/item/gun/syringe, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/door/window/left/directional/west{ + req_access = list("medical"); + name = "Syringe Gun Access" + }, /turf/open/floor/iron/dark, /area/station/medical/storage) "gbv" = ( @@ -37745,6 +39911,9 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, +/obj/effect/turf_decal/siding{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/medical/storage) "gco" = ( @@ -37761,18 +39930,27 @@ layer = 3.3; name = "Xenobio Pen 2 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, /area/station/science/xenobiology) +"gdz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/ai_monitored/command/storage/eva) "gdA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/atmos) "gdU" = ( -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "gee" = ( /obj/machinery/light/directional/west, @@ -37876,14 +40054,19 @@ pixel_y = 25; pixel_x = 6 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "glk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/station/cargo/storage) "glE" = ( @@ -37895,7 +40078,8 @@ dir = 8 }, /obj/structure/cable, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "gni" = ( /obj/effect/decal/cleanable/dirt, @@ -37908,7 +40092,7 @@ /area/station/engineering/gravity_generator) "gnX" = ( /obj/machinery/holopad, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/command/heads_quarters/rd) "gnY" = ( /obj/structure/disposalpipe/segment{ @@ -37952,6 +40136,14 @@ /obj/machinery/holopad/secure, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"gpt" = ( +/obj/machinery/power/shieldwallgen, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/turf/open/floor/iron/dark/small, +/area/station/command/teleporter) "gpu" = ( /turf/closed/wall, /area/station/cargo/office) @@ -37971,6 +40163,12 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"gqB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/dark_green, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/station/service/hydroponics/garden) "gqW" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/effect/turf_decal/siding/wood{ @@ -37985,7 +40183,13 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) +"grO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/station/command/meeting_room) "grS" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -38052,6 +40256,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/commons/storage/tools) +"guN" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/end, +/turf/open/floor/iron, +/area/station/security/brig) "gvu" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38066,12 +40278,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"gvK" = ( -/obj/structure/sign/warning/radiation/rad_area/directional/east, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/gravity_generator) "gvN" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -38090,7 +40296,7 @@ /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "kitchen"; - name = "kitchen shutters" + name = "Kitchen shutters" }, /obj/machinery/door/firedoor, /obj/item/storage/fancy/donut_box, @@ -38185,16 +40391,24 @@ "gAO" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "kitchen"; - name = "kitchen shutters" + name = "Kitchen shutters" }, /obj/structure/table/reinforced, /obj/machinery/door/firedoor, /obj/structure/displaycase/forsale/kitchen, /turf/open/floor/iron/kitchen/diagonal, /area/station/service/kitchen) +"gAX" = ( +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/filled/line, +/turf/open/floor/iron, +/area/station/service/hydroponics) "gBt" = ( /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, /turf/open/floor/iron, /area/station/service/hydroponics) "gBv" = ( @@ -38209,6 +40423,27 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/bitrunning/den) +"gBJ" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "biohazard containment door" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/herringbone, +/area/station/science/research) "gBY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38222,7 +40457,7 @@ layer = 3.3; name = "Xenobio Pen 8 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -38269,6 +40504,13 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"gEZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/security/prison) "gFl" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt, @@ -38282,6 +40524,10 @@ "gFX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "gGb" = ( @@ -38290,6 +40536,9 @@ /area/station/ai_monitored/turret_protected/ai) "gGl" = ( /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) "gGJ" = ( @@ -38297,13 +40546,16 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "gGM" = ( -/turf/closed/wall/r_wall, -/area/station/medical/morgue) +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/security/prison) "gHi" = ( /obj/effect/turf_decal/siding/purple/corner{ dir = 4 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/turf/open/floor/iron/white/diagonal, /area/station/science/lab) "gHj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38311,10 +40563,9 @@ /obj/structure/cable, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/thinplating_new{ - dir = 5 + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "gHq" = ( /obj/effect/decal/cleanable/dirt, @@ -38336,6 +40587,16 @@ dir = 1 }, /area/station/engineering/atmos) +"gHS" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/large, +/area/station/security/brig) "gIa" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -38366,9 +40627,7 @@ /area/station/maintenance/starboard/aft) "gIW" = ( /obj/structure/table/glass, -/turf/open/floor/iron/chapel{ - dir = 4 - }, +/turf/open/floor/iron/dark/herringbone, /area/station/service/chapel) "gJs" = ( /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ @@ -38405,7 +40664,7 @@ dir = 8 }, /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "gLH" = ( /obj/machinery/door/airlock/external{ name = "External Access" @@ -38428,6 +40687,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/station/cargo/storage) "gMk" = ( @@ -38442,6 +40702,8 @@ /obj/machinery/shower/directional/east, /obj/machinery/power/apc/auto_name/directional/north, /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/prison/shower) "gMF" = ( @@ -38458,7 +40720,6 @@ /area/station/service/abandoned_gambling_den) "gMV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/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{ @@ -38481,17 +40742,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/security/courtroom) "gNG" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/structure/cable, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, /turf/open/floor/iron, /area/station/security/brig) "gNQ" = ( @@ -38511,6 +40767,10 @@ /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/iron/checker, /area/station/science/lab) +"gOm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/carpet, +/area/station/service/chapel) "gOJ" = ( /obj/structure/sign/warning/secure_area/directional/west, /obj/machinery/porta_turret/ai{ @@ -38538,10 +40798,16 @@ /obj/machinery/porta_turret/ai{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "gPV" = ( /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "detective_shutters"; + name = "Detective's Office Shutters" + }, +/obj/structure/cable, /turf/open/floor/plating, /area/station/security/detectives_office) "gQt" = ( @@ -38555,6 +40821,15 @@ /obj/effect/turf_decal/tile/blue/full, /turf/open/floor/iron/white, /area/station/medical/surgery/fore) +"gQX" = ( +/obj/machinery/computer/exoscanner_control{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "gRe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -38567,6 +40842,10 @@ pixel_x = 1; pixel_y = 5 }, +/obj/machinery/button/door/directional/east{ + id = "detective_shutters"; + name = "Detective Privacy Shutters" + }, /turf/open/floor/carpet, /area/station/security/detectives_office) "gSg" = ( @@ -38595,6 +40874,12 @@ }, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) +"gTD" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/security/brig) "gUp" = ( /turf/closed/wall, /area/station/engineering/lobby) @@ -38627,12 +40912,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, /turf/open/floor/plating, /area/station/maintenance/starboard) "gVZ" = ( /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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "gWc" = ( @@ -38670,6 +40962,16 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/engineering/gravity_generator) +"gWN" = ( +/obj/structure/disposalpipe/segment, +/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 = 4 + }, +/turf/open/floor/wood/large, +/area/station/command/meeting_room) "gXs" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -38689,6 +40991,14 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"gYi" = ( +/obj/effect/turf_decal/delivery/red, +/obj/structure/sign/nanotrasen{ + pixel_x = -32 + }, +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/iron/textured, +/area/station/ai_monitored/command/storage/eva) "gYq" = ( /obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine, @@ -38725,10 +41035,25 @@ }, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"hae" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/warden) "ham" = ( /obj/machinery/holopad/secure, /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) +"hap" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "haT" = ( /obj/machinery/ai_slipper{ uses = 10 @@ -38740,6 +41065,10 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) "hbc" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "hbp" = ( @@ -38761,7 +41090,7 @@ }, /obj/machinery/airalarm/directional/east, /turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "hbD" = ( /obj/effect/landmark/start/geneticist, /obj/structure/chair/office{ @@ -38804,7 +41133,7 @@ dir = 1 }, /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/security/courtroom) "hcG" = ( /obj/structure/disposalpipe/segment{ @@ -38834,15 +41163,12 @@ /area/station/engineering/storage/tcomms) "heY" = ( /obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "hfv" = ( /obj/effect/spawner/random/structure/crate_loot, @@ -38881,6 +41207,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"hhj" = ( +/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/turf_decal/tile/neutral/full, +/turf/open/floor/iron/herringbone, +/area/station/hallway/primary/central) "hhs" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -38936,6 +41269,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/hallway/secondary/service) "hjK" = ( @@ -38990,7 +41324,7 @@ /obj/effect/turf_decal/siding/purple{ dir = 4 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/science/lab) "hnK" = ( /obj/structure/lattice, @@ -39006,6 +41340,12 @@ "hox" = ( /turf/open/floor/iron/dark, /area/station/science/explab) +"hoM" = ( +/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/dark, +/area/station/engineering/transit_tube) "hoO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/blobstart, @@ -39013,11 +41353,35 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"hpc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/plumbing/growing_vat, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/xenobiology) +"hpP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "hpT" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/hallway) +"hqy" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "hqz" = ( /obj/structure/chair{ dir = 8 @@ -39069,15 +41433,24 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"hsr" = ( +/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/small, +/area/station/security/processing) "hsx" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, /obj/effect/turf_decal/tile/red{ dir = 1 }, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/siding/red{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/closet/secure_closet/security/sec{ + anchored = 1 + }, /turf/open/floor/iron/dark, /area/station/security/lockers) "hsP" = ( @@ -39105,6 +41478,12 @@ "huE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 10 + }, /turf/open/floor/carpet, /area/station/command/meeting_room) "huR" = ( @@ -39114,6 +41493,15 @@ }, /turf/open/space/basic, /area/space/nearstation) +"hvl" = ( +/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/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/processing) "hvP" = ( /obj/effect/turf_decal/trimline/blue/filled/warning, /turf/open/floor/iron/white, @@ -39164,8 +41552,18 @@ dir = 1 }, /obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/blue/filled/end{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) +"hzx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "hzF" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -39199,13 +41597,19 @@ pixel_y = -25; specialfunctions = 4 }, -/turf/open/floor/carpet, +/obj/effect/spawner/random/bedsheet, +/obj/item/pillow/random, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "hAw" = ( /turf/closed/wall, /area/station/service/janitor) "hAy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "hAK" = ( @@ -39237,6 +41641,8 @@ "hCD" = ( /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/iron, /area/station/security/prison/work) "hCK" = ( @@ -39269,6 +41675,9 @@ /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/neutral/end{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "hDI" = ( @@ -39283,25 +41692,42 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"hDT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/xenobiology) "hFg" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ - name = "Port Docking Bay 1"; - safety_mode = 1 + name = "Arrival Airlock"; + space_dir = 2 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"hFD" = ( +/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/tile/neutral/fourcorners, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/security/warden) "hGn" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 + dir = 8 }, /turf/open/floor/iron, /area/station/cargo/warehouse) "hGw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) "hGD" = ( /obj/effect/turf_decal/stripes/line{ @@ -39317,7 +41743,7 @@ layer = 3.3; name = "Xenobio Pen 3 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -39345,6 +41771,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall, /area/station/maintenance/starboard/fore) +"hIr" = ( +/obj/structure/urinal{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet) "hIF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39369,6 +41802,14 @@ }, /turf/open/floor/iron/white, /area/station/hallway/secondary/service) +"hJN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "hLa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -39416,6 +41857,12 @@ }, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) +"hOS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "hOW" = ( /obj/machinery/component_printer, /obj/machinery/camera/directional/west{ @@ -39446,17 +41893,36 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "hQK" = ( /obj/machinery/light/small/directional/west, /obj/structure/dresser, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) +"hQQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) "hQX" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/engineering/atmos) "hQY" = ( /obj/structure/table/reinforced, @@ -39517,19 +41983,29 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "hSK" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/spawner/random/structure/closet_maintenance, -/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/structure/cable, +/turf/open/floor/iron/dark/smooth_half, +/area/station/ai_monitored/command/storage/eva) +"hTm" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/security/processing) "hTU" = ( /turf/open/floor/engine, /area/station/engineering/supermatter) "hTZ" = ( /obj/structure/cable, -/turf/open/floor/iron, +/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/aft) "hUD" = ( /obj/structure/sink/directional/south, @@ -39552,14 +42028,18 @@ "hVK" = ( /obj/effect/landmark/event_spawn, /obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "hWf" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/item/storage/box/mothic_rations, -/obj/structure/sign/poster/contraband/mothic_rations/directional/north{ - pixel_x = -1 - }, +/obj/structure/sign/poster/contraband/mothic_rations/directional/north, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "hWJ" = ( @@ -39570,6 +42050,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/trimline/brown/filled/corner, /turf/open/floor/iron, /area/station/cargo/storage) "hWT" = ( @@ -39606,6 +42087,15 @@ }, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) +"hXI" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/turf/open/floor/plating, +/area/station/science/robotics/lab) "hXL" = ( /obj/structure/showcase/cyborg/old{ dir = 4; @@ -39640,15 +42130,13 @@ pixel_y = 4 }, /obj/item/restraints/handcuffs, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "iaE" = ( /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/cable, /turf/open/floor/iron, /area/station/security/prison) "iaG" = ( @@ -39665,6 +42153,8 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/public, /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, /area/station/security/prison/work) "ibO" = ( @@ -39725,6 +42215,13 @@ "iex" = ( /turf/closed/wall, /area/station/security/checkpoint/arrivals) +"ieP" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/brig) "ieW" = ( /obj/machinery/atmospherics/components/binary/valve{ dir = 4 @@ -39743,15 +42240,9 @@ /obj/effect/spawner/random/entertainment/arcade{ dir = 4 }, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) -"ifK" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/maintenance/port/aft) "ifU" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/firealarm/directional/west, @@ -39788,29 +42279,29 @@ /obj/effect/turf_decal/siding/purple{ dir = 1 }, +/obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/science/xenobiology) "iiD" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - 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/iron, +/turf/open/floor/iron/stairs{ + dir = 4 + }, /area/station/hallway/primary/central) "ijc" = ( /obj/structure/table, /obj/item/stack/sheet/iron/fifty, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"ijU" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/chapel, +/area/station/service/chapel) "ika" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer1{ dir = 10 @@ -39837,7 +42328,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/large, /area/station/service/hydroponics/garden) "iln" = ( /obj/machinery/door/airlock/public/glass{ @@ -39888,7 +42385,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "int" = ( @@ -39908,13 +42405,13 @@ /turf/open/floor/iron/dark, /area/station/command/heads_quarters/cmo) "inG" = ( -/obj/structure/lattice, /obj/structure/transit_tube/crossing/horizontal, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) "inP" = ( /obj/machinery/atmospherics/components/tank, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/science/ordnance) "iob" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40003,6 +42500,41 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/command/bridge) +"itd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Central Access" + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central) +"itk" = ( +/obj/effect/landmark/start/security_officer, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/security/office) +"itv" = ( +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/office) "itz" = ( /obj/structure/cable, /obj/machinery/light/directional/east, @@ -40074,16 +42606,23 @@ /turf/open/floor/plating, /area/station/security/execution/transfer) "iwQ" = ( -/obj/effect/turf_decal/tile/red{ +/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/effect/turf_decal/tile/red{ - dir = 4 +/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, /turf/open/floor/iron, /area/station/security/brig) +"ixa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "ixk" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40127,11 +42666,20 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "iAF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/structure/table/glass, +/obj/item/phone{ + pixel_x = -3; + pixel_y = 3 }, -/turf/open/floor/plating, -/area/station/engineering/main) +/obj/item/cigbutt/cigarbutt{ + pixel_x = 5; + pixel_y = -1 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "iAZ" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -40150,8 +42698,8 @@ "iBK" = ( /obj/structure/cable, /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/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/aft) "iBZ" = ( @@ -40168,6 +42716,9 @@ /area/station/engineering/supermatter) "iCq" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, /turf/open/floor/iron, /area/station/security/prison/work) "iCB" = ( @@ -40263,6 +42814,16 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"iIK" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/brig) "iJi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40379,7 +42940,7 @@ /area/station/maintenance/port/aft) "iOD" = ( /turf/closed/wall/r_wall, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "iOI" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, @@ -40393,8 +42954,16 @@ /obj/effect/turf_decal/trimline/brown/filled/end{ dir = 1 }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, /turf/open/floor/iron, /area/station/medical/medbay/aft) +"iPs" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) "iPN" = ( /turf/open/floor/engine/n2, /area/station/engineering/atmos) @@ -40402,8 +42971,21 @@ /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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"iPW" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/start/hangover, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, +/area/station/commons/dorms) "iQC" = ( /turf/closed/wall/r_wall, /area/station/engineering/engine_smes) @@ -40427,6 +43009,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) "iQQ" = ( @@ -40465,19 +43053,18 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"iTc" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/dark/small, +/area/station/security/processing) "iTt" = ( -/obj/item/radio/intercom{ - desc = "Talk through this. It looks like it has been modified to not broadcast."; - name = "Prison Intercom (General)"; - pixel_x = 25; - pixel_y = -2; - prison_radio = 1 - }, /obj/effect/decal/cleanable/dirt, /obj/structure/chair{ dir = 8 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "iTE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40493,7 +43080,7 @@ /area/station/maintenance/starboard/fore) "iTO" = ( /obj/structure/cable, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/sorting) "iUy" = ( /obj/structure/steam_vent, @@ -40540,6 +43127,21 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/aft) +"iYw" = ( +/obj/structure/sink/directional/south{ + dir = 8; + pixel_x = 14; + pixel_y = 0 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) +"iYP" = ( +/turf/open/floor/wood/large, +/area/station/command/meeting_room) "iZL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/light_switch/directional/east, @@ -40554,12 +43156,25 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"jaq" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) +"jat" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/iron/chapel{ + dir = 8 + }, +/area/station/service/chapel) "jaD" = ( /obj/machinery/status_display/evac/directional/south, /obj/structure/chair/office{ dir = 8 }, -/obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "jaL" = ( @@ -40634,7 +43249,7 @@ /area/station/security/prison) "jdH" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/random/maintenance/five, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "jef" = ( @@ -40695,8 +43310,16 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/commons/dorms) +"jgM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "jhq" = ( /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/trimline/green/filled/corner{ @@ -40725,20 +43348,25 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) "jiV" = ( -/obj/structure/chair/stool, +/obj/structure/chair/pew/right{ + dir = 1 + }, /turf/open/floor/iron/chapel{ - dir = 4 + dir = 8 }, /area/station/service/chapel) "jjk" = ( /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen) "jjn" = ( -/obj/structure/table, /obj/item/assembly/signaler, /obj/item/clothing/suit/jacket/straight_jacket, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, /area/station/security/brig) "jjr" = ( /obj/effect/turf_decal/tile/yellow{ @@ -40769,15 +43397,6 @@ /area/station/engineering/atmos) "jlk" = ( /obj/structure/table/glass, -/obj/item/storage/medkit/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/toxin, -/obj/item/storage/medkit/regular{ - pixel_x = -3; - pixel_y = -3 - }, /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/door/window/right/directional/north{ name = "First-Aid Supplies"; @@ -40785,6 +43404,10 @@ req_access = list("medical") }, /obj/effect/turf_decal/tile/blue/full, +/obj/item/defibrillator/loaded{ + pixel_y = 3 + }, +/obj/item/defibrillator/loaded, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/storage) "jly" = ( @@ -40839,7 +43462,13 @@ "joy" = ( /obj/machinery/door/firedoor, /obj/structure/cable, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/port) "jqJ" = ( /obj/effect/decal/cleanable/dirt, @@ -40873,14 +43502,6 @@ pixel_x = -4 }, /obj/item/multitool/circuit, -/obj/item/stock_parts/cell/high{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = 8; - pixel_y = -2 - }, /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/white/side{ dir = 4 @@ -40889,9 +43510,9 @@ "jrJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/holopad, -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_large, +/obj/structure/cable, +/turf/open/floor/carpet/orange, /area/station/command/heads_quarters/qm) "jsh" = ( /turf/open/floor/iron/dark, @@ -40917,6 +43538,9 @@ /obj/structure/railing/corner{ dir = 8 }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "jsX" = ( @@ -40928,9 +43552,8 @@ "jtr" = ( /obj/structure/chair, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) "jtt" = ( @@ -40947,14 +43570,16 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/central) "jtO" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/closed/wall/r_wall, -/area/station/security/brig) +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/small, +/area/station/security/office) "jtY" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -40985,6 +43610,9 @@ "juK" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "jva" = ( @@ -40994,12 +43622,16 @@ /obj/effect/turf_decal/trimline/blue/filled/end{ dir = 1 }, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/large, /area/station/medical/medbay/aft) +"jvv" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/large/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) "jvw" = ( /turf/closed/wall, /area/station/cargo/sorting) @@ -41015,6 +43647,10 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"jvE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white, +/area/station/science/robotics/lab) "jww" = ( /obj/structure/chair/wood, /obj/structure/cable, @@ -41049,8 +43685,23 @@ /area/station/security/prison) "jxy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/science/breakroom) +"jxC" = ( +/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/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "jxQ" = ( /obj/machinery/chem_heater/withbuffer, /obj/structure/window/reinforced/spawner/directional/west, @@ -41124,11 +43775,27 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) +"jEm" = ( +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/bush/large/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) "jEy" = ( /obj/machinery/door/firedoor, /obj/structure/cable, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "jEF" = ( /obj/structure/chair/office/light{ @@ -41193,6 +43860,13 @@ }, /turf/open/floor/iron/cafeteria, /area/station/command/heads_quarters/rd) +"jIa" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/commons/dorms) "jIh" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -41211,7 +43885,7 @@ /area/station/medical/cryo) "jIp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "jIP" = ( /obj/machinery/camera/motion/directional/west{ @@ -41229,6 +43903,12 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/aisat/hallway) +"jJS" = ( +/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, +/area/station/security/prison/garden) "jKa" = ( /obj/effect/spawner/random/trash/garbage{ spawn_scatter_radius = 1 @@ -41240,6 +43920,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"jKk" = ( +/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/turf_decal/siding/dark/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/dorms) "jKq" = ( /obj/structure/cable, /turf/closed/wall, @@ -41280,7 +43969,13 @@ /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, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/starboard) "jMp" = ( /obj/structure/cable, @@ -41289,8 +43984,11 @@ /turf/open/floor/iron/white, /area/station/medical/surgery/aft) "jMV" = ( -/turf/open/floor/iron/dark, -/area/station/science/breakroom) +/obj/machinery/hydroponics/constructable, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) "jMY" = ( /obj/structure/table, /obj/item/stack/cable_coil{ @@ -41323,7 +44021,8 @@ /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "jQC" = ( /obj/structure/broken_flooring/side/directional/north, @@ -41342,6 +44041,12 @@ /area/station/science/xenobiology) "jRj" = ( /obj/structure/cable, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/office) "jRl" = ( @@ -41362,6 +44067,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/table, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/prison) "jRR" = ( @@ -41379,6 +44085,9 @@ id = "qm_warehouse"; name = "warehouse shutters" }, +/obj/effect/turf_decal/siding/thinplating_new/corner{ + dir = 8 + }, /turf/open/floor/iron, /area/station/cargo/storage) "jSz" = ( @@ -41402,6 +44111,19 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) +"jTH" = ( +/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/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/corner, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "jTP" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -41455,6 +44177,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "jVL" = ( @@ -41469,7 +44192,10 @@ dir = 4 }, /obj/structure/table/reinforced, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/dark/textured_edge{ + dir = 8 + }, /area/station/science/ordnance/testlab) "jWI" = ( /obj/effect/decal/cleanable/dirt, @@ -41525,6 +44251,9 @@ dir = 4 }, /obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/blue/filled/end{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) "jYU" = ( @@ -41585,7 +44314,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "kdb" = ( /obj/machinery/button/door{ id = "cell3inner"; @@ -41663,10 +44392,30 @@ /obj/item/pen, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) +"kfH" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "kfK" = ( /obj/machinery/vending/tool, /turf/open/floor/iron, /area/station/engineering/main) +"kgb" = ( +/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/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "khb" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/filingcabinet, @@ -41677,6 +44426,9 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "khB" = ( @@ -41733,14 +44485,36 @@ }, /turf/open/floor/iron/dark, /area/station/science/genetics) +"kiV" = ( +/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 = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/commons/dorms) "kiX" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"kjw" = ( +/obj/effect/turf_decal/tile/dark_blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "kjz" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/storage) "kjH" = ( @@ -41768,6 +44542,9 @@ name = "Mass Driver Intersection" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "kki" = ( @@ -41791,6 +44568,7 @@ fax_name = "Law Office"; name = "Law Office Fax Machine" }, +/obj/item/radio/intercom/directional/south, /turf/open/floor/wood, /area/station/service/lawoffice) "klm" = ( @@ -41837,9 +44615,20 @@ /area/space/nearstation) "kmx" = ( /obj/effect/mapping_helpers/burnt_floor, -/obj/effect/spawner/random/structure/crate_loot, +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"kmI" = ( +/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/end, +/turf/open/floor/iron/large, +/area/station/service/hydroponics/garden) "kno" = ( /obj/machinery/door/poddoor/preopen{ id = "cmoprivacy"; @@ -41892,11 +44681,17 @@ /obj/effect/spawner/random/structure/crate_loot, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"kpn" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 9 + }, +/turf/open/floor/iron/dark/herringbone, +/area/station/commons/storage/primary) "kpQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 10 }, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/station/maintenance/starboard/aft) "kqo" = ( /obj/structure/cable, @@ -41918,6 +44713,9 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"krg" = ( +/turf/open/floor/carpet/orange, +/area/station/command/heads_quarters/qm) "krv" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -41940,6 +44738,7 @@ }, /obj/structure/fans/tiny, /obj/effect/mapping_helpers/broken_floor, +/obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "ksL" = ( @@ -41950,6 +44749,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"ksN" = ( +/obj/structure/disposalpipe/segment{ + 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/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "ksU" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 @@ -41962,11 +44776,12 @@ /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) "ktJ" = ( -/obj/machinery/conveyor/inverted{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 1; id = "mining" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/turf/open/floor/plating, /area/station/cargo/miningoffice) "kui" = ( /obj/machinery/announcement_system, @@ -41974,13 +44789,13 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "kul" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/service/chapel) "kuy" = ( /obj/structure/cable, @@ -42017,9 +44832,11 @@ "kwK" = ( /obj/machinery/light/directional/west, /obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/white/side{ - dir = 5 +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/herringbone, /area/station/science/research) "kxf" = ( /obj/effect/turf_decal/siding/wood{ @@ -42030,10 +44847,23 @@ /turf/open/floor/iron/dark, /area/station/service/bar) "kxJ" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/station/security/prison) +"kxN" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/large, +/area/station/command/meeting_room) +"kxV" = ( +/obj/structure/rack, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "kyr" = ( /obj/structure/showcase/cyborg/old{ dir = 8; @@ -42059,9 +44889,22 @@ "kyG" = ( /turf/open/floor/iron/freezer, /area/station/science/xenobiology) +"kzm" = ( +/obj/structure/lattice/catwalk, +/obj/structure/transit_tube/curved{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) "kzL" = ( /turf/open/floor/wood, /area/station/service/bar) +"kzZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) "kAT" = ( /obj/structure/table, /obj/item/folder/blue, @@ -42070,6 +44913,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/tcommsat/computer) "kBm" = ( @@ -42098,13 +44942,20 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) +"kDG" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/station/commons/dorms) "kDI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42133,12 +44984,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) "kEC" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/engineering/main) +/area/station/engineering/transit_tube) "kFs" = ( /obj/effect/landmark/start/paramedic, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42147,11 +44999,28 @@ }, /turf/open/floor/iron/white, /area/station/medical/break_room) +"kFD" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) +"kFX" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/commons/dorms) "kGA" = ( /obj/machinery/chem_heater/withbuffer, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/tile/yellow/full, /turf/open/floor/iron/white/smooth_large, /area/station/medical/pharmacy) @@ -42164,6 +45033,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/science/breakroom) "kHj" = ( @@ -42176,6 +45048,14 @@ /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) +"kHJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/iron/dark/small, +/area/station/commons/dorms) "kHP" = ( /turf/closed/wall, /area/station/commons/storage/tools) @@ -42190,12 +45070,30 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/prison) +"kIu" = ( +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/chair, +/turf/open/floor/iron/small, +/area/station/security/office) "kIQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 10 }, /turf/open/floor/iron, /area/station/engineering/atmos) +"kIU" = ( +/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/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/iron/dark/small, +/area/station/commons/dorms) "kIW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ @@ -42301,9 +45199,12 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/science/genetics) "kLd" = ( -/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, /turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/area/station/security/warden) "kLj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/engine, @@ -42326,7 +45227,7 @@ /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, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/sorting) "kMC" = ( /obj/structure/window/reinforced/spawner/directional/west, @@ -42334,18 +45235,22 @@ desc = "A pneumatic waste disposal unit. This one leads to the morgue."; name = "corpse disposal" }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/dark{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured, /area/station/medical/medbay/aft) "kMP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/computer/security/telescreen/prison{ pixel_y = 30 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/machinery/light/directional/north, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "kMT" = ( @@ -42370,12 +45275,15 @@ /turf/open/floor/carpet/blue, /area/station/service/lawoffice) "kNo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/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/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "kOT" = ( /obj/structure/rack, /obj/item/crowbar/red, @@ -42397,8 +45305,18 @@ /obj/effect/turf_decal/trimline/green/filled/end{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/hallway/secondary/service) +"kPi" = ( +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/station/hallway/primary/central) "kPW" = ( /obj/effect/spawner/random/structure/crate_loot, /turf/open/floor/iron, @@ -42479,9 +45397,11 @@ "kUv" = ( /obj/machinery/light/small/directional/east, /obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/stripes/line, -/obj/structure/sink/kitchen/directional/south, -/turf/open/floor/iron/showroomfloor, +/obj/machinery/computer/order_console/cook{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured, /area/station/service/kitchen) "kVl" = ( /obj/effect/turf_decal/siding/white{ @@ -42498,7 +45418,9 @@ /area/station/maintenance/aft) "kVu" = ( /obj/effect/turf_decal/stripes/corner, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_edge{ + dir = 1 + }, /area/station/science/ordnance/testlab) "kVO" = ( /obj/effect/turf_decal/stripes/corner{ @@ -42512,6 +45434,10 @@ "kWm" = ( /obj/structure/closet/secure_closet/hydroponics, /obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "kWA" = ( @@ -42523,27 +45449,53 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"kXc" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/security/brig) "kXf" = ( /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{ - pixel_x = -1 +/obj/structure/cable, +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 4 }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) "kXs" = ( /obj/effect/spawner/xmastree, -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/service/chapel) "kXt" = ( /obj/machinery/rnd/experimentor, /turf/open/floor/engine, /area/station/science/explab) +"kXC" = ( +/obj/item/flashlight/flare/candle{ + pixel_x = 1; + pixel_y = 10 + }, +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/chapel) +"kXU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/ai_monitored/command/storage/eva) "kYd" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, @@ -42557,6 +45509,9 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 }, +/obj/effect/turf_decal/siding{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/medical/storage) "kYR" = ( @@ -42605,7 +45560,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/command/heads_quarters/rd) "lcl" = ( /obj/effect/turf_decal/trimline/green/filled/line, @@ -42705,8 +45660,12 @@ "lhi" = ( /obj/machinery/light/directional/south, /obj/structure/closet/secure_closet/brig, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, /area/station/security/brig) "lhP" = ( /obj/structure/cable, @@ -42817,6 +45776,10 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/aft) +"lmv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/closed/wall, +/area/station/engineering/transit_tube) "lmB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42870,6 +45833,15 @@ /obj/structure/sign/warning/cold_temp, /turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) +"lon" = ( +/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/line, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/brig) "loA" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42883,6 +45855,13 @@ /obj/structure/cable/layer3, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"lpn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/chair, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) "lqn" = ( /obj/effect/spawner/random/maintenance, /obj/structure/rack, @@ -42890,29 +45869,57 @@ /area/station/maintenance/starboard) "lqJ" = ( /obj/structure/table/wood, -/obj/item/flashlight/lantern, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/chapel) "lqO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "lrg" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/item/food/grown/wheat, +/obj/item/food/grown/watermelon, +/obj/item/food/grown/citrus/orange, +/obj/item/food/grown/grapes, +/obj/structure/table/glass, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) +"lrN" = ( +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + 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/grille, -/turf/open/floor/plating, -/area/station/medical/virology) -"lrX" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ dir = 1 }, -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_corner{ dir = 8 }, +/area/station/ai_monitored/command/storage/eva) +"lrX" = ( /obj/machinery/suit_storage_unit/security, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, /turf/open/floor/iron/dark, /area/station/security/brig) "lsd" = ( @@ -42932,7 +45939,7 @@ /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, +/turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) "ltd" = ( /obj/structure/disposalpipe/segment, @@ -42981,12 +45988,8 @@ /turf/open/floor/plating, /area/station/maintenance/aft) "lwj" = ( -/obj/machinery/door/morgue{ - name = "Confession Booth (Chaplain)"; - req_access_txt = "22" - }, /obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/closed/wall, /area/station/service/chapel) "lwx" = ( /obj/machinery/light/small/directional/south, @@ -43022,12 +46025,30 @@ /obj/effect/spawner/random/maintenance/three, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"lyj" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/table/wood, +/turf/open/floor/wood/parquet, +/area/station/commons/dorms) +"lzo" = ( +/obj/machinery/light/directional/east, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/diagonal_centre, +/turf/open/floor/iron/dark/diagonal, +/area/station/hallway/primary/fore) "lzW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "lzY" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/security/brig) "lzZ" = ( @@ -43183,6 +46204,9 @@ dir = 8 }, /obj/machinery/atmospherics/components/binary/valve/digital, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/science/ordnance) "lFC" = ( @@ -43190,21 +46214,18 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "lFP" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/siding/thinplating_new, /obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 + dir = 1 }, -/obj/machinery/firealarm/directional/east, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "lFX" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, /obj/structure/tank_holder/extinguisher, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/trimline/blue/filled, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "lGf" = ( @@ -43234,13 +46255,33 @@ "lGN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/aft) "lHy" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/structure/table/wood, +/obj/item/food/grown/harebell{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/food/grown/harebell{ + pixel_x = 8; + pixel_y = 12 }, +/obj/item/food/grown/harebell{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/food/grown/harebell{ + pixel_y = 7 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/newscaster/directional/south, /turf/open/floor/iron/dark, /area/station/service/chapel) "lHO" = ( @@ -43274,34 +46315,35 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitory" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron, /area/station/commons/dorms) -"lIx" = ( -/obj/structure/table, -/obj/item/clipboard, -/obj/item/computer_disk/quartermaster, -/obj/item/computer_disk/quartermaster, -/obj/item/computer_disk/quartermaster, -/obj/item/coin/silver, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 8 +"lIv" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 }, -/obj/item/paper_bin/carbon{ - pixel_x = -3; - pixel_y = 7 +/turf/open/floor/plating, +/area/station/maintenance/port) +"lIx" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/brown{ + dir = 1 }, -/obj/item/stamp/head/qm, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) +/turf/open/floor/iron/herringbone, +/area/station/cargo/miningdock) "lII" = ( -/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, -/turf/open/floor/iron, -/area/station/hallway/primary/central) +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/white/corner, +/area/station/hallway/primary/starboard) "lIS" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -43375,12 +46417,16 @@ /turf/open/space, /area/space/nearstation) "lMv" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 }, /turf/open/floor/iron/dark, /area/station/security/brig) +"lMw" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "lNJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold/general/visible{ dir = 8 @@ -43408,31 +46454,23 @@ }, /obj/structure/table, /obj/item/reagent_containers/cup/glass/bottle/beer{ - pixel_y = 10; - pixel_x = -9 + pixel_y = 7; + pixel_x = 8 }, /obj/item/reagent_containers/cup/glass/bottle/beer{ - pixel_x = -9 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 10; - pixel_y = -1 + pixel_x = -4; + pixel_y = 6 }, /obj/item/lighter/skull{ - pixel_x = 7; - pixel_y = 12 + pixel_x = 4; + pixel_y = 7 }, -/obj/item/clothing/mask/cigarette/rollie/cannabis{ - pixel_x = 1; - pixel_y = 17 +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = 4; + pixel_y = 2 }, -/obj/item/reagent_containers/cup/glass/bottle/beer, /obj/effect/turf_decal/siding/thinplating_new, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/cargo/miningoffice) "lOQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -43494,9 +46532,8 @@ /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "lSp" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 + dir = 8 }, /turf/open/floor/iron, /area/station/cargo/warehouse) @@ -43525,13 +46562,13 @@ /turf/open/floor/plating, /area/station/maintenance/starboard) "lTe" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 +/obj/effect/turf_decal/siding/red{ + dir = 5 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/security/brig) "lTl" = ( /obj/effect/turf_decal/trimline/green/filled/line, @@ -43542,6 +46579,7 @@ /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/hallway/secondary/service) "lTx" = ( @@ -43569,7 +46607,7 @@ /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, +/turf/open/floor/iron/small, /area/station/security/brig) "lVv" = ( /obj/structure/disposalpipe/segment{ @@ -43595,7 +46633,7 @@ "lVV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/sorting) "lWD" = ( /obj/machinery/status_display/evac, @@ -43645,6 +46683,11 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/central) +"lYB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron, +/area/station/cargo/office) "lZc" = ( /obj/machinery/newscaster/directional/east, /obj/machinery/dna_scannernew, @@ -43746,12 +46789,21 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/vending/snackvend, /obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "mdr" = ( /obj/machinery/nuclearbomb/beer, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) +"meg" = ( +/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/tile/neutral/fourcorners, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/dark, +/area/station/security/warden) "mex" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 @@ -43797,15 +46849,15 @@ /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 }, -/obj/structure/bed/medical/anchored{ - dir = 8 - }, /obj/item/bedsheet/medical{ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/machinery/light/small/directional/north, /obj/effect/landmark/start/hangover, +/obj/structure/bed/medical/anchored{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/medical/virology) "mgX" = ( @@ -43821,6 +46873,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"miL" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "miU" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -43838,10 +46903,49 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/miningdock) +"mjh" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/locker) +"mjo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "ceprivacy"; + name = "Privacy shutter" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/command/heads_quarters/ce) +"mjq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "mjr" = ( /obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, /area/station/service/bar) +"mjV" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/security/brig) +"mkv" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/brig) "mlh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43849,14 +46953,12 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, /obj/effect/turf_decal/siding/thinplating/corner{ dir = 4 }, +/obj/effect/turf_decal/siding/thinplating_new, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "mlw" = ( /obj/structure/chair/comfy/brown{ @@ -43886,12 +46988,6 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"mnU" = ( -/obj/structure/transit_tube/curved{ - dir = 4 - }, -/turf/open/space/basic, -/area/space/nearstation) "mnZ" = ( /turf/closed/wall, /area/station/service/lawoffice) @@ -43904,11 +47000,38 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"mov" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "mpv" = ( /obj/effect/landmark/start/hangover, /obj/machinery/shower/directional/west, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/white/small, /area/station/commons/toilet) +"mpF" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/iron/dark/smooth_large, +/area/station/ai_monitored/command/storage/eva) "mqi" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/secure_area/directional/south, @@ -43922,11 +47045,13 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/aft) "mqt" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Engineering MiniSat Access" +/obj/structure/closet/emcloset/anchored, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "mqR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -44018,8 +47143,28 @@ /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, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) +"muX" = ( +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/siding/red{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron/herringbone, +/area/station/security/brig) "mvb" = ( /turf/open/floor/iron/white/corner{ dir = 1 @@ -44078,7 +47223,9 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, /area/station/maintenance/port/aft) "mzj" = ( /mob/living/carbon/human/species/monkey, @@ -44091,7 +47238,8 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "mzQ" = ( /turf/closed/wall/r_wall, @@ -44139,6 +47287,10 @@ /obj/effect/mapping_helpers/mail_sorting/medbay/chemistry, /turf/open/floor/iron, /area/station/hallway/primary/central) +"mBP" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/breakroom) "mCb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44163,7 +47315,8 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/tcommsat/computer) "mDB" = ( /obj/structure/disposalpipe/segment{ @@ -44171,9 +47324,19 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"mDS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/science/robotics/lab) "mDY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/red/end{ + dir = 4 + }, +/turf/open/floor/iron/checker, /area/station/security/office) "mEd" = ( /turf/open/floor/plating, @@ -44188,8 +47351,16 @@ /area/station/medical/medbay/aft) "mFY" = ( /obj/machinery/vending/modularpc, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/yellow/end{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) +"mGF" = ( +/obj/structure/chair/sofa/bench/right, +/turf/open/floor/iron/dark/herringbone, +/area/station/hallway/primary/central) "mGG" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /obj/structure/cable, @@ -44228,10 +47399,38 @@ }, /turf/open/floor/iron/white, /area/station/command/heads_quarters/rd) +"mJt" = ( +/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{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/office) "mJM" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/science/breakroom) +"mJS" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) +"mJW" = ( +/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{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/corner, +/obj/effect/turf_decal/siding/thinplating_new/corner{ + dir = 8 + }, +/turf/open/floor/iron/large, +/area/station/service/hydroponics/garden) "mKI" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box/white{ @@ -44337,7 +47536,7 @@ name = "Containment Blast Doors"; pixel_x = 1; pixel_y = -26; - req_access_txt = "55" + req_access = list("xenobiology") }, /turf/open/floor/iron/dark, /area/station/science/xenobiology) @@ -44362,10 +47561,10 @@ /obj/effect/turf_decal/siding/wood{ dir = 15 }, +/obj/machinery/light/small/directional/east, /obj/effect/turf_decal/siding/dark{ dir = 1 }, -/obj/machinery/light/small/directional/east, /turf/open/floor/iron/grimy, /area/station/security/detectives_office) "mQs" = ( @@ -44378,19 +47577,36 @@ /obj/structure/sink/directional/south, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) +"mQS" = ( +/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/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard) "mQY" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 1 + }, /turf/open/floor/iron, /area/station/engineering/atmos) "mRq" = ( /turf/closed/wall, /area/station/commons/toilet/locker) "mSf" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/wood, -/area/station/service/lawoffice) +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/station/commons/vacant_room/commissary) "mSB" = ( /obj/machinery/light/directional/east, /obj/structure/cable, @@ -44410,6 +47626,13 @@ /obj/effect/turf_decal/tile/blue/full, /turf/open/floor/iron/large, /area/station/medical/treatment_center) +"mTv" = ( +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "mTZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44417,8 +47640,10 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "mUY" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, /obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, /turf/open/floor/iron, /area/station/security/brig) "mVj" = ( @@ -44439,6 +47664,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"mWK" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central) "mXg" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44450,6 +47685,12 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"mYi" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/reagent_containers/cup/watering_can, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) "mYK" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -44459,6 +47700,10 @@ /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/trimline/blue/filled/warning, +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) "mYY" = ( @@ -44480,7 +47725,7 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "naL" = ( -/obj/structure/transit_tube/station/reverse, +/obj/structure/transit_tube/station/dispenser, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat_interior) "nba" = ( @@ -44491,7 +47736,11 @@ /turf/open/floor/iron, /area/station/hallway/secondary/service) "nbd" = ( -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/opposingcorners, +/turf/open/floor/iron/dark/textured_large, /area/station/cargo/office) "nbM" = ( /obj/machinery/button/door/directional/east{ @@ -44510,6 +47759,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/fore) +"nco" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "ndu" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -44527,6 +47786,19 @@ /obj/machinery/photocopier, /turf/open/floor/carpet, /area/station/command/heads_quarters/hop) +"neo" = ( +/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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "neP" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 @@ -44574,8 +47846,7 @@ /area/station/engineering/lobby) "ngg" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/weightmachine/weightlifter, -/obj/effect/turf_decal/box, +/obj/structure/chair/stool/directional/west, /turf/open/floor/iron, /area/station/security/prison) "ngm" = ( @@ -44619,15 +47890,19 @@ /obj/structure/cable, /obj/effect/landmark/start/medical_doctor, /obj/effect/turf_decal/tile/blue/full, -/obj/effect/turf_decal/tile/blue/full, /turf/open/floor/iron/white, /area/station/medical/surgery/fore) +"niO" = ( +/turf/closed/wall/r_wall, +/area/station/engineering/transit_tube) "njH" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, /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/stripes/line, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, /turf/open/floor/iron, /area/station/security/brig) "nkB" = ( @@ -44641,20 +47916,8 @@ /turf/open/space, /area/space/nearstation) "nkS" = ( -/obj/structure/filingcabinet, -/obj/machinery/light_switch{ - pixel_y = -25 - }, -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, -/area/station/command/heads_quarters/qm) +/turf/closed/wall, +/area/station/security/prison/work) "nle" = ( /obj/structure/sign/warning/secure_area/directional/west, /turf/open/floor/engine, @@ -44665,38 +47928,50 @@ /turf/open/space, /area/station/solars/starboard/fore) "nmM" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/window/right/directional/south{ - name = "First-Aid Supplies"; - red_alert_access = 1; - req_access = list("medical") - }, -/obj/structure/table/glass, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/mod/module/thermal_regulator, -/obj/effect/turf_decal/tile/blue/full, -/obj/item/mod/module/signlang_radio, -/turf/open/floor/iron/dark/smooth_large, +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/white, /area/station/medical/storage) "nmQ" = ( /turf/open/floor/iron, /area/station/maintenance/department/electrical) "nmS" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/libraryconsole/bookmanagement{ +/obj/machinery/camera/directional/west{ + c_tag = "Quartermaster's Office" + }, +/obj/item/radio/intercom{ + pixel_y = -35 + }, +/obj/machinery/status_display/supply{ + pixel_x = -32 + }, +/obj/machinery/fax{ + fax_name = "Quartermaster's Office"; + name = "Quartermaster's Fax Machine" + }, +/obj/structure/table/wood, +/obj/machinery/button/door/directional/south{ + pixel_x = -5; + pixel_y = -23 + }, +/obj/machinery/light_switch{ + pixel_y = -23; + pixel_x = 7 + }, +/obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/station/security/prison) +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/qm) "nmV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark_green{ + dir = 10 + }, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) "nnA" = ( /obj/structure/disposalpipe/segment{ @@ -44733,24 +48008,43 @@ /area/station/maintenance/port) "noB" = ( /obj/machinery/photocopier, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "noH" = ( /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/modular_computer/laptop{ + pixel_x = -2; + pixel_y = 5 + }, /turf/open/floor/iron/checker, /area/station/science/breakroom) "noK" = ( /obj/structure/girder, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"noS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "npF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/hoop{ dir = 4 }, +/obj/item/radio/intercom/prison/directional/west, /turf/open/floor/iron/white, /area/station/security/prison) "npM" = ( @@ -44773,12 +48067,8 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "nrF" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/machinery/light/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/smooth, /area/station/ai_monitored/security/armory) "nrR" = ( /obj/structure/disposalpipe/segment{ @@ -44799,6 +48089,13 @@ /obj/structure/cable, /turf/closed/wall/r_wall, /area/station/maintenance/port/aft) +"nsq" = ( +/obj/structure/rack, +/obj/item/fuel_pellet, +/obj/item/fuel_pellet, +/obj/item/fuel_pellet, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "nsJ" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -44844,11 +48141,10 @@ /area/station/ai_monitored/turret_protected/aisat/hallway) "nud" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/service/chapel) "nuq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, @@ -44873,6 +48169,15 @@ "nuY" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/captain) +"nvx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/window/right/directional/south{ + name = "Drone Access"; + req_access = list("science"); + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "nvy" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -44930,9 +48235,13 @@ /turf/open/floor/iron, /area/station/engineering/atmos) "nyF" = ( -/obj/machinery/hydroponics/constructable, -/obj/machinery/duct, /obj/machinery/light/directional/north, +/obj/machinery/chem_master/condimaster{ + desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; + name = "SapMaster XP" + }, +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/service/hydroponics) "nzh" = ( @@ -44943,6 +48252,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/aft) +"nzC" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/herringbone, +/area/station/commons/storage/primary) "nzH" = ( /obj/machinery/camera/directional/north{ c_tag = "Auxiliary Tool Storage" @@ -44959,6 +48275,9 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron, /area/station/commons/storage/tools) +"nzM" = ( +/turf/closed/wall, +/area/station/engineering/transit_tube) "nzO" = ( /turf/closed/wall/r_wall, /area/station/medical/treatment_center) @@ -44990,15 +48309,29 @@ /area/station/science/xenobiology) "nCe" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/hallway/primary/aft) "nCn" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/space/basic, -/area/station/cargo/miningoffice) +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/structure/sign/warning/electric_shock/directional/west, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) +"nCw" = ( +/obj/structure/sink/directional/south, +/obj/effect/turf_decal/siding/dark_green{ + dir = 5 + }, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/station/service/hydroponics/garden) "nCW" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -45025,6 +48358,10 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/station/cargo/office) +"nEw" = ( +/obj/effect/turf_decal/tile/red/diagonal_edge, +/turf/open/floor/iron/white/diagonal, +/area/station/science/robotics/lab) "nEP" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -45055,6 +48392,16 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"nGg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/plumbing/input{ + dir = 1 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/xenobiology) "nGv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45069,7 +48416,8 @@ /obj/effect/turf_decal/siding/purple{ dir = 1 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/turf/open/floor/iron/white/diagonal, /area/station/science/lab) "nGR" = ( /obj/effect/turf_decal/trimline/green/filled/line{ @@ -45103,6 +48451,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port) +"nHL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/large, +/area/station/command/meeting_room) "nIb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/structure/cable, @@ -45110,6 +48464,15 @@ /obj/machinery/power/energy_accumulator/tesla_coil/anchored, /turf/open/floor/engine, /area/station/engineering/supermatter) +"nIn" = ( +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "nIt" = ( /obj/machinery/ai_slipper{ uses = 10 @@ -45177,7 +48540,7 @@ }, /obj/machinery/light/small/directional/west, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "nKX" = ( /obj/structure/railing{ @@ -45214,7 +48577,7 @@ /turf/open/floor/iron/dark, /area/station/security/execution/transfer) "nMU" = ( -/turf/open/floor/iron, +/turf/open/floor/iron/half, /area/station/service/hydroponics/garden) "nMZ" = ( /turf/open/floor/plating, @@ -45242,7 +48605,7 @@ dir = 4 }, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/herringbone, /area/station/hallway/primary/central) "nOl" = ( /obj/effect/mapping_helpers/burnt_floor, @@ -45293,6 +48656,13 @@ }, /turf/open/floor/wood/parquet, /area/station/service/bar) +"nQn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "nQp" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -45322,12 +48692,27 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark_green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) "nRM" = ( /obj/effect/spawner/random/trash/box, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"nSi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "nSr" = ( /turf/closed/wall, /area/station/engineering/gravity_generator) @@ -45368,6 +48753,13 @@ }, /turf/open/floor/iron, /area/station/commons/storage/tools) +"nTV" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, +/area/station/commons/dorms) "nTZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -45407,7 +48799,7 @@ /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, +/turf/open/floor/iron/small, /area/station/command/teleporter) "nVp" = ( /obj/effect/landmark/start/hangover, @@ -45457,8 +48849,7 @@ "nXi" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/vacant_room/commissary) "nXj" = ( /obj/structure/table/optable, @@ -45483,11 +48874,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/scientist, /obj/effect/turf_decal/siding/thinplating_new{ - dir = 5 + dir = 4 }, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "nXS" = ( /obj/structure/table/glass, @@ -45514,11 +48905,22 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/miningdock) +"nYo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/caution{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/xenobiology) "nYt" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos) "nYw" = ( /obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/blue/filled/end, /turf/open/floor/iron/dark, /area/station/medical/cryo) "nYS" = ( @@ -45541,9 +48943,16 @@ /turf/open/floor/engine, /area/station/science/xenobiology) "nZi" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/iron, -/area/station/engineering/main) +/obj/machinery/camera/directional/west{ + c_tag = "Engineering MiniSat Access" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "oai" = ( /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron/white, @@ -45587,6 +48996,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"ocq" = ( +/turf/open/floor/iron/dark/textured_large, +/area/station/science/ordnance/testlab) "ocY" = ( /obj/machinery/light/small/directional/north, /obj/structure/table/reinforced, @@ -45601,6 +49013,13 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"odE" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/flora/bush/jungle, +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/misc/sandy_dirt, +/area/station/command/bridge) "odF" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -45619,12 +49038,14 @@ /turf/closed/wall/r_wall, /area/station/medical/storage) "oeG" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "oeS" = ( /obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) "ofR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -45637,8 +49058,7 @@ id = "executionfireblast"; name = "Transfer Area Lockdown"; pixel_x = 25; - pixel_y = -5; - req_access_txt = "2" + pixel_y = -5 }, /obj/machinery/button/flasher{ id = "executionflash"; @@ -45652,7 +49072,7 @@ /area/station/security/execution/transfer) "ogf" = ( /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "ogj" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -45722,7 +49142,13 @@ dir = 8 }, /obj/structure/cable, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding{ + dir = 1 + }, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "ono" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/monitored/carbon_input{ @@ -45730,6 +49156,10 @@ }, /turf/open/floor/engine/co2, /area/station/engineering/atmos) +"oop" = ( +/obj/structure/table, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) "ooD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45744,20 +49174,18 @@ }, /obj/structure/cable, /obj/machinery/light/cold/directional/west, +/obj/effect/turf_decal/siding/dark{ + dir = 7 + }, /turf/open/floor/iron/white, /area/station/medical/storage) "opB" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, /obj/machinery/door/airlock/security{ name = "Interrogation" }, /obj/effect/mapping_helpers/airlock/access/all/security/brig, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/red/filled, +/turf/open/floor/iron/dark, /area/station/security/brig) "oqy" = ( /obj/effect/turf_decal/stripes/line, @@ -45767,6 +49195,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/engine_smes) +"oqL" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central) "orP" = ( /turf/open/floor/iron/white, /area/station/science/explab) @@ -45805,6 +49243,11 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) +"osV" = ( +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "osX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45833,11 +49276,9 @@ /turf/open/floor/stone, /area/station/service/bar) "otz" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "otB" = ( @@ -45868,6 +49309,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"ovn" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/brig) "ovL" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/north{ @@ -45875,11 +49323,9 @@ name = "Atmospherics Desk"; req_access = list("engineering") }, -/obj/machinery/door/poddoor/preopen{ - id = "atmos"; - name = "Atmospherics Blast Door" - }, /obj/machinery/door/firedoor/heavy, +/obj/item/crowbar, +/obj/item/wrench, /turf/open/floor/plating, /area/station/engineering/lobby) "owe" = ( @@ -45939,13 +49385,17 @@ /obj/machinery/modular_computer/preset/cargochat/science{ dir = 1 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/checker, /area/station/science/lab) "oys" = ( /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, +/obj/effect/turf_decal/siding{ + dir = 1 + }, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "oyX" = ( /obj/machinery/power/apc/auto_name/directional/south, @@ -46007,6 +49457,16 @@ /obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/service/kitchen) +"oAy" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/entry) "oAD" = ( /obj/machinery/shower/directional/north, /obj/effect/turf_decal/trimline/blue/line{ @@ -46099,6 +49559,19 @@ /obj/machinery/light/small/dim/directional/south, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"oEJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) +"oEY" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/commons/fitness) "oGs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output{ dir = 8 @@ -46139,14 +49612,11 @@ /turf/closed/wall, /area/station/ai_monitored/turret_protected/ai) "oHe" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue, /obj/structure/cable, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/turf/open/floor/iron/stairs{ + dir = 8 + }, /area/station/hallway/primary/central) "oHH" = ( /obj/machinery/holopad, @@ -46157,7 +49627,7 @@ /obj/machinery/door/airlock{ name = "Unit 2" }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "oIg" = ( /obj/structure/cable, @@ -46184,10 +49654,18 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/turf/open/floor/iron/dark, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/vacant_room/commissary) "oJH" = ( /obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/corner{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) "oJX" = ( @@ -46222,6 +49700,19 @@ "oLP" = ( /turf/open/floor/iron/dark, /area/station/security/execution/transfer) +"oMe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "oMq" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/orange/visible, /obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ @@ -46243,19 +49734,22 @@ /area/station/maintenance/starboard/aft) "oMH" = ( /obj/structure/table/glass, -/obj/structure/window/reinforced/spawner/directional/east, /obj/item/storage/medkit/o2{ pixel_x = 3; pixel_y = 3 }, /obj/item/storage/medkit/o2, +/obj/effect/turf_decal/tile/blue/full, +/obj/machinery/status_display/evac/directional/west, /obj/item/storage/medkit/regular{ pixel_x = -3; pixel_y = -3 }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/tile/blue/full, -/obj/machinery/status_display/evac/directional/west, +/obj/machinery/door/window/left/directional/east{ + name = "First-Aid Supplies"; + red_alert_access = 1; + req_access = list("medical") + }, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/storage) "oMI" = ( @@ -46288,6 +49782,10 @@ /area/station/maintenance/starboard/aft) "oNX" = ( /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/office) "oNZ" = ( @@ -46316,12 +49814,21 @@ "oPC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/turf_decal/siding/yellow, +/obj/effect/turf_decal/siding/yellow, /turf/open/floor/iron/white, /area/station/security/prison) "oPX" = ( /obj/effect/spawner/random/structure/crate_loot, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"oRj" = ( +/obj/effect/turf_decal/siding/dark_green{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/station/service/hydroponics/garden) "oRE" = ( /obj/structure/table/reinforced, /obj/machinery/recharger{ @@ -46339,6 +49846,10 @@ /area/station/security/checkpoint/medical) "oSA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "oSZ" = ( @@ -46354,15 +49865,16 @@ /turf/open/floor/iron/white, /area/station/medical/surgery/aft) "oTh" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "oTF" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes{ dir = 4 }, -/obj/structure/closet/firecloset, /turf/open/floor/iron, /area/station/cargo/storage) "oUg" = ( @@ -46376,6 +49888,12 @@ "oUq" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) +"oUE" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/chapel{ + dir = 8 + }, +/area/station/service/chapel) "oUU" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -46388,6 +49906,10 @@ /area/station/science/xenobiology) "oUZ" = ( /obj/structure/cable, +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/dorms) "oVb" = ( @@ -46402,16 +49924,24 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "oVV" = ( -/obj/machinery/button/door{ - id = "xenobio10"; - layer = 3.3; - name = "Xenobio Pen 10 Blast Doors"; - pixel_y = 4; - req_access_txt = "55" +/obj/effect/turf_decal/siding/purple{ + dir = 9 }, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, +/obj/structure/rack, +/obj/item/storage/box/syringes{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/box/beakers{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/wrench, +/obj/item/knife/kitchen, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/white/herringbone, /area/station/science/xenobiology) "oWf" = ( /obj/machinery/door/airlock{ @@ -46450,7 +49980,11 @@ dir = 4 }, /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "oXP" = ( /obj/effect/spawner/structure/window/reinforced, @@ -46510,6 +50044,10 @@ /obj/machinery/camera/directional/south, /turf/open/space, /area/space/nearstation) +"oYI" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark/smooth_large, +/area/station/ai_monitored/command/storage/eva) "oYY" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/structure/table/glass, @@ -46556,10 +50094,6 @@ pixel_y = 3 }, /obj/item/storage/medkit/fire, -/obj/item/storage/medkit/regular{ - pixel_x = -3; - pixel_y = -3 - }, /obj/machinery/door/window/left/directional/east{ name = "First-Aid Supplies"; red_alert_access = 1; @@ -46567,6 +50101,10 @@ }, /obj/effect/turf_decal/tile/blue/full, /obj/machinery/light/cold/directional/west, +/obj/item/storage/medkit/regular{ + pixel_x = -3; + pixel_y = -3 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/storage) "pcm" = ( @@ -46581,6 +50119,23 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"pcy" = ( +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard containment door" + }, +/turf/open/floor/iron/herringbone, +/area/station/science/research) "pdq" = ( /turf/open/floor/carpet, /area/station/command/heads_quarters/hop) @@ -46627,7 +50182,7 @@ layer = 3.3; name = "Xenobio Pen 6 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -46649,11 +50204,11 @@ /turf/open/floor/iron/white, /area/station/medical/pharmacy) "pgP" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/turf_decal/siding/red{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) "pit" = ( @@ -46713,6 +50268,10 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"pkP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/closed/wall/r_wall, +/area/station/engineering/transit_tube) "pkS" = ( /obj/machinery/newscaster/directional/east, /obj/structure/bed/medical/anchored{ @@ -46750,6 +50309,13 @@ /obj/structure/sign/warning/electric_shock, /turf/open/floor/plating, /area/station/science/xenobiology) +"pmZ" = ( +/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/iron, +/area/station/security/brig) "pnj" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46780,8 +50346,10 @@ /area/station/maintenance/starboard/aft) "poM" = ( /obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 10 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "poX" = ( /obj/machinery/door/airlock/maintenance{ @@ -46797,6 +50365,7 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "ppf" = ( @@ -46815,6 +50384,10 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/port) +"ppZ" = ( +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/space/basic, +/area/space) "pqw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46878,6 +50451,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/kitchen/diagonal, /area/station/service/kitchen) +"psL" = ( +/obj/machinery/door/morgue{ + name = "Confession Booth (Chaplain)"; + req_access = list("chapel_office") + }, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "ptw" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -46916,6 +50496,15 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) +"puq" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 10 + }, +/turf/open/floor/iron/white/herringbone, +/area/station/science/xenobiology) "puy" = ( /obj/machinery/computer/scan_consolenew, /obj/machinery/power/apc/auto_name/directional/north, @@ -46927,12 +50516,10 @@ /turf/open/floor/iron/dark, /area/station/science/genetics) "puB" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/grimy, +/area/station/hallway/secondary/entry) "puU" = ( /turf/open/floor/iron/grimy, /area/station/service/library) @@ -46944,6 +50531,9 @@ /obj/item/folder/blue, /obj/item/stamp/law, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /turf/open/floor/carpet/blue, /area/station/service/lawoffice) "pvI" = ( @@ -46959,6 +50549,9 @@ "pwd" = ( /obj/machinery/light/small/directional/west, /obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, /turf/open/floor/wood, /area/station/commons/dorms) "pwk" = ( @@ -46982,6 +50575,16 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"pwY" = ( +/obj/structure/disposalpipe/segment, +/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 = 6 + }, +/turf/open/floor/wood/large, +/area/station/command/meeting_room) "pxf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46989,7 +50592,10 @@ /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/siding{ + dir = 5 + }, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "pxq" = ( /obj/effect/turf_decal/stripes/line{ @@ -47006,6 +50612,22 @@ /obj/effect/spawner/random/vending/colavend, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"pyr" = ( +/obj/structure/disposalpipe/segment{ + 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/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/security/office) "pyv" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -47017,7 +50639,6 @@ /obj/machinery/camera/directional/east{ c_tag = "Chapel South" }, -/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/chapel) "pyQ" = ( @@ -47031,17 +50652,17 @@ /turf/open/floor/carpet, /area/station/service/chapel) "pzA" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/reagent_dispensers/fueltank/large, +/obj/effect/turf_decal/bot{ 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/structure/extinguisher_cabinet/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 }, -/turf/closed/wall, /area/station/engineering/engine_smes) "pzR" = ( /obj/structure/table/wood, @@ -47060,14 +50681,7 @@ /turf/open/floor/iron/white, /area/station/medical/virology) "pAZ" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron, +/turf/open/floor/holofloor/plating, /area/station/hallway/primary/starboard) "pBu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, @@ -47128,6 +50742,22 @@ /obj/machinery/light/small/dim/directional/north, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"pCL" = ( +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/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/effect/turf_decal/tile/neutral, +/turf/open/floor/iron/dark/smooth_corner, +/area/station/ai_monitored/command/storage/eva) "pDs" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -47136,13 +50766,17 @@ /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "pDt" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/starboard/aft) +/obj/structure/cable, +/turf/open/floor/carpet/orange, +/area/station/command/heads_quarters/qm) "pDu" = ( /obj/structure/plaque/static_plaque/golden/commission/box, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "pEk" = ( @@ -47178,11 +50812,10 @@ }, /area/station/engineering/atmos) "pFV" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, /obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, /turf/open/floor/iron/dark, /area/station/security/brig) "pGY" = ( @@ -47209,8 +50842,15 @@ "pIc" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, +/turf/open/floor/iron/half, /area/station/service/hydroponics/garden) +"pIg" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/blue/end{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/station/ai_monitored/command/storage/eva) "pIn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, @@ -47219,6 +50859,16 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"pIz" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table/wood, +/obj/item/flashlight/lantern{ + pixel_y = 7 + }, +/turf/open/floor/iron/chapel{ + dir = 4 + }, +/area/station/service/chapel) "pII" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating/icemoon, @@ -47255,9 +50905,6 @@ "pKc" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, /obj/structure/rack, /obj/item/stack/sheet/cardboard, /obj/item/stack/rods/fifty, @@ -47344,6 +50991,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/cargo/miningoffice) +"pNA" = ( +/obj/structure/chair/pew/left{ + dir = 1 + }, +/turf/open/floor/iron/chapel{ + dir = 1 + }, +/area/station/service/chapel) "pNJ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -47421,10 +51076,17 @@ /obj/structure/railing{ dir = 8 }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "pOZ" = ( /obj/machinery/rnd/production/circuit_imprinter/department/science, +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/checker, /area/station/science/lab) "pPs" = ( @@ -47440,6 +51102,7 @@ /obj/machinery/photocopier{ pixel_y = 3 }, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark, /area/station/security/office) "pPM" = ( @@ -47456,6 +51119,15 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/white, /area/station/medical/virology) +"pPV" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 6 + }, +/turf/open/floor/iron/white/herringbone, +/area/station/science/xenobiology) "pQf" = ( /obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, @@ -47484,10 +51156,20 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/surgery/fore) +"pRp" = ( +/obj/machinery/biogenerator, +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/service/hydroponics) "pRT" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall, -/area/station/cargo/miningoffice) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) +"pSc" = ( +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "pSy" = ( /obj/structure/chair/sofa/corp/left{ dir = 8 @@ -47495,6 +51177,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/checker, /area/station/science/breakroom) +"pSA" = ( +/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/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron, +/area/station/security/brig) "pSE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall, @@ -47510,7 +51200,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/command/heads_quarters/rd) "pTi" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater/on{ @@ -47518,6 +51208,11 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"pTT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/turf/open/floor/iron, +/area/station/security/brig) "pTY" = ( /obj/machinery/medical_kiosk, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -47531,7 +51226,8 @@ /area/station/maintenance/starboard/fore) "pUr" = ( /obj/machinery/vending/cigarette, -/turf/open/floor/iron/dark, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/vacant_room/commissary) "pUw" = ( /obj/structure/window/spawner/directional/west, @@ -47552,13 +51248,25 @@ }, /turf/closed/wall, /area/station/maintenance/port) +"pVt" = ( +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "pXz" = ( /obj/structure/table, /obj/item/storage/toolbox/emergency, /turf/open/floor/iron, /area/station/command/heads_quarters/cmo) "pXB" = ( -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/iron/checker, /area/station/command/heads_quarters/ce) "pYi" = ( /obj/machinery/power/tracker, @@ -47583,6 +51291,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/lobby) +"pZJ" = ( +/obj/structure/shipping_container/donk_co{ + desc = "A huge-ass Donk Co. shipping container. How'd they even manage to fit one in here?!" + }, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "pZL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/warning/no_smoking{ @@ -47590,8 +51304,16 @@ }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"pZX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/carpet, +/area/station/commons/vacant_room/office) "qas" = ( /obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/hallway/secondary/service) "qax" = ( @@ -47619,10 +51341,18 @@ /turf/open/floor/iron/cafeteria, /area/station/command/heads_quarters/rd) "qbb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_edge{ dir = 8 }, -/turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) "qbu" = ( /obj/effect/turf_decal/tile/yellow{ @@ -47659,6 +51389,11 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"qcN" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/security/brig) "qcO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ @@ -47677,14 +51412,12 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "qde" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) @@ -47705,16 +51438,14 @@ /turf/open/floor/plating, /area/station/engineering/atmos) "qdV" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 +/obj/machinery/power/shieldwallgen, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 10 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron, -/area/station/hallway/primary/central) +/turf/open/floor/iron/dark/small, +/area/station/command/teleporter) "qea" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -47725,6 +51456,8 @@ /obj/machinery/modular_computer/preset/id{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark, /area/station/security/office) "qez" = ( @@ -47804,6 +51537,9 @@ "qiq" = ( /obj/item/reagent_containers/cup/bucket, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /turf/open/floor/plating, /area/station/security/prison/garden) "qis" = ( @@ -47819,7 +51555,7 @@ /obj/structure/cable, /obj/machinery/airalarm/directional/west, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "qjh" = ( /obj/structure/chair/stool, @@ -47875,6 +51611,17 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"qng" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/brig) "qnO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -47975,14 +51722,32 @@ /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/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/science/breakroom) -"qsB" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/structure/broken_flooring/corner/directional/north, +"qrW" = ( +/obj/effect/mapping_helpers/broken_floor, +/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, -/area/station/maintenance/port/aft) +/area/station/maintenance/starboard/fore) +"qss" = ( +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/station/hallway/primary/central) +"qsB" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "qty" = ( /obj/machinery/airalarm/directional/west, /obj/machinery/computer/station_alert{ @@ -48013,8 +51778,17 @@ /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/brown/filled/corner, /turf/open/floor/iron, /area/station/cargo/storage) +"qvk" = ( +/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/tile/yellow/diagonal_edge, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/diagonal, +/area/station/commons/storage/primary) "qvp" = ( /obj/effect/landmark/start/medical_doctor, /obj/machinery/holopad, @@ -48027,11 +51801,16 @@ "qvu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/sign/warning/secure_area/directional/south, -/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/maintenance/aft) +"qvY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/trimline/brown/filled/line, +/turf/open/floor/iron, +/area/station/cargo/sorting) "qxr" = ( /mob/living/basic/lizard/wags_his_tail, /turf/open/floor/iron/dark, @@ -48061,13 +51840,14 @@ /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, +/turf/open/floor/iron/white/corner, /area/station/hallway/primary/starboard) "qyN" = ( /obj/effect/turf_decal/siding/dark{ - dir = 8 + dir = 9 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/commons/vacant_room/commissary) "qyX" = ( /obj/effect/spawner/structure/window/reinforced, @@ -48105,11 +51885,27 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) +"qAG" = ( +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/west, +/obj/structure/window/spawner/directional/east, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/large/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/station/hallway/primary/central) "qAZ" = ( /obj/effect/spawner/structure/window, /obj/structure/cable, /turf/open/floor/plating, /area/station/security/office) +"qBx" = ( +/obj/item/kirbyplants/random, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/tile/red/diagonal_centre, +/turf/open/floor/iron/dark/diagonal, +/area/station/hallway/primary/fore) "qBD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48140,7 +51936,6 @@ name = "Virology Access Button"; pixel_x = 8; pixel_y = -28; - req_access_txt = "39"; req_access = list("medical") }, /obj/machinery/shower/directional/east, @@ -48161,11 +51956,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/mechbay) "qEE" = ( @@ -48181,10 +51975,37 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"qFX" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 5 + }, +/obj/structure/table/glass, +/obj/item/food/tofu{ + pixel_y = 6 + }, +/obj/item/food/tofu, +/obj/item/food/tofu{ + pixel_y = -6 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/white/herringbone, +/area/station/science/xenobiology) +"qFY" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/commons/fitness) "qGj" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/machinery/airalarm/directional/north, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "qGt" = ( /obj/structure/disposalpipe/segment, @@ -48226,23 +52047,26 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "qHB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/transit_tube/station/reverse/flipped{ - dir = 4 +/obj/structure/table/glass, +/obj/item/folder/blue{ + pixel_y = 3 }, -/turf/open/floor/plating, -/area/station/engineering/main) -"qHD" = ( -/obj/effect/turf_decal/tile/green{ +/obj/item/pen, +/obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 }, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) +"qHD" = ( /obj/effect/turf_decal/tile/green{ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "qHR" = ( @@ -48273,6 +52097,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"qKu" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/station/commons/storage/primary) "qLD" = ( /obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/plating, @@ -48285,16 +52114,16 @@ /turf/open/floor/iron, /area/station/commons/locker) "qLX" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 }, -/obj/machinery/door/airlock/external{ - name = "Security Escape Airlock"; - req_access_txt = "2"; - safety_mode = 1 +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) +/turf/open/floor/iron, +/area/station/hallway/primary/central) "qMk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -48322,6 +52151,29 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"qOs" = ( +/obj/effect/turf_decal/siding/wideplating_new/dark{ + dir = 5 + }, +/turf/open/floor/iron, +/area/station/commons/dorms) +"qOI" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 4 + }, +/area/station/ai_monitored/command/storage/eva) "qOS" = ( /obj/item/radio/intercom/directional/south, /obj/machinery/light/small/directional/south, @@ -48369,18 +52221,23 @@ /area/station/medical/virology) "qQw" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, /obj/machinery/airalarm/directional/north, /obj/machinery/light/directional/north, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/security/brig) "qQH" = ( /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/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, /area/station/science/ordnance/testlab) "qRk" = ( /obj/effect/spawner/structure/window/reinforced, @@ -48398,6 +52255,16 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"qRO" = ( +/obj/structure/disposalpipe/segment{ + 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/decal/cleanable/dirt, +/turf/open/floor/iron/small, +/area/station/security/office) "qRW" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -48439,6 +52306,27 @@ }, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) +"qUT" = ( +/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/structure/crate, +/obj/effect/turf_decal/bot, +/obj/structure/railing/corner/end{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) +"qUU" = ( +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "qVk" = ( /obj/machinery/door/airlock/medical/glass{ name = "Medbay Storage" @@ -48483,7 +52371,7 @@ }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/security/courtroom) "qWD" = ( /obj/structure/window/reinforced/spawner/directional/east, @@ -48507,25 +52395,80 @@ /obj/effect/turf_decal/tile/red/full, /turf/open/floor/iron/dark/smooth_large, /area/station/security/checkpoint/medical) +"qXo" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/station/service/chapel) "qXT" = ( /obj/effect/spawner/random/trash/hobo_squat, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"qYM" = ( +/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/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/commons/fitness) "qYQ" = ( /obj/structure/table, -/obj/effect/spawner/random/trash/food_packaging, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = -2; + pixel_y = 13 + }, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + pixel_x = 0; + pixel_y = 6 + }, +/obj/effect/spawner/random/special_lighter{ + pixel_x = -7; + pixel_y = -1 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "qYX" = ( /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, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) +"qZm" = ( +/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/trimline/red/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/siding/red{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/herringbone, +/area/station/security/brig) "qZA" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, /turf/open/floor/iron/dark, /area/station/engineering/lobby) "qZQ" = ( @@ -48551,12 +52494,14 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/herringbone, /area/station/command/heads_quarters/rd) "raV" = ( /obj/effect/turf_decal/stripes/end{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/security/mechbay) "rbj" = ( @@ -48570,6 +52515,12 @@ /obj/item/target, /turf/open/floor/iron, /area/station/commons/fitness) +"rbm" = ( +/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/smooth, +/area/station/cargo/drone_bay) "rbX" = ( /obj/item/shovel/spade, /obj/machinery/power/apc/auto_name/directional/north, @@ -48624,6 +52575,17 @@ }, /turf/open/floor/iron, /area/station/commons/locker) +"rgZ" = ( +/obj/structure/disposalpipe/segment, +/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/purple/filled/end, +/obj/effect/turf_decal/trimline/purple/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) "rhO" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/dna_scannernew, @@ -48675,11 +52637,11 @@ /turf/open/space, /area/space/nearstation) "rlx" = ( -/obj/effect/turf_decal/loading_area, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 10 }, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/duct, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron/showroomfloor, /area/station/service/kitchen) "rmh" = ( @@ -48701,7 +52663,11 @@ /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, +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 1 + }, +/turf/open/floor/iron/large, /area/station/service/hydroponics/garden) "roi" = ( /obj/structure/disposalpipe/segment, @@ -48711,6 +52677,12 @@ "rop" = ( /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{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/office) "rov" = ( @@ -48729,7 +52701,7 @@ /turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) "roO" = ( -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/station/security/checkpoint/arrivals) "rps" = ( /obj/effect/turf_decal/stripes/line, @@ -48758,6 +52730,19 @@ /obj/effect/landmark/navigate_destination/dockescpod2, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"rqZ" = ( +/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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "rrA" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -48813,6 +52798,16 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"rtB" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/large, +/area/station/security/brig) "rtC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -48833,6 +52828,7 @@ }, /obj/machinery/door/firedoor, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/blue/filled/end, /turf/open/floor/iron/dark, /area/station/medical/treatment_center) "rve" = ( @@ -48850,14 +52846,12 @@ /area/station/service/chapel) "rvS" = ( /obj/structure/closet/emcloset, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/red{ - 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/corner, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "rvY" = ( /obj/effect/decal/cleanable/dirt, @@ -48866,7 +52860,10 @@ /area/station/security/prison/garden) "rwy" = ( /obj/structure/cable, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/carpet/red, /area/station/command/heads_quarters/hos) "rwH" = ( /obj/structure/cable, @@ -48901,6 +52898,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"rxJ" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "rxU" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/item/radio/intercom/directional/north, @@ -48936,6 +52940,7 @@ /obj/item/soap/nanotrasen, /obj/machinery/shower/directional/west, /obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/showroomfloor, /area/station/security/prison/shower) "rzw" = ( @@ -48943,17 +52948,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"rzz" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "rAn" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible, /turf/open/floor/iron, /area/station/engineering/atmos) "rAt" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 5 }, /turf/open/floor/iron, /area/station/security/brig) @@ -48962,7 +52972,7 @@ /turf/open/floor/plating, /area/station/science/ordnance/testlab) "rAG" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, /turf/open/floor/iron, @@ -48975,6 +52985,27 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"rBD" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) +"rCb" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/fireaxecabinet/mechremoval/directional/south, +/turf/open/floor/iron/white, +/area/station/science/robotics/lab) +"rDK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "rDN" = ( /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -49009,6 +53040,9 @@ /area/station/science/genetics) "rFc" = ( /obj/structure/cable, +/obj/effect/turf_decal/siding{ + dir = 8 + }, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "rFx" = ( @@ -49026,6 +53060,15 @@ }, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"rFS" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Arrival Airlock" + }, +/turf/open/floor/plating, +/area/station/hallway/secondary/entry) "rGs" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -49076,6 +53119,8 @@ /obj/effect/mapping_helpers/broken_floor, /obj/structure/table/wood/poker, /obj/structure/table/wood, +/obj/item/clothing/gloves/color/fyellow, +/obj/item/storage/toolbox/mechanical, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) "rIc" = ( @@ -49088,6 +53133,7 @@ /obj/effect/decal/cleanable/dirt, /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/security/prison) "rIF" = ( @@ -49121,8 +53167,20 @@ id = "rnd2"; name = "research lab shutters" }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/herringbone, /area/station/science/lab) +"rKe" = ( +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/large/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/station/service/bar) "rLw" = ( /obj/machinery/light_switch/directional/east, /obj/machinery/light/small/directional/east, @@ -49130,16 +53188,26 @@ dir = 4 }, /obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) "rLC" = ( /obj/machinery/computer/order_console/bitrunning, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "rLT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "rMf" = ( @@ -49152,13 +53220,22 @@ /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "rMs" = ( /obj/effect/spawner/random/vending/colavend, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/prison) +"rMt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/table, +/obj/item/book/manual/hydroponics_pod_people, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/iron, +/area/station/service/hydroponics) "rNg" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/iron, @@ -49177,11 +53254,19 @@ /area/station/commons/vacant_room/office) "rNw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/fore) "rOs" = ( /obj/structure/cable, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 1 + }, +/turf/open/floor/iron/large, /area/station/service/hydroponics/garden) "rOw" = ( /obj/structure/rack, @@ -49193,6 +53278,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall, /area/station/maintenance/starboard/aft) +"rPx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/carpet, +/area/station/service/chapel) "rPO" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ dir = 10 @@ -49210,6 +53299,14 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port) +"rPU" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad2" + }, +/obj/machinery/light/floor, +/turf/open/floor/iron, +/area/station/cargo/storage) "rPX" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall, @@ -49227,6 +53324,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/science/genetics, /obj/machinery/door/firedoor, +/obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/genetics) "rQS" = ( @@ -49271,11 +53369,11 @@ /turf/open/floor/plating, /area/station/maintenance/starboard) "rRU" = ( -/obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/station/service/hydroponics) "rRV" = ( @@ -49322,9 +53420,6 @@ pixel_x = 1 }, /obj/item/radio/intercom/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/textured_edge{ dir = 8 }, @@ -49340,7 +53435,10 @@ /area/station/cargo/storage) "rSS" = ( /obj/structure/closet/firecloset, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) "rTt" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -49357,6 +53455,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"rVc" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/warden) "rVu" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/hydroponics/soil, @@ -49364,8 +53469,38 @@ /obj/item/cultivator, /turf/open/floor/iron, /area/station/security/prison/garden) +"rVA" = ( +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/iron/small, +/area/station/security/office) "rWb" = ( /obj/structure/table, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage{ + pixel_x = -3; + spawn_loot_count = 2; + spawn_random_offset = 1; + pixel_y = 8 + }, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage{ + pixel_x = -9; + spawn_loot_count = 2; + spawn_random_offset = 1; + pixel_y = 3 + }, +/obj/effect/spawner/random/food_or_drink/snack{ + pixel_x = 7; + spawn_loot_count = 2; + spawn_random_offset = 1; + pixel_y = 0 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "rYJ" = ( @@ -49389,6 +53524,17 @@ /obj/structure/disposalpipe/junction/yjunction, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"saO" = ( +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/security/office) "sbj" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 @@ -49417,6 +53563,12 @@ /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/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "scz" = ( @@ -49441,11 +53593,12 @@ "sdY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "sel" = ( @@ -49502,7 +53655,9 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, /area/station/maintenance/port/aft) "shV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -49530,7 +53685,8 @@ /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/general, -/turf/open/floor/iron, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, /area/station/command/bridge) "siY" = ( /obj/structure/disposalpipe/segment, @@ -49617,6 +53773,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, /obj/effect/mapping_helpers/airlock/access/any/science/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/department/medical/morgue) "slo" = ( @@ -49629,6 +53786,13 @@ /obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron/dark, /area/station/security/prison/mess) +"smw" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/herringbone, +/area/station/commons/storage/primary) "smJ" = ( /obj/structure/table/reinforced, /obj/machinery/computer/security/telescreen{ @@ -49667,8 +53831,10 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/cmo) -"spk" = ( -/turf/open/floor/iron, +"sql" = ( +/turf/open/floor/iron/dark/textured_edge{ + dir = 4 + }, /area/station/science/ordnance/testlab) "squ" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/yellow/visible{ @@ -49677,6 +53843,12 @@ /obj/machinery/atmospherics/pipe/smart/simple/violet/visible/layer1, /turf/open/floor/iron, /area/station/engineering/atmos) +"sqX" = ( +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/obj/structure/cable, +/turf/open/floor/iron/diagonal, +/area/station/commons/storage/primary) "ssg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -49712,9 +53884,19 @@ /obj/structure/mannequin/skeleton, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"ste" = ( +/obj/structure/cable, +/turf/open/floor/iron/dark/small, +/area/station/security/warden) +"str" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "stT" = ( /obj/machinery/light/directional/east, /obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "suy" = ( @@ -49740,9 +53922,12 @@ /turf/open/floor/circuit/green, /area/station/science/xenobiology) "svg" = ( -/obj/effect/turf_decal/tile/blue, /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "svi" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -49755,11 +53940,11 @@ /turf/open/floor/iron/dark/smooth_large, /area/station/security/checkpoint/medical) "svk" = ( -/obj/structure/chair/stool, /obj/effect/landmark/start/assistant, -/turf/open/floor/iron/chapel{ - dir = 8 +/obj/structure/chair/pew/left{ + dir = 1 }, +/turf/open/floor/iron/dark, /area/station/service/chapel) "svM" = ( /obj/effect/landmark/event_spawn, @@ -49798,7 +53983,7 @@ /area/station/cargo/storage) "swH" = ( /obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/vacant_room/commissary) "swS" = ( /obj/machinery/door/airlock/maintenance, @@ -49821,8 +54006,15 @@ /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/hallway/secondary/service) +"sxt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/carpet, +/area/station/service/chapel) "sxx" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, @@ -49833,6 +54025,18 @@ }, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) +"sxB" = ( +/obj/structure/disposalpipe/segment{ + 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/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/security/office) "syq" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/structure/table/reinforced, @@ -49858,6 +54062,11 @@ /obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"szW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "sAk" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -49907,6 +54116,10 @@ /obj/effect/turf_decal/tile/brown/opposingcorners{ dir = 1 }, +/obj/machinery/button/door/directional/east{ + id = "commissaryshutter"; + name = "Commissary Shutter Control" + }, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) "sCy" = ( @@ -49931,24 +54144,34 @@ /turf/open/floor/iron, /area/station/command/bridge) "sDu" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 +/obj/effect/turf_decal/siding/red{ + dir = 9 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/security/brig) "sDF" = ( /obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/service/chapel) "sEj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/dark_green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_green/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/service/hydroponics/garden) +"sEB" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/warden) "sEV" = ( /obj/machinery/door/airlock/public/glass{ id_tag = "cell3outer"; @@ -50006,13 +54229,24 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"sIs" = ( +/obj/structure/disposalpipe/segment, +/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/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/turf/open/floor/iron, +/area/station/cargo/office) "sIt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair{ dir = 4 }, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/security/brig) "sIu" = ( /obj/structure/disposalpipe/segment{ @@ -50038,7 +54272,10 @@ /area/station/maintenance/starboard/fore) "sIY" = ( /obj/structure/cable, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/storage/primary) "sJk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -50075,7 +54312,8 @@ /obj/effect/turf_decal/siding/thinplating/corner, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "sLE" = ( /turf/open/floor/engine/vacuum, @@ -50097,7 +54335,7 @@ dir = 4 }, /obj/machinery/atmospherics/components/tank, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/science/ordnance) "sLW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -50118,6 +54356,23 @@ }, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"sNv" = ( +/obj/machinery/door/firedoor, +/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/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central) "sNG" = ( /obj/machinery/camera/directional/west{ c_tag = "MiniSat External NorthEast"; @@ -50127,6 +54382,16 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"sNK" = ( +/obj/effect/turf_decal/siding/thinplating_new/corner{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown/opposingcorners, +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "sNV" = ( /obj/machinery/barsign/directional/north, /turf/open/floor/iron, @@ -50137,28 +54402,21 @@ /turf/open/floor/iron/dark, /area/station/security/prison/mess) "sPW" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/turf/open/floor/iron/stairs, /area/station/hallway/primary/central) +"sQG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/item/radio/intercom/prison/directional/east, +/turf/open/floor/iron, +/area/station/security/prison) "sQR" = ( /obj/machinery/vending/wardrobe/coroner_wardrobe, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"sRw" = ( -/obj/structure/transit_tube/curved/flipped{ - dir = 1 - }, -/turf/open/space/basic, -/area/space/nearstation) "sRK" = ( /obj/structure/table, -/obj/item/stock_parts/cell/high, /obj/machinery/cell_charger{ pixel_y = 5 }, @@ -50205,12 +54463,20 @@ layer = 3.3; name = "Xenobio Pen 4 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, /area/station/science/xenobiology) +"sUN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "sVB" = ( /turf/open/floor/iron/dark, /area/station/science/ordnance) @@ -50250,6 +54516,9 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/light/directional/west, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 + }, /turf/open/floor/iron/white, /area/station/security/prison) "sXy" = ( @@ -50269,6 +54538,15 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/checker, /area/station/science/xenobiology) +"sYS" = ( +/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/line{ + dir = 5 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/processing) "sZc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -50288,7 +54566,7 @@ layer = 3.3; name = "Xenobio Pen 9 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -50303,7 +54581,8 @@ /area/station/security/prison) "tao" = ( /obj/machinery/light/directional/south, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/hallway/primary/port) "taM" = ( /obj/machinery/vending/coffee, @@ -50359,6 +54638,9 @@ }, /obj/effect/spawner/random/trash/crushed_can, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/station/science/breakroom) "tdb" = ( @@ -50391,6 +54673,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/tcommsat/server) +"teB" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/iron, +/area/station/cargo/office) "teV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50428,12 +54717,15 @@ "thj" = ( /obj/structure/cable, /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "tit" = ( /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/turf_decal/trimline/blue/filled/end{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/station/medical/cryo) "tiJ" = ( @@ -50464,8 +54756,19 @@ "tjJ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) +"tjQ" = ( +/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{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/cargo/office) "tkt" = ( /obj/machinery/air_sensor/oxygen_tank, /turf/open/floor/engine/o2, @@ -50473,9 +54776,7 @@ "tkL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, /turf/open/floor/iron/white/corner{ dir = 1 }, @@ -50516,12 +54817,14 @@ /obj/machinery/holopad, /obj/effect/turf_decal/bot, /obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/bartender, /turf/open/floor/iron, /area/station/service/bar) "tmJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/window/reinforced/spawner/directional/south, /obj/item/toy/basketball, +/obj/effect/turf_decal/siding/yellow, /turf/open/floor/iron/white, /area/station/security/prison) "tnL" = ( @@ -50534,6 +54837,12 @@ /obj/machinery/modular_computer/preset/cargochat/cargo{ dir = 1 }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, /turf/open/floor/iron, /area/station/cargo/office) "tnW" = ( @@ -50542,7 +54851,8 @@ "toL" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, +/obj/machinery/vending/drugs, +/turf/open/floor/iron/dark, /area/station/medical/storage) "toO" = ( /obj/effect/turf_decal/stripes/corner, @@ -50553,17 +54863,22 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "tpJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/tile/purple/diagonal_edge, +/turf/open/floor/iron/white/diagonal, /area/station/science/research) "tqd" = ( /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "tqi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, @@ -50657,6 +54972,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/security/detectives_office) +"tsE" = ( +/obj/structure/rack, +/obj/effect/turf_decal/delivery/red, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/north, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/tank/jetpack/carbondioxide, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/machinery/door/window/left/directional/west{ + name = "Jetpack Storage"; + req_access = list("eva") + }, +/turf/open/floor/iron/dark/textured, +/area/station/ai_monitored/command/storage/eva) "tsX" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -50669,15 +55004,45 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, /turf/open/floor/wood, /area/station/commons/dorms) "tty" = ( -/obj/machinery/door/airlock/virology/glass{ - name = "Isolation A" +/obj/structure/table/wood, +/obj/item/folder/yellow{ + pixel_x = 8; + pixel_y = -1 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/medical/virology) +/obj/item/ammo_casing/rocket{ + pixel_x = -2; + pixel_y = 19; + name = "Dud Rocket"; + desc = "An 84mm High Explosive rocket. This one's a dud. Pretty sure." + }, +/obj/item/computer_disk/quartermaster{ + pixel_x = 9; + pixel_y = 13 + }, +/obj/effect/spawner/random/entertainment/lighter{ + pixel_x = -7; + pixel_y = -4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/qm) +"ttC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) "ttE" = ( /obj/machinery/ai_slipper{ uses = 10 @@ -50691,6 +55056,10 @@ dir = 4 }, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "qmroom" + }, +/obj/structure/cable, /turf/open/floor/iron/dark/textured_large, /area/station/command/heads_quarters/qm) "tut" = ( @@ -50702,21 +55071,19 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "tuC" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/brig) "tvh" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 +/obj/structure/chair/sofa/bench/right{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/fore) +/obj/effect/turf_decal/tile/neutral/diagonal_centre, +/turf/open/floor/iron/dark/diagonal, +/area/station/hallway/primary/fore) "tvo" = ( /turf/open/floor/plating, /area/station/security/prison/garden) @@ -50732,6 +55099,9 @@ /area/station/maintenance/aft) "tvF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 5 + }, /turf/open/floor/carpet, /area/station/command/meeting_room) "tvI" = ( @@ -50856,17 +55226,35 @@ }, /turf/open/floor/iron/dark/textured_large, /area/station/cargo/miningoffice) +"tDc" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central) "tDw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"tDO" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/window/spawner/directional/north, +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/station/service/bar) "tEu" = ( /obj/structure/cable, /obj/machinery/holopad/secure, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable/layer3, +/mob/living/simple_animal/bot/secbot/pingsky, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) "tEv" = ( @@ -50881,19 +55269,20 @@ "tEP" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "tEV" = ( /obj/item/seeds/carrot, /obj/machinery/hydroponics/soil, /obj/effect/turf_decal/tile/green/anticorner/contrasted{ dir = 1 }, +/obj/item/radio/intercom/prison/directional/west, /turf/open/floor/iron, /area/station/security/prison/garden) "tFa" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/engineering/atmos) "tFb" = ( /obj/structure/rack, @@ -50909,12 +55298,30 @@ dir = 10 }, /obj/structure/cable, -/turf/open/floor/iron/white, +/obj/machinery/vending/wardrobe/medi_wardrobe, +/turf/open/floor/iron/dark, /area/station/medical/storage) +"tFS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "tGa" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/carpet, /area/station/service/theater) +"tGn" = ( +/obj/structure/transit_tube/curved/flipped{ + dir = 1 + }, +/turf/open/floor/plating, +/area/space/nearstation) "tGz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50967,6 +55374,15 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"tIh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) "tIC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, @@ -51069,7 +55485,7 @@ "tOQ" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/small, /area/station/engineering/atmos) "tPs" = ( /obj/structure/cable, @@ -51102,6 +55518,18 @@ /obj/machinery/light/directional/west, /turf/open/floor/wood, /area/station/service/lawoffice) +"tQy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/corner, +/obj/effect/turf_decal/trimline/neutral/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "tRr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51150,7 +55578,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/tcommsat/computer) "tUI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -51164,8 +55593,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"tVO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "tWU" = ( /obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/commons/locker) "tXg" = ( @@ -51188,8 +55625,7 @@ /area/station/maintenance/starboard/fore) "tXF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/service/chapel) "tXL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51200,7 +55636,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ id = "kitchen"; - name = "kitchen shutters" + name = "Kitchen shutters" }, /turf/open/floor/iron/kitchen/diagonal, /area/station/service/kitchen) @@ -51224,6 +55660,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/aft) +"tYY" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/courtroom) "tZa" = ( /obj/structure/rack, /obj/machinery/light/small/directional/north, @@ -51249,8 +55691,11 @@ /area/station/maintenance/aft) "uaI" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/fore) +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/bush/large/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) "ubw" = ( /obj/machinery/keycard_auth{ pixel_y = -24 @@ -51308,8 +55753,20 @@ /area/station/medical/treatment_center) "uea" = ( /obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, /turf/open/floor/iron, /area/station/commons/locker) +"ueb" = ( +/obj/machinery/light/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/siding/thinplating_new/corner, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "ueE" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -51327,6 +55784,16 @@ /obj/machinery/atmospherics/miner/plasma, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) +"ufm" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/engineering/engine_smes) "ufY" = ( /obj/machinery/light/small/directional/north, /obj/machinery/firealarm/directional/east, @@ -51373,7 +55840,7 @@ layer = 3.3; name = "Xenobio Pen 1 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list("xenobiology") }, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -51385,7 +55852,10 @@ /turf/open/floor/iron, /area/station/security/prison/garden) "ujy" = ( -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 1 + }, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) "ujG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51419,11 +55889,22 @@ /turf/open/floor/iron, /area/station/hallway/primary/fore) "ulo" = ( -/obj/machinery/vending/wardrobe/medi_wardrobe, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, /obj/structure/cable, +/obj/structure/table/glass, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/blue/full, +/obj/item/storage/medkit/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/toxin, +/obj/item/storage/medkit/regular{ + pixel_x = -3; + pixel_y = -3 + }, /turf/open/floor/iron/dark, /area/station/medical/storage) "ulE" = ( @@ -51442,6 +55923,13 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/explab) +"umk" = ( +/obj/structure/sink/kitchen/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/loading_area, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/showroomfloor, +/area/station/service/kitchen) "unr" = ( /obj/machinery/light_switch/directional/south{ pixel_x = 6; @@ -51464,15 +55952,57 @@ /area/station/maintenance/starboard/aft) "uor" = ( /obj/machinery/vending/cigarette, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/large, /area/station/command/meeting_room) "uoZ" = ( /turf/closed/wall, /area/station/commons/vacant_room/office) +"upE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/door/window/left/directional/north{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Vat Access"; + req_access = list("xenobiology") + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/science/xenobiology) "upN" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/service/chapel) +"upX" = ( +/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/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/brig) +"uql" = ( +/obj/machinery/door/airlock/external{ + name = "MiniSat Space Access Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/any/command/minisat, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) +"uqH" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/science/robotics/lab) "uqT" = ( /turf/open/floor/iron/grimy, /area/station/ai_monitored/turret_protected/aisat_interior) @@ -51480,10 +56010,25 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"ush" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/tile/red/diagonal_centre, +/turf/open/floor/iron/dark/diagonal, +/area/station/hallway/primary/fore) "usx" = ( /mob/living/basic/spider/giant/sgt_araneus, -/turf/open/floor/carpet, +/obj/effect/turf_decal/siding/dark_red{ + dir = 9 + }, +/turf/open/floor/stone, /area/station/command/heads_quarters/hos) +"usC" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "usX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/iron/freezer, @@ -51512,6 +56057,7 @@ dir = 8 }, /obj/machinery/meter, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/iron, /area/station/engineering/atmos) "uvj" = ( @@ -51539,6 +56085,27 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"uwO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/iron/white/corner, +/area/station/hallway/secondary/exit/departure_lounge) +"uxL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/hallway/secondary/entry) "uyS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -51564,7 +56131,8 @@ dir = 6 }, /obj/machinery/research/anomaly_refinery, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "uzt" = ( /obj/structure/cable, @@ -51577,35 +56145,38 @@ /area/station/science/xenobiology) "uAk" = ( /obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/structure/closet_maintenance, /turf/open/floor/plating, /area/station/maintenance/port) "uAH" = ( /obj/effect/turf_decal/siding/thinplating_new{ dir = 4 }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) +"uBA" = ( +/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/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "uBC" = ( /obj/machinery/porta_turret/ai{ dir = 4 }, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "uBK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/broken_flooring/singular/directional/north, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) -"uBL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable{ - pixel_x = -1 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "uCp" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -51625,6 +56196,13 @@ dir = 1 }, /area/station/science/explab) +"uCC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/exodrone_launcher, +/turf/open/floor/plating, +/area/station/cargo/drone_bay) "uCO" = ( /obj/structure/table, /obj/machinery/camera/directional/south{ @@ -51643,7 +56221,7 @@ "uDe" = ( /obj/machinery/recharge_station, /turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "uDu" = ( /obj/structure/lattice, /turf/closed/wall, @@ -51667,6 +56245,9 @@ /obj/effect/turf_decal/siding/thinplating_new{ dir = 4 }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) "uEq" = ( @@ -51709,6 +56290,18 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"uHt" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + 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/iron, +/area/station/commons/dorms) "uHw" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -51722,24 +56315,18 @@ /turf/open/floor/iron/dark, /area/station/medical/morgue) "uHA" = ( -/obj/machinery/conveyor/inverted{ +/obj/machinery/conveyor{ + dir = 1; id = "QMLoad2" }, /turf/open/floor/iron, /area/station/cargo/storage) "uHK" = ( -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, /turf/open/floor/iron, -/area/station/hallway/primary/central) +/area/station/hallway/primary/port) "uHM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -51766,6 +56353,11 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/prison/garden) +"uIe" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "uIm" = ( /obj/machinery/vending/cigarette, /turf/open/floor/iron, @@ -51785,6 +56377,16 @@ /obj/structure/rack, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"uJu" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/machinery/door/airlock/public/glass{ + name = "Space Bridge Access" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "uKh" = ( /obj/machinery/conveyor/inverted{ dir = 9; @@ -51793,6 +56395,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/cargo/miningoffice) +"uKN" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central) "uLf" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, @@ -51857,13 +56472,13 @@ "uNQ" = ( /obj/structure/chair/office, /obj/effect/landmark/start/quartermaster, -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/carpet/orange, /area/station/command/heads_quarters/qm) "uNU" = ( /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, /area/station/security/prison) "uOv" = ( @@ -51886,8 +56501,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) +"uPU" = ( +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/delivery/red, +/obj/structure/sign/warning/electric_shock/directional/east, +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/iron/textured, +/area/station/ai_monitored/command/storage/eva) "uQT" = ( -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, /area/station/commons/dorms) "uRc" = ( /obj/structure/disposalpipe/segment, @@ -51901,7 +56524,17 @@ /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, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "uSh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51932,6 +56565,13 @@ /obj/item/screwdriver, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"uTA" = ( +/obj/machinery/light/directional/east, +/obj/effect/spawner/random/vending/snackvend, +/obj/effect/turf_decal/tile/neutral/diagonal_centre, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark/diagonal, +/area/station/hallway/primary/fore) "uTK" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 4 @@ -51957,6 +56597,18 @@ "uTN" = ( /turf/closed/wall/r_wall, /area/station/security/interrogation) +"uUj" = ( +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/siding/dark_blue, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/machinery/door/poddoor/shutters/window{ + id = "eva_shutters"; + name = "EVA Shutters" + }, +/turf/open/floor/iron/textured_half, +/area/station/ai_monitored/command/storage/eva) "uVu" = ( /obj/effect/landmark/start/cyborg, /obj/structure/cable, @@ -51997,6 +56649,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) +"uWH" = ( +/obj/effect/spawner/random/vending/colavend, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/hallway/primary/central) "uWO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52012,6 +56671,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) +"uWX" = ( +/obj/machinery/modular_computer/preset/id{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room) "uWY" = ( /obj/structure/toilet{ pixel_y = 12 @@ -52062,6 +56728,9 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) "uZK" = ( @@ -52098,17 +56767,12 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "vbD" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "EVA Storage" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/landmark/navigate_destination, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) +/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/neutral/fourcorners, +/turf/open/floor/iron/dark/textured_large, +/area/station/tcommsat/computer) "vbG" = ( /obj/structure/barricade/wooden, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52123,6 +56787,12 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) +"vbQ" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/station/command/meeting_room) "vbU" = ( /obj/machinery/door/airlock/public/glass{ name = "Space Bridge Access" @@ -52178,7 +56848,13 @@ /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, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "vdT" = ( /obj/machinery/door/window/left/directional/north{ @@ -52222,6 +56898,22 @@ /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"veQ" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 4 + }, +/area/station/ai_monitored/command/storage/eva) "vfH" = ( /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ @@ -52242,6 +56934,15 @@ /obj/structure/steam_vent, /turf/open/floor/plating, /area/station/medical/cryo) +"vfS" = ( +/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/yellow/end{ + dir = 8 + }, +/turf/open/floor/iron/dark/herringbone, +/area/station/commons/storage/primary) "vga" = ( /obj/structure/table, /obj/effect/landmark/start/hangover, @@ -52266,16 +56967,11 @@ /turf/open/floor/plating, /area/station/maintenance/fore) "vhc" = ( -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/commons/vacant_room/commissary) "vhj" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/service/hydroponics) "vhn" = ( @@ -52306,6 +57002,24 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) +"viA" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/mid_joiner{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/station/ai_monitored/command/storage/eva) "viD" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/engineering/tracking_beacon, @@ -52328,6 +57042,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/mechbay) "vjK" = ( @@ -52347,6 +57062,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/main) +"vmu" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/iron/white/corner, +/area/station/hallway/secondary/exit/departure_lounge) "vmJ" = ( /obj/machinery/cryo_cell, /obj/effect/turf_decal/stripes/line{ @@ -52385,7 +57110,8 @@ /obj/machinery/doppler_array{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "vow" = ( /obj/machinery/holopad, @@ -52419,12 +57145,11 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "vro" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/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, -/area/station/maintenance/port/aft) +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/turf_decal/tile/brown/fourcorners, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "vrx" = ( /obj/structure/table/glass, /obj/item/storage/box/beakers{ @@ -52441,7 +57166,7 @@ /obj/structure/transit_tube, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/engineering/main) +/area/station/engineering/transit_tube) "vsa" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -52456,6 +57181,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/atmos) +"vtT" = ( +/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/neutral/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "vud" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -52468,12 +57205,16 @@ dir = 4 }, /obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/security/mechbay) "vul" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/space/basic, -/area/station/hallway/secondary/entry) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/security/prison/garden) "vuC" = ( /obj/structure/cable, /turf/open/floor/circuit, @@ -52481,7 +57222,7 @@ "vuZ" = ( /obj/machinery/newscaster/directional/north, /obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark/smooth_large, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "vvx" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -52505,7 +57246,6 @@ /turf/open/floor/iron/freezer, /area/station/medical/break_room) "vxX" = ( -/obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ dir = 8 }, @@ -52516,7 +57256,7 @@ "vyA" = ( /obj/structure/table, /obj/effect/spawner/round_default_module, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "vyX" = ( /obj/structure/table/wood/poker, @@ -52590,6 +57330,7 @@ /area/station/maintenance/port/aft) "vAv" = ( /obj/structure/filingcabinet/employment, +/obj/machinery/airalarm/directional/west, /turf/open/floor/wood, /area/station/service/lawoffice) "vBz" = ( @@ -52598,8 +57339,9 @@ /area/station/engineering/lobby) "vBP" = ( /obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/chapel{ + dir = 1 + }, /area/station/service/chapel) "vBW" = ( /obj/structure/sign/warning/docking, @@ -52647,20 +57389,23 @@ /area/station/maintenance/fore) "vFc" = ( /obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/iron/dark/textured_large, /area/station/cargo/storage) "vFj" = ( /obj/effect/landmark/start/security_officer, /obj/structure/chair{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/small, /area/station/security/office) "vFr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white, /area/station/science/robotics/lab) "vFx" = ( @@ -52694,11 +57439,15 @@ /area/station/maintenance/disposal/incinerator) "vFS" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron/small, /area/station/hallway/primary/central) "vGb" = ( /obj/structure/lattice, @@ -52706,16 +57455,25 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"vGD" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "vHf" = ( /obj/structure/chair/stool/directional/west, /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, /area/station/security/prison) "vHp" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/machinery/door/window/brigdoor/security/holding{ id = "Holding Cell"; name = "Holding Cell" @@ -52723,8 +57481,20 @@ /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, +/obj/effect/turf_decal/trimline/red/filled/end, +/turf/open/floor/iron/dark, /area/station/security/brig) +"vHE" = ( +/obj/effect/turf_decal/caution, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/security/lockers) +"vHN" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "vIf" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52769,6 +57539,25 @@ /mob/living/basic/mothroach, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"vKq" = ( +/obj/structure/table, +/obj/item/stock_parts/micro_laser{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/item/stock_parts/micro_laser{ + pixel_x = 2 + }, +/obj/item/stock_parts/micro_laser{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stock_parts/micro_laser{ + pixel_x = -6; + pixel_y = 4 + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "vKX" = ( /obj/structure/cable, /turf/open/floor/wood, @@ -52780,7 +57569,8 @@ /area/station/engineering/atmos) "vLS" = ( /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/commons/storage/primary) "vLU" = ( /mob/living/simple_animal/bot/floorbot, @@ -52801,10 +57591,24 @@ dir = 8 }, /area/station/science/explab) +"vML" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "vMY" = ( -/obj/effect/spawner/random/structure/crate_loot, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) +/obj/effect/spawner/random/structure/tank_holder, +/obj/effect/turf_decal/bot/left, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) +"vNf" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/commons/dorms) "vOt" = ( /obj/effect/turf_decal/tile/red/opposingcorners, /obj/structure/chair{ @@ -52812,10 +57616,15 @@ }, /turf/open/floor/iron/dark, /area/station/security/prison/mess) +"vOC" = ( +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/station/hallway/primary/port) "vOE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "vPk" = ( @@ -52875,7 +57684,7 @@ /area/station/maintenance/starboard/aft) "vPZ" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/closed/wall/r_wall, +/turf/closed/wall, /area/station/security/prison/work) "vQv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -52883,7 +57692,8 @@ /obj/structure/cable, /obj/effect/turf_decal/siding/purple, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/trimline/purple/filled/line, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "vRA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -52921,6 +57731,10 @@ /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/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "vSE" = ( @@ -52952,11 +57766,24 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/plating, /area/station/maintenance/port) +"vUN" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/brig) "vVD" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/landmark/start/hangover, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/commons/dorms) +"vVH" = ( +/obj/effect/turf_decal/siding/thinplating_new, /turf/open/floor/iron, -/area/station/hallway/primary/fore) +/area/station/hallway/primary/port) "vVI" = ( /obj/effect/spawner/random/trash/box, /turf/open/floor/plating, @@ -52968,13 +57795,24 @@ /obj/effect/turf_decal/siding/purple/corner{ dir = 8 }, +/obj/effect/spawner/random/trash/cigbutt, /obj/effect/turf_decal/siding/thinplating_new{ - dir = 5 + dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/trimline/purple/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_large, /area/station/science/breakroom) +"vWl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "vWm" = ( /obj/effect/spawner/random/maintenance, /obj/structure/railing{ @@ -52985,6 +57823,7 @@ "vWP" = ( /obj/machinery/light/directional/south, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/hallway/primary/central) "vWX" = ( @@ -53015,6 +57854,17 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"vYA" = ( +/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/line, +/turf/open/floor/iron, +/area/station/security/brig) +"vYB" = ( +/obj/effect/turf_decal/tile/yellow/diagonal_edge, +/turf/open/floor/iron/diagonal, +/area/station/commons/storage/primary) "vYT" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -53023,6 +57873,9 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/cargo/miningoffice) "vZn" = ( @@ -53045,10 +57898,11 @@ /obj/machinery/door/airlock{ name = "Unit 1" }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "vZV" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness) "vZY" = ( @@ -53060,6 +57914,18 @@ }, /turf/open/floor/iron, /area/station/maintenance/port/aft) +"wap" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "waU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53084,7 +57950,7 @@ /obj/effect/turf_decal/stripes/line, /obj/item/radio/intercom/directional/west, /turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "wbn" = ( /obj/machinery/power/port_gen/pacman, /obj/effect/turf_decal/stripes/line{ @@ -53093,7 +57959,7 @@ /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, /turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) "wbx" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53105,6 +57971,18 @@ /obj/structure/cable/multilayer/connected, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"wcp" = ( +/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{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron/large, +/area/station/service/hydroponics/garden) "wdb" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -53128,6 +58006,17 @@ /obj/effect/turf_decal/tile/green/half/contrasted, /turf/open/floor/iron, /area/station/security/prison/garden) +"wev" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 5 + }, +/turf/open/floor/iron/dark/herringbone, +/area/station/commons/storage/primary) +"weE" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/broken_flooring/pile, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "weM" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -53140,6 +58029,13 @@ "weO" = ( /turf/closed/wall, /area/station/security/interrogation) +"wfC" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "wfP" = ( /obj/machinery/conveyor{ dir = 10; @@ -53172,6 +58068,7 @@ /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/corner, +/obj/effect/turf_decal/trimline/brown/filled/corner, /turf/open/floor/iron, /area/station/cargo/storage) "whg" = ( @@ -53183,9 +58080,17 @@ }, /turf/open/floor/stone, /area/station/service/bar) +"whx" = ( +/obj/effect/turf_decal/tile/green/fourcorners, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/service/hydroponics) "whK" = ( /obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "wiz" = ( /obj/structure/table, @@ -53201,7 +58106,20 @@ }, /obj/item/stack/sheet/iron/fifty, /turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/equipment) +/area/station/ai_monitored/turret_protected/aisat/service) +"wiD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "EVA Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/eva, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark_blue, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/station/ai_monitored/command/storage/eva) "wiO" = ( /obj/machinery/camera/directional/north{ c_tag = "Prison Yard"; @@ -53215,13 +58133,17 @@ /obj/item/plant_analyzer, /turf/open/floor/iron, /area/station/security/prison/garden) +"wiR" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/engine, +/area/station/science/xenobiology) "wiZ" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/directional/east, /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, +/turf/open/floor/catwalk_floor/iron, /area/station/cargo/office) "wjk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53229,7 +58151,7 @@ /obj/effect/turf_decal/box/white{ color = "#52B4E9" }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/white/small, /area/station/medical/storage) "wjt" = ( /obj/effect/turf_decal/trimline/blue/filled/warning, @@ -53261,16 +58183,51 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/iron, /area/station/maintenance/aft) +"wlT" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/station/engineering/transit_tube) "wmq" = ( /obj/structure/window/spawner/directional/east, /turf/open/space, -/area/space) +/area/space/nearstation) +"wmH" = ( +/obj/structure/table, +/obj/item/stock_parts/scanning_module{ + pixel_x = 5 + }, +/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; + pixel_y = 7 + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "wnb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output{ dir = 1 }, /turf/open/floor/engine/air, /area/station/engineering/atmos) +"woH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/processing) "woX" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/landmark/start/hangover, @@ -53305,22 +58262,18 @@ /turf/open/floor/iron, /area/station/commons/fitness) "wqu" = ( -/obj/structure/sign/departments/chemistry/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/bot, +/obj/structure/mirror/directional/south, +/turf/open/floor/iron/dark/textured, /area/station/medical/treatment_center) "wqx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) "wrp" = ( @@ -53333,6 +58286,8 @@ "wrr" = ( /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/iron, /area/station/security/prison) "wsw" = ( @@ -53342,12 +58297,27 @@ id = "rnd2"; name = "research lab shutters" }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 1 + }, +/turf/open/floor/iron/herringbone, /area/station/science/lab) "wsx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /turf/closed/wall, /area/station/engineering/main) +"wsJ" = ( +/obj/structure/chair/pew/right{ + dir = 1 + }, +/turf/open/floor/iron/chapel{ + dir = 1 + }, +/area/station/service/chapel) "wte" = ( /obj/structure/table, /obj/item/storage/toolbox/emergency, @@ -53378,8 +58348,9 @@ /area/station/security/lockers) "wxS" = ( /obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/chapel{ + dir = 4 + }, /area/station/service/chapel) "wyT" = ( /obj/structure/chair/stool{ @@ -53398,6 +58369,17 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/station/medical/morgue) +"wzP" = ( +/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/neutral/end, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) +"wzS" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/commons/dorms) "wzX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall, @@ -53413,13 +58395,22 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/structure/cable{ - pixel_x = -1 - }, +/obj/structure/cable, /turf/open/floor/iron/white/corner{ dir = 1 }, /area/station/hallway/secondary/exit/departure_lounge) +"wAt" = ( +/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/corner, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/security/brig) "wAx" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden{ dir = 4 @@ -53450,6 +58441,17 @@ /obj/structure/tank_holder/extinguisher, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"wBH" = ( +/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/bot, +/obj/structure/railing{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "wBO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/window/reinforced/spawner/directional/north, @@ -53462,6 +58464,15 @@ /obj/item/pai_card, /turf/open/floor/iron, /area/station/commons/locker) +"wCn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/processing) "wCw" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -53485,6 +58496,15 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/virology) +"wCD" = ( +/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/red{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "wCV" = ( /obj/docking_port/stationary/mining_home/common{ dir = 8 @@ -53500,15 +58520,26 @@ /obj/effect/spawner/random/food_or_drink/snack, /turf/open/floor/wood/parquet, /area/station/service/bar) +"wDE" = ( +/obj/effect/turf_decal/siding/red{ + dir = 4 + }, +/turf/open/floor/iron/herringbone, +/area/station/security/brig) "wDT" = ( /obj/machinery/porta_turret/ai{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured, /area/station/ai_monitored/turret_protected/ai_upload) "wEE" = ( /turf/closed/wall, /area/station/science/breakroom) +"wFp" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/station/commons/fitness) "wFP" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -53525,7 +58556,13 @@ /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, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/small, /area/station/hallway/secondary/entry) "wHs" = ( /turf/closed/wall/r_wall, @@ -53566,7 +58603,10 @@ /area/station/science/genetics) "wHX" = ( /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/turf_decal/siding/thinplating_new/end{ + dir = 4 + }, +/turf/open/floor/iron/large, /area/station/service/hydroponics/garden) "wIz" = ( /obj/structure/cable, @@ -53585,18 +58625,23 @@ /obj/structure/cable, /obj/structure/table, /obj/effect/spawner/random/trash/food_packaging, -/turf/open/floor/iron, +/turf/open/floor/iron/small, /area/station/cargo/miningoffice) "wIT" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/small, /area/station/hallway/secondary/entry) "wJr" = ( -/obj/effect/turf_decal/tile/red, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/security/brig) +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/security/lockers) "wJt" = ( /obj/structure/sign/warning/cold_temp, /obj/effect/spawner/structure/window/reinforced, @@ -53630,7 +58675,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/pile, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/aft) "wLh" = ( @@ -53653,6 +58697,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/blue/filled/end{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/station/medical/medbay/aft) "wLF" = ( @@ -53665,6 +58712,15 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) +"wLN" = ( +/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/trimline/neutral/end{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "wMs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53689,6 +58745,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating_new/dark, /turf/open/floor/iron/dark, /area/station/science/breakroom) "wOb" = ( @@ -53747,6 +58804,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/tile/red{ + dir = 4 + }, /turf/open/floor/iron/white/corner, /area/station/hallway/secondary/exit/departure_lounge) "wRt" = ( @@ -53776,11 +58836,10 @@ /turf/open/floor/plating, /area/station/engineering/storage/tech) "wTy" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/herringbone, /area/station/service/chapel) "wTJ" = ( /obj/machinery/portable_atmospherics/scrubber, @@ -53791,6 +58850,15 @@ /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/atmos) +"wUe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "wUs" = ( /obj/machinery/airalarm/directional/north, /obj/structure/closet/secure_closet/personal, @@ -53853,11 +58921,22 @@ /turf/open/floor/plating, /area/station/science/xenobiology) "wYC" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, /obj/effect/turf_decal/siding/dark/corner{ dir = 8 }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"wYV" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) "wZc" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -53896,6 +58975,15 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/explab) +"xbf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/plating, +/area/station/maintenance/starboard/aft) "xbj" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53975,7 +59063,10 @@ /area/station/maintenance/starboard/aft) "xfD" = ( /obj/machinery/light/small/directional/west, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "xfW" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ @@ -53983,6 +59074,11 @@ }, /turf/closed/wall/r_wall, /area/station/maintenance/starboard/aft) +"xfX" = ( +/obj/effect/turf_decal/trimline/brown/filled/corner, +/obj/effect/turf_decal/siding/thinplating_new/corner, +/turf/open/floor/iron, +/area/station/cargo/storage) "xgk" = ( /obj/structure/cable, /obj/machinery/computer/quantum_console, @@ -53993,6 +59089,12 @@ /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"xgx" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/warden) "xgN" = ( /obj/machinery/door/poddoor/shutters{ id = "supplybridge" @@ -54047,7 +59149,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/freezer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/showroomfloor, /area/station/commons/toilet) "xjQ" = ( /obj/structure/rack, @@ -54111,11 +59214,9 @@ /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, +/obj/effect/turf_decal/siding/thinplating_new, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "xlt" = ( /obj/effect/turf_decal/tile/red{ @@ -54142,6 +59243,7 @@ pixel_x = 4; pixel_y = 2 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/cafeteria, /area/station/hallway/secondary/exit/departure_lounge) "xlS" = ( @@ -54172,11 +59274,10 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/carpet/orange, /area/station/command/heads_quarters/qm) "xnB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -54211,6 +59312,10 @@ /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/neutral/line, +/obj/effect/turf_decal/trimline/neutral/line{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/port) "xpg" = ( @@ -54239,6 +59344,36 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, /turf/open/floor/iron, /area/station/engineering/gravity_generator) +"xqL" = ( +/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/smooth, +/area/station/cargo/drone_bay) +"xrO" = ( +/obj/structure/railing, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 3 + }, +/obj/item/multitool{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/assembly/signaler{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "xsr" = ( /obj/machinery/camera{ c_tag = "Medbay Stasis Center North"; @@ -54261,9 +59396,13 @@ /area/station/maintenance/aft) "xsW" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/poddoor/preopen{ + id = "ceprivacy"; + name = "Privacy shutter" + }, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/maintenance/port/aft) +/area/station/command/heads_quarters/ce) "xsY" = ( /obj/structure/cable, /obj/structure/broken_flooring/singular/always_floorplane, @@ -54273,7 +59412,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, +/obj/effect/turf_decal/tile/neutral/diagonal_edge, +/turf/open/floor/iron/diagonal, /area/station/hallway/primary/port) "xtU" = ( /obj/structure/cable, @@ -54285,8 +59425,20 @@ /obj/machinery/light/directional/south, /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/engineering/main) +"xuS" = ( +/obj/structure/disposalpipe/segment, +/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/purple/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/line, +/turf/open/floor/iron/dark, +/area/station/maintenance/starboard) "xwa" = ( /obj/machinery/door/airlock/public/glass{ id_tag = "cell1outer"; @@ -54305,18 +59457,32 @@ "xwI" = ( /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"xxy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/warden) "xxD" = ( /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 = 8 }, -/turf/open/floor/wood, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/captain) "xxH" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/secondary/service) +"xyT" = ( +/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/iron/white, +/area/station/science/robotics/lab) "xzb" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -54337,6 +59503,29 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/xenobiology) +"xzk" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 4 + }, +/turf/open/floor/iron/small, +/area/station/hallway/primary/central) +"xzo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "xzr" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -54417,8 +59606,9 @@ /turf/open/floor/iron/checker, /area/station/science/breakroom) "xDX" = ( -/obj/effect/spawner/random/entertainment/arcade, /obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster/directional/west, +/obj/effect/spawner/random/entertainment/arcade, /turf/open/floor/iron, /area/station/security/prison) "xEt" = ( @@ -54512,7 +59702,7 @@ name = "Virology Exterior Airlock" }, /obj/machinery/door_buttons/access_button{ - idDoor = "virology_airlock_interior"; + idDoor = "virology_airlock_exterior"; idSelf = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -24; @@ -54525,11 +59715,16 @@ /area/station/medical/virology) "xIq" = ( /obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/structure/transit_tube, +/obj/structure/transit_tube/station/dispenser/flipped{ + dir = 4 + }, /turf/open/floor/plating, -/area/station/engineering/main) +/area/station/engineering/transit_tube) "xID" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -54558,6 +59753,9 @@ "xKf" = ( /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 = 6 + }, /turf/open/floor/wood, /area/station/commons/dorms) "xKC" = ( @@ -54586,14 +59784,31 @@ /obj/effect/mapping_helpers/mail_sorting/medbay/chemistry, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"xLr" = ( +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/effect/decal/cleanable/dirt, +/turf/open/misc/sandy_dirt, +/area/space/nearstation) +"xMA" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/station/commons/dorms) "xND" = ( /obj/effect/turf_decal/siding/purple{ dir = 8 }, /obj/effect/turf_decal/siding/thinplating_new{ - dir = 5 + dir = 4 }, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, /area/station/science/breakroom) "xNX" = ( /obj/machinery/light/small/directional/west, @@ -54638,6 +59853,10 @@ }, /turf/open/space, /area/space/nearstation) +"xPE" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/dark/herringbone, +/area/station/hallway/primary/central) "xPL" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -54656,14 +59875,11 @@ dir = 4 }, /obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) "xQZ" = ( /obj/structure/disposalpipe/segment, @@ -54691,9 +59907,20 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) -"xUi" = ( +"xUe" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/turf/open/floor/iron/showroomfloor, +/area/station/commons/toilet) +"xUi" = ( +/obj/effect/turf_decal/trimline/blue/warning{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "xUM" = ( /obj/effect/decal/cleanable/dirt, @@ -54701,6 +59928,12 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) +"xVj" = ( +/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/cafeteria, +/area/station/hallway/secondary/exit/departure_lounge) "xWg" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -54727,8 +59960,14 @@ /area/station/maintenance/starboard) "xXe" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/random/food_or_drink/donkpockets{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/effect/spawner/random/food_or_drink/donkpockets{ + pixel_x = -5; + pixel_y = 1 + }, /turf/open/floor/iron/textured, /area/station/science/breakroom) "xXI" = ( @@ -54736,6 +59975,12 @@ /obj/item/ai_module/reset, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) +"xXY" = ( +/obj/effect/turf_decal/trimline/neutral/end{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/fore) "xYb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -54791,8 +60036,7 @@ "xYY" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ - name = "Brig"; - req_access_txt = "63; 42" + name = "Brig" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54820,9 +60064,17 @@ /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/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/science/genetics, /turf/open/floor/plating, /area/station/science/genetics) +"yac" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/effect/turf_decal/tile/dark_blue{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "yay" = ( /obj/machinery/door/airlock/security{ name = "Detective's Office" @@ -54843,7 +60095,10 @@ /obj/structure/closet/secure_closet/personal/cabinet, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/machinery/airalarm/directional/north, -/turf/open/floor/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/parquet, /area/station/commons/dorms) "yaR" = ( /obj/structure/disposalpipe/segment, @@ -54884,6 +60139,13 @@ /obj/structure/table, /turf/open/floor/iron/dark, /area/station/security/prison/mess) +"ydi" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "ydA" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -54935,6 +60197,12 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, /turf/open/floor/iron, /area/station/cargo/office) "ygh" = ( @@ -54977,14 +60245,18 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "yiW" = ( -/obj/machinery/firealarm/directional/east, /turf/open/floor/iron/white/corner{ dir = 8 }, /area/station/science/research) "yjd" = ( -/obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/machinery/door/airlock/public/glass{ + name = "Space Bridge Access" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "yjy" = ( @@ -55020,16 +60292,14 @@ /turf/open/floor/iron/kitchen/diagonal, /area/station/service/kitchen) "ykI" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/hangover, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/iron/dark, /area/station/commons/dorms) "yll" = ( /obj/structure/reagent_dispensers/fueltank, @@ -55055,6 +60325,11 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/science/xenobiology) +"ymi" = ( +/obj/structure/broken_flooring/corner/directional/west, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) (1,1,1) = {" aaa @@ -60709,245 +65984,8 @@ aaa aaa aaa aaa -"} -(23,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 -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +"} +(23,1,1) = {" aaa aaa aaa @@ -60966,8 +66004,6 @@ aaa aaa aaa aaa -"} -(24,1,1) = {" aaa aaa aaa @@ -61205,6 +66241,8 @@ aaa aaa aaa aaa +"} +(24,1,1) = {" aaa aaa aaa @@ -61223,8 +66261,6 @@ aaa aaa aaa aaa -"} -(25,1,1) = {" aaa aaa aaa @@ -61462,6 +66498,9 @@ aaa aaa aaa aaa +"} +(25,1,1) = {" +aaa aaa aaa aaa @@ -61480,8 +66519,6 @@ aaa aaa aaa aaa -"} -(26,1,1) = {" aaa aaa aaa @@ -61718,6 +66755,120 @@ aaa aaa aaa aaa +"} +(26,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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61737,8 +66888,6 @@ aaa aaa aaa aaa -"} -(27,1,1) = {" aaa aaa aaa @@ -61840,6 +66989,123 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(27,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 +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa eRz aaa aaa @@ -61994,8 +67260,6 @@ aaa aaa aaa aaa -"} -(28,1,1) = {" aaa aaa aaa @@ -62005,6 +67269,8 @@ aaa aaa aaa aaa +"} +(28,1,1) = {" aaa aaa aaa @@ -62251,8 +67517,6 @@ aaa aaa aaa aaa -"} -(29,1,1) = {" aaa aaa aaa @@ -62262,6 +67526,8 @@ aaa aaa aaa aaa +"} +(29,1,1) = {" aaa aaa aaa @@ -62508,8 +67774,6 @@ aaa aaa aaa aaa -"} -(30,1,1) = {" aaa aaa aaa @@ -62519,6 +67783,8 @@ aaa aaa aaa aaa +"} +(30,1,1) = {" aaa aaa aaa @@ -62765,8 +68031,6 @@ aaa aaa aaa aaa -"} -(31,1,1) = {" aaa aaa aaa @@ -62776,6 +68040,8 @@ aaa aaa aaa aaa +"} +(31,1,1) = {" aaa aaa aaa @@ -63022,8 +68288,6 @@ aaa aaa aaa aaa -"} -(32,1,1) = {" aaa aaa aaa @@ -63033,6 +68297,8 @@ aaa aaa aaa aaa +"} +(32,1,1) = {" aaa aaa aaa @@ -63279,8 +68545,6 @@ aaa aaa aaa aaa -"} -(33,1,1) = {" aaa aaa aaa @@ -63290,6 +68554,8 @@ aaa aaa aaa aaa +"} +(33,1,1) = {" aaa aaa aaa @@ -63536,8 +68802,6 @@ aaa aaa aaa aaa -"} -(34,1,1) = {" aaa aaa aaa @@ -63547,6 +68811,8 @@ aaa aaa aaa aaa +"} +(34,1,1) = {" aaa aaa aaa @@ -63793,8 +69059,6 @@ aaa aaa aaa aaa -"} -(35,1,1) = {" aaa aaa aaa @@ -63804,6 +69068,8 @@ aaa aaa aaa aaa +"} +(35,1,1) = {" aaa aaa aaa @@ -63921,9 +69187,9 @@ aaa aaa aaa aaf -vul +awW auP -vul +awW aaf aaf aaa @@ -64050,8 +69316,6 @@ aaa aaa aaa aaa -"} -(36,1,1) = {" aaa aaa aaa @@ -64061,6 +69325,8 @@ aaa aaa aaa aaa +"} +(36,1,1) = {" aaa aaa aaa @@ -64307,8 +69573,6 @@ aaa aaa aaa aaa -"} -(37,1,1) = {" aaa aaa aaa @@ -64318,6 +69582,8 @@ aaa aaa aaa aaa +"} +(37,1,1) = {" aaa aaa aaa @@ -64564,8 +69830,6 @@ aaa aaa aaa aaa -"} -(38,1,1) = {" aaa aaa aaa @@ -64575,6 +69839,8 @@ aaa aaa aaa aaa +"} +(38,1,1) = {" aaa aaa aaa @@ -64670,7 +69936,7 @@ apN apJ awZ ayl -azy +beK auP cIh aaa @@ -64682,7 +69948,7 @@ aaa aaa hFg auP -cIh +rFS bQH aRY awW @@ -64696,7 +69962,7 @@ jVc ayl beK auP -cyt +cIh cyd aaa aaa @@ -64821,8 +70087,6 @@ aaa aaa aaa aaa -"} -(39,1,1) = {" aaa aaa aaa @@ -64832,6 +70096,8 @@ aaa aaa aaa aaa +"} +(39,1,1) = {" aaa aaa aaa @@ -65078,8 +70344,6 @@ aaa aaa aaa aaa -"} -(40,1,1) = {" aaa aaa aaa @@ -65089,6 +70353,8 @@ aaa aaa aaa aaa +"} +(40,1,1) = {" aaa aaa aaa @@ -65335,8 +70601,6 @@ aaa aaa aaa aaa -"} -(41,1,1) = {" aaa aaa aaa @@ -65346,6 +70610,8 @@ aaa aaa aaa aaa +"} +(41,1,1) = {" aaa aaa aaa @@ -65592,8 +70858,6 @@ aaa aaa aaa aaa -"} -(42,1,1) = {" aaa aaa aaa @@ -65603,6 +70867,8 @@ aaa aaa aaa aaa +"} +(42,1,1) = {" aaa aaa aaa @@ -65849,8 +71115,6 @@ aaa aaa aaa aaa -"} -(43,1,1) = {" aaa aaa aaa @@ -65860,6 +71124,8 @@ aaa aaa aaa aaa +"} +(43,1,1) = {" aaa aaa aaa @@ -66106,8 +71372,6 @@ aaa aaa aaa aaa -"} -(44,1,1) = {" aaa aaa aaa @@ -66117,6 +71381,8 @@ aaa aaa aaa aaa +"} +(44,1,1) = {" aaa aaa aaa @@ -66363,8 +71629,6 @@ aaa aaa aaa aaa -"} -(45,1,1) = {" aaa aaa aaa @@ -66374,6 +71638,8 @@ aaa aaa aaa aaa +"} +(45,1,1) = {" aaa aaa aaa @@ -66469,7 +71735,7 @@ asF apJ axh aIK -azy +beK auP cIh aaa @@ -66479,9 +71745,9 @@ aaa aaa aaa aaa -azy +hFg auP -cIh +rFS nHm aRY awW @@ -66493,9 +71759,9 @@ aaa awW awZ ayl -beL +beK auP -cyu +cIh aaa aaa aaa @@ -66620,8 +71886,6 @@ aaa aaa aaa aaa -"} -(46,1,1) = {" aaa aaa aaa @@ -66631,6 +71895,8 @@ aaa aaa aaa aaa +"} +(46,1,1) = {" aaa aaa aaa @@ -66877,8 +72143,6 @@ aaa aaa aaa aaa -"} -(47,1,1) = {" aaa aaa aaa @@ -66888,6 +72152,8 @@ aaa aaa aaa aaa +"} +(47,1,1) = {" aaa aaa aaa @@ -67134,8 +72400,6 @@ aaa aaa aaa aaa -"} -(48,1,1) = {" aaa aaa aaa @@ -67145,6 +72409,8 @@ aaa aaa aaa aaa +"} +(48,1,1) = {" aaa aaa aaa @@ -67391,8 +72657,6 @@ aaa aaa aaa aaa -"} -(49,1,1) = {" aaa aaa aaa @@ -67402,6 +72666,8 @@ aaa aaa aaa aaa +"} +(49,1,1) = {" aaa aaa aaa @@ -67648,8 +72914,6 @@ aaa aaa aaa aaa -"} -(50,1,1) = {" aaa aaa aaa @@ -67659,6 +72923,8 @@ aaa aaa aaa aaa +"} +(50,1,1) = {" aaa aaa aaa @@ -67751,7 +73017,7 @@ alU atJ nRM pQf -ash +kFD axb ayr jul @@ -67905,8 +73171,6 @@ aaa aaa aaa aaa -"} -(51,1,1) = {" aaa aaa aaa @@ -67916,6 +73180,8 @@ aaa aaa aaa aaa +"} +(51,1,1) = {" aaa aaa aaa @@ -68018,22 +73284,22 @@ iex iex iex iex -wHm -aKj +uxL +oAy aLw aLw aLw aLw aQI -aNh +aKj asE ayl ayl -ayl -ayl +dGP +dGP ayl aPz -aPI +lIv bzP bzP bzP @@ -68162,8 +73428,6 @@ aaa aaa aaa aaa -"} -(52,1,1) = {" aaa aaa aaa @@ -68173,6 +73437,8 @@ aaa aaa aaa aaa +"} +(52,1,1) = {" aaa aaa aaa @@ -68286,7 +73552,7 @@ ayl aTr aIG aLz -aLz +puB jyc eDg aPz @@ -68419,8 +73685,6 @@ aaa aaa aaa aaa -"} -(53,1,1) = {" aaa aaa aaa @@ -68430,6 +73694,8 @@ aaa aaa aaa aaa +"} +(53,1,1) = {" aaa aaa aaa @@ -68522,7 +73788,7 @@ alU aol alU alU -alU +eEO alU alU alU @@ -68676,8 +73942,6 @@ aaa aaa aaa aaa -"} -(54,1,1) = {" aaa aaa aaa @@ -68687,6 +73951,8 @@ aaa aaa aaa aaa +"} +(54,1,1) = {" aaa aaa aaa @@ -68933,8 +74199,6 @@ aaa aaa aaa aaa -"} -(55,1,1) = {" aaa aaa aaa @@ -68944,6 +74208,8 @@ aaa aaa aaa aaa +"} +(55,1,1) = {" aaa aaa aaa @@ -69057,7 +74323,7 @@ ayl uoZ aUP osx -fWr +pZX aKW eHg aPz @@ -69190,8 +74456,6 @@ aaa aaa aaa aaa -"} -(56,1,1) = {" aaa aaa aaa @@ -69201,6 +74465,8 @@ aaa aaa aaa aaa +"} +(56,1,1) = {" aaa aaa aaa @@ -69314,7 +74580,7 @@ aSd uoZ tKd aUW -puB +fWr aKW asp aPz @@ -69447,8 +74713,6 @@ aaa aaa aaa aaa -"} -(57,1,1) = {" aaa aaa aaa @@ -69458,6 +74722,8 @@ aaa aaa aaa aaa +"} +(57,1,1) = {" aaa aaa aaa @@ -69610,7 +74876,7 @@ bLv bLv bCq bCq -aaa +bCq aaa aaa aaa @@ -69704,8 +74970,6 @@ aaa aaa aaa aaa -"} -(58,1,1) = {" aaa aaa aaa @@ -69715,6 +74979,8 @@ aaa aaa aaa aaa +"} +(58,1,1) = {" aaa aaa aaa @@ -69865,9 +75131,9 @@ dgr jHf xID ejC -qsB +ejC +weE bCq -aaa aoV aaa aaa @@ -69961,8 +75227,6 @@ aaa aaa aaa aaa -"} -(59,1,1) = {" aaa aaa aaa @@ -69972,6 +75236,8 @@ aaa aaa aaa aaa +"} +(59,1,1) = {" aaa aaa aaa @@ -70123,6 +75389,7 @@ ard ard ard wdp +amj bCq aaa aaa @@ -70134,7 +75401,6 @@ aaa aaa aaa aaa -aaa aaS aaf cca @@ -70218,8 +75484,6 @@ aaa aaa aaa aaa -"} -(60,1,1) = {" aaa aaa aaa @@ -70229,6 +75493,8 @@ aaa aaa aaa aaa +"} +(60,1,1) = {" aaa aaa aaa @@ -70326,7 +75592,7 @@ fWY aol alU aAU -nMU +oRj nmV rOs nMU @@ -70381,7 +75647,7 @@ bCq bCq vbU bCq -gXs +bCq aaa aaa aaa @@ -70475,8 +75741,6 @@ aaa aaa aaa aaa -"} -(61,1,1) = {" aaa aaa aaa @@ -70486,6 +75750,8 @@ aaa aaa aaa aaa +"} +(61,1,1) = {" aaa aaa aaa @@ -70577,14 +75843,14 @@ vnv aol alU alU -alU +ali alU alU atr azi sEj aBm -sEj +cdy rnT nMU nwF @@ -70592,7 +75858,7 @@ nwF nwF aLD wHm -aNh +aKj aPz aPz aPz @@ -70634,11 +75900,11 @@ aaa aaa aaa pjz -baX +nXv lHO vAp gXL -baX +nXv pjz aaa aaa @@ -70732,8 +75998,6 @@ aaa aaa aaa aaa -"} -(62,1,1) = {" aaa aaa aaa @@ -70743,6 +76007,8 @@ aaa aaa aaa aaa +"} +(62,1,1) = {" aaa aaa aaa @@ -70824,7 +76090,7 @@ aaf aaa ajV alR -alR +cfw alR alR alU @@ -70847,9 +76113,9 @@ pIc aHz aIS gAh -aLE +uHK aOz -aLE +pSc aPz aQL msY @@ -70989,8 +76255,6 @@ aaa aaa aaa aaa -"} -(63,1,1) = {" aaa aaa aaa @@ -71000,6 +76264,8 @@ aaa aaa aaa aaa +"} +(63,1,1) = {" aaa aaa aaa @@ -71089,24 +76355,24 @@ amC apP vnv aol -alU +ali aaH bNb gXs -alU +ali atr alU aAS hGw -hGw -rnT +gqB +mJW ikX -rnT -rnT +wcp +kmI aKm -aMT +uBA aNj -aLE +pSc aPz aPz aPz @@ -71246,8 +76512,6 @@ aaa aaa aaa aaa -"} -(64,1,1) = {" aaa aaa aaa @@ -71257,6 +76521,8 @@ aaa aaa aaa aaa +"} +(64,1,1) = {" aaa aaa aaa @@ -71353,15 +76619,15 @@ avb alU atr alU -aAU +nCw nRl -nMU -nMU +aKd +cCd nMU aBM nMU gAh -aLE +uHK lzW aOm aPB @@ -71503,8 +76769,6 @@ aaa aaa aaa aaa -"} -(65,1,1) = {" aaa aaa aaa @@ -71514,6 +76778,8 @@ aaa aaa aaa aaa +"} +(65,1,1) = {" aaa aaa aaa @@ -71620,7 +76886,7 @@ aIT nwF aLG aNl -aOl +rDK coR coR coR @@ -71760,8 +77026,6 @@ aaa aaa aaa aaa -"} -(66,1,1) = {" aaa aaa aaa @@ -71771,6 +77035,8 @@ aaa aaa aaa aaa +"} +(66,1,1) = {" aaa aaa aaa @@ -71875,9 +77141,9 @@ nwF nwF nwF nwF -aLE +uHK aNl -aOl +rDK coR aQO aSh @@ -72017,8 +77283,6 @@ aaa aaa aaa aaa -"} -(67,1,1) = {" aaa aaa aaa @@ -72028,6 +77292,8 @@ aaa aaa aaa aaa +"} +(67,1,1) = {" aaa aaa aaa @@ -72132,15 +77398,15 @@ aFQ aHe aIN aKp -aLE +uHK gFX faQ coR uea -aCE -bzR -bzR -bzR +mjh +aZt +aZt +aZt mRq aYe xoY @@ -72274,8 +77540,6 @@ aaa aaa aaa aaa -"} -(68,1,1) = {" aaa aaa aaa @@ -72285,6 +77549,8 @@ aaa aaa aaa aaa +"} +(68,1,1) = {" aaa aaa aaa @@ -72383,14 +77649,14 @@ alU alU tOI aBL +vfS aDd aDd aDd -aDd -aDd +qvk aJZ -aMT -aMT +uBA +kNo aOo coR tWU @@ -72433,11 +77699,11 @@ aaa aaa aaa pjz -baX +nXv nVR avl ftg -baX +nXv pjz aaa aaa @@ -72531,8 +77797,6 @@ aaa aaa aaa aaa -"} -(69,1,1) = {" aaa aaa aaa @@ -72542,6 +77806,8 @@ aaa aaa aaa aaa +"} +(69,1,1) = {" aaa aaa aaa @@ -72641,12 +77907,12 @@ alU atr alU aDb -aDo +kpn aFY bRO poM aKp -aLE +uHK lzW aOt coR @@ -72694,7 +77960,7 @@ gXs bCq aba bCq -gXs +bCq aaa aaa aaa @@ -72788,8 +78054,6 @@ aaa aaa aaa aaa -"} -(70,1,1) = {" aaa aaa aaa @@ -72799,6 +78063,8 @@ aaa aaa aaa aaa +"} +(70,1,1) = {" aaa aaa aaa @@ -72902,8 +78168,8 @@ bxk aFS sIY aIX -aBQ -aLE +aKp +uHK lzW aOp coR @@ -73045,8 +78311,6 @@ aaa aaa aaa aaa -"} -(71,1,1) = {" aaa aaa aaa @@ -73056,6 +78320,8 @@ aaa aaa aaa aaa +"} +(71,1,1) = {" aaa aaa aaa @@ -73155,12 +78421,12 @@ alU atr alU aDk -aDo +vYB dpb -sIY +qKu aIW -aBQ -aLE +aKp +uHK lzW aOi aPC @@ -73302,8 +78568,6 @@ aaa aaa aaa aaa -"} -(72,1,1) = {" aaa aaa aaa @@ -73313,6 +78577,8 @@ aaa aaa aaa aaa +"} +(72,1,1) = {" aaa aaa aaa @@ -73416,8 +78682,8 @@ vLS dpb aHD aIZ -aBQ -aLE +aKp +uHK lzW aOq aPD @@ -73559,8 +78825,6 @@ aaa aaa aaa aaa -"} -(73,1,1) = {" aaa aaa aaa @@ -73570,6 +78834,8 @@ aaa aaa aaa aaa +"} +(73,1,1) = {" aaa aaa aaa @@ -73669,14 +78935,14 @@ alU atr alU aDm -aDo -dpb -aDo -aIY +kpn aBQ -aLE +smw +aIY +aKp +uHK lzW -aOl +rDK coR aQS mEf @@ -73695,12 +78961,12 @@ rdv aWx aPz bkj -uHA +rPU uHA uHA bps fDz -bjr +nIn buB swe hMV @@ -73816,8 +79082,6 @@ aaa aaa aaa aaa -"} -(74,1,1) = {" aaa aaa aaa @@ -73827,6 +79091,8 @@ aaa aaa aaa aaa +"} +(74,1,1) = {" aaa aaa aaa @@ -73926,14 +79192,14 @@ alU atr alU aDp -aDo +wev aFU -aDo +nzC aJb aKp -aLE +uHK lzW -aOl +rDK aPE aQV mEf @@ -73975,7 +79241,7 @@ aaa aaa aaa aaa -bCq +aaa bCq bCq iZX @@ -74073,8 +79339,6 @@ aaa aaa aaa aaa -"} -(75,1,1) = {" aaa aaa aaa @@ -74084,6 +79348,8 @@ aaa aaa aaa aaa +"} +(75,1,1) = {" aaa aaa aaa @@ -74183,14 +79449,14 @@ tOI atr alU mFY -aDo -aDo -vLS +vYB +vYB +sqX aIU aKa -aLE +uHK lzW -aOl +rDK coR uIm bzR @@ -74232,10 +79498,10 @@ aaa aaa aaa aaa +aaa bCq -akY -bCq -mzb +xID +ard amO bCq caf @@ -74330,8 +79596,6 @@ aaa aaa aaa aaa -"} -(76,1,1) = {" aaa aaa aaa @@ -74341,6 +79605,8 @@ aaa aaa aaa aaa +"} +(76,1,1) = {" aaa aaa aaa @@ -74464,7 +79730,7 @@ aSg ppw aPz bjn -bjr +aez bkt bmh daJ @@ -74489,11 +79755,11 @@ aaa aaa aaa aaa +aaa bCq -bPS -ifK -shT -amP +uIe +doK +pZJ bCq cbk bLv @@ -74587,8 +79853,6 @@ aaa aaa aaa aaa -"} -(77,1,1) = {" aaa aaa aaa @@ -74598,6 +79862,8 @@ aaa aaa aaa aaa +"} +(77,1,1) = {" aaa aaa aaa @@ -74704,7 +79970,7 @@ aBR aBR aLJ aNl -aOl +rDK coR aQW aQW @@ -74721,7 +79987,7 @@ aRb aWx aPz bjm -bjr +aez xGy bmh mtU @@ -74746,10 +80012,10 @@ aaa aaa aaa aaa +aaa bLv -cAL bRc -bSo +bvX amR bCq bVy @@ -74844,8 +80110,6 @@ aaa aaa aaa aaa -"} -(78,1,1) = {" aaa aaa aaa @@ -74855,6 +80119,8 @@ aaa aaa aaa aaa +"} +(78,1,1) = {" aaa aaa aaa @@ -74978,7 +80244,7 @@ nfz mgb aPz bjp -bjr +aez bjr bmh daJ @@ -74990,11 +80256,12 @@ bjr glk rLC biE -oUg -oUg +fah +fah biE biE -bDi +ggy +aaa aaa aaa aaa @@ -75004,10 +80271,9 @@ aaa aaa aaa bLv -bPS -bRf -bSo -amS +xID +bvX +bHE bCq bVB bHE @@ -75101,8 +80367,6 @@ aaa aaa aaa aaa -"} -(79,1,1) = {" aaa aaa aaa @@ -75112,6 +80376,8 @@ aaa aaa aaa aaa +"} +(79,1,1) = {" aaa aaa aaa @@ -75218,7 +80484,7 @@ aaf aJd aLL bDe -aOl +rDK lBY aQY aSk @@ -75235,8 +80501,8 @@ aQM aTv aPz bjo -bmh -bmh +aez +bjr bmh daJ olb @@ -75249,7 +80515,8 @@ bvF ggy bAS xQW -fSw +bWI +nmS ggy aaa aaa @@ -75261,9 +80528,8 @@ aaa aaa aaa bLv -bPT -bRe -bSo +xID +bvX ani bCq bVA @@ -75358,8 +80624,6 @@ aaa aaa aaa aaa -"} -(80,1,1) = {" aaa aaa aaa @@ -75369,6 +80633,8 @@ aaa aaa aaa aaa +"} +(80,1,1) = {" aaa aaa aaa @@ -75475,7 +80741,7 @@ aaa aJd aLN aNl -aOl +rDK aPH aLE aLE @@ -75492,7 +80758,7 @@ aPz aPz aPz vFc -bjr +aez ama bmh daJ @@ -75505,8 +80771,9 @@ glk byA ggy byd -kxJ fJP +fJP +tty aTH aaa aaa @@ -75518,10 +80785,9 @@ aaa aaa aaa bLv -bPS -alv -bSo -bPS +xID +wBH +frc bCq bVD qKa @@ -75615,8 +80881,6 @@ aaa aaa aaa aaa -"} -(81,1,1) = {" aaa aaa aaa @@ -75626,6 +80890,8 @@ aaa aaa aaa aaa +"} +(81,1,1) = {" aaa aaa aaa @@ -75732,7 +80998,7 @@ aJd aJd aLN aNl -aOl +rDK lBY aQZ aLE @@ -75748,8 +81014,8 @@ bdS bdU bIC jSk -bjr -bjr +bUV +sNK bjr bmh uWy @@ -75763,7 +81029,8 @@ byz ara byc jrJ -dQl +pDt +bKl aTH aaa aaa @@ -75773,12 +81040,11 @@ bJb bGi bGi aoV -aoV +aaa bCq -ala -alK -mzb -anq +xID +qUT +hqy bCq bVC bWx @@ -75872,8 +81138,6 @@ aaa aaa aaa aaa -"} -(82,1,1) = {" aaa aaa aaa @@ -75883,6 +81147,8 @@ aaa aaa aaa aaa +"} +(82,1,1) = {" aaa aaa aaa @@ -75988,7 +81254,7 @@ aHG aJe aKw aLP -aMT +kNo aNU aPz aPz @@ -76005,7 +81271,7 @@ bIC bfg qyL bhW -bjt +eXH bjt bjt ulE @@ -76020,22 +81286,22 @@ brN aTH byl uNQ -bWI +krg +alK aTH aaf -aaf +gXs bGi bHz dUO bKk bGi aoV -aoV +aaa bCq -alg -bPS +xID shT -efs +anq bCq bVF bWA @@ -76129,8 +81395,6 @@ aaa aaa aaa aaa -"} -(83,1,1) = {" aaa aaa aaa @@ -76140,6 +81404,8 @@ aaa aaa aaa aaa +"} +(83,1,1) = {" aaa aaa aaa @@ -76245,7 +81511,7 @@ uES aJd aJd aLN -aMT +kNo aNT aPI vUA @@ -76263,9 +81529,9 @@ eeh bex aZE bgu -bjr -bjt -bmh +xfX +hpP +nco oJH eYK brM @@ -76277,21 +81543,21 @@ byB aTH byg xng -lIx -aTH +krg +apr +ggy aaa aaa bGi bHy dUO -bKj +aJL bGi aoV -aoV +aaa bCq -aJL +ard mzb -amI anB bCq bVE @@ -76386,8 +81652,6 @@ aaa aaa aaa aaa -"} -(84,1,1) = {" aaa aaa aaa @@ -76397,6 +81661,8 @@ aaa aaa aaa aaa +"} +(84,1,1) = {" aaa aaa aaa @@ -76502,8 +81768,8 @@ aei aaa aJd aLN -aMT -aOt +kNo +ueb aPz aPz aPz @@ -76534,9 +81800,10 @@ aZE ggy byn kCW -nkS +eFh +cAL ggy -aaa +bxy bxy bxy bxy @@ -76544,11 +81811,10 @@ bJd bKm bxy gXs -gXs bCq -als +bCq cOw -amJ +bCq bCq bCq bCq @@ -76643,8 +81909,6 @@ aaa aaa aaa aaa -"} -(85,1,1) = {" aaa aaa aaa @@ -76654,6 +81918,8 @@ aaa aaa aaa aaa +"} +(85,1,1) = {" aaa aaa aaa @@ -76759,9 +82025,9 @@ aei aaf aJd aLN -aMT +kNo aOl -aLE +vOC aPz aSl aXP @@ -76797,13 +82063,13 @@ bxy bxy ahw bHA +amJ nXT -bKl +lIx bxy aaH -aaH bCq -vro +bcr bRg bTx bCq @@ -76900,8 +82166,6 @@ aaa aaa aaa aaa -"} -(86,1,1) = {" aaa aaa aaa @@ -76911,6 +82175,8 @@ aaa aaa aaa aaa +"} +(86,1,1) = {" aaa aaa aaa @@ -77016,9 +82282,9 @@ aaa aaa aJd aLN -aMT +kNo aOl -aLE +vOC aRc aSg aTJ @@ -77050,19 +82316,19 @@ iGz bCo bDk agv -byE -byE +efs bzn msU +alg nLe ffH -bGi -gXs +bxy +bxy gXs bLv -apr -bHE -bHE +bQa +bRg +bSs bCq ljo bLv @@ -77157,8 +82423,6 @@ aaa aaa aaa aaa -"} -(87,1,1) = {" aaa aaa aaa @@ -77168,6 +82432,8 @@ aaa aaa aaa aaa +"} +(87,1,1) = {" aaa aaa aaa @@ -77273,7 +82539,7 @@ lOY lOY lOY aLl -aMT +kNo aOl aPL aPz @@ -77293,12 +82559,12 @@ bhX bgB biF wiZ -hqO +teB bny -rop -rop -rop -rop +lYB +lYB +tjQ +mJt buc bxy eVL @@ -77318,8 +82584,8 @@ aaa aaa bLv bPZ -xsW bvX +afP eUL doK bLv @@ -77414,8 +82680,6 @@ aaa aaa aaa aaa -"} -(88,1,1) = {" aaa aaa aaa @@ -77425,6 +82689,8 @@ aaa aaa aaa aaa +"} +(88,1,1) = {" aaa aaa aaa @@ -77553,10 +82819,10 @@ bkx bmQ bnA tnS -hqO +teB dZy hqO -hqO +sIs bxA bvI bwX @@ -77574,9 +82840,9 @@ bGi gXs gXs bLv -dnF +ymi kmx -bSs +bLu bCq dzi bLv @@ -77671,8 +82937,6 @@ aaa aaa aaa aaa -"} -(89,1,1) = {" aaa aaa aaa @@ -77682,6 +82946,8 @@ aaa aaa aaa aaa +"} +(89,1,1) = {" aaa aaa aaa @@ -77787,8 +83053,8 @@ ayG ayG ayG aLm -aMT -aLE +kNo +vVH eAi aPz aPz @@ -77810,8 +83076,8 @@ bZy bnG bnz bpA -rop -nbd +lYB +itv bGd bud bGi @@ -77829,12 +83095,12 @@ kki bKo bxy aaH -aaH -bCq -hSK alT -bLu -bCq +alT +alT +alT +alT +alT jWI bLv aaf @@ -77928,8 +83194,6 @@ aaa aaa aaa aaa -"} -(90,1,1) = {" aaa aaa aaa @@ -77939,6 +83203,8 @@ aaa aaa aaa aaa +"} +(90,1,1) = {" aaa aaa aaa @@ -78044,9 +83310,9 @@ aHj aJa aKc aLP -aMT -aLE -aLE +kNo +vVH +vOC kHP pfj aRV @@ -78072,7 +83338,7 @@ gpu nEm skx bwe -bwd +bwe bwY bwd bwe @@ -78086,12 +83352,12 @@ kVO bKq bxy gXs -gXs -bCq +pRT +gQX bOK -bCq -bCq -bCq +bmY +agm +alT jWI bLv aoV @@ -78185,8 +83451,6 @@ aaa aaa aaa aaa -"} -(91,1,1) = {" aaa aaa aaa @@ -78196,6 +83460,8 @@ aaa aaa aaa aaa +"} +(91,1,1) = {" aaa aaa aaa @@ -78301,9 +83567,9 @@ aHh aIV ayG aLN -aMT -aLE -aLE +kNo +vVH +vOC oCz dFs hPq @@ -78318,7 +83584,7 @@ kWe dTV bnL ujG -ujG +qvY lVV bZy bnI @@ -78344,11 +83610,11 @@ uLs aVA aVA aVA -bCq -bHE -bLv -aaa -bLv +vHN +qsB +aFc +uCC +pRT jWI bLv aoV @@ -78442,8 +83708,6 @@ aaa aaa aaa aaa -"} -(92,1,1) = {" aaa aaa aaa @@ -78453,6 +83717,8 @@ aaa aaa aaa aaa +"} +(92,1,1) = {" aaa aaa aaa @@ -78558,7 +83824,7 @@ bCx aHJ aKA aLN -aMT +kNo aMT xtO aRf @@ -78575,7 +83841,7 @@ kWe aZH beF hHQ -hHQ +fgX iTO bmk rNg @@ -78600,12 +83866,12 @@ tSC pNs lup uKh +uLs +xqL +aCa +ayS +ixa pRT -xID -bHE -bLv -aaf -bLv wbx bCq bCq @@ -78699,8 +83965,6 @@ aaa aaa aaa aaa -"} -(93,1,1) = {" aaa aaa aaa @@ -78710,6 +83974,8 @@ aaa aaa aaa aaa +"} +(93,1,1) = {" aaa aaa aaa @@ -78815,8 +84081,8 @@ aHv aJh aKA aLN -aOz -aLE +mjq +vVH tao kHP nzH @@ -78832,7 +84098,7 @@ kWe beA bqp hHQ -hHQ +fgX bLF jvw aMn @@ -78857,12 +84123,12 @@ vYT vPk rSb lsn -aVA -bHE -bLv -bCq -aaa -bLv +uLs +nsq +rbm +hOS +wmH +pRT jHT bGq bGq @@ -78956,8 +84222,6 @@ aaa aaa aaa aaa -"} -(94,1,1) = {" aaa aaa aaa @@ -78967,6 +84231,8 @@ aaa aaa aaa aaa +"} +(94,1,1) = {" aaa aaa aaa @@ -79032,10 +84298,10 @@ afI lrX csT pFV -jtO +aiX sDu -aej -aKG +muX +qZm akm weO hDu @@ -79045,8 +84311,8 @@ qqq weO ajs akb -akI -akI +woH +wCn amc aiT ant @@ -79072,9 +84338,9 @@ aHL aJi aKB aLT -aOz -aLE -aLE +mjq +vVH +vOC kHP nTU aTL @@ -79099,7 +84365,7 @@ mCb hqz hqz pqP -bwd +bwe byM bAd bBf @@ -79114,12 +84380,12 @@ ktJ dDH ciP odN -aVA +uLs vMY -bLv -aaa -aaa -bCq +wUe +vKq +ayX +alT iBK fGe bYp @@ -79213,8 +84479,6 @@ aaa aaa aaa aaa -"} -(95,1,1) = {" aaa aaa aaa @@ -79224,6 +84488,8 @@ aaa aaa aaa aaa +"} +(95,1,1) = {" aaa aaa aaa @@ -79291,8 +84557,8 @@ lzY lMv opB lTe -aiy -aKG +wDE +aIa dhL bNk agf @@ -79328,8 +84594,8 @@ ayG ayG ayG ayG -aHP -aNc +itd +duw aHP aJw kHP @@ -79338,8 +84604,8 @@ oCz oCz kWe avw -axu qyN +mSf bON vhc kWe @@ -79350,15 +84616,15 @@ bKP bZy jvw bqv -bqv -aLY +qss +oqL qYX -bqv +kPi bqv aJw bwe -bwe -bwe +bwd +bwd bwe bCq bAI @@ -79367,16 +84633,16 @@ aVA aVA aVA aVA -nCn uLs uLs uLs uLs -bOK -bLv -bLv -bLv -bCq +aVA +pRT +azY +pRT +pRT +alT wKY fGe bWB @@ -79470,8 +84736,6 @@ aaa aaa aaa aaa -"} -(96,1,1) = {" aaa aaa aaa @@ -79481,6 +84745,8 @@ aaa aaa aaa aaa +"} +(96,1,1) = {" aaa aaa aaa @@ -79548,9 +84814,9 @@ aai aai aai aai -rAG +gTD aKG -wJr +guN weO xdD wpv @@ -79558,10 +84824,10 @@ mPt oms weO aju -akc -akc -ame +hvl +hsr ame +iTc amM anv akc @@ -79586,21 +84852,21 @@ akL jeu gNs aLI -fnE +etB aki aRh -aJq -aJq -rNg -aJq +aMj +aMj +dhg +aMj wYC ecO -ljK -aJq -wYC +ecO +ecO +ecO fTR ljK -dMb +svg bkS bfo bfo @@ -79615,7 +84881,7 @@ btz bwf vFS btz -bBh +vGD bBh bCr bAK @@ -79625,7 +84891,7 @@ mQk bGq bGq mTZ -kNo +mTZ bGq bGq bGq @@ -79727,8 +84993,6 @@ aaa aaa aaa aaa -"} -(97,1,1) = {" aaa aaa aaa @@ -79738,6 +85002,8 @@ aaa aaa aaa aaa +"} +(97,1,1) = {" aaa aaa aaa @@ -79792,8 +85058,8 @@ gXs gXs gXs bGZ +ala acd -aai xDX gHq sXp @@ -79804,9 +85070,9 @@ rMs acd bTv taa -acd -aej -aKG +gGM +qng +pSA fyS weO tnL @@ -79815,10 +85081,10 @@ iHP oms weO ajt -akc +sYS akJ alr -alq +hTm aiU anu bqu @@ -79842,26 +85108,26 @@ aGg aHx akL apg -fnE -fnE +sUN +tQy aOD -aPe -aJq -aJq -aJq -aJq -bBi -bBi -bBi -bBi -bBi +wap +qUU +qUU +qUU +qUU +eVn +eVn +eVn +eVn +eVn hVK -bBi +eVn jEy beX brB brB -bjx +jxC scx scx aXg @@ -79869,9 +85135,9 @@ scx scx scx scx -dYA +miL muM -scx +bcy bAe aJq bCq @@ -79898,7 +85164,7 @@ bXz bYA bXC bXC -bXC +bWB ccf cdc cdZ @@ -79984,8 +85250,6 @@ aaa aaa aaa aaa -"} -(98,1,1) = {" aaa aaa aaa @@ -79995,6 +85259,8 @@ aaa aaa aaa aaa +"} +(98,1,1) = {" aaa aaa aaa @@ -80049,9 +85315,9 @@ bGZ bGZ bGZ bGZ -ffN -nmS -tgK +kxJ +acd +als gHq bHS nWM @@ -80062,8 +85328,8 @@ sEV tgK tgK jSW -afM -ajB +gHS +fqE mUY aiW aiW @@ -80095,12 +85361,12 @@ lOY lOY lOY lOY -gNs -gNs -gNs -gNs +lOY +lOY +lOY +lOY aLW -aNs +cuP aJq aLX owD @@ -80129,7 +85395,7 @@ aYl aKF oXL aJq -dYA +cRN aJq aJw aaa @@ -80241,8 +85507,6 @@ aaa aaa aaa aaa -"} -(99,1,1) = {" aaa aaa aaa @@ -80252,6 +85516,8 @@ aaa aaa aaa aaa +"} +(99,1,1) = {" aaa aaa aaa @@ -80306,8 +85572,8 @@ bGZ tEV bJO uGn -tgK -vHf +ffN +bKj tgK gHq bHS @@ -80318,7 +85584,7 @@ tgK acd kdb sJr -acd +aai gjR ajB bVY @@ -80327,16 +85593,16 @@ raV ags ail vuj -agj +vad ajv ake -agj -afL -aez +vad +ovn +ovn ahU aiX bLG -aov +qBx gPV air aqY @@ -80347,30 +85613,30 @@ gNs nGv lOY ayK -azE +ayU aBj aBO aDC -ayL +gYi aGo aHN aJj -ayW +ayL aLV -rNg +cyr aOE aJn aJn aJn aJn -qdV +aYk oHe aYk aya aya bbW -bcX -bcX +bbW +bbW aya bjz bjz @@ -80379,16 +85645,16 @@ bkT bjz bjz boX +qAG bqv bqv -bqv -bqv +ehv adS aJw -aJq -scx +aMj +cFF vWP -aJw +cyt aaa ckL ckL @@ -80498,8 +85764,6 @@ aaa aaa aaa aaa -"} -(100,1,1) = {" aaa aaa aaa @@ -80509,6 +85773,8 @@ aaa aaa aaa aaa +"} +(100,1,1) = {" aaa aaa aaa @@ -80568,32 +85834,32 @@ ngg tgK rGs bHa -nWM -nWM +gEZ +dpr liC jdy acd acd acd -acd +aai kMP -ajB +afL njH nsZ agI vjj ahq aho -agj -ajf -ajB +vad +aiZ +agd afK -ajc +afM afM afN aiX bLG -aov +ush gPV uIU arR @@ -80604,21 +85870,21 @@ gNs aUI lOY ayN -azE +ayU aAW -aCa aDB -aDI -azW -azW -azW -ayW +aDB +aDB +cyg +qOI +qOI +aCi aLX -aJq +cJU aOE aJn -aaa -aaa +jvv +jaq aPR aVd eAI @@ -80636,16 +85902,16 @@ bkW bmp bjz bpa -bqy +dAO cBr -bqy +dAO buK -bqy -aJw -aJq -scx -aJq +dAO aJw +aMj +cFF +lMw +cyt aaf ckL bGt @@ -80755,8 +86021,6 @@ aaa aaa aaa aaa -"} -(101,1,1) = {" aaa aaa aaa @@ -80766,6 +86030,8 @@ aaa aaa aaa aaa +"} +(101,1,1) = {" aaa aaa aaa @@ -80832,24 +86098,24 @@ fVX acd qkN esv -acd -aej -ajB +gGM +qng +vYA afD aiW agJ dlp ahp qEi -agj -ajx +vad +aiZ akg -agj -adL -ahr -aih +vad +ovn +ovn +ahU aiX -bLG +wCD pgP yay arT @@ -80861,30 +86127,30 @@ gNs aUI lOY ayM -azE +hSK +lrN +azW azW -xUi azW -aCi -aEZ -aHB aEZ -aBt +aHC +aHC +wiD aJs -aJq +cJU aOE aJn -aaa -aaa +jaq +jaq aPR aVb aWH aYm aya aZq -awC -awC -awC +iYP +iYP +iYP bfp aPk aPk @@ -80899,8 +86165,8 @@ cMD cMD cMD cMD -byN -dYA +aLR +tFS bBj aJw aaa @@ -81012,8 +86278,6 @@ aaa aaa aaa aaa -"} -(102,1,1) = {" aaa aaa aaa @@ -81023,6 +86287,8 @@ aaa aaa aaa aaa +"} +(102,1,1) = {" aaa aaa aaa @@ -81091,23 +86357,23 @@ mtB dNN jxr aem -ajB +vYA bYo aiW agH agL ail aiE -agj -ajf -akp +vad +aiZ +akk agj agj agj aiX aiX anQ -aov +anz apd avu ari @@ -81118,21 +86384,21 @@ gNs aUI lOY ayP -azE +gdz aBo -azE +aEX azE aEX +kXU aGj -aGj -aEZ -vbD +mpF +aCi aJs -aJq +cJU bJx aJn -aaa -aaa +jaq +cPO aPR sXh aWJ @@ -81156,9 +86422,9 @@ btB buM bwi cMD -aMm -scx -aJq +aun +cFF +bzG aCG aCG ckL @@ -81269,8 +86535,6 @@ aaa aaa aaa aaa -"} -(103,1,1) = {" aaa aaa aaa @@ -81280,6 +86544,8 @@ aaa aaa aaa aaa +"} +(103,1,1) = {" aaa aaa aaa @@ -81346,9 +86612,9 @@ xAH acd gDx sJr -acd +aai fEE -ajB +vYA jjn agj agj @@ -81357,7 +86623,7 @@ agj agj agj ajz -akm +akk vad aly amf @@ -81375,21 +86641,21 @@ dqL aUI lOY ayv -azE -azW +hSK +pCL aCb -azW -aCi -aEZ +aCb +aCb +veQ aHC -aEZ -aBt +oYI +uUj aJs -aJq +cJU aOE aJn -aaa -aaa +cPO +azq aPR aVc aWI @@ -81413,9 +86679,9 @@ cuj bsY bue cMD -aMn -scx -aJq +ydi +cFF +bzG aCG bDv bEX @@ -81526,8 +86792,6 @@ aaa aaa aaa aaa -"} -(104,1,1) = {" aaa aaa aaa @@ -81537,6 +86801,8 @@ aaa aaa aaa aaa +"} +(104,1,1) = {" aaa aaa aaa @@ -81589,11 +86855,11 @@ nXv aaa uXI gni -uIa -gni -tgK +etE +jJS +aad vHf -tgK +aad rID geK tgK @@ -81603,24 +86869,24 @@ adG acd acd acd -acd +aai aen -ajB -afH +vYA +mjV agj agM ahu ahW aiD -agj +kXc auj -ajB +wAt akO lUU alx amQ anw -anR +hJN aox apd apd @@ -81632,20 +86898,20 @@ gNs aUI lOY ayQ -azE +hSK aBq qbb -aDE -aFc -azW -azW +qbb +qbb +mov +viA aJf -ayW +aFb aJr -aJq +cJU aOE aJn -aaa +aJn aPR aPR aPR @@ -81670,7 +86936,7 @@ btD buO bwk cMD -aLY +oqL cBw bBk aCG @@ -81707,7 +86973,7 @@ fGe pzA cjb cjb -azF +ufm azF cmG cnt @@ -81783,8 +87049,6 @@ aaa aaa aaa aaa -"} -(105,1,1) = {" aaa aaa aaa @@ -81794,6 +87058,8 @@ aaa aaa aaa aaa +"} +(105,1,1) = {" aaa aaa aaa @@ -81847,37 +87113,37 @@ gXs cbc hfN qiq -gni +vul tgK tgK tgK wrr +bDi tgK tgK -tgK -tgK +aad tgK acd lDH qMU -acd +gGM aeo -ajB +ajx lhi agj agN -aht -ain -aid -agj -aiZ -akk +ahP +ahP +ahP +vUN +ajB +mkv vad alw amg amQ iFz -anR +oEJ fLe dyN fBs @@ -81889,17 +87155,17 @@ aTi awh lOY ayO -azE +hSK aBp aCc aDF -ayL +uPU aGq aHO aJl -ayW -rNg -aJq +ayL +dhg +cJU aOE aJn aaa @@ -81914,10 +87180,10 @@ tvF bbC bbC bqz -awC -awC +vbQ +grO bjE -awC +nHL reR bnQ baK @@ -81928,8 +87194,8 @@ bty cuj cMD byP -dYA -aJq +tFS +bzG aCG bDw bEZ @@ -81941,7 +87207,7 @@ bLy bCq hBd bCq -cCd +bNJ bNJ bKx cKV @@ -81951,7 +87217,7 @@ bHE fGe fTC bOC -bPQ +vbD bQK bPQ bTI @@ -82040,8 +87306,6 @@ aaa aaa aaa aaa -"} -(106,1,1) = {" aaa aaa aaa @@ -82051,6 +87315,8 @@ aaa aaa aaa aaa +"} +(106,1,1) = {" aaa aaa aaa @@ -82111,30 +87377,30 @@ fhg bge wrr tyo -wrr +sQG iaE fhg xwa dFB fhg adJ -aaX -ajB -afH +rtB +vYA +mjV agj ahs ahP ahP aiF -agj -ajB +cdp +afH ajG agj -agj -agj +vad +vad aiX anx -anR +oEJ aov apd apd @@ -82145,18 +87411,18 @@ apd gNs aUI lOY -ayS +aCi azS aCi +ayL aCi -aDI ayL -ayW -ayW -ayW -ayW -aJq -aJq +ayL +aCi +ayL +ayL +aMj +cJU aOE aJn aaa @@ -82167,14 +87433,14 @@ aYJ aYs aZQ bbi +gWN +gWN +gWN +cGe bcd -bcd -bcd -bcd -bcd -bcd -bcd -bcd +kxN +gWN +pwY bms bnS bnS @@ -82185,8 +87451,8 @@ gIa bnS bxG byR -scx -rNg +cFF +fEo aCG bDz bFa @@ -82218,7 +87484,7 @@ cei fGe bAx fGe -cid +aXB cSQ cSX ckG @@ -82297,8 +87563,6 @@ aaa aaa aaa aaa -"} -(107,1,1) = {" aaa aaa aaa @@ -82308,6 +87572,8 @@ aaa aaa aaa aaa +"} +(107,1,1) = {" aaa aaa aaa @@ -82365,18 +87631,18 @@ ujr eHa mta vPZ -bLb +nkS ibu -bLb -bLb -imN +nkS +nkS +bRf bum acd luR sJr -acd +aai aeq -ajB +fjs agj agj ahm @@ -82384,16 +87650,16 @@ ahD aiw aiO agj -ajB -akm -vad +aiZ +mkv +qcN aly -amh +amf amQ anw -anR +oEJ aov -mnZ +poA aob tQk vAv @@ -82401,18 +87667,18 @@ vKX oyX gNs aUI -gNs +lOY ayR azR aBr -azW +aDE afO -azW -agm -aBt -aaa -aJn -aLY +ayL +jvv +azq +aqR +aJw +uKN aLY aOF aPR @@ -82426,7 +87692,7 @@ tYs bbh bcc bdd -awC +uWX bfr bgM uor @@ -82442,8 +87708,8 @@ cMD cMD cMD byQ -scx -aJq +neo +hap aCG bDy aqj @@ -82455,7 +87721,7 @@ bLA bCq mTZ bCq -cCd +bNJ evF bKA cKV @@ -82554,8 +87820,6 @@ aaa aaa aaa aaa -"} -(108,1,1) = {" aaa aaa aaa @@ -82565,6 +87829,8 @@ aaa aaa aaa aaa +"} +(108,1,1) = {" aaa aaa aaa @@ -82625,52 +87891,52 @@ bLb bEi hCD iCq -bLb +nkS gMw gGl acd acd acd -acd +aai qQw -ajB +lon agk agF agP -agP -agP -agP +upX +upX +upX aiz -ajB -ajB +ahr +wAt akR lUU alx amQ mNr -anR +oEJ aov -mnZ -mSf +poA +xmU xmU xmU xmU klg gNs ggo -gNs +lOY ayT xUi -azW -azW -aBt -azW -aio +xUi +xUi aBt -aaa +aCi +dZd +bfm +aqR aJn -aJq -rNg +aMj +cyr aOE aPT aRj @@ -82696,10 +87962,10 @@ aaa gXs aaa aaa -aaa aJn +xPE nNN -scx +aDe byV aCG bAM @@ -82713,7 +87979,7 @@ bCq jly bCq eDx -cCd +bNJ aYg bNJ cCc @@ -82811,8 +88077,6 @@ aaa aaa aaa aaa -"} -(109,1,1) = {" aaa aaa aaa @@ -82822,6 +88086,8 @@ aaa aaa aaa aaa +"} +(109,1,1) = {" aaa aaa aaa @@ -82882,30 +88148,30 @@ bLb kKS bUU aak -bLb +nkS rzc eAR cZm rQd jFq -acd +aai aer afB agi agD -agO -agO -agO +acP +acP +acP agO aiy -ajB -akk +pmZ +mkv vad alw ami amQ anw -anR +oEJ xlt cCi enf @@ -82915,19 +88181,19 @@ atc aug gNs aUI -gNs -azW -ayU -azW +lOY +xrO aCj -ayW -ayW -ayW -ayW +pIg +tsE +aHB +ayL +aqR +aJw aJn aJn -aJq -aJq +aMj +cJU aOE aPS aRi @@ -82953,10 +88219,10 @@ aaa gXs aaa aaa -aaa aJn -aXf -scx +mGF +bSR +aDe byU aCG bAL @@ -82970,8 +88236,8 @@ bCq dDu bCq cjo -cCd -cCd +bNJ +bNJ bNJ cCb bCq @@ -82984,7 +88250,7 @@ pyv cal bOl jIh -bWK +wLN lfn bCq bAx @@ -83068,8 +88334,6 @@ aaa aaa aaa aaa -"} -(110,1,1) = {" aaa aaa aaa @@ -83079,6 +88343,8 @@ aaa aaa aaa aaa +"} +(110,1,1) = {" aaa aaa aaa @@ -83154,17 +88420,17 @@ aIF agn aIF agn -ajc -ajB +rAG +pmZ ako agj -agj -agj +vad +vad aiX any -anR +oEJ aov -mnZ +poA aqb are arZ @@ -83172,15 +88438,15 @@ kNm dtc gNs aUI -gNs -ayX -azY -azW -azW -afP -aFb -aEZ -cyg +lOY +ayL +aCi +aCi +aCi +ayL +ayL +jEm +aJn aJp aKE aMa @@ -83210,11 +88476,11 @@ mzQ mzQ aaa aaa -aaa aJn -aXf -scx -aJq +aKX +bSR +aDe +baX aCG bFa lee @@ -83228,7 +88494,7 @@ qHo bCq cjo bJu -cCd +bNJ cmX bSz bCq @@ -83325,8 +88591,6 @@ aaa aaa aaa aaa -"} -(111,1,1) = {" aaa aaa aaa @@ -83336,6 +88600,8 @@ aaa aaa aaa aaa +"} +(111,1,1) = {" aaa aaa aaa @@ -83407,16 +88673,16 @@ adi dfJ aaZ aeW -agQ +rVc ahv ahQ aiI aiH -ajB -akm +pmZ +mkv vad aly -amj +amf amQ anw bnC @@ -83430,16 +88696,16 @@ mnZ gNs awj gNs +nCn +aDI +usC +str +cid ayW ayW -aBt -aBt -ayW -ayW -ayW -ayW +aJw aJo -aJq +osV aLZ aNv aOE @@ -83470,8 +88736,8 @@ nSr nSr aJw bFb -scx -aPe +rqZ +dWH aCG aCG aCG @@ -83489,7 +88755,7 @@ bKU bNI bNI bCq -bTz +kfH fGe gWH dwR @@ -83582,8 +88848,6 @@ aaa aaa aaa aaa -"} -(112,1,1) = {" aaa aaa aaa @@ -83593,6 +88857,8 @@ aaa aaa aaa aaa +"} +(112,1,1) = {" aaa aaa aaa @@ -83664,19 +88930,19 @@ acL adi aaZ agp -agt -agQ +xgx +fLl ahS aIF -ajc -ajB -ajB +ieP +pmZ +axu akT aww alx amQ anw -anR +oEJ aov apk anw @@ -83693,7 +88959,7 @@ azZ azZ bKC azZ -azZ +vML aHQ aJr aJq @@ -83839,8 +89105,6 @@ aaa aaa aaa aaa -"} -(113,1,1) = {" aaa aaa aaa @@ -83850,6 +89114,8 @@ aaa aaa aaa aaa +"} +(113,1,1) = {" aaa aaa aaa @@ -83922,11 +89188,11 @@ cqG avB ago agS -agQ +ste ahR aiJ -ajc -ajB +ieP +pmZ akk vad alw @@ -83936,23 +89202,23 @@ anw anS aoy apj -iPV -iPV -iPV -iPV -iPV +kgb +kgb +kgb +kgb +kgb iQP -awl -anR -anR -anz -anz -anz -anz -anz -anz -aHP -rNg +ksN +nSi +nSi +aHR +aHR +aHR +aHR +aHR +aHR +aHQ +fIw pDu aMb aNx @@ -83991,27 +89257,27 @@ lGN lGN lGN bpu -bNN -bNN +fsm +fsm fem fem -bNN +fsm bpu -bNN -bNN -bNN -bNN +fsm +fsm +fsm +fsm cBH -bNN -bNN -bNN -bNN -bNN -bNN +fsm +fsm +fsm +fsm +fsm +fsm bQQ -bNN +fsm cbr -bNN +wzP bXk bYq bCq @@ -84096,8 +89362,6 @@ aaa aaa aaa aaa -"} -(114,1,1) = {" aaa aaa aaa @@ -84107,6 +89371,8 @@ aaa aaa aaa aaa +"} +(114,1,1) = {" aaa aaa aaa @@ -84178,12 +89444,12 @@ adQ cwM avB agr -agU -agQ +xxy +sEB ahX aIF -ajc -ajB +ieP +pmZ akq agj agj @@ -84202,13 +89468,13 @@ avk gsj fWv ayZ -vVD aBu +aBu +aBu +aBu +cPe aAa -aAa -aAa -aAa -aHR +aHQ aJt aJq aMe @@ -84238,12 +89504,12 @@ bsc bsf mzQ nPr -aZt +aZU aJw bwh bAh aXf -bzG +aHQ bHP bCp bYI @@ -84265,7 +89531,7 @@ bQg bQg eay bHP -bDG +nCe bHP cbt bVh @@ -84353,8 +89619,6 @@ aaa aaa aaa aaa -"} -(115,1,1) = {" aaa aaa aaa @@ -84364,6 +89628,8 @@ aaa aaa aaa aaa +"} +(115,1,1) = {" aaa aaa aaa @@ -84434,14 +89700,14 @@ coS aet cxA aeY -agt +kLd agU ahz aie aIF -ajc -ajB -akp +aej +pmZ +mkv akU alz aml @@ -84458,14 +89724,14 @@ arP arP awm arP -arP -arP -arP -arP -arP -arP -arP -arP +aMg +aMg +aMg +aMg +aMg +aJy +aJy +aJw aJs aJq aMd @@ -84489,7 +89755,7 @@ fla fla uch gxM -gvK +tsX cwu eJx mzQ @@ -84498,7 +89764,7 @@ nSr nSr aJw cFJ -scx +neo bBr hAw hAw @@ -84610,8 +89876,6 @@ aaa aaa aaa aaa -"} -(116,1,1) = {" aaa aaa aaa @@ -84621,6 +89885,8 @@ aaa aaa aaa aaa +"} +(116,1,1) = {" aaa aaa aaa @@ -84691,20 +89957,20 @@ adj arc blT agq -cxk +hFD agV cxk -cxk +meg aiM iwQ -ajB +pmZ otz vad alB amn amV anw -iQP +noS aoz arP vsa @@ -84714,15 +89980,15 @@ vDJ vDJ vDJ aqi -aqR -aqR +arP +uTA tvh aUy -aqR -uaI -aqR -aqR -aoa +ciq +lzo +aJy +azq +aJn aJu aKF aMf @@ -84752,10 +90018,10 @@ mzQ mzQ aaa aaa -aaa aJn -aJq -scx +mGF +baX +aDe bBu hAw bAT @@ -84788,7 +90054,7 @@ bZe bbw cfH cSL -pXB +fEz pXB ceo bbw @@ -84867,8 +90133,6 @@ aaa aaa aaa aaa -"} -(117,1,1) = {" aaa aaa aaa @@ -84878,6 +90142,8 @@ aaa aaa aaa aaa +"} +(117,1,1) = {" aaa aaa aaa @@ -84954,7 +90220,7 @@ agQ aHp aIF ajc -ajB +pmZ akp agj alA @@ -84978,14 +90244,14 @@ oMT oMT oMT oMT -aqR -arP +bfm +aJw aJn aJn -aJq -aJq +aMj +cJU aOE -aPS +bdy aRq aSC aUa @@ -85004,15 +90270,15 @@ gXs gXs aaa aaa -gXs aaa -gXs aaa +gXs aaa aaa aJn -aJq -scx +aKX +baX +aDe bBt hAw bDH @@ -85042,7 +90308,7 @@ cbu aRa rfr bYO -cfc +xsW cgO ccj cBM @@ -85124,8 +90390,6 @@ aaa aaa aaa aaa -"} -(118,1,1) = {" aaa aaa aaa @@ -85135,6 +90399,8 @@ aaa aaa aaa aaa +"} +(118,1,1) = {" aaa aaa aaa @@ -85207,15 +90473,15 @@ nrF aaZ agu agX -agQ +hae aij agn aje ajB akr akX -akr -akr +pTT +pTT amX ulh iPV @@ -85223,8 +90489,8 @@ aoB arP aqe arP -aqa -atf +lyj +kDG oMT hQK qcV @@ -85236,13 +90502,13 @@ pwd tti oMT aqR -arP -aaa +bfm +cUu aJn -aJq -aJq +aMj +cJU aOE -aPS +bdy aRs aSE aUc @@ -85261,16 +90527,16 @@ nuY gXs gXs aaa -aaa -aaa gXs aaa +gXs aaa aaa aJn -aJq -scx -aXf +eGn +baX +aDe +bSR hAw bDK bFi @@ -85381,8 +90647,6 @@ aaa aaa aaa aaa -"} -(119,1,1) = {" aaa aaa aaa @@ -85392,6 +90656,8 @@ aaa aaa aaa aaa +"} +(119,1,1) = {" aaa aaa aaa @@ -85454,7 +90720,7 @@ aaf aaf oYB wxC -sji +aUj aaZ aaZ aaZ @@ -85468,10 +90734,10 @@ ahE aii agn ajd -ajB +pmZ tuC vad -tuC +aaX gNG vad anz @@ -85480,23 +90746,23 @@ aoz arP aqe arP -apY -rDX +whK +aFf oMT whK -eIS +aFf oMT apY rDX oMT -whK +xMA eIS oMT uaI -arP -aaa +xLr +jvv aJn -aLY +mWK aLY aOG aPR @@ -85505,7 +90771,7 @@ aPR aUb aVq ygw -aYr +odE nuY bbo bif @@ -85525,9 +90791,9 @@ bsh bsh bsh bqH -aJq -scx -aXf +fky +rqZ +oMe hAw bDJ bCt @@ -85556,7 +90822,7 @@ vbM iGL bAo fzd -cfc +xsW cbp dKx cin @@ -85638,8 +90904,6 @@ aaa aaa aaa aaa -"} -(120,1,1) = {" aaa aaa aaa @@ -85649,6 +90913,8 @@ aaa aaa aaa aaa +"} +(120,1,1) = {" aaa aaa aaa @@ -85715,8 +90981,8 @@ hsx aco acO abl -jsh -jsh +wJr +tIh afc afQ agw @@ -85725,7 +90991,7 @@ ahA ahZ sju aiQ -ajB +pmZ akt akW aiG @@ -85741,7 +91007,7 @@ aqn qkM oMT auw -xKf +qkM oMT ayV qkM @@ -85749,8 +91015,8 @@ oMT aCd xKf oMT -aqR -arP +aJw +aJw aJw aJw bAi @@ -85783,7 +91049,7 @@ btd bwr bqH aMm -scx +cFF bBv cBy bDM @@ -85816,7 +91082,7 @@ bZu bbw bbw cfc -cfc +mjo bbw bbw bbw @@ -85895,8 +91161,6 @@ aaa aaa aaa aaa -"} -(121,1,1) = {" aaa aaa aaa @@ -85906,6 +91170,8 @@ aaa aaa aaa aaa +"} +(121,1,1) = {" aaa aaa aaa @@ -85967,9 +91233,9 @@ aaa aaa aaa aaf -sji -jsh -abO +aUj +vHE +kzZ jsh jsh jsh @@ -85982,7 +91248,7 @@ ahf aik cBV ajf -ajB +pmZ aks agj agj @@ -86007,10 +91273,10 @@ oMT aDK oMT aoa -arP -kLd -oeG -aMg +bAr +aJw +aJq +aJq bHt aOE aJn @@ -86038,16 +91304,16 @@ bsi btH btc bwq -bqH -aJq -scx -aXf +cyu +bBi +cFF +xzo hAw cVp cCk cCk bFs -bDO +qPI bJs bKy bKy @@ -86152,8 +91418,6 @@ aaa aaa aaa aaa -"} -(122,1,1) = {" aaa aaa aaa @@ -86163,6 +91427,8 @@ aaa aaa aaa aaa +"} +(122,1,1) = {" aaa aaa aaa @@ -86225,53 +91491,53 @@ aaa aaa aaf wxC -jsh -acq -acq +abO +aih acq acq +aid aew afe afS agy dcB -ahf +qRO aia sju -ajc -ajB -afM +iIK +pmZ +mkv vad edn sIt aiX anA -anz +mTv aoC arP aqe arh asg -atj -aul -auR +kiV +dTN +vVD ykI -aul -aul -atj +asm +kFX +uHt auR aul atj aFe -aul +aHT aHT sPW -aJy -aMj +aJq +aJq oSA oKd aJn -aaa +aJn aPR aPR aPR @@ -86295,9 +91561,9 @@ bsl btK buW bwt -bqH -aLY -uRl +cyu +xzk +fRx bBx hAw apG @@ -86409,8 +91675,6 @@ aaa aaa aaa aaa -"} -(123,1,1) = {" aaa aaa aaa @@ -86420,6 +91684,8 @@ aaa aaa aaa aaa +"} +(123,1,1) = {" aaa aaa aaa @@ -86481,36 +91747,36 @@ aaa aaf aaf aaf -sji -jsh +aUj +vHE acp -acP -acP -acP +jsh +jsh +jsh aev afd sji agx fyg -ahf +qRO aim sju -ajc -ajB -ajB +ieP +pmZ +wAt vHp akz amq aiX qax -anz +xXY pxr arP uLP arP asf -ati -ati +aux +bSn aux eHA axL @@ -86520,16 +91786,16 @@ ati ati ati lHU -ati +hhj aHH aJg aKo aLO -fnE +etB aOE aJn -aaa -aaa +jaq +cPO aPR aVt aXb @@ -86553,8 +91819,8 @@ btJ buV bws bqH -aJq -scx +kjw +cFF byW hAw bAV @@ -86562,7 +91828,7 @@ bzs bzs bzs bzs -jez +bJs nzt cWI nYt @@ -86666,8 +91932,6 @@ aaa aaa aaa aaa -"} -(124,1,1) = {" aaa aaa aaa @@ -86677,6 +91941,8 @@ aaa aaa aaa aaa +"} +(124,1,1) = {" aaa aaa aaa @@ -86745,7 +92011,7 @@ abP abP fKv pKi -pKi +sji pKi agA mDY @@ -86769,24 +92035,24 @@ oMT oMT oMT auU -uQT -uQT -uQT +wzS +qOs +jIa azV gby gby +xUe gby -aFh gby gby gby gby aLR -fnE +etB aOE aJn -aaa -aaa +jvv +jaq aPR sXh aXe @@ -86808,18 +92074,18 @@ bqH bsn btL buY -buY -bqH -aJq -scx -aXf +qdV +cyu +rxJ +cFF +bDG bzs bDP bzs flw bBz bAw -jez +bJs lSQ bPK nYt @@ -86923,8 +92189,6 @@ aaa aaa aaa aaa -"} -(125,1,1) = {" aaa aaa aaa @@ -86934,6 +92198,8 @@ aaa aaa aaa aaa +"} +(125,1,1) = {" aaa aaa aaa @@ -87004,7 +92270,7 @@ qHR qHR aff afT -agz +itk vFj crS pBw @@ -87026,24 +92292,24 @@ aqo fxi oMT auS -axO +iPW awu uQT aAd gby aCm aDL -aFf +aGk aGk aHU aJz gby aLQ -fnE +etB aOE aJn -aaa -aaa +jaq +cPO aPR aVu aXd @@ -87064,11 +92330,11 @@ wtU suy bsm btL +gpt buX -buX -bqH -aJq -scx +cyu +kjw +cFF bBy bzs bDO @@ -87099,7 +92365,7 @@ ccv cdw cex uJc -cfN +alk cfN fWs bTa @@ -87119,9 +92385,9 @@ cjR crW rJT iNT -aaa -aaa -aaa +fFa +fFa +fFa aaa aaa aaa @@ -87180,8 +92446,6 @@ aaa aaa aaa aaa -"} -(126,1,1) = {" aaa aaa aaa @@ -87191,6 +92455,8 @@ aaa aaa aaa aaa +"} +(126,1,1) = {" aaa aaa aaa @@ -87258,12 +92524,12 @@ acs acR ado adN -keU -aff +afk +rVA afV agB ahd -crS +exA clS pBw ajh @@ -87279,10 +92545,10 @@ aoH arP aqe arP -asm +tqd blU atQ -bSn +kIU awp axN dpa @@ -87293,14 +92559,14 @@ aDM aFi aGl xiC -aBy +fbu gby blf -fnE +etB aOE aJn -aaa -aaa +jaq +jaq aPR aVv siG @@ -87321,11 +92587,11 @@ bmD bqK bso nVm -buZ +dBk buZ bqH byN -scx +cFF bBA bCz bDQ @@ -87374,11 +92640,11 @@ hgU xuR ccw crX -cfK -iNT +ahB aaa aaa aaa +fFa aaa aaa aaa @@ -87437,8 +92703,6 @@ aaa aaa aaa aaa -"} -(127,1,1) = {" aaa aaa aaa @@ -87448,6 +92712,8 @@ aaa aaa aaa aaa +"} +(127,1,1) = {" aaa aaa aaa @@ -87515,8 +92781,8 @@ acr acQ adn oTh -qHR -aff +keU +saO hbc pPy ahc @@ -87529,7 +92795,7 @@ aky alc alI amr -amY +tYY amY anV arP @@ -87539,10 +92805,10 @@ arP yaM asu oMT -bSn +jKk avR axM -awu +nTV aAf gby aCn @@ -87552,14 +92818,14 @@ gby gby aBy gby -aMm -fnE +aun +etB aOE aJn aJn aJn aJn -uHK +fnh iiD fnh nuY @@ -87576,14 +92842,14 @@ wtU wtU wtU suy -bqH +cyu btM +cyu +cyu bqH -bqH -bqH -aJq +kjw vSC -aXf +bDG bzs bzs bFm @@ -87626,15 +92892,15 @@ ccw cpa cjc cqo -btN -ccw +pkP +niO cOn -ccw -ccw -cig -iNT -fFa -fFa +niO +niO +niO +niO +aaa +aaa fFa aaa aaa @@ -87642,7 +92908,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -87694,8 +92959,6 @@ aaa aaa aaa aaa -"} -(128,1,1) = {" aaa aaa aaa @@ -87706,6 +92969,9 @@ aaa aaa aaa aaa +"} +(128,1,1) = {" +aaa aaa aaa aaa @@ -87787,7 +93053,7 @@ ajn alH amr amY -amY +tYY anY arP xay @@ -87802,15 +93068,15 @@ axP azb aAi gby -aCn +hIr aDM gby nKT vZE aBy gby -aJq -fnE +aMj +etB aJq aJr aJr @@ -87837,11 +93103,11 @@ btO qGt bva juK -bwu +yac bwu hDB bBB -kLd +uWH bzs kKy bAw @@ -87883,15 +93149,15 @@ ccw ccw cpI ccw -btN +pkP mqt lqO nZi -cig -gXs -gXs -gXs -gXs +bej +wlT +uql +aaa +aaa fFa aaa aaa @@ -87899,7 +93165,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -87951,8 +93216,6 @@ aaa aaa aaa aaa -"} -(129,1,1) = {" aaa aaa aaa @@ -87963,6 +93226,9 @@ aaa aaa aaa aaa +"} +(129,1,1) = {" +aaa aaa aaa aaa @@ -88026,15 +93292,15 @@ aaf abr usx act -ujy +aio ujy ato -qHR +keU afi oNX qey ahe -crS +sxB ais pBw ajl @@ -88043,7 +93309,7 @@ ajn ald alJ amt -ajp +fYG ajp anX arP @@ -88054,7 +93320,7 @@ ask gdU oMT heY -awu +vNf axO aza gby @@ -88068,36 +93334,36 @@ aDN gby aMo aNC -fnE -fnE -mCb -fnE -fnE -fnE -scx -scx -uRl -scx +qLX +qLX +dMb +qLX +qLX +qLX +vtT +vtT +sNv +vtT bco -scx +jTH beo dYA -scx +vtT bwv -scx -scx -scx -scx -scx +vtT +vtT +vtT +vtT +vtT uRl bjx -fnE -fnE -fnE -fnE -fnE +qLX +qLX +qLX +qLX +fav bAj -aXf +bDG rSS bfL bFo @@ -88140,15 +93406,15 @@ cig cpb ciZ cqp -wsx +lmv bfN -lqO -lJo -cig -aaa +hoM +fnw +niO +niO +niO aaa aaa -gXs fFa aaa aaa @@ -88156,7 +93422,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -88208,8 +93473,6 @@ aaa aaa aaa aaa -"} -(130,1,1) = {" aaa aaa aaa @@ -88220,6 +93483,9 @@ aaa aaa aaa aaa +"} +(130,1,1) = {" +aaa aaa aaa aaa @@ -88287,7 +93553,7 @@ acj acn adh adm -afk +kIu afZ agE ahh @@ -88301,7 +93567,7 @@ ajn alH amr amY -amY +tYY cvk arP hjK @@ -88310,7 +93576,7 @@ arP tqd aHw aup -bSn +kHJ jIp jgC aze @@ -88321,39 +93587,39 @@ aDU gby aGn oHV -aBy +fbu gby -aJq -aJq -rNg -aJq +wfC +bzG +fEo +bzG aRt -aJq -aJq -aJq -aJq -rNg -aLY -aJq +bzG +bzG +bzG +bzG +fEo +tDc +bzG bcp -scx +cFF beq -aJq +bzG bgY -aXf -aJq -aJq +bDG +bzG +bzG vOE -aJq -aJq -lII -aJq -aJq +bzG +bzG +svg +bzG +bzG aNs -aJq +bzG bxL stT -aJq +bzG poZ bno bfL @@ -88397,15 +93663,15 @@ cig cig czg cig -wsx +lmv iAF qHB xIq vrB -sRw -fah -aaa -gXs +tGn +nXv +nXv +nXv fFa aaa aaa @@ -88413,63 +93679,6 @@ aaa aaa aaa aaa -gXs -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(131,1,1) = {" -aaa -aaa -aaa aaa aaa aaa @@ -88531,6 +93740,63 @@ aaa aaa aaa aaa +"} +(131,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 @@ -88544,7 +93810,7 @@ hRR hRR hRR qHR -aff +jtO afY afY ahg @@ -88557,7 +93823,7 @@ ajH akn ale amr -amY +tYY amY gNu arP @@ -88568,7 +93834,7 @@ qGj hAt oMT elD -eHA +aFh oUZ azd azX @@ -88578,7 +93844,7 @@ aDT gby gby gby -aBy +fbu gby aCr aCr @@ -88592,9 +93858,9 @@ aJC aQg aJC aJC -aHP +itd vdH -aHP +itd bvk bvk vge @@ -88603,16 +93869,16 @@ bvk fyA fyA fyA -dpr fyA -bRN -bRN -bRN -bRN -bRN -bRN -bRN -bRN +fyA +bNd +bNd +bNd +bNd +bNd +bNd +bNd +bNd bfL pCs uOv @@ -88654,15 +93920,15 @@ cig aaa afp aaa -wsx +lmv kEC kEC kEC -cig -fah -mnU +nzM +aaa +kzm +aaa aaa -gXs fFa aaa aaa @@ -88670,7 +93936,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -88722,8 +93987,6 @@ aaa aaa aaa aaa -"} -(132,1,1) = {" aaa aaa aaa @@ -88734,6 +93997,9 @@ aaa aaa aaa aaa +"} +(132,1,1) = {" +aaa aaa aaa aaa @@ -88806,7 +94072,7 @@ agb agG ahi ahN -aix +pyr pBw ajm ajS @@ -88815,7 +94081,7 @@ trb akA amr amY -amY +tYY lsY arP wXl @@ -88835,7 +94101,7 @@ aDP gby aGp aHX -aBy +fbu gby aMq adq @@ -88848,7 +94114,7 @@ fRs aXi whg baa -aSG +rKe aYV gVZ aYV @@ -88865,7 +94131,7 @@ bqR bNd uuG bwx -lrg +bOq itK qUp nXS @@ -88927,7 +94193,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -88979,8 +94244,6 @@ aaa aaa aaa aaa -"} -(133,1,1) = {" aaa aaa aaa @@ -88991,6 +94254,9 @@ aaa aaa aaa aaa +"} +(133,1,1) = {" +aaa aaa aaa aaa @@ -89105,7 +94371,7 @@ wDn bje wZd aZZ -aSG +tDO aYV gVZ aYV @@ -89122,7 +94388,7 @@ bqO bNd mgO bui -tty +bYX bww iKJ qQr @@ -89184,7 +94450,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -89236,8 +94501,6 @@ aaa aaa aaa aaa -"} -(134,1,1) = {" aaa aaa aaa @@ -89248,6 +94511,9 @@ aaa aaa aaa aaa +"} +(134,1,1) = {" +aaa aaa aaa aaa @@ -89355,7 +94621,7 @@ tGa aLS aLS xYM -aQd +amI aSH aRv aPY @@ -89377,9 +94643,9 @@ nWc bjQ btC bNd -lrg bOq -lrg +bOq +bOq bwE bOr bzH @@ -89441,7 +94707,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -89493,8 +94758,6 @@ aaa aaa aaa aaa -"} -(135,1,1) = {" aaa aaa aaa @@ -89505,6 +94768,9 @@ aaa aaa aaa aaa +"} +(135,1,1) = {" +aaa aaa aaa aaa @@ -89593,10 +94859,10 @@ siY aoI arP arn -asN +oEY aur avy -avy +wFp axS azk aAk @@ -89636,7 +94902,7 @@ fyA bRN uuG bwx -fhF +bOq bwE mKQ jEF @@ -89698,7 +94964,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -89750,8 +95015,6 @@ aaa aaa aaa aaa -"} -(136,1,1) = {" aaa aaa aaa @@ -89762,6 +95025,9 @@ aaa aaa aaa aaa +"} +(136,1,1) = {" +aaa aaa aaa aaa @@ -89850,7 +95116,7 @@ apx arP arP asr -asN +oEY aut avz aXF @@ -89894,7 +95160,7 @@ bNd bBL bvw bYX -bwE +bjq bzH mxR pAR @@ -89944,9 +95210,9 @@ gXs aaa aaa gXs -hZk +gXs inG -hZk +gXs gXs fFa aaa @@ -89955,7 +95221,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -90007,8 +95272,6 @@ aaa aaa aaa aaa -"} -(137,1,1) = {" aaa aaa aaa @@ -90019,6 +95282,9 @@ aaa aaa aaa aaa +"} +(137,1,1) = {" +aaa aaa aaa aaa @@ -90107,10 +95373,10 @@ apw aqp arP asq -asN +oEY aut fUH -avz +qYM axU azm aAm @@ -90150,7 +95416,7 @@ bqU bNd bNd bNd -fhF +bNd bjq sZs bfL @@ -90212,7 +95478,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -90264,8 +95529,6 @@ aaa aaa aaa aaa -"} -(138,1,1) = {" aaa aaa aaa @@ -90276,6 +95539,9 @@ aaa aaa aaa aaa +"} +(138,1,1) = {" +aaa aaa aaa aaa @@ -90364,10 +95630,10 @@ apy aqq arP ast -asN +oEY auv avA -avA +qFY axW vZV aAp @@ -90469,7 +95735,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -90521,8 +95786,6 @@ aaa aaa aaa aaa -"} -(139,1,1) = {" aaa aaa aaa @@ -90533,6 +95796,9 @@ aaa aaa aaa aaa +"} +(139,1,1) = {" +aaa aaa aaa aaa @@ -90726,7 +95992,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -90778,8 +96043,6 @@ aaa aaa aaa aaa -"} -(140,1,1) = {" aaa aaa aaa @@ -90790,6 +96053,9 @@ aaa aaa aaa aaa +"} +(140,1,1) = {" +aaa aaa aaa aaa @@ -90876,7 +96142,7 @@ aag aaa aaa aaf -arj +aaf arj aua gUM @@ -90972,9 +96238,9 @@ aaa aaa aaa gXs -hZk +gXs inG -hZk +gXs gXs fFa aaa @@ -90983,7 +96249,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -91035,8 +96300,6 @@ aaa aaa aaa aaa -"} -(141,1,1) = {" aaa aaa aaa @@ -91047,6 +96310,9 @@ aaa aaa aaa aaa +"} +(141,1,1) = {" +aaa aaa aaa aaa @@ -91161,7 +96427,7 @@ acN jRv czA bae -aSG +fMH aYV gVZ bet @@ -91240,7 +96506,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -91292,8 +96557,6 @@ aaa aaa aaa aaa -"} -(142,1,1) = {" aaa aaa aaa @@ -91304,6 +96567,9 @@ aaa aaa aaa aaa +"} +(142,1,1) = {" +aaa aaa aaa aaa @@ -91497,7 +96763,6 @@ aaa aaa aaa aaa -gXs aaa aaa aaa @@ -91549,8 +96814,6 @@ aaa aaa aaa aaa -"} -(143,1,1) = {" aaa aaa aaa @@ -91561,6 +96824,9 @@ aaa aaa aaa aaa +"} +(143,1,1) = {" +aaa aaa aaa aaa @@ -91700,7 +96966,7 @@ bfL bfL tce bfL -gGM +bfL bzs cyh gMV @@ -91776,7 +97042,7 @@ aaa aaa aaa aaa -gXs +aaa dKM aaa aaa @@ -91806,8 +97072,6 @@ aaa aaa aaa aaa -"} -(144,1,1) = {" aaa aaa aaa @@ -91817,6 +97081,8 @@ aaa aaa aaa aaa +"} +(144,1,1) = {" aaa aaa aaa @@ -91958,7 +97224,7 @@ cTO gSZ knt wqu -bKy +bzs tYM bzs bzs @@ -92035,7 +97301,6 @@ nBt nBt eRc eRc -dno aaa aaa aaa @@ -92063,8 +97328,6 @@ aaa aaa aaa aaa -"} -(145,1,1) = {" aaa aaa aaa @@ -92075,6 +97338,9 @@ aaa aaa aaa aaa +"} +(145,1,1) = {" +aaa aaa aaa aaa @@ -92238,7 +97504,7 @@ bPn bzs bzs bzs -cNW +cfj cfj cdq pZL @@ -92296,7 +97562,6 @@ eRc eRc eRc eRc -gXs aaa aaa aaa @@ -92320,8 +97585,6 @@ aaa aaa aaa aaa -"} -(146,1,1) = {" aaa aaa aaa @@ -92332,6 +97595,9 @@ aaa aaa aaa aaa +"} +(146,1,1) = {" +aaa aaa aaa aaa @@ -92459,7 +97725,7 @@ pJG xKR jAY mZN -bpx +azy ozH kjW hDN @@ -92495,7 +97761,7 @@ bXZ bzs hfv kvr -cNW +cfj aku gos cjr @@ -92554,7 +97820,6 @@ eRc eRc eRc eRc -gXs aaa aaa aaa @@ -92577,8 +97842,6 @@ aaa aaa aaa aaa -"} -(147,1,1) = {" aaa aaa aaa @@ -92589,6 +97852,9 @@ aaa aaa aaa aaa +"} +(147,1,1) = {" +aaa aaa aaa aaa @@ -92706,7 +97972,7 @@ gwD bbz aYV gVZ -aYV +bdb biJ bhj biw @@ -92811,7 +98077,6 @@ pKJ rBe eRc eRc -gXs aaa aaa aaa @@ -92834,8 +98099,6 @@ aaa aaa aaa aaa -"} -(148,1,1) = {" aaa aaa aaa @@ -92846,6 +98109,9 @@ aaa aaa aaa aaa +"} +(148,1,1) = {" +aaa aaa aaa aaa @@ -92963,7 +98229,7 @@ eWv bbz fcF gVZ -aYV +bdb biJ bhj biy @@ -93009,7 +98275,7 @@ bzs ccF bDO ceE -cNW +cfj cfZ dcv cld @@ -93091,8 +98357,6 @@ aaa aaa aaa aaa -"} -(149,1,1) = {" aaa aaa aaa @@ -93102,6 +98366,8 @@ aaa aaa aaa aaa +"} +(149,1,1) = {" aaa aaa aaa @@ -93220,7 +98486,7 @@ baj bbz aYV gVZ -bhl +lII jIT pTY qou @@ -93246,7 +98512,7 @@ lFX bzm gje bST -hPl +bSo toL ctx nmM @@ -93348,8 +98614,6 @@ aaa aaa aaa aaa -"} -(150,1,1) = {" aaa aaa aaa @@ -93359,6 +98623,8 @@ aaa aaa aaa aaa +"} +(150,1,1) = {" aaa aaa aaa @@ -93477,7 +98743,7 @@ tXW nVp aYV gVZ -aYV +bdb bfK bhn bin @@ -93508,7 +98774,7 @@ fyv omH bCV biB -bCV +bRe jOX mHf tlh @@ -93523,7 +98789,7 @@ qPI qPI cbL kOV -cNW +cfj akE nKm ydU @@ -93605,8 +98871,6 @@ aaa aaa aaa aaa -"} -(151,1,1) = {" aaa aaa aaa @@ -93616,6 +98880,8 @@ aaa aaa aaa aaa +"} +(151,1,1) = {" aaa aaa aaa @@ -93744,7 +99010,7 @@ bfK bIi soH bmV -hzh +beL kix bOp lSz @@ -93754,7 +99020,7 @@ jva nuO rZU lKn -hzh +beL kbq dBu bye @@ -93780,7 +99046,7 @@ bzs ccG cdH ceF -cNW +cfj cga chm akD @@ -93862,8 +99128,6 @@ aaa aaa aaa aaa -"} -(152,1,1) = {" aaa aaa aaa @@ -93873,6 +99137,8 @@ aaa aaa aaa aaa +"} +(152,1,1) = {" aaa aaa aaa @@ -93960,8 +99226,8 @@ aaa aaa aaa aaa -arj -arj +aaa +gXs arj wqt eyt @@ -94011,7 +99277,7 @@ bRP nLA nJc hvP -hzh +bey ugl jTD iPi @@ -94023,7 +99289,7 @@ pxf gbT gba kYL -hPl +bPT uLH bye bVa @@ -94119,8 +99385,6 @@ aaa aaa aaa aaa -"} -(153,1,1) = {" aaa aaa aaa @@ -94130,6 +99394,8 @@ aaa aaa aaa aaa +"} +(153,1,1) = {" aaa aaa aaa @@ -94232,8 +99498,8 @@ gJw ayf yiT lHT -aJK -aKV +alP +aum rlx aNO aOT @@ -94353,7 +99619,6 @@ tEv rBe eRc eRc -dno aaa aaa aaa @@ -94376,8 +99641,6 @@ aaa aaa aaa aaa -"} -(154,1,1) = {" aaa aaa aaa @@ -94388,6 +99651,9 @@ aaa aaa aaa aaa +"} +(154,1,1) = {" +aaa aaa aaa aaa @@ -94489,9 +99755,9 @@ aDX alP abE aQE -alP -aIp -aum +aJK +aKV +umk kUv fzq bya @@ -94505,7 +99771,7 @@ aum bbz aYV gVZ -bey +bdb bfK bfK bfK @@ -94610,7 +99876,6 @@ eRc eRc eRc eRc -dno aaa aaa aaa @@ -94633,8 +99898,6 @@ aaa aaa aaa aaa -"} -(155,1,1) = {" aaa aaa aaa @@ -94645,6 +99908,9 @@ aaa aaa aaa aaa +"} +(155,1,1) = {" +aaa aaa aaa aaa @@ -94747,7 +100013,7 @@ cVb sAQ aIk alP -aKX +aIp aIp aIp aIp @@ -94866,7 +100132,6 @@ eRc eRc eRc eRc -dno aaa aaa aaa @@ -94890,8 +100155,6 @@ aaa aaa aaa aaa -"} -(156,1,1) = {" aaa aaa aaa @@ -94902,6 +100165,9 @@ aaa aaa aaa aaa +"} +(156,1,1) = {" +aaa aaa aaa aaa @@ -95008,12 +100274,12 @@ aKH aMI aIp aOV -aOX -aOX +bFt +aUk aSR aUi aVJ -aOX +aUk aYP bal bam @@ -95119,7 +100385,6 @@ nBt nBt eRc eRc -dno aaa aaa aaa @@ -95147,8 +100412,6 @@ aaa aaa aaa aaa -"} -(157,1,1) = {" aaa aaa aaa @@ -95159,6 +100422,9 @@ aaa aaa aaa aaa +"} +(157,1,1) = {" +aaa aaa aaa aaa @@ -95271,7 +100537,7 @@ fiM vhj qHD qHD -gBt +hQQ gBt nCW hPG @@ -95374,7 +100640,7 @@ aaa aaa aaa aaa -gXs +aaa dBf aaa aaa @@ -95404,8 +100670,6 @@ aaa aaa aaa aaa -"} -(158,1,1) = {" aaa aaa aaa @@ -95415,6 +100679,8 @@ aaa aaa aaa aaa +"} +(158,1,1) = {" aaa aaa aaa @@ -95523,13 +100789,13 @@ aMy aIp nyF aQm +aUk aRJ -aRJ -aRJ +aUk aVK -aRJ -aRJ -aRJ +jMV +aYQ +whx bbB aYV gVZ @@ -95580,7 +100846,7 @@ tdc ccM bXd cko -pDt +dvv cko cko qjz @@ -95661,8 +100927,6 @@ aaa aaa aaa aaa -"} -(159,1,1) = {" aaa aaa aaa @@ -95672,6 +100936,8 @@ aaa aaa aaa aaa +"} +(159,1,1) = {" aaa aaa aaa @@ -95780,15 +101046,15 @@ aMt aIp aOW aQm -aRJ +aUk aSS -aUj +aUk hAy -aRJ +jMV aYQ cBg bam -aYV +amh gVZ aYV pXz @@ -95918,8 +101184,6 @@ aaa aaa aaa aaa -"} -(160,1,1) = {" aaa aaa aaa @@ -95929,6 +101193,8 @@ aaa aaa aaa aaa +"} +(160,1,1) = {" aaa aaa aaa @@ -96035,17 +101301,17 @@ alP anM aMA aIp -buT -aQm -aRJ +pRp +eZF +jMV aST aUk hAy -aRJ +jMV aYQ bam -aYV -aYV +lrg +alv gVZ aYV kjH @@ -96095,9 +101361,9 @@ bHd cNW cNW uqU -uDA -cmn -cmn +nQn +nvx +szW cNW cdV cOe @@ -96175,8 +101441,6 @@ aaa aaa aaa aaa -"} -(161,1,1) = {" aaa aaa aaa @@ -96186,6 +101450,8 @@ aaa aaa aaa aaa +"} +(161,1,1) = {" aaa aaa aaa @@ -96293,15 +101559,15 @@ anW aMz aNQ buT -aQm -aRJ -aRJ -aRJ +eZF +jMV +dib +jMV hAy -aRJ +jMV aYR ban -aYV +amS dzp gVZ bez @@ -96350,11 +101616,11 @@ bFr ccM cdN cNW -cli -uqU -uDA -cmo cOe +uqU +xbf +dra +kxV cNW ccV cac @@ -96432,8 +101698,6 @@ aaa aaa aaa aaa -"} -(162,1,1) = {" aaa aaa aaa @@ -96443,6 +101707,8 @@ aaa aaa aaa aaa +"} +(162,1,1) = {" aaa aaa aaa @@ -96556,9 +101822,9 @@ rRU dmr dmr aXo -aRJ +gAX bap -aYV +amS aYV gVZ beB @@ -96596,7 +101862,7 @@ bRR qMq qMq qMq -qMq +vro qMq qMq qMq @@ -96689,8 +101955,6 @@ aaa aaa aaa aaa -"} -(163,1,1) = {" aaa aaa aaa @@ -96700,6 +101964,8 @@ aaa aaa aaa aaa +"} +(163,1,1) = {" aaa aaa aaa @@ -96807,16 +102073,16 @@ aLd aMN aNQ aOZ +iYw aOX -aOX -aOX +rMt aUz aVM -aOX +mYi aYT bam -aYV -aYV +amP +amh bcb aZc cTJ @@ -96946,8 +102212,6 @@ aaa aaa aaa aaa -"} -(164,1,1) = {" aaa aaa aaa @@ -96957,6 +102221,8 @@ aaa aaa aaa aaa +"} +(164,1,1) = {" aaa aaa aaa @@ -97203,8 +102469,6 @@ aaa aaa aaa aaa -"} -(165,1,1) = {" aaa aaa aaa @@ -97214,6 +102478,8 @@ aaa aaa aaa aaa +"} +(165,1,1) = {" aaa aaa aaa @@ -97328,8 +102594,8 @@ lTx aUx aVL aXR -aZc -aZc +oeG +oeG aZc bcj aYV @@ -97460,8 +102726,6 @@ aaa aaa aaa aaa -"} -(166,1,1) = {" aaa aaa aaa @@ -97471,6 +102735,8 @@ aaa aaa aaa aaa +"} +(166,1,1) = {" aaa aaa aaa @@ -97584,11 +102850,11 @@ alP alP alP aVO -aYV +fOA aYV aYV fcF -kXf +aXq bfU bhu cHG @@ -97601,7 +102867,7 @@ boE bsQ bsQ box -boz +gBJ buU byf bzu @@ -97612,7 +102878,7 @@ bEm bEm bEm bEm -bEm +wiR bIx bJJ bKY @@ -97717,8 +102983,6 @@ aaa aaa aaa aaa -"} -(167,1,1) = {" aaa aaa aaa @@ -97728,6 +102992,8 @@ aaa aaa aaa aaa +"} +(167,1,1) = {" aaa aaa aaa @@ -97841,11 +103107,11 @@ gzX aUB aFu khg -tHO +vWl bar bar tHO -kXf +aXq bfU bhu cHH @@ -97974,8 +103240,6 @@ aaa aaa aaa aaa -"} -(168,1,1) = {" aaa aaa aaa @@ -97985,6 +103249,8 @@ aaa aaa aaa aaa +"} +(168,1,1) = {" aaa aaa aaa @@ -98102,7 +103368,7 @@ aXT aFu aFu bcv -kXf +aXq bfU bhu cHH @@ -98231,8 +103497,6 @@ aaa aaa aaa aaa -"} -(169,1,1) = {" aaa aaa aaa @@ -98242,6 +103506,8 @@ aaa aaa aaa aaa +"} +(169,1,1) = {" aaa aaa aaa @@ -98488,8 +103754,6 @@ aaa aaa aaa aaa -"} -(170,1,1) = {" aaa aaa aaa @@ -98499,6 +103763,8 @@ aaa aaa aaa aaa +"} +(170,1,1) = {" aaa aaa aaa @@ -98616,8 +103882,8 @@ bsu bau aFu aYV -kXf -aYV +aXq +beE bfV cHK blA @@ -98640,7 +103906,7 @@ bEm bEm bEm bEm -bEm +wiR bIx bJJ bLc @@ -98649,7 +103915,7 @@ dJd vvx bPD bQM -ueE +jgM oUU jUW ueE @@ -98745,8 +104011,6 @@ aaa aaa aaa aaa -"} -(171,1,1) = {" aaa aaa aaa @@ -98756,6 +104020,8 @@ aaa aaa aaa aaa +"} +(171,1,1) = {" aaa aaa aaa @@ -98874,11 +104140,11 @@ bat bbD aYV aXq -beE -bfV +aYV +hXI bhv biK -blz +fMy blz bly bos @@ -98907,7 +104173,7 @@ bIQ bPC bQL cBG -bTc +ccP ccP ccP ccP @@ -99002,8 +104268,6 @@ aaa aaa aaa aaa -"} -(172,1,1) = {" aaa aaa aaa @@ -99013,6 +104277,8 @@ aaa aaa aaa aaa +"} +(172,1,1) = {" aaa aaa aaa @@ -99130,18 +104396,18 @@ goB aVQ aFu aYV -kXf -bds -bfV +aXq +aYV +hXI bhx -biL -biL +uqH +jvE cHO flN vFr cHV bsA -dbg +rCb box bWr bvc @@ -99163,9 +104429,9 @@ iuj pdT pdT bQN -bMk -pdT -pdT +hzx +hzx +hzx bVk pdT pdT @@ -99259,8 +104525,6 @@ aaa aaa aaa aaa -"} -(173,1,1) = {" aaa aaa aaa @@ -99270,6 +104534,8 @@ aaa aaa aaa aaa +"} +(173,1,1) = {" aaa aaa aaa @@ -99389,7 +104655,7 @@ bbD aYV aXq aYV -bfV +hXI ada cHM biL @@ -99422,7 +104688,7 @@ bPE bLe oVV bWm -bUg +puq sZy fpR bUg @@ -99516,8 +104782,6 @@ aaa aaa aaa aaa -"} -(174,1,1) = {" aaa aaa aaa @@ -99527,6 +104791,8 @@ aaa aaa aaa aaa +"} +(174,1,1) = {" aaa aaa aaa @@ -99644,12 +104910,12 @@ goB bax aFu aYV -kXf -fsm +aXq +bds bfV bfV biO -biL +mDS cHP cHR bou @@ -99676,7 +104942,7 @@ bMi pnj sYF bPH -bJN +bMr dnY bWn bXg @@ -99773,6 +105039,15 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (175,1,1) = {" aaa @@ -99857,15 +105132,6 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa aaf aaf alO @@ -99901,12 +105167,12 @@ sjK aUD bbD aYV -kXf +aXq aYV bfW bhy biN -biL +nEw bni blM bou @@ -99933,11 +105199,11 @@ bMi trw sYF bPG -bJN -bEm -bEm -xYx -bEm +bMr +qFX +bTc +pPV +cQQ bEm xYx bEm @@ -100030,8 +105296,6 @@ aaa aaa aaa aaa -"} -(176,1,1) = {" aaa aaa aaa @@ -100041,6 +105305,8 @@ aaa aaa aaa aaa +"} +(176,1,1) = {" aaa aaa aaa @@ -100158,18 +105424,18 @@ goB aVQ aFu aYV -kXf +aXq aYV -bfX +rDN bhz biQ -biL +nEw blC -bou +bVs cHT -bou +bVs cId -dbg +xyT bsw bth bxe @@ -100190,11 +105456,11 @@ bMi trw sYF bPJ -bJN -bEm -nav -fep -bEm +bMr +hDT +nYo +upE +cQQ bEm fep bEm @@ -100287,8 +105553,6 @@ aaa aaa aaa aaa -"} -(177,1,1) = {" aaa aaa aaa @@ -100298,6 +105562,8 @@ aaa aaa aaa aaa +"} +(177,1,1) = {" aaa aaa aaa @@ -100415,9 +105681,9 @@ goB aZd aFu aYV -kXf +aXq aYV -bfX +rDN bhy biP bko @@ -100448,10 +105714,10 @@ lFa vfN bPJ bJN -bEm -jQV -fep -bEm +hpc +cgn +nGg +cQQ bEm fep bEm @@ -100544,8 +105810,6 @@ aaa aaa aaa aaa -"} -(178,1,1) = {" aaa aaa aaa @@ -100555,6 +105819,12 @@ aaa aaa aaa aaa +"} +(178,1,1) = {" +aaa +aaa +aaa +aaa aaa aaa aaa @@ -100630,23 +105900,19 @@ aaa aaa aaa aaa -aaf -aaf -aaf -aaf alP alP alP alP alP -anf -anf -anf -anf -anf -anf -aty -anf +aeP +aeP +aeP +aeP +aeP +aeP +dpS +aeP dGr anf asA @@ -100672,9 +105938,9 @@ cJd aoJ aoJ bcs -kXf +aXq aYV -bfX +rzz bfV bfV bfV @@ -100801,8 +106067,6 @@ aaa aaa aaa aaa -"} -(179,1,1) = {" aaa aaa aaa @@ -100812,6 +106076,8 @@ aaa aaa aaa aaa +"} +(179,1,1) = {" aaa aaa aaa @@ -100893,10 +106159,10 @@ aaa aaa alO amx -anf -anf -anf -tut +aeP +aeP +aeP +qrW alP alP alP @@ -100916,20 +106182,20 @@ aHg aIA aJT wqx -aII +dno aqf -aUJ -aUJ +jat +adL aRR vBP aUG -aUJ +adL kLM xOq lHy aoJ bcx -kXf +aXq aYV bfY bhA @@ -100937,7 +106203,7 @@ biR bkq bjZ bvx -boz +pcy boM bzE bsX @@ -101058,8 +106324,6 @@ aaa aaa aaa aaa -"} -(180,1,1) = {" aaa aaa aaa @@ -101069,6 +106333,8 @@ aaa aaa aaa aaa +"} +(180,1,1) = {" aaa aaa aaa @@ -101175,15 +106441,15 @@ aJW aJW aII aNW +aQu aPl cpd -aPl aTg acH -aTg -kLM +pNA +gOm xOq -aUJ +pVt upN aYV fTb @@ -101315,8 +106581,6 @@ aaa aaa aaa aaa -"} -(181,1,1) = {" aaa aaa aaa @@ -101326,6 +106590,9 @@ aaa aaa aaa aaa +"} +(181,1,1) = {" +aaa aaa aaa aaa @@ -101403,12 +106670,11 @@ aaa aaa aaa aaa -aaf -aaf -aaf -aaf -aaf -aaf +aaa +aaa +aaa +aaa +gXs alP bIL alP @@ -101432,18 +106698,18 @@ aJV aqf aFz aqf -lDM +aUJ +pIz aQu -lDM -aTf +ain aUH aTf kLM xOq -baA +kXC upN aYV -kXf +aXq aYV bfZ bhA @@ -101453,7 +106719,7 @@ blH bvx boy yiW -bBD +fLU dCN bBD bvf @@ -101572,8 +106838,6 @@ aaa aaa aaa aaa -"} -(182,1,1) = {" aaa aaa aaa @@ -101583,6 +106847,8 @@ aaa aaa aaa aaa +"} +(182,1,1) = {" aaa aaa aaa @@ -101689,7 +106955,7 @@ aID aqf aMM aTe -aUJ +oUE lqJ kLM kLM @@ -101697,10 +106963,10 @@ xYu kLM kLM xOq -kLM +qXo upN aYV -kXf +aXq tdb bga bgc @@ -101708,8 +106974,8 @@ bgc bgc bgc bgc -boB -boB +bgc +bCl boB bxd bWr @@ -101726,7 +106992,7 @@ bEz bFS bJT bLh -bMs +bvx bMs bMs bMs @@ -101829,8 +107095,6 @@ aaa aaa aaa aaa -"} -(183,1,1) = {" aaa aaa aaa @@ -101840,6 +107104,8 @@ aaa aaa aaa aaa +"} +(183,1,1) = {" aaa aaa aaa @@ -101937,7 +107203,7 @@ avN avN aAz asB -aUJ +bED aEh aEh nud @@ -101946,7 +107212,7 @@ tXF aTe aTe aTe -aUJ +ijU aQw pyW kLM @@ -101954,10 +107220,10 @@ kLM kLM kLM xOq -kLM +qXo upN bhl -kXf +aXq fZA bOG bhC @@ -101967,7 +107233,7 @@ blI pOZ dgS bzM -boB +bCl bxd bWr wkN @@ -101976,13 +107242,13 @@ cbV xEM cgp lQm -lLp -bCf +akY +dvO bxP aDH sdP bxP -bCf +dvO gXs gXs gXs @@ -102086,8 +107352,6 @@ aaa aaa aaa aaa -"} -(184,1,1) = {" aaa aaa aaa @@ -102097,6 +107361,8 @@ aaa aaa aaa aaa +"} +(184,1,1) = {" aaa aaa aaa @@ -102195,27 +107461,27 @@ azw aEn asB sDF -aUJ -aUJ -aUJ -aUJ +bED +bED +bED +bED kXs kul wTy +aht aUJ -aPl +dPj cpd -aPl svk -acH -aTg +agz +pNA kLM xOq baA upN aYV -kXf -rDN +aXq +bfX pAZ bhD biV @@ -102233,13 +107499,13 @@ tgl qeQ ptw ubw -lLp +akY bxj bCh dXD ent evL -bCf +dvO oUq bMu bMu @@ -102343,8 +107609,6 @@ aaa aaa aaa aaa -"} -(185,1,1) = {" aaa aaa aaa @@ -102354,6 +107618,8 @@ aaa aaa aaa aaa +"} +(185,1,1) = {" aaa aaa aaa @@ -102438,7 +107704,7 @@ aaa aaf aaf alP -yjd +uJu alP alP alP @@ -102451,24 +107717,24 @@ avN add iBZ asB -aUJ -aUJ -aUJ -aUJ -aUJ -aUJ -aUJ -aUJ -aUJ +bED +bED +bED +bED +bED +bED +bED +bED +aht +cpd lDM aQu -lDM -aTf +wsJ jiV aTf -kLM -xOq -aUJ +rPx +sxt +dTe upN aYV bdv @@ -102490,7 +107756,7 @@ nWA qbW vdl uCO -lLp +akY bxi tKG bzL @@ -102600,8 +107866,6 @@ aaa aaa aaa aaa -"} -(186,1,1) = {" aaa aaa aaa @@ -102611,6 +107875,9 @@ aaa aaa aaa aaa +"} +(186,1,1) = {" +aaa aaa aaa aaa @@ -102687,7 +107954,6 @@ aaa aaa aaa aaa -aae aaa aaa aaa @@ -102711,17 +107977,17 @@ asB aoJ aeg lMo -aPl -cpd -aPl -cpd +bED +bED +bED +bED aoJ lwj aoJ aAB aoJ wxS -aUJ +aQu pyI kLM rvo @@ -102740,14 +108006,14 @@ bnk bpo rKc bvg -gCG +fhF lLp bwR flc pSN bCk bUq -lLp +akY bxl byp bzL @@ -102857,8 +108123,6 @@ aaa aaa aaa aaa -"} -(187,1,1) = {" aaa aaa aaa @@ -102868,6 +108132,8 @@ aaa aaa aaa aaa +"} +(187,1,1) = {" aaa aaa aaa @@ -102969,10 +108235,10 @@ aoJ aEm aoJ gIW -bVs gIW -bVs -aoJ +gIW +bED +psL aNY wRL aQA @@ -102984,7 +108250,7 @@ aWe aIE aoJ aoJ -bcy +beG bdw beG bgc @@ -103004,7 +108270,7 @@ gnX epI jHW bUn -lLp +akY cBu tRy bzL @@ -103114,8 +108380,6 @@ aaa aaa aaa aaa -"} -(188,1,1) = {" aaa aaa aaa @@ -103125,6 +108389,8 @@ aaa aaa aaa aaa +"} +(188,1,1) = {" aaa aaa aaa @@ -103232,7 +108498,7 @@ ukv aoJ aoJ aoJ -bED +aoJ aoJ abx acc @@ -103242,7 +108508,7 @@ aZe jRR emK mvb -bdy +tAW beI bgc bhF @@ -103252,8 +108518,8 @@ bki bma gNQ nGP -boB -bWr +bCl +bvE gCG lLp mJd @@ -103261,7 +108527,7 @@ lcg ccz pKm eja -lLp +akY bxm byu bzN @@ -103371,8 +108637,6 @@ aaa aaa aaa aaa -"} -(189,1,1) = {" aaa aaa aaa @@ -103382,6 +108646,8 @@ aaa aaa aaa aaa +"} +(189,1,1) = {" aaa aaa aaa @@ -103492,13 +108758,13 @@ bzT boK sdY tkL -uBL -uBL -uBL -eGn -aUN +xVj +xVj aUN +aTm aUN +xVj +xVj vZD aPr bgc @@ -103628,8 +108894,6 @@ aaa aaa aaa aaa -"} -(190,1,1) = {" aaa aaa aaa @@ -103639,6 +108903,8 @@ aaa aaa aaa aaa +"} +(190,1,1) = {" aaa aaa aaa @@ -103754,7 +109020,7 @@ aZl aPq aef xWB -baE +rBD aZl tAW aTm @@ -103885,8 +109151,6 @@ aaa aaa aaa aaa -"} -(191,1,1) = {" aaa aaa aaa @@ -103896,6 +109160,8 @@ aaa aaa aaa aaa +"} +(191,1,1) = {" aaa aaa aaa @@ -104011,7 +109277,7 @@ erl aPq bja xWB -baE +rBD erl tLf aPr @@ -104142,8 +109408,6 @@ aaa aaa aaa aaa -"} -(192,1,1) = {" aaa aaa aaa @@ -104153,6 +109417,8 @@ aaa aaa aaa aaa +"} +(192,1,1) = {" aaa aaa aaa @@ -104264,7 +109530,7 @@ jaD rrY ryf oBl -sMS +oop czO iyA xWB @@ -104286,7 +109552,7 @@ wEE wEE wEE toZ -jMV +bys vQv rWb fLX @@ -104399,8 +109665,6 @@ aaa aaa aaa aaa -"} -(193,1,1) = {" aaa aaa aaa @@ -104410,6 +109674,8 @@ aaa aaa aaa aaa +"} +(193,1,1) = {" aaa aaa aaa @@ -104520,13 +109786,13 @@ aPr bSc mbQ ryf -baE -erl +oop +sMS aPq fUC xWB -baE -aZl +iPs +oop bdz xQZ bgf @@ -104540,7 +109806,7 @@ hVn brz wJU wEE -bur +mBP ifv sLm bnp @@ -104553,7 +109819,7 @@ dvO bGC dvO mtK -cNW +mtK kpQ cxB xfW @@ -104656,8 +109922,6 @@ aaa aaa aaa aaa -"} -(194,1,1) = {" aaa aaa aaa @@ -104667,6 +109931,8 @@ aaa aaa aaa aaa +"} +(194,1,1) = {" aaa aaa aaa @@ -104780,9 +110046,9 @@ wAj czu jtr aPq -aZk +dsK xWB -vJS +wYV aZl mLQ aPr @@ -104913,8 +110179,6 @@ aaa aaa aaa aaa -"} -(195,1,1) = {" aaa aaa aaa @@ -104924,6 +110188,8 @@ aaa aaa aaa aaa +"} +(195,1,1) = {" aaa aaa aaa @@ -105034,13 +110300,13 @@ aaK aCI mbQ ryf -aPr -aaK -aPr -aPr -aPr -aCI -aPr +baE +lpn +mJS +aZk +xWB +ttC +aZl cBl aPr rvS @@ -105063,9 +110329,9 @@ diV bry bEE bFY -bta +rgZ bGG -bta +xuS cNX qEG oWG @@ -105170,8 +110436,6 @@ aaa aaa aaa aaa -"} -(196,1,1) = {" aaa aaa aaa @@ -105181,6 +110445,8 @@ aaa aaa aaa aaa +"} +(196,1,1) = {" aaa aaa aaa @@ -105290,16 +110556,16 @@ aOc aPs jVJ mbQ -ryf -aPs -aPs +ehO +uwO +uwO aXG aZm -aPs -aPr +uwO +vmu bcB -aPr -aPs +vmu +uwO wQI bhH puy @@ -105427,8 +110693,6 @@ aaa aaa aaa aaa -"} -(197,1,1) = {" aaa aaa aaa @@ -105438,6 +110702,8 @@ aaa aaa aaa aaa +"} +(197,1,1) = {" aaa aaa aaa @@ -105684,8 +110950,6 @@ aaa aaa aaa aaa -"} -(198,1,1) = {" aaa aaa aaa @@ -105695,6 +110959,8 @@ aaa aaa aaa aaa +"} +(198,1,1) = {" aaa aaa aaa @@ -105836,7 +111102,7 @@ bEI bky bHu qQH -spk +sql xfD bKf bLk @@ -105849,7 +111115,7 @@ aaa aaa gXs cNW -uqU +tVO uqU bYr uqU @@ -105941,8 +111207,6 @@ aaa aaa aaa aaa -"} -(199,1,1) = {" aaa aaa aaa @@ -105952,6 +111216,8 @@ aaa aaa aaa aaa +"} +(199,1,1) = {" aaa aaa aaa @@ -106079,7 +111345,7 @@ bhH bru mzj bhH -gVo +mQS bry bky brE @@ -106093,7 +111359,7 @@ bky bky cBA bIU -spk +ocq kVu rAv bLj @@ -106198,8 +111464,6 @@ aaa aaa aaa aaa -"} -(200,1,1) = {" aaa aaa aaa @@ -106209,6 +111473,8 @@ aaa aaa aaa aaa +"} +(200,1,1) = {" aaa aaa aaa @@ -106455,8 +111721,6 @@ aaa aaa aaa aaa -"} -(201,1,1) = {" aaa aaa aaa @@ -106466,6 +111730,8 @@ aaa aaa aaa aaa +"} +(201,1,1) = {" aaa aaa aaa @@ -106712,8 +111978,6 @@ aaa aaa aaa aaa -"} -(202,1,1) = {" aaa aaa aaa @@ -106723,6 +111987,9 @@ aaa aaa aaa aaa +"} +(202,1,1) = {" +aaa aaa aaa aaa @@ -106766,7 +112033,6 @@ aaa aaa aaa aaa -dAO aaa aaa aaa @@ -106830,7 +112096,7 @@ aaa aaa aaa aNa -qLX +aTo roD aTo aNa @@ -106840,7 +112106,7 @@ aaa aNa aTo roD -cyr +aTo rrY aaa aaa @@ -106969,8 +112235,6 @@ aaa aaa aaa aaa -"} -(203,1,1) = {" aaa aaa aaa @@ -106980,6 +112244,8 @@ aaa aaa aaa aaa +"} +(203,1,1) = {" aaa aaa aaa @@ -107226,8 +112492,6 @@ aaa aaa aaa aaa -"} -(204,1,1) = {" aaa aaa aaa @@ -107237,6 +112501,8 @@ aaa aaa aaa aaa +"} +(204,1,1) = {" aaa aaa aaa @@ -107483,8 +112749,6 @@ aaa aaa aaa aaa -"} -(205,1,1) = {" aaa aaa aaa @@ -107494,6 +112758,8 @@ aaa aaa aaa aaa +"} +(205,1,1) = {" aaa aaa aaa @@ -107740,8 +113006,6 @@ aaa aaa aaa aaa -"} -(206,1,1) = {" aaa aaa aaa @@ -107751,6 +113015,8 @@ aaa aaa aaa aaa +"} +(206,1,1) = {" aaa aaa aaa @@ -107997,8 +113263,6 @@ aaa aaa aaa aaa -"} -(207,1,1) = {" aaa aaa aaa @@ -108008,6 +113272,8 @@ aaa aaa aaa aaa +"} +(207,1,1) = {" aaa aaa aaa @@ -108254,8 +113520,6 @@ aaa aaa aaa aaa -"} -(208,1,1) = {" aaa aaa aaa @@ -108265,6 +113529,8 @@ aaa aaa aaa aaa +"} +(208,1,1) = {" aaa aaa aaa @@ -108511,8 +113777,6 @@ aaa aaa aaa aaa -"} -(209,1,1) = {" aaa aaa aaa @@ -108522,6 +113786,8 @@ aaa aaa aaa aaa +"} +(209,1,1) = {" aaa aaa aaa @@ -108768,8 +114034,6 @@ aaa aaa aaa aaa -"} -(210,1,1) = {" aaa aaa aaa @@ -108779,6 +114043,8 @@ aaa aaa aaa aaa +"} +(210,1,1) = {" aaa aaa aaa @@ -109025,8 +114291,6 @@ aaa aaa aaa aaa -"} -(211,1,1) = {" aaa aaa aaa @@ -109036,6 +114300,8 @@ aaa aaa aaa aaa +"} +(211,1,1) = {" aaa aaa aaa @@ -109282,8 +114548,6 @@ aaa aaa aaa aaa -"} -(212,1,1) = {" aaa aaa aaa @@ -109293,6 +114557,8 @@ aaa aaa aaa aaa +"} +(212,1,1) = {" aaa aaa aaa @@ -109539,8 +114805,6 @@ aaa aaa aaa aaa -"} -(213,1,1) = {" aaa aaa aaa @@ -109550,6 +114814,8 @@ aaa aaa aaa aaa +"} +(213,1,1) = {" aaa aaa aaa @@ -109796,8 +115062,6 @@ aaa aaa aaa aaa -"} -(214,1,1) = {" aaa aaa aaa @@ -109807,6 +115071,8 @@ aaa aaa aaa aaa +"} +(214,1,1) = {" aaa aaa aaa @@ -110053,8 +115319,6 @@ aaa aaa aaa aaa -"} -(215,1,1) = {" aaa aaa aaa @@ -110064,6 +115328,8 @@ aaa aaa aaa aaa +"} +(215,1,1) = {" aaa aaa aaa @@ -110310,8 +115576,6 @@ aaa aaa aaa aaa -"} -(216,1,1) = {" aaa aaa aaa @@ -110321,6 +115585,8 @@ aaa aaa aaa aaa +"} +(216,1,1) = {" aaa aaa aaa @@ -110567,8 +115833,6 @@ aaa aaa aaa aaa -"} -(217,1,1) = {" aaa aaa aaa @@ -110578,6 +115842,8 @@ aaa aaa aaa aaa +"} +(217,1,1) = {" aaa aaa aaa @@ -110824,8 +116090,6 @@ aaa aaa aaa aaa -"} -(218,1,1) = {" aaa aaa aaa @@ -110835,6 +116099,8 @@ aaa aaa aaa aaa +"} +(218,1,1) = {" aaa aaa aaa @@ -111081,9 +116347,6 @@ aaa aaa aaa aaa -"} -(219,1,1) = {" -aaa aaa aaa aaa @@ -111093,6 +116356,8 @@ aaa aaa aaa aaa +"} +(219,1,1) = {" aaa aaa aaa @@ -111199,6 +116464,7 @@ aaa aaa aaa aaa +ppZ aaa aaa aaa @@ -111338,8 +116604,6 @@ aaa aaa aaa aaa -"} -(220,1,1) = {" aaa aaa aaa @@ -111349,6 +116613,8 @@ aaa aaa aaa aaa +"} +(220,1,1) = {" aaa aaa aaa @@ -111595,8 +116861,6 @@ aaa aaa aaa aaa -"} -(221,1,1) = {" aaa aaa aaa @@ -111606,6 +116870,8 @@ aaa aaa aaa aaa +"} +(221,1,1) = {" aaa aaa aaa @@ -111852,8 +117118,6 @@ aaa aaa aaa aaa -"} -(222,1,1) = {" aaa aaa aaa @@ -111863,6 +117127,8 @@ aaa aaa aaa aaa +"} +(222,1,1) = {" aaa aaa aaa @@ -112109,8 +117375,6 @@ aaa aaa aaa aaa -"} -(223,1,1) = {" aaa aaa aaa @@ -112120,6 +117384,8 @@ aaa aaa aaa aaa +"} +(223,1,1) = {" aaa aaa aaa @@ -112366,8 +117632,6 @@ aaa aaa aaa aaa -"} -(224,1,1) = {" aaa aaa aaa @@ -112377,6 +117641,8 @@ aaa aaa aaa aaa +"} +(224,1,1) = {" aaa aaa aaa @@ -112623,8 +117889,6 @@ aaa aaa aaa aaa -"} -(225,1,1) = {" aaa aaa aaa @@ -112634,6 +117898,8 @@ aaa aaa aaa aaa +"} +(225,1,1) = {" aaa aaa aaa @@ -112880,8 +118146,6 @@ aaa aaa aaa aaa -"} -(226,1,1) = {" aaa aaa aaa @@ -112891,6 +118155,8 @@ aaa aaa aaa aaa +"} +(226,1,1) = {" aaa aaa aaa @@ -113137,8 +118403,6 @@ aaa aaa aaa aaa -"} -(227,1,1) = {" aaa aaa aaa @@ -113148,6 +118412,8 @@ aaa aaa aaa aaa +"} +(227,1,1) = {" aaa aaa aaa @@ -113394,8 +118660,6 @@ aaa aaa aaa aaa -"} -(228,1,1) = {" aaa aaa aaa @@ -113405,6 +118669,8 @@ aaa aaa aaa aaa +"} +(228,1,1) = {" aaa aaa aaa @@ -113651,8 +118917,6 @@ aaa aaa aaa aaa -"} -(229,1,1) = {" aaa aaa aaa @@ -113662,6 +118926,8 @@ aaa aaa aaa aaa +"} +(229,1,1) = {" aaa aaa aaa @@ -113908,8 +119174,6 @@ aaa aaa aaa aaa -"} -(230,1,1) = {" aaa aaa aaa @@ -113919,6 +119183,8 @@ aaa aaa aaa aaa +"} +(230,1,1) = {" aaa aaa aaa @@ -114165,8 +119431,6 @@ aaa aaa aaa aaa -"} -(231,1,1) = {" aaa aaa aaa @@ -114176,6 +119440,8 @@ aaa aaa aaa aaa +"} +(231,1,1) = {" aaa aaa aaa @@ -114422,8 +119688,6 @@ aaa aaa aaa aaa -"} -(232,1,1) = {" aaa aaa aaa @@ -114433,6 +119697,8 @@ aaa aaa aaa aaa +"} +(232,1,1) = {" aaa aaa aaa @@ -114679,8 +119945,6 @@ aaa aaa aaa aaa -"} -(233,1,1) = {" aaa aaa aaa @@ -114690,6 +119954,8 @@ aaa aaa aaa aaa +"} +(233,1,1) = {" aaa aaa aaa @@ -114936,6 +120202,15 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa "} (234,1,1) = {" aaa @@ -115082,6 +120357,7 @@ aaa aaa aaa aaa +aaf aaa aaa aaa @@ -115091,7 +120367,6 @@ aaa aaa aaa aaa -aaf aaa aaa aaa @@ -115339,6 +120614,7 @@ aaa aaa aaa aaa +aaf aaa aaa aaa @@ -115348,7 +120624,6 @@ aaa aaa aaa aaa -aaf aaa aaa aaa @@ -116587,6 +121862,7 @@ aaa aaa aaa aaa +aoV aaa aaa aaa @@ -116596,7 +121872,6 @@ aaa aaa aaa aaa -aoV aaa aaa aaa @@ -116859,6 +122134,7 @@ aaa aaa aaa aaa +aoV aaa aaa aaa @@ -116868,7 +122144,6 @@ aaa aaa aaa aaa -aoV aaa aaa aaa @@ -117149,6 +122424,7 @@ aaa aaa aaa aaa +aoV aaa aaa aaa @@ -117158,7 +122434,6 @@ aaa aaa aaa aaa -aoV aaa aaa aaa @@ -118379,6 +123654,7 @@ aaa aaa aaa aaa +aoV aaa aaa aaa @@ -118388,7 +123664,6 @@ aaa aaa aaa aaa -aoV aaa aaa aaa @@ -118412,6 +123687,7 @@ aaa aaa aaa aaa +aoV aaa aaa aaa @@ -118421,7 +123697,6 @@ aaa aaa aaa aaa -aoV aaa aaa aaa @@ -118704,6 +123979,7 @@ aaa aaa aaa aaa +aoV aaa aaa aaa @@ -118713,7 +123989,6 @@ aaa aaa aaa aaa -aoV aaa aaa aaa diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 45aa1bfd72857..6cf9d1175c265 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -1335,7 +1335,6 @@ "afB" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, /obj/machinery/light/small/directional/east, /obj/item/stack/cable_coil, /turf/open/floor/plating, @@ -4118,7 +4117,6 @@ /obj/structure/chair{ dir = 4 }, -/obj/item/clothing/mask/cigarette, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) "apv" = ( @@ -4466,7 +4464,7 @@ width = 5 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "aqZ" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -5790,7 +5788,7 @@ width = 9 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "avq" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock" @@ -6991,9 +6989,6 @@ "aAa" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/potato{ - name = "\improper Beepsky's emergency battery" - }, /obj/item/paper/fluff/jobs/security/beepsky_mom, /turf/open/floor/plating, /area/station/maintenance/department/security/brig) @@ -7075,7 +7070,6 @@ pixel_x = -4; pixel_y = 2 }, -/obj/item/clothing/mask/cigarette/cigar, /obj/item/reagent_containers/cup/glass/flask/gold, /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/captain/private) @@ -10156,25 +10150,15 @@ /obj/item/electronics/airlock, /obj/item/electronics/airlock, /obj/item/electronics/apc, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, /turf/open/floor/iron, /area/station/engineering/main) "aNq" = ( /obj/structure/disposalpipe/segment, /obj/structure/table, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000 - }, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000 - }, /obj/effect/turf_decal/stripes/end{ dir = 1 }, +/obj/machinery/cell_charger, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) "aNt" = ( @@ -11501,7 +11485,7 @@ width = 20 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "aTK" = ( /obj/structure/flora/bush/flowers_yw/style_random, /obj/structure/flora/bush/lavendergrass/style_random, @@ -12755,10 +12739,6 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/space/basic, /area/space/nearstation) -"aYF" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/space/basic, -/area/space) "aYI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -14450,7 +14430,6 @@ /area/station/hallway/primary/central/aft) "bgx" = ( /obj/structure/chair, -/obj/item/clothing/mask/cigarette, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) "bgy" = ( @@ -14514,7 +14493,7 @@ width = 6 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "bgV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -17247,7 +17226,7 @@ width = 5 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "btL" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -17367,16 +17346,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"buu" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/item/clothing/mask/cigarette, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "buv" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/research{ @@ -18562,7 +18531,6 @@ /area/station/science/lab) "bzd" = ( /obj/structure/table, -/obj/item/stock_parts/cell/high, /obj/machinery/cell_charger, /turf/open/floor/iron/dark, /area/station/science/lab) @@ -19964,7 +19932,7 @@ width = 5 }, /turf/open/space, -/area/space) +/area/space/nearstation) "bFF" = ( /obj/machinery/atmospherics/components/tank/air{ dir = 1 @@ -23655,14 +23623,6 @@ /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/machinery/light/directional/east, -/obj/item/stock_parts/cell/emproof{ - pixel_x = -4; - pixel_y = -2 - }, -/obj/item/stock_parts/cell/emproof{ - pixel_x = 4; - pixel_y = 6 - }, /obj/structure/cable, /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 @@ -25884,7 +25844,7 @@ width = 35 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "cjC" = ( /obj/structure/sign/warning/vacuum/external/directional/north, /obj/machinery/light/small/directional/north, @@ -33191,7 +33151,6 @@ /obj/structure/table/reinforced, /obj/item/clipboard, /obj/item/lighter, -/obj/item/stock_parts/cell/high, /obj/item/clothing/glasses/meson/engine, /obj/item/stamp/head/ce, /obj/effect/turf_decal/tile/yellow/half/contrasted, @@ -35322,13 +35281,9 @@ /obj/item/stack/sheet/iron/fifty, /obj/item/stack/rods/fifty, /obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high, /obj/item/stack/sheet/mineral/plasma{ amount = 30 }, -/obj/item/gps/engineering, /turf/open/floor/plating, /area/station/engineering/storage_shared) "iJb" = ( @@ -35606,7 +35561,6 @@ "iZG" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, /obj/machinery/light/directional/east, /obj/machinery/ecto_sniffer{ pixel_x = 4; @@ -44944,11 +44898,6 @@ pixel_x = -8; pixel_y = 4 }, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high{ - pixel_x = 5; - pixel_y = -5 - }, /obj/item/crowbar, /obj/structure/table, /turf/open/floor/iron, @@ -46177,7 +46126,6 @@ /obj/machinery/cell_charger{ pixel_y = 5 }, -/obj/item/stock_parts/cell/high, /obj/machinery/newscaster/directional/north, /obj/effect/turf_decal/tile/green/fourcorners, /turf/open/floor/iron/dark, @@ -46621,10 +46569,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) -"sut" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/space/basic, -/area/space) "suz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -47628,10 +47572,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"tgH" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) "tgT" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, @@ -49587,7 +49527,7 @@ width = 12 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "uDS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50046,7 +49986,6 @@ "uXh" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 1 }, @@ -50587,7 +50526,6 @@ "vuq" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, /obj/item/screwdriver{ pixel_y = 16 }, @@ -51277,8 +51215,6 @@ "vXf" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/white, /area/station/science/research) @@ -90009,7 +89945,7 @@ nUL bqf nUL bsV -buu +bsV bvB vvn ydb @@ -99238,7 +99174,7 @@ aha tko bGI rng -sut +cxg aaa aaa rax @@ -99495,7 +99431,7 @@ tko tko bGI rng -sut +cxg aaa bGI oCX @@ -101031,7 +100967,7 @@ aaa aaa aaa aaa -aYF +bGI sZh cxg crO @@ -101278,7 +101214,7 @@ aaa pAl qcR aJw -tgH +aht cdm cdm cdm @@ -101288,7 +101224,7 @@ aaa aaa aaa aaa -aYF +bGI sZh kKz aht @@ -101535,17 +101471,17 @@ aaa aJw dpD aJw -tgH -tgH -tgH -tgH +aht +aht +aht +aht aht cdm aaa aaa aaa aaa -aYF +bGI sZh cxg aaa diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index a2d6ba70275d9..1b1fdf387396f 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -924,7 +924,7 @@ /turf/open/floor/iron, /area/station/construction) "dN" = ( -/obj/structure/table, +/obj/machinery/vending/subtype_vendor, /turf/open/floor/iron, /area/station/commons/storage/primary) "dO" = ( @@ -932,6 +932,7 @@ /obj/machinery/light/directional/south, /obj/item/storage/medkit/regular, /obj/item/healthanalyzer/advanced, +/obj/item/debug/omnitool/item_spawner, /turf/open/floor/iron, /area/station/commons/storage/primary) "dP" = ( @@ -1273,13 +1274,11 @@ /obj/effect/turf_decal/bot, /obj/machinery/button/door/directional/east{ id = "cargounload"; - layer = 4; name = "Loading Doors"; pixel_y = 8 }, /obj/machinery/button/door/directional/east{ id = "cargoload"; - layer = 4; name = "Loading Doors"; pixel_y = -8 }, @@ -1777,6 +1776,7 @@ /area/station/construction) "is" = ( /obj/structure/sign/warning/vacuum/external/directional/east, +/obj/machinery/vending/subtype_vendor, /turf/open/floor/iron, /area/station/medical/medbay) "jb" = ( @@ -1864,6 +1864,7 @@ "ny" = ( /obj/structure/table, /obj/item/storage/toolbox/syndicate, +/obj/item/debug/omnitool, /turf/open/floor/iron, /area/station/commons/storage/primary) "nI" = ( @@ -2219,6 +2220,24 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron, /area/station/command/bridge) +"IB" = ( +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/table, +/obj/item/debug/omnitool{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/debug/omnitool/item_spawner{ + pixel_x = 4; + pixel_y = -6 + }, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/medical/medbay) "IF" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -7991,7 +8010,7 @@ av by Ot cl -cl +IB cl cH cu diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 0a8c38681990b..5bb0f1d14cc7c 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -912,17 +912,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/control) -"ec" = ( -/obj/structure/railing{ - dir = 4; - layer = 4.1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation/ship) "eg" = ( /obj/structure/table/wood, /obj/item/storage/box/drinkingglasses, @@ -2088,27 +2077,6 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/prison) -"jy" = ( -/obj/machinery/button/door/indestructible{ - id = "XCCQMLoaddoor"; - layer = 4; - name = "Loading Doors"; - pixel_x = -27; - pixel_y = -5 - }, -/obj/machinery/button/door/indestructible{ - id = "XCCQMLoaddoor2"; - layer = 4; - name = "Loading Doors"; - pixel_x = -27; - pixel_y = 5 - }, -/obj/machinery/computer/cargo{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/centcom/central_command_areas/supply) "jA" = ( /obj/structure/fans/tiny/invisible, /turf/open/floor/holofloor/hyperspace, @@ -2519,6 +2487,26 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/supplypod) +"lG" = ( +/obj/structure/table/wood, +/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/cigarette/cigar/cohiba{ + pixel_x = 6 + }, +/obj/item/cigarette/cigar/havana{ + pixel_x = 2 + }, +/obj/item/cigarette/cigar{ + pixel_x = 4.5 + }, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/briefing) "lJ" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office" @@ -2793,22 +2781,6 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron, /area/centcom/central_command_areas/prison) -"mT" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/machinery/button/door/indestructible{ - id = "XCCsecdepartment"; - layer = 3; - name = "CC Security Checkpoint Control"; - pixel_x = 24; - pixel_y = 24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron, -/area/centcom/central_command_areas/prison) "mW" = ( /obj/structure/reagent_dispensers/wall/peppertank/directional/west, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -2844,11 +2816,34 @@ /obj/structure/sign/poster/official/enlist/directional/east, /turf/open/floor/iron/dark/textured_large, /area/centcom/central_command_areas/evacuation/ship) +"nd" = ( +/obj/machinery/computer/records/security{ + dir = 8 + }, +/obj/machinery/button/door/indestructible{ + id = "XCCcustoms1"; + name = "CC Emergency Docks Control"; + pixel_x = 24; + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation) "ne" = ( /obj/effect/turf_decal/tile/green, /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron, /area/centcom/central_command_areas/ferry) +"ng" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation/ship) "nj" = ( /obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/tile/bar/opposingcorners, @@ -3248,19 +3243,6 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/supply) -"oV" = ( -/obj/structure/table/wood, -/obj/item/storage/briefcase/secure{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/storage/lockbox/medal, -/obj/machinery/newscaster{ - pixel_x = 32 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/admin) "oW" = ( /obj/structure/flora/bush/lavendergrass/style_random, /obj/structure/flora/bush/sparsegrass/style_random, @@ -3286,6 +3268,21 @@ }, /turf/open/floor/stone, /area/centcom/central_command_areas/evacuation/ship) +"pa" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/machinery/button/door/indestructible{ + id = "XCCsecdepartment"; + name = "CC Security Checkpoint Control"; + pixel_x = 24; + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/status_display/evac/directional/north, +/turf/open/floor/iron, +/area/centcom/central_command_areas/prison) "pb" = ( /obj/effect/landmark/thunderdome/two, /obj/effect/turf_decal/stripes/line, @@ -3312,6 +3309,27 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/supply) +"pe" = ( +/obj/structure/table/wood, +/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/cigarette/cigar/cohiba{ + pixel_x = 6 + }, +/obj/item/cigarette/cigar/havana{ + pixel_x = 2 + }, +/obj/item/cigarette/cigar{ + pixel_x = 4.5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 10 + }, +/turf/open/floor/iron/grimy, +/area/centcom/central_command_areas/admin) "pf" = ( /obj/structure/table/reinforced, /obj/item/crowbar/red, @@ -4041,18 +4059,6 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/ferry) -"sw" = ( -/obj/structure/railing{ - dir = 8; - layer = 4.1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation/ship) "sz" = ( /obj/machinery/status_display/evac/directional/west, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -4715,6 +4721,28 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin) +"vz" = ( +/obj/structure/table/reinforced, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/item/paper_bin{ + pixel_y = 3; + pixel_x = -6 + }, +/obj/item/pen{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/clipboard{ + pixel_x = 5 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation/ship) "vA" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -4903,27 +4931,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/smooth_large, /area/centcom/central_command_areas/evacuation/ship) -"wl" = ( -/obj/machinery/modular_computer/preset/id/centcom{ - dir = 1 - }, -/obj/machinery/button/door/indestructible{ - id = "XCCcustoms1"; - layer = 3.5; - name = "CC Customs 1 Control"; - pixel_x = 8; - pixel_y = -24 - }, -/obj/machinery/button/door/indestructible{ - id = "XCCcustoms2"; - layer = 3.5; - name = "CC Customs 2 Control"; - pixel_x = -8; - pixel_y = -24 - }, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/control) "wm" = ( /obj/effect/landmark/thunderdome/one, /obj/effect/turf_decal/stripes/line{ @@ -6446,30 +6453,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron, /area/centcom/central_command_areas/control) -"CT" = ( -/obj/structure/table/reinforced, -/obj/structure/railing{ - dir = 8; - layer = 4.1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/item/folder/red{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/folder/blue{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/gun/ballistic/automatic/pistol/m1911{ - pixel_y = 7; - pixel_x = 2 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation/ship) "CU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/structure/cable, @@ -6506,6 +6489,26 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/control) +"Db" = ( +/obj/structure/table/wood, +/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/cigarette/cigar/cohiba{ + pixel_x = 6 + }, +/obj/item/cigarette/cigar/havana{ + pixel_x = 2 + }, +/obj/item/cigarette/cigar{ + pixel_x = 4.5 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/centcom/tdome/administration) "Dg" = ( /obj/machinery/light/floor, /turf/open/floor/iron/white, @@ -6896,6 +6899,25 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/courtroom) +"Fl" = ( +/obj/machinery/button/door/indestructible{ + id = "XCCQMLoaddoor"; + name = "Loading Doors"; + pixel_x = -27; + pixel_y = -5 + }, +/obj/machinery/button/door/indestructible{ + id = "XCCQMLoaddoor2"; + name = "Loading Doors"; + pixel_x = -27; + pixel_y = 5 + }, +/obj/machinery/computer/cargo{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/centcom/central_command_areas/supply) "Fo" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -6909,6 +6931,16 @@ /obj/structure/sign/warning/secure_area, /turf/closed/indestructible/riveted, /area/centcom/central_command_areas/control) +"Ft" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation/ship) "Fu" = ( /obj/item/kirbyplants/organic/plant21, /obj/machinery/firealarm/directional/west, @@ -7316,17 +7348,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/control) -"HZ" = ( -/obj/structure/railing{ - dir = 6; - layer = 3.1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation/ship) "Ic" = ( /obj/machinery/door/poddoor{ id = "thunderdomehea"; @@ -7411,6 +7432,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/control) +"Ix" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation/ship) "IK" = ( /obj/structure/closet/secure_closet/ert_sec, /obj/effect/turf_decal/stripes/line{ @@ -7433,6 +7464,18 @@ /obj/machinery/light/directional/south, /turf/open/floor/grass, /area/centcom/tdome/administration) +"IS" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_y = 19; + pixel_x = 7 + }, +/obj/item/cigarette/cigar/havana{ + pixel_x = -6; + pixel_y = 5 + }, +/turf/open/floor/iron, +/area/centcom/central_command_areas/supplypod) "IX" = ( /obj/effect/turf_decal/siding/dark_blue{ dir = 6 @@ -7494,16 +7537,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/tdome/administration) -"JO" = ( -/obj/machinery/modular_computer/preset/id/centcom, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons and the AI's satellite from the safety of his office."; - name = "Research Monitor"; - network = list("rd","minisat"); - pixel_y = 28 - }, -/turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) "JU" = ( /obj/structure/chair{ dir = 4 @@ -7801,17 +7834,6 @@ }, /turf/open/floor/iron, /area/centcom/central_command_areas/evacuation) -"Lz" = ( -/obj/structure/railing{ - dir = 10; - layer = 3.1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation/ship) "LA" = ( /obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 8 @@ -7948,12 +7970,35 @@ /obj/structure/speaking_tile, /turf/closed/mineral/ash_rock, /area/awaymission/errorroom) +"Ma" = ( +/obj/machinery/modular_computer/preset/id/centcom, +/turf/open/floor/iron/grimy, +/area/centcom/central_command_areas/admin) "Mf" = ( /obj/effect/landmark/thunderdome/one, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/light_emitter/thunderdome, /turf/open/floor/iron, /area/centcom/tdome/arena) +"Mh" = ( +/obj/machinery/modular_computer/preset/id/centcom{ + dir = 1 + }, +/obj/machinery/button/door/indestructible{ + id = "XCCcustoms1"; + name = "CC Customs 1 Control"; + pixel_x = 8; + pixel_y = -24 + }, +/obj/machinery/button/door/indestructible{ + id = "XCCcustoms2"; + name = "CC Customs 2 Control"; + pixel_x = -8; + pixel_y = -24 + }, +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/control) "Mn" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 @@ -8576,26 +8621,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/briefing) -"Pe" = ( -/obj/structure/table/wood, -/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/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 6 - }, -/obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = 2 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 4.5 - }, -/obj/machinery/status_display/evac/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/courtroom) "Pg" = ( /obj/machinery/computer/auxiliary_base/directional/north, /obj/structure/table/reinforced, @@ -8763,27 +8788,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/briefing) -"PR" = ( -/obj/structure/table/wood, -/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/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 6 - }, -/obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = 2 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 4.5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ - dir = 10 - }, -/turf/open/floor/iron/grimy, -/area/centcom/central_command_areas/admin) "PT" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, @@ -8933,29 +8937,6 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/iron, /area/centcom/tdome/observation) -"QB" = ( -/obj/structure/table/reinforced, -/obj/structure/railing{ - dir = 4; - layer = 4.1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/item/paper_bin{ - pixel_y = 3; - pixel_x = -6 - }, -/obj/item/pen{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/clipboard{ - pixel_x = 5 - }, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation/ship) "QC" = ( /turf/closed/indestructible/riveted, /area/centcom/tdome/observation) @@ -8994,26 +8975,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/dark, /area/centcom/tdome/observation) -"QU" = ( -/obj/structure/table/wood, -/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/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 6 - }, -/obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = 2 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 4.5 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/tdome/administration) "QV" = ( /turf/open/floor/iron/grimy, /area/centcom/central_command_areas/admin) @@ -9474,18 +9435,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/admin) -"Tj" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/glass/bottle/whiskey{ - pixel_y = 19; - pixel_x = 7 - }, -/obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = -6; - pixel_y = 5 - }, -/turf/open/floor/iron, -/area/centcom/central_command_areas/supplypod) "Tl" = ( /obj/structure/table/wood, /obj/structure/plaque/static_plaque/thunderdome{ @@ -9892,6 +9841,17 @@ dir = 10 }, /area/centcom/central_command_areas/evacuation) +"Ve" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation/ship) "Vf" = ( /obj/item/kirbyplants/organic/plant21{ pixel_x = -3; @@ -10037,6 +9997,26 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/control) +"VD" = ( +/obj/structure/table/wood, +/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/cigarette/cigar/cohiba{ + pixel_x = 6 + }, +/obj/item/cigarette/cigar/havana{ + pixel_x = 2 + }, +/obj/item/cigarette/cigar{ + pixel_x = 4.5 + }, +/obj/machinery/status_display/evac/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/courtroom) "VF" = ( /obj/machinery/computer/crew{ dir = 4 @@ -10089,20 +10069,6 @@ }, /turf/open/floor/iron/dark, /area/centcom/tdome/observation) -"VY" = ( -/obj/machinery/computer/records/security{ - dir = 8 - }, -/obj/machinery/button/door/indestructible{ - id = "XCCcustoms1"; - layer = 3; - name = "CC Emergency Docks Control"; - pixel_x = 24; - pixel_y = 24 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/evacuation) "VZ" = ( /obj/structure/closet/secure_closet/ert_med, /obj/structure/sign/directions/medical{ @@ -10156,6 +10122,29 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/centcom/tdome/administration) +"Wo" = ( +/obj/structure/table/reinforced, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/item/folder/red{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/folder/blue{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/gun/ballistic/automatic/pistol/m1911{ + pixel_y = 7; + pixel_x = 2 + }, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/evacuation/ship) "Wp" = ( /obj/item/storage/briefcase{ pixel_x = -3; @@ -10240,26 +10229,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/centcom/central_command_areas/briefing) -"WO" = ( -/obj/structure/table/wood, -/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/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 6 - }, -/obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = 2 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 4.5 - }, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/centcom/central_command_areas/briefing) "WP" = ( /obj/machinery/computer/station_alert{ dir = 8 @@ -10387,6 +10356,20 @@ }, /turf/open/floor/iron/white, /area/centcom/tdome/observation) +"Xm" = ( +/obj/structure/table/wood, +/obj/item/storage/briefcase/secure{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/storage/lockbox/medal, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/security/telescreen/research/directional/south, +/turf/open/floor/iron/dark, +/area/centcom/central_command_areas/admin) "Xn" = ( /obj/machinery/computer/security/telescreen, /obj/structure/table/reinforced, @@ -38396,10 +38379,10 @@ aa aa aa Lw -QB -ec +vz +Ix Ae -HZ +Ft OI Lt Lt @@ -39424,10 +39407,10 @@ aa aa aa Lw -CT -sw +Wo +Ve dv -Lz +ng OI Lt Lt @@ -47613,7 +47596,7 @@ WQ xh WQ mD -WO +lG eF eF eF @@ -48370,7 +48353,7 @@ aa On Yc VK -PR +pe Uh Xo WU @@ -49657,9 +49640,9 @@ yO To nk Gf -oV +Xm On -JO +Ma Vz Em hT @@ -50924,7 +50907,7 @@ iO jc jn iP -jy +Fl jD jL jc @@ -53562,7 +53545,7 @@ uE Pr Xw Sz -QU +Db uf Wn uf @@ -57359,7 +57342,7 @@ kU lv lP il -mT +pa lL hW oa @@ -57886,7 +57869,7 @@ iu ZS sK GX -wl +Mh iu vR Ab @@ -61753,7 +61736,7 @@ xt vZ AY cg -VY +nd Xb CE WF @@ -61978,7 +61961,7 @@ aa aa aa Hv -Pe +VD rk kH le @@ -63297,7 +63280,7 @@ tV cg cg cg -Tj +IS Su Yn Vk diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 9dd8fc2958e58..9ce80d438fefc 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -1962,7 +1962,7 @@ /area/station/commons/vacant_room) "agG" = ( /obj/structure/dresser, -/obj/item/clothing/mask/cigarette/cigar/havana, +/obj/item/cigarette/cigar/havana, /turf/open/floor/iron/grimy, /area/station/commons/vacant_room) "agH" = ( @@ -2957,7 +2957,6 @@ /area/station/security/checkpoint/engineering) "aoN" = ( /obj/machinery/elevator_control_panel{ - layer = 3.1; pixel_y = 2; linked_elevator_id = "tram_xeno_lift"; preset_destination_names = list("2"="Lower Deck", "3"="Upper Deck") @@ -3171,20 +3170,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) -"arT" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/structure/closet/radiation, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/engine{ - dir = 1; - pixel_y = -32 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "arV" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/effect/turf_decal/box, @@ -3277,6 +3262,17 @@ }, /turf/open/floor/iron, /area/station/security/office) +"asI" = ( +/obj/structure/table, +/obj/machinery/requests_console/directional/east{ + name = "EVA Requests Console"; + department = "EVA" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "asQ" = ( /obj/structure/sign/warning/no_smoking, /turf/closed/wall, @@ -3587,10 +3583,6 @@ }, /turf/open/floor/iron, /area/station/security/processing) -"avE" = ( -/obj/structure/lattice, -/turf/open/space/openspace, -/area/space/nearstation) "avG" = ( /obj/structure/chair{ dir = 1 @@ -4100,16 +4092,6 @@ "aBY" = ( /turf/open/floor/iron, /area/station/hallway/secondary/command) -"aBZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 1; - pixel_y = -29 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) "aCa" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -4183,11 +4165,6 @@ }, /turf/open/floor/iron, /area/station/command/bridge) -"aCE" = ( -/obj/structure/filingcabinet, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) "aCJ" = ( /obj/effect/turf_decal/loading_area, /obj/effect/turf_decal/trimline/brown/filled/corner{ @@ -5756,10 +5733,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/white, /area/station/medical/virology) -"aQL" = ( -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/grimy, -/area/station/service/chapel/office) "aQM" = ( /obj/structure/table, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -6472,12 +6445,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/engineering/atmospherics_engine) -"bhf" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/engine, -/area/station/science/xenobiology) "bhr" = ( /turf/closed/wall/rock/porous, /area/station/security/prison/workout) @@ -6541,6 +6508,13 @@ /obj/vehicle/sealed/mecha/ripley/paddy/preset, /turf/open/floor/iron/recharge_floor, /area/station/security/mechbay) +"biJ" = ( +/obj/effect/turf_decal/box/red, +/obj/machinery/vatgrower{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/science/xenobiology) "biS" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 6 @@ -6690,15 +6664,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/commons/dorms) -"bmd" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/trimline/white/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "bmp" = ( /obj/effect/turf_decal/trimline/green/corner{ dir = 1 @@ -6817,14 +6782,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/dark, /area/station/command/bridge) -"bpl" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron, -/area/station/engineering/atmos) "bpn" = ( /mob/living/carbon/human/species/monkey, /turf/open/misc/grass/jungle, @@ -7709,6 +7666,16 @@ "bGJ" = ( /turf/open/floor/wood, /area/station/service/theater) +"bGP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/ordnance/directional/south, +/turf/open/floor/iron, +/area/station/science/ordnance/testlab) "bGV" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 @@ -7869,13 +7836,6 @@ /obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/iron/white, /area/station/science/research) -"bJN" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/turf/open/floor/iron, -/area/station/commons/storage/primary) "bJP" = ( /obj/structure/railing{ dir = 10 @@ -8483,6 +8443,16 @@ /obj/effect/turf_decal/siding/thinplating, /turf/open/floor/iron, /area/station/cargo/storage) +"bTI" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/obj/machinery/computer/security/telescreen/prison/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/station/security/office) "bTN" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner, /obj/structure/disposalpipe/segment{ @@ -9204,6 +9174,16 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"cdM" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + name = "Test Chamber Blast Door"; + id = "Xenolab" + }, +/obj/structure/sign/warning/gas_mask/directional/north, +/turf/open/floor/plating, +/area/station/science/xenobiology) "cdN" = ( /obj/machinery/button/ignition/incinerator/atmos, /turf/closed/wall/r_wall, @@ -9749,6 +9729,13 @@ }, /turf/open/floor/wood, /area/station/service/library) +"coV" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "cpl" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /turf/open/floor/iron/white, @@ -10512,7 +10499,7 @@ /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /obj/machinery/light/directional/north, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "cBo" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -10732,15 +10719,15 @@ pixel_x = -2; pixel_y = 3 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = -4; pixel_y = 1 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = 4; pixel_y = 1 }, -/obj/item/clothing/mask/cigarette/cigar/cohiba, +/obj/item/cigarette/cigar/cohiba, /turf/open/floor/wood, /area/station/command/meeting_room) "cFP" = ( @@ -13679,13 +13666,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel/monastery) -"dGP" = ( -/obj/structure/table, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "dHc" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/table, @@ -15026,6 +15006,21 @@ /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/plating, /area/station/maintenance/tram/left) +"egx" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 7; + pixel_y = 8 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) "egD" = ( /obj/machinery/door/airlock/highsecurity{ name = "Prison Maintenance Access"; @@ -15101,6 +15096,11 @@ /obj/machinery/status_display/ai/directional/south, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"eiy" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "eiR" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -15931,6 +15931,13 @@ /obj/structure/cable, /turf/open/floor/iron/freezer, /area/station/medical/coldroom) +"eyh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/minisat/directional/south, +/turf/open/floor/carpet, +/area/station/command/heads_quarters/captain) "eyy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -17379,16 +17386,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/cargo/miningdock/oresilo) -"fcZ" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/storage/toolbox/electrical{ - pixel_x = 4; - pixel_y = 9 - }, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron/dark, -/area/station/science/explab) "fdc" = ( /obj/machinery/brm, /obj/machinery/conveyor{ @@ -19582,20 +19579,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/cargo/office) -"fSY" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - name = "Cargo Camera Monitor"; - dir = 4; - network = list("ss13","cargo") - }, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) "fSZ" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /turf/open/floor/iron, @@ -19872,6 +19855,16 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/checkpoint/engineering) +"fXX" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/engineering/main) "fXY" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -20314,13 +20307,6 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel) -"ggW" = ( -/obj/structure/rack, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "ghg" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, @@ -21642,13 +21628,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/cargo/miningdock) -"gFm" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/plumbing/input{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "gFt" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -22276,22 +22255,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"gRO" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/machinery/computer/security/telescreen{ - name = "Prison Monitor"; - desc = "Used for watching Prison Wing holding areas."; - dir = 8; - pixel_x = 30; - network = list("prison") - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/security/office) "gRQ" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 8 @@ -23141,6 +23104,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/circuitboard/machine/crystallizer, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) "hiZ" = ( @@ -23212,6 +23176,18 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"hks" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/potato{ + pixel_x = 6; + pixel_y = 10 + }, +/turf/open/floor/iron/white, +/area/station/science/lobby) "hkt" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/yellow/corner{ @@ -23535,35 +23511,6 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/east, /turf/open/floor/wood/large, /area/station/service/barber) -"hqw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/structure/closet/crate/preopen, -/obj/item/stock_parts/power_store/cell/empty, -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"hqx" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen{ - name = "AI Upload Monitor"; - desc = "Used for watching the ai_upload."; - dir = 4; - pixel_x = -28; - network = list("aiupload") - }, -/obj/item/kirbyplants/photosynthetic, -/obj/machinery/camera/directional/west{ - network = list("ss13","rd"); - c_tag = "Science - AI Access Hallway" - }, -/turf/open/floor/iron/dark, -/area/station/science/lower) "hqN" = ( /obj/structure/weightmachine/weightlifter, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -23588,16 +23535,6 @@ /obj/structure/table/wood, /turf/open/floor/wood, /area/station/service/theater) -"hrq" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) "hrr" = ( /obj/structure/table/reinforced, /obj/machinery/microwave/engineering/cell_included, @@ -23837,13 +23774,6 @@ dir = 1 }, /area/station/hallway/secondary/service) -"hwQ" = ( -/obj/effect/turf_decal/box/red, -/obj/machinery/plumbing/growing_vat{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "hxL" = ( /obj/structure/transport/linear/public, /obj/effect/turf_decal/caution/stand_clear/red, @@ -24013,18 +23943,6 @@ }, /turf/open/floor/iron, /area/station/commons/fitness) -"hBY" = ( -/obj/machinery/computer/security/telescreen{ - name = "turbine vent monitor"; - desc = "Used for watching the turbine vent."; - dir = 8; - pixel_x = 29; - network = list("turbine") - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) "hCp" = ( /obj/structure/chair/stool/bar/directional/north, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -24085,6 +24003,19 @@ /obj/structure/cable/layer1, /turf/open/floor/plating/airless, /area/station/solars/starboard/fore) +"hDF" = ( +/obj/machinery/computer/apc_control{ + dir = 1 + }, +/obj/machinery/requests_console/directional/south{ + name = "Chief Engineer's Request Console"; + department = "Chief Engineer's Desk" + }, +/obj/effect/mapping_helpers/requests_console/announcement, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/machinery/computer/security/telescreen/engine/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "hDI" = ( /turf/closed/wall/r_wall, /area/station/engineering/supermatter) @@ -24233,6 +24164,18 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"hGd" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/aiupload/directional/west, +/obj/item/kirbyplants/photosynthetic, +/obj/machinery/camera/directional/west{ + network = list("ss13","rd"); + c_tag = "Science - AI Access Hallway" + }, +/turf/open/floor/iron/dark, +/area/station/science/lower) "hGt" = ( /obj/structure/table, /obj/item/stack/sheet/glass/fifty, @@ -25679,6 +25622,11 @@ "iix" = ( /turf/closed/wall/r_wall, /area/station/science/lower) +"iiE" = ( +/obj/machinery/airalarm/directional/south, +/obj/effect/spawner/random/structure/twelve_percent_spirit_board, +/turf/open/floor/iron/grimy, +/area/station/service/chapel/office) "iiH" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -26166,6 +26114,14 @@ }, /turf/open/floor/iron/stairs/medium, /area/station/commons/dorms) +"itq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/machinery/computer/security/telescreen/test_chamber/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/xenobiology) "itE" = ( /obj/modular_map_root/tramstation{ name = "atmoscilower"; @@ -26427,7 +26383,7 @@ dir = 8 }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "ixO" = ( /obj/structure/chair/comfy/brown{ dir = 8; @@ -26547,6 +26503,13 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/exit) +"iAr" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/structure/closet_empty/crate, +/obj/effect/spawner/random/maintenance/two, +/obj/item/stock_parts/power_store/cell/high/empty, +/turf/open/floor/iron, +/area/station/cargo/storage) "iAt" = ( /obj/structure/lattice/catwalk, /turf/open/openspace/airless, @@ -27187,16 +27150,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/hallway/primary/tram/center) -"iNs" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/engine, -/area/station/science/xenobiology) "iNB" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -27809,20 +27762,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) -"iYa" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) "iYd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -28658,6 +28597,13 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"jlQ" = ( +/obj/structure/rack, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "jlX" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -29271,6 +29217,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/virology) +"jvW" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/light/small/directional/south, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron, +/area/station/security/checkpoint/supply) "jwa" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 @@ -29654,24 +29615,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"jCi" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 5 - }, -/obj/structure/cable, -/obj/structure/table, -/obj/item/multitool{ - pixel_x = 8 - }, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -5 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) "jCn" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -30599,18 +30542,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) -"jVK" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/potato{ - pixel_x = 6; - pixel_y = 10 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) "jVT" = ( /obj/structure/table, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -31783,29 +31714,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/tram/left) -"klq" = ( -/obj/structure/table, -/obj/item/multitool/circuit{ - pixel_x = -8 - }, -/obj/item/multitool/circuit{ - pixel_x = -4 - }, -/obj/item/multitool/circuit, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/machinery/camera/directional/south{ - network = list("ss13","rd"); - c_tag = "Science - Testing Lab" - }, -/turf/open/floor/iron, -/area/station/science/explab) "kly" = ( /obj/structure/cable, /obj/structure/disposalpipe/junction/flip{ @@ -31905,13 +31813,6 @@ /obj/structure/sink/kitchen/directional/south, /turf/open/floor/iron/white, /area/station/commons/vacant_room) -"knq" = ( -/obj/structure/table/wood, -/obj/structure/sign/flag/nanotrasen/directional/north, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/crap, -/turf/open/floor/wood, -/area/station/command/meeting_room) "knO" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/effect/turf_decal/trimline/blue/filled/corner{ @@ -32198,6 +32099,7 @@ }, /obj/effect/turf_decal/siding/thinplating, /obj/effect/landmark/event_spawn, +/obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron/dark, /area/station/science/xenobiology) "ksm" = ( @@ -32547,6 +32449,15 @@ /obj/structure/cable, /turf/open/floor/iron/showroomfloor, /area/station/security/lockers) +"kzq" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/machinery/firealarm/directional/north, +/obj/machinery/computer/security/telescreen/cargo_sec/directional/west, +/turf/open/floor/iron, +/area/station/security/checkpoint/supply) "kzw" = ( /obj/effect/spawner/random/vending/snackvend, /obj/effect/turf_decal/stripes/line{ @@ -32937,7 +32848,7 @@ dir = 1 }, /obj/structure/disposalpipe/trunk, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "kGA" = ( /obj/structure/railing, @@ -33579,6 +33490,13 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"kQP" = ( +/obj/structure/table, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "kQR" = ( /obj/structure/flora/bush/lavendergrass/style_random, /obj/item/food/grown/banana/bunch{ @@ -34050,23 +33968,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/virology) -"kXU" = ( -/obj/structure/rack, -/obj/item/clothing/glasses/meson{ - pixel_y = 4 - }, -/obj/item/lighter, -/obj/item/reagent_containers/pill/patch/aiuri, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/computer_disk/engineering, -/obj/item/computer_disk/engineering, -/obj/item/computer_disk/engineering, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "kXZ" = ( /obj/machinery/door/airlock{ name = "Private Quarters L"; @@ -34090,28 +33991,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/hallway/primary/tram/right) -"kYl" = ( -/obj/structure/rack, -/obj/structure/table, -/obj/machinery/computer/security/telescreen{ - name = "Test Chamber Monitor"; - pixel_y = 28; - network = list("test") - }, -/obj/item/storage/box/beakers{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/grenade/chem_grenade{ - pixel_x = -7; - pixel_y = 7 - }, -/obj/item/grenade/chem_grenade{ - pixel_x = -7; - pixel_y = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/explab) "kYL" = ( /obj/effect/spawner/random/structure/closet_private, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -35448,6 +35327,16 @@ }, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) +"lxd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/aiupload, +/turf/open/floor/iron/white, +/area/station/science/xenobiology) "lxi" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/cable, @@ -36075,6 +35964,11 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron, /area/station/commons/dorms) +"lHJ" = ( +/obj/machinery/pdapainter/research, +/obj/machinery/computer/security/telescreen/rd/directional/south, +/turf/open/floor/iron/cafeteria, +/area/station/command/heads_quarters/rd) "lHU" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -37260,7 +37154,7 @@ c_tag = "Secure - AI Lower External North" }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "mbk" = ( /obj/effect/turf_decal/sand, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -37628,25 +37522,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"mgK" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/box/lights/mixed, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/power_store/cell/emproof, -/obj/item/stock_parts/power_store/cell/emproof, -/obj/machinery/camera/emp_proof{ - dir = 10; - network = list("ss13","engineering"); - c_tag = "Engineering - SMES Misc" - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) "mgS" = ( /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) @@ -37707,6 +37582,16 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/plating, /area/station/hallway/primary/tram/center) +"mhJ" = ( +/obj/effect/turf_decal/trimline/brown/filled/corner{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/vault/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/qm) "min" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -37754,6 +37639,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) +"mjl" = ( +/obj/machinery/computer/security/telescreen/turbine/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/maintenance/disposal/incinerator) "mjp" = ( /obj/structure/transport/linear/tram/corner/southeast, /obj/structure/tram/spoiler{ @@ -38486,6 +38377,23 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/iron, /area/station/maintenance/port/central) +"mzi" = ( +/obj/structure/rack, +/obj/item/clothing/glasses/meson{ + pixel_y = 4 + }, +/obj/item/lighter, +/obj/item/reagent_containers/pill/patch/aiuri, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/item/computer_disk/engineering, +/obj/item/computer_disk/engineering, +/obj/item/computer_disk/engineering, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "mzs" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -38813,7 +38721,7 @@ /obj/machinery/sparker/directional/west{ id = "Xenobio" }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "mFo" = ( /obj/effect/turf_decal/trimline/red/filled/line{ @@ -38859,6 +38767,10 @@ "mGw" = ( /turf/closed/wall, /area/station/service/barber) +"mGB" = ( +/obj/structure/filingcabinet, +/turf/open/floor/iron/grimy, +/area/station/security/detectives_office) "mGN" = ( /obj/effect/turf_decal/siding/thinplating/end, /obj/machinery/button/door{ @@ -40327,21 +40239,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"njk" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 7; - pixel_y = 8 - }, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) "njl" = ( /obj/machinery/duct, /obj/effect/turf_decal/trimline/neutral/filled/corner{ @@ -41141,14 +41038,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/misc/asteroid, /area/station/medical/chemistry) -"nwE" = ( -/obj/machinery/pdapainter/research, -/obj/machinery/computer/security/telescreen/rd{ - dir = 1; - pixel_y = -32 - }, -/turf/open/floor/iron/cafeteria, -/area/station/command/heads_quarters/rd) "nwI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -41186,17 +41075,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit) -"nxM" = ( -/obj/structure/table, -/obj/machinery/requests_console/directional/east{ - name = "EVA Requests Console"; - department = "EVA" - }, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "nxN" = ( /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, @@ -41559,6 +41437,10 @@ }, /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/micro_laser, +/obj/item/multitool, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker + }, /turf/open/floor/iron/white, /area/station/science/lab) "nDX" = ( @@ -42026,20 +41908,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/maintenance/central/greater) -"nMw" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/ordnance{ - dir = 8; - pixel_x = 30 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "nMB" = ( /turf/open/floor/iron, /area/station/science/ordnance/testlab) @@ -42390,13 +42258,6 @@ /obj/structure/fluff/tram_rail/electric, /turf/open/openspace, /area/station/hallway/primary/tram/center) -"nSR" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/plumbing/input{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "nSV" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 @@ -42528,18 +42389,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) -"nVd" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/light_switch/directional/south{ - pixel_x = 10; - pixel_y = -24 - }, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) "nVg" = ( /obj/machinery/door/airlock/hatch{ name = "Radstorm Shelter" @@ -44080,27 +43929,6 @@ }, /turf/open/space/openspace, /area/station/solars/starboard/fore) -"ozH" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/power_store/cell/crap/empty{ - pixel_x = 6; - pixel_y = 10 - }, -/obj/item/stock_parts/power_store/cell/crap/empty{ - pixel_x = 6; - pixel_y = 2 - }, -/obj/item/stock_parts/power_store/cell/crap/empty{ - pixel_x = -7; - pixel_y = 7 - }, -/obj/item/stock_parts/power_store/cell/crap/empty{ - pixel_x = -2; - pixel_y = -2 - }, -/turf/open/floor/iron/smooth, -/area/station/security/mechbay) "ozM" = ( /obj/structure/table/wood/poker, /obj/item/storage/dice, @@ -44878,6 +44706,25 @@ /obj/machinery/light/warm/directional/south, /turf/open/floor/wood, /area/station/service/theater) +"oSi" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/storage/box/lights/mixed, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/emproof, +/obj/item/stock_parts/power_store/cell/emproof, +/obj/machinery/camera/emp_proof{ + dir = 10; + network = list("ss13","engineering"); + c_tag = "Engineering - SMES Misc" + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) "oSl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44903,23 +44750,6 @@ }, /turf/open/floor/iron, /area/station/security/office) -"oSB" = ( -/obj/machinery/camera/directional/west{ - network = list("ss13","Security","cargo"); - c_tag = "Cargo - Security Outpost" - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/button/door/directional/west{ - name = "Cargo Cell Control"; - id = "crgdoor"; - req_access = list("brig_entrance"); - normaldoorcontrol = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/checkpoint/supply) "oTa" = ( /obj/structure/railing{ dir = 9 @@ -45491,6 +45321,13 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) +"pdX" = ( +/obj/machinery/computer/security/telescreen/cmo/directional/north, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/cmo) "pdZ" = ( /obj/machinery/door/airlock/research/glass{ name = "Robotics Lab" @@ -46765,6 +46602,19 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/station/cargo/miningdock/cafeteria) +"pzq" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "pzv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -47220,10 +47070,6 @@ /obj/machinery/light/floor, /turf/open/floor/grass, /area/station/science/lower) -"pHM" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "pHX" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ dir = 1 @@ -47694,6 +47540,16 @@ dir = 10 }, /area/station/service/chapel) +"pPk" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "pPn" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 8 @@ -47741,6 +47597,29 @@ "pQx" = ( /turf/open/misc/asteroid/dug, /area/station/science/explab) +"pQy" = ( +/obj/structure/table, +/obj/item/multitool/circuit{ + pixel_x = -8 + }, +/obj/item/multitool/circuit{ + pixel_x = -4 + }, +/obj/item/multitool/circuit, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/machinery/camera/directional/south{ + network = list("ss13","rd"); + c_tag = "Science - Testing Lab" + }, +/turf/open/floor/iron, +/area/station/science/explab) "pQF" = ( /obj/structure/table, /obj/machinery/reagentgrinder, @@ -47748,6 +47627,18 @@ /obj/effect/turf_decal/tile/green/fourcorners, /turf/open/floor/iron/dark, /area/station/service/hydroponics) +"pQL" = ( +/obj/machinery/camera{ + dir = 9; + network = list("ss13","Security"); + c_tag = "Security - Detective's Office" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/light/warm/directional/north, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/grimy, +/area/station/security/detectives_office) "pQO" = ( /obj/machinery/atmospherics/components/binary/pump/on{ name = "Gas to Cooling Loop"; @@ -47837,13 +47728,6 @@ }, /turf/open/floor/tram, /area/station/hallway/primary/tram/right) -"pTP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/corner, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "pTW" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -48138,22 +48022,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) -"pYU" = ( -/obj/machinery/computer/apc_control{ - dir = 1 - }, -/obj/machinery/requests_console/directional/south{ - name = "Chief Engineer's Request Console"; - department = "Chief Engineer's Desk" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/machinery/computer/security/telescreen/engine{ - dir = 4; - pixel_x = -24 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "pYZ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -48173,13 +48041,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/greater) -"pZg" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance/two, -/obj/item/stock_parts/power_store/cell/high/empty, -/turf/open/floor/iron, -/area/station/cargo/storage) "pZr" = ( /mob/living/basic/mouse/brown/tom, /turf/open/misc/asteroid, @@ -48264,6 +48125,24 @@ "qas" = ( /turf/closed/wall/rust, /area/station/hallway/primary/tram/center) +"qaH" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/structure/cable, +/obj/machinery/light_switch/directional/south{ + pixel_x = 10; + pixel_y = -24 + }, +/obj/machinery/button/door/directional/south{ + id = "crgdoor"; + req_access = list("brig_entrance"); + name = "Cargo Cell Control"; + normaldoorcontrol = 1 + }, +/turf/open/floor/iron, +/area/station/security/checkpoint/supply) "qaM" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -48352,12 +48231,6 @@ /obj/structure/sign/calendar/directional/east, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) -"qcE" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Civilian - Restroom North" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "qcG" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/iron/smooth, @@ -48405,19 +48278,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"qdr" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/turf/open/floor/plating, -/area/station/engineering/engine_smes) "qdy" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -48941,6 +48801,17 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"qlK" = ( +/obj/machinery/camera/directional/west{ + network = list("ss13","Security","cargo"); + c_tag = "Cargo - Security Outpost" + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/checkpoint/supply) "qmc" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 5 @@ -49099,6 +48970,10 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"qoY" = ( +/obj/machinery/portable_atmospherics/pipe_scrubber, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/storage) "qoZ" = ( /obj/item/paper/fluff/ids_for_dummies, /turf/open/misc/asteroid/airless, @@ -49114,6 +48989,14 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/iron, /area/station/security/prison) +"qpr" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger{ + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/command/bridge) "qpu" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 @@ -49449,6 +49332,24 @@ }, /turf/open/floor/iron, /area/station/security/prison/work) +"qwn" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/table, +/obj/item/multitool{ + pixel_x = 8 + }, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -5 + }, +/turf/open/floor/iron, +/area/station/engineering/break_room) "qwq" = ( /obj/structure/table/wood, /obj/item/radio/intercom, @@ -50265,6 +50166,18 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/server) +"qKW" = ( +/obj/structure/table/reinforced, +/obj/machinery/keycard_auth/directional/south, +/obj/item/rcl/pre_loaded, +/obj/machinery/computer/security/telescreen/ce/directional/west, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/item/clipboard, +/obj/item/paper/monitorkey, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "qLD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50502,6 +50415,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/dorms) +"qPQ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 + }, +/obj/structure/closet/radiation, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/engine/directional/south, +/turf/open/floor/iron, +/area/station/engineering/main) "qPV" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -50803,26 +50727,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/tram/left) -"qVL" = ( -/obj/structure/table, -/obj/item/assembly/igniter{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/assembly/igniter{ - pixel_x = 5; - pixel_y = -4 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = -1 - }, -/turf/open/floor/engine, -/area/station/science/xenobiology) "qVN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50944,15 +50848,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/tram/mid) -"qXs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) "qXv" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/machinery/light/directional/south, @@ -51440,14 +51335,6 @@ /obj/effect/landmark/navigate_destination/aiupload, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"reJ" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger{ - pixel_y = 4 - }, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron, -/area/station/command/bridge) "reU" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/camera/directional/south{ @@ -52450,15 +52337,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/storage) -"ryI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) "ryJ" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 1 @@ -52966,6 +52844,16 @@ /obj/structure/sign/clock/directional/north, /turf/open/floor/iron, /area/station/security/prison) +"rKD" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/storage/toolbox/electrical{ + pixel_x = 4; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron/dark, +/area/station/science/explab) "rKL" = ( /obj/machinery/newscaster/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -53669,19 +53557,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms/laundry) -"rVw" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/trimline/white/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "rVD" = ( /obj/effect/turf_decal/trimline/green/corner, /obj/effect/turf_decal/trimline/green/corner{ @@ -53830,7 +53705,7 @@ /area/station/medical/storage) "rYE" = ( /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "rYL" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -54354,7 +54229,7 @@ dir = 5 }, /turf/open/floor/iron/airless, -/area/space) +/area/space/nearstation) "siZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -55011,6 +54886,13 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"stg" = ( +/obj/structure/table/wood, +/obj/structure/sign/flag/nanotrasen/directional/north, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/crap, +/turf/open/floor/wood, +/area/station/command/meeting_room) "stk" = ( /turf/open/floor/iron/smooth, /area/station/maintenance/department/science) @@ -57101,15 +56983,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/commons/dorms) -"tgw" = ( -/obj/machinery/computer/security/telescreen/cmo{ - pixel_y = 32 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) "tgB" = ( /obj/structure/toilet{ pixel_y = 13 @@ -57833,7 +57706,7 @@ /area/station/command/heads_quarters/captain/private) "ttj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "tto" = ( /obj/machinery/hydroponics/constructable, @@ -57869,6 +57742,17 @@ }, /turf/open/floor/iron, /area/station/cargo/miningdock) +"ttS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/preopen, +/obj/item/stock_parts/power_store/cell/empty, +/obj/effect/spawner/random/engineering/flashlight, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "tuf" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/table, @@ -58284,12 +58168,7 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "tBo" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron{ - amount = 10 - }, -/obj/item/electropack, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "tBu" = ( /obj/effect/decal/cleanable/dirt, @@ -58354,9 +58233,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"tCf" = ( -/turf/open/misc/asteroid/airless, -/area/space) "tCi" = ( /turf/open/floor/iron/dark, /area/station/service/chapel/monastery) @@ -58457,7 +58333,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 4 }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "tED" = ( /obj/effect/turf_decal/tile/neutral/tram, @@ -59563,21 +59439,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/tram/right) -"tYe" = ( -/obj/structure/table/reinforced, -/obj/machinery/keycard_auth/directional/south, -/obj/item/rcl/pre_loaded, -/obj/machinery/computer/security/telescreen/ce{ - dir = 4; - pixel_x = -24 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/item/clipboard, -/obj/item/paper/monitorkey, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "tYp" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/rd) @@ -59946,6 +59807,15 @@ "ufO" = ( /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"ugd" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "ugf" = ( /obj/structure/bed{ dir = 8 @@ -61721,16 +61591,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/engine_smes) -"uGJ" = ( -/obj/structure/table/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/machinery/computer/security/telescreen{ - name = "Test Chamber Monitor"; - pixel_y = 2; - network = list("xeno") - }, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology) "uGL" = ( /obj/structure/bed/medical/emergency, /obj/effect/turf_decal/bot, @@ -65426,35 +65286,12 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/ai) -"vTE" = ( -/obj/machinery/camera{ - dir = 9; - network = list("ss13","Security"); - c_tag = "Security - Detective's Office" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/light/warm/directional/north, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) "vTF" = ( /obj/structure/tank_dispenser{ pixel_x = -1 }, /turf/open/floor/iron, /area/station/engineering/atmos) -"vTH" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/vault{ - pixel_y = 30 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/qm) "vTZ" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 8 @@ -66417,6 +66254,19 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel/monastery) +"wnM" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/turf/open/floor/plating, +/area/station/engineering/engine_smes) "wnP" = ( /obj/machinery/door/airlock/hatch{ name = "Emergency Exit" @@ -66585,10 +66435,27 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"wrz" = ( +/obj/structure/rack, +/obj/structure/table, +/obj/machinery/computer/security/telescreen/test_chamber/directional/north, +/obj/item/storage/box/beakers{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/grenade/chem_grenade{ + pixel_x = -7; + pixel_y = 7 + }, +/obj/item/grenade/chem_grenade{ + pixel_x = -7; + pixel_y = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/explab) "wrJ" = ( /obj/structure/railing{ - dir = 4; - layer = 3.1 + dir = 4 }, /obj/machinery/netpod, /turf/open/floor/catwalk_floor/iron_dark, @@ -66919,6 +66786,10 @@ "wyd" = ( /turf/closed/wall, /area/station/medical/medbay/lobby) +"wye" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/engine, +/area/station/science/xenobiology) "wyf" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -67113,6 +66984,27 @@ /obj/structure/reagent_dispensers/foamtank, /turf/open/floor/iron, /area/station/engineering/atmos) +"wAH" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/stock_parts/power_store/cell/crap/empty{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/stock_parts/power_store/cell/crap/empty{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/stock_parts/power_store/cell/crap/empty{ + pixel_x = -7; + pixel_y = 7 + }, +/obj/item/stock_parts/power_store/cell/crap/empty{ + pixel_x = -2; + pixel_y = -2 + }, +/turf/open/floor/iron/smooth, +/area/station/security/mechbay) "wAI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -67522,7 +67414,7 @@ "wIP" = ( /obj/structure/lattice, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "wIT" = ( /obj/structure/chair/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68452,10 +68344,6 @@ /obj/structure/railing, /turf/open/floor/iron, /area/station/cargo/miningfoundry) -"xdw" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) "xdx" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -69331,12 +69219,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"xut" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Civilian - Restroom South" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "xuA" = ( /obj/structure/closet/secure_closet/medical2, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -69664,7 +69546,6 @@ /area/station/cargo/storage) "xAM" = ( /obj/machinery/elevator_control_panel{ - layer = 3.1; pixel_y = 2; linked_elevator_id = "tram_xeno_lift"; preset_destination_names = list("2"="Lower Deck", "3"="Upper Deck") @@ -69828,6 +69709,14 @@ "xDQ" = ( /turf/closed/wall, /area/station/security/processing) +"xDX" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/pipe_scrubber, +/turf/open/floor/iron, +/area/station/engineering/atmos) "xEo" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/captain) @@ -69896,6 +69785,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/security/courtroom/holding) +"xFp" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine, +/area/station/science/xenobiology) "xFs" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -70481,7 +70374,7 @@ "xRm" = ( /obj/structure/lattice, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "xRn" = ( /turf/open/floor/plating, /area/station/hallway/secondary/service) @@ -85114,12 +85007,12 @@ apC apC veV veV -qcE +hAD hAD veV pdr kMD -xut +hAD veV veV apC @@ -87712,10 +87605,10 @@ jcT jcT ncE aek -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm fYW vXM vXM @@ -89512,10 +89405,10 @@ ncE jcT jcT aek -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm fYW vXM vXM @@ -92340,10 +92233,10 @@ jcT jcT ncE aek -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm fYW fYW fYW @@ -92600,7 +92493,7 @@ aac aac aac vXM -pHM +xRm vXM vXM vXM @@ -92610,7 +92503,7 @@ vXM vXM vXM vXM -pHM +xRm fYW fYW fYW @@ -92857,7 +92750,7 @@ aac aac aac vXM -pHM +xRm vXM vXM vXM @@ -92867,14 +92760,14 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM vXM vXM vXM -pHM +xRm vXM fYW vXM @@ -93114,9 +93007,9 @@ jcT jcT aac aek -pHM -pHM -pHM +xRm +xRm +xRm rWa vXM vXM @@ -93124,14 +93017,14 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -93375,12 +93268,12 @@ vXM rWa vXM qdd -pHM -pHM +xRm +xRm rWa -pHM -pHM -pHM +xRm +xRm +xRm rWa vXM vXM @@ -93388,7 +93281,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -93639,17 +93532,17 @@ vXM rWa vXM qdd -pHM -pHM +xRm +xRm rWa -pHM -pHM -pHM +xRm +xRm +xRm rWa -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm fYW vXM vXM @@ -94656,12 +94549,12 @@ ncE ncE aac aek -pHM -pHM -pHM +xRm +xRm +xRm rWa -pHM -pHM +xRm +xRm qdd vXM rWa @@ -94916,16 +94809,16 @@ aac aac vXM vXM -pHM +xRm vXM vXM rWa -pHM -pHM -pHM +xRm +xRm +xRm rWa -pHM -pHM +xRm +xRm qdd vXM rWa @@ -95173,25 +95066,25 @@ aac aac aac aac -pHM +xRm vXM vXM vXM vXM vXM vXM -pHM +xRm vXM vXM rWa -pHM -pHM -pHM +xRm +xRm +xRm rWa -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm fYW vXM vXM @@ -95437,14 +95330,14 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -95701,7 +95594,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -95958,7 +95851,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -96215,7 +96108,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -97992,9 +97885,9 @@ aak aak aak aak -pHM -pHM -pHM +xRm +xRm +xRm aak aak aak @@ -99026,7 +98919,7 @@ aeL aeL aeL aeJ -pHM +xRm aak aaN igy @@ -99252,7 +99145,7 @@ jIG jHb tPW tPW -mgK +oSi jIG abM abM @@ -99273,7 +99166,7 @@ vOU ney vNH aen -pHM +xRm aey aey aey @@ -99283,7 +99176,7 @@ aeL aeL aeL aeH -pHM +xRm aak aak amq @@ -99530,7 +99423,7 @@ dnE ney vNH aak -pHM +xRm aey aey aey @@ -99540,7 +99433,7 @@ aeL aeL aeL aeJ -pHM +xRm aak aaN igy @@ -99797,7 +99690,7 @@ aeL aeL aeL aeH -pHM +xRm aak aaa aaa @@ -100015,7 +99908,7 @@ mOW iwV nav fEK -bmd +ugd pkp jYz kSp @@ -100054,7 +99947,7 @@ aeL aeL aeL aeJ -pHM +xRm aak aaa aaa @@ -100188,19 +100081,19 @@ vXM vXM vXM cAd -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm aai aac aac @@ -100531,7 +100424,7 @@ bUj kdb yih pkp -qdr +wnM ifX iRe wJt @@ -101040,7 +100933,7 @@ abM jnq jIy tsa -rVw +pzq hJa kdb msU @@ -101576,10 +101469,10 @@ lku oxs sna gRQ -hrq +fXX cuQ arO -arT +qPQ qHs asA bWN @@ -101733,19 +101626,19 @@ vXM vXM vXM cAd -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm aai aac aac @@ -103117,7 +103010,7 @@ kHR tga rnf xBD -tYe +qKW sHH sHH sHH @@ -103376,7 +103269,7 @@ pTl ozd eOP wGk -pYU +hDF sHH ydk qHs @@ -103874,7 +103767,7 @@ ixT gYI cgR ial -jCi +qwn amV mvy iXQ @@ -103884,7 +103777,7 @@ dor fSp vKv roB -kXU +mzi iHK bAK jsW @@ -104151,7 +104044,7 @@ sHH sHH hZr hZr -bpl +xDX mRs jaW mAx @@ -104162,7 +104055,7 @@ kgg eEp hzQ qHs -pHM +xRm aeV aeV prq @@ -104408,7 +104301,7 @@ rvh jUz ivk hZr -bpl +xDX mRs woR mAx @@ -105185,7 +105078,7 @@ mfB qga exl oNq -pHM +xRm ahD fKg hVy @@ -106141,7 +106034,7 @@ pCM kzx oSl kzx -bJN +coV alg aes khE @@ -107241,7 +107134,7 @@ ssw fja cPD oNq -pHM +xRm ahD gMi hNI @@ -107396,9 +107289,9 @@ vXM vXM vXM fYW -pHM -pHM -pHM +xRm +xRm +xRm aac aam hlS @@ -107510,8 +107403,8 @@ aaa aaa aac aai -pHM -pHM +xRm +xRm rge vXM vXM @@ -107755,7 +107648,7 @@ wIY pKo vaK hZr -pHM +xRm fjQ fjQ fjQ @@ -108012,7 +107905,7 @@ hZr hZr lCk hZr -pHM +xRm hZr vXM mQi @@ -108249,19 +108142,19 @@ aaa abM abM wQP -pHM +xRm oFH -pHM +xRm bWv -pHM +xRm oFH -pHM +xRm bWv -pHM +xRm oFH -pHM +xRm bWv -pHM +xRm oFH nYX jUW @@ -108269,7 +108162,7 @@ mHw orh uxn oNq -pHM +xRm hZr aaa oEf @@ -108279,8 +108172,8 @@ aac aac vXM vXM -pHM -pHM +xRm +xRm rge vXM vXM @@ -109047,8 +108940,8 @@ hYn aac aac vXM -pHM -pHM +xRm +xRm rge vXM vXM @@ -109453,9 +109346,9 @@ vXM vXM vXM fYW -pHM -pHM -pHM +xRm +xRm +xRm aac aam hlS @@ -110989,12 +110882,12 @@ vXM fYW vXM vXM -pHM +xRm vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -111246,12 +111139,12 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM vXM -pHM +xRm vXM vXM aac @@ -111354,7 +111247,7 @@ pts gEs nXQ rnA -hBY +mjl atX wAQ qWU @@ -111503,12 +111396,12 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM vXM -pHM +xRm vXM vXM aac @@ -111756,18 +111649,18 @@ vXM vXM vXM fYW -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm bwp -pHM -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm +xRm bwp -pHM +xRm aai aac aac @@ -113298,20 +113191,20 @@ vXM vXM vXM fYW -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm bwp -pHM -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm +xRm bwp -pHM -pHM -pHM +xRm +xRm +xRm aai hlS hlS @@ -113559,14 +113452,14 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM vXM vXM vXM -pHM +xRm vXM vXM aac @@ -113816,14 +113709,14 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM vXM vXM vXM -pHM +xRm vXM vXM aac @@ -114073,14 +113966,14 @@ vXM fYW vXM vXM -pHM +xRm vXM vXM vXM vXM vXM vXM -pHM +xRm vXM vXM aac @@ -115623,9 +115516,9 @@ vXM vXM vXM fYW -pHM -pHM -pHM +xRm +xRm +xRm aac aac aam @@ -117680,9 +117573,9 @@ vXM vXM vXM fYW -pHM -pHM -pHM +xRm +xRm +xRm aac aac aac @@ -117812,7 +117705,7 @@ vXM rxw rxw vXM -pHM +xRm vXM vXM vXM @@ -117823,7 +117716,7 @@ vXM vXM vXM vXM -pHM +xRm vXM rxw rxw @@ -118069,7 +117962,7 @@ rxw rxw vXM vXM -pHM +xRm oqp oqp oqp @@ -118080,7 +117973,7 @@ oqp oqp oqp oqp -pHM +xRm vXM vXM rxw @@ -118286,7 +118179,7 @@ qVr qVr kkx cJP -qXs +lxd mLE dGs dGs @@ -118578,7 +118471,7 @@ vXM vXM vXM vXM -pHM +xRm vXM oqp oqp @@ -118855,7 +118748,7 @@ mYt oqp oqp oqp -pHM +xRm rxw vXM vXM @@ -119036,7 +118929,7 @@ cJS nhj cVU oRz -klq +pQy sQZ nhj prI @@ -119290,7 +119183,7 @@ owO owO owO cJS -fcZ +rKD cVU cFW cFW @@ -119547,7 +119440,7 @@ sQZ sQZ sQZ sQZ -kYl +wrz hIY tVK vIF @@ -119587,22 +119480,22 @@ aaa aaa aaa aaa -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm xvl xvl xvl @@ -120098,25 +119991,25 @@ vwd pRm pRm pRm -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm dBj wXI jqs @@ -120345,7 +120238,7 @@ lxW iix qQa vtd -hqx +hGd iGF xkg tXA @@ -120548,8 +120441,8 @@ aac aac aac aai -pHM -pHM +xRm +xRm vle aaS aaa @@ -120612,25 +120505,25 @@ aGY pRm pRm pRm -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm dBj fMK fMK @@ -121124,27 +121017,27 @@ hJl iix iix iix -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm +xRm xvl xvl xvl @@ -121939,7 +121832,7 @@ mYt oqp oqp oqp -pHM +xRm rxw vXM vXM @@ -122125,7 +122018,7 @@ dfz mpd lEt glc -pHM +xRm pAT cHH bNp @@ -122176,7 +122069,7 @@ vXM vXM vXM vXM -pHM +xRm vXM oqp oqp @@ -122382,7 +122275,7 @@ dfz txW iMt glc -pHM +xRm hkN gIj loa @@ -122695,7 +122588,7 @@ rxw rxw vXM vXM -pHM +xRm oqp oqp oqp @@ -122706,7 +122599,7 @@ oqp oqp oqp oqp -pHM +xRm vXM vXM rxw @@ -122898,7 +122791,7 @@ aaa aaa aaa dfz -xdw +qoY ure bKT bqU @@ -122952,7 +122845,7 @@ vXM rxw rxw vXM -pHM +xRm vXM vXM vXM @@ -122963,7 +122856,7 @@ vXM vXM vXM vXM -pHM +xRm vXM rxw rxw @@ -123117,11 +123010,11 @@ aaP aaQ aac aaS -pHM -pHM -pHM -pHM -pHM +xRm +xRm +xRm +xRm +xRm aaS aaa aaa @@ -123370,7 +123263,7 @@ vXM vXM vXM vXM -pHM +xRm aaH aac aac @@ -123619,7 +123512,7 @@ aaa aaa aaa aaH -pHM +xRm vXM vXM vXM @@ -123627,7 +123520,7 @@ vXM vXM vXM vXM -pHM +xRm aaH aac aac @@ -123876,7 +123769,7 @@ aaa aaa aaa aaI -pHM +xRm vXM vXM vXM @@ -123884,7 +123777,7 @@ vXM vXM vXM vXM -pHM +xRm aaI aac aac @@ -124133,7 +124026,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -124141,7 +124034,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM aac @@ -124188,7 +124081,7 @@ kNE nMB qAl nMB -ryI +bGP frV wco lwt @@ -124390,7 +124283,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -124398,7 +124291,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM aac @@ -124647,7 +124540,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -124655,7 +124548,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -124700,7 +124593,7 @@ ign olR vvF vjA -nMw +pPk dWM ign ign @@ -124904,7 +124797,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -124912,7 +124805,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -125161,7 +125054,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -125169,7 +125062,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -125418,7 +125311,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -125426,7 +125319,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -125469,9 +125362,9 @@ aac aac aac aac -pHM +xRm vXM -pHM +xRm aac aac vXM @@ -125675,7 +125568,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -125683,7 +125576,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -125726,9 +125619,9 @@ vXM aac aac aac -pHM +xRm vXM -pHM +xRm aac aac vXM @@ -125932,7 +125825,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -125940,7 +125833,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -125983,9 +125876,9 @@ vXM vXM aac vXM -pHM +xRm vXM -pHM +xRm aac vXM vXM @@ -126189,7 +126082,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -126197,7 +126090,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -126240,9 +126133,9 @@ vXM vXM vXM vXM -pHM -pHM -pHM +xRm +xRm +xRm vXM vXM vXM @@ -126446,7 +126339,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -126454,7 +126347,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -126497,9 +126390,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -126703,7 +126596,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -126711,7 +126604,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -126754,9 +126647,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -126960,7 +126853,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -126968,7 +126861,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -127011,9 +126904,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -127217,7 +127110,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -127225,7 +127118,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -127268,9 +127161,9 @@ vXM vXM vXM vXM -pHM -pHM -pHM +xRm +xRm +xRm vXM vXM vXM @@ -127474,7 +127367,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -127482,7 +127375,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -127525,9 +127418,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -127731,7 +127624,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -127739,7 +127632,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -127782,9 +127675,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -127988,7 +127881,7 @@ vXM vXM vXM vXM -pHM +xRm vXM vXM vXM @@ -128039,9 +127932,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -128296,9 +128189,9 @@ vXM vXM vXM vXM -pHM -pHM -pHM +xRm +xRm +xRm vXM vXM vXM @@ -128553,9 +128446,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM fjj vXM @@ -128810,9 +128703,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -129067,9 +128960,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -129324,9 +129217,9 @@ vXM vXM vXM vXM -pHM -pHM -pHM +xRm +xRm +xRm vXM vXM vXM @@ -129581,9 +129474,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -129838,9 +129731,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -130095,9 +129988,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -130352,9 +130245,9 @@ vXM vXM vXM vXM -pHM -pHM -pHM +xRm +xRm +xRm vXM vXM vXM @@ -130609,9 +130502,9 @@ vXM vXM vXM vXM -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -130866,9 +130759,9 @@ vXM aaa aaa aaa -pHM +xRm vXM -pHM +xRm vXM vXM vXM @@ -131123,9 +131016,9 @@ aaa aaa aaa aaa -pHM +xRm vXM -pHM +xRm vXM vXM aaa @@ -139306,7 +139199,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -139563,7 +139456,7 @@ pMW pMW cAd pMW -avE +wIP pMW pMW pMW @@ -139583,7 +139476,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -139818,9 +139711,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -139840,7 +139733,7 @@ pMW pMW pMW pMW -avE +wIP pMW cAd pMW @@ -140075,9 +139968,9 @@ pMW pMW pMW pMW -avE -avE -avE +wIP +wIP +wIP pMW pMW pMW @@ -140097,9 +139990,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -140334,7 +140227,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -140354,9 +140247,9 @@ pMW pMW pMW pMW -avE -avE -avE +wIP +wIP +wIP pMW pMW pMW @@ -140591,7 +140484,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -140611,7 +140504,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -140848,7 +140741,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -140868,7 +140761,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -141105,7 +140998,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -141125,7 +141018,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -141876,7 +141769,7 @@ pMW pMW pMW pMW -pHM +xRm pMW pMW pMW @@ -141896,7 +141789,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -142133,7 +142026,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -142153,7 +142046,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -142904,8 +142797,8 @@ pMW pMW pMW pMW -avE -avE +wIP +wIP rOy rOy oKl @@ -142923,8 +142816,8 @@ pMW oKl rOy rOy -avE -avE +wIP +wIP pMW pMW pMW @@ -143165,7 +143058,7 @@ oKl pMW pMW pMW -avE +wIP pMW pMW pMW @@ -143177,7 +143070,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -143679,7 +143572,7 @@ oKl pMW pMW pMW -avE +wIP pMW pMW pMW @@ -143691,7 +143584,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -143932,8 +143825,8 @@ pMW pMW pMW pMW -avE -pHM +wIP +xRm rOy rOy rOy @@ -143951,8 +143844,8 @@ oKl rOy rOy rOy -pHM -avE +xRm +wIP pMW pMW pMW @@ -143963,7 +143856,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -144220,7 +144113,7 @@ pMW oKl rOy rOy -pHM +xRm rOy rOy pMW @@ -144451,7 +144344,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -144461,7 +144354,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -144474,12 +144367,12 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -144703,12 +144596,12 @@ pMW pMW pMW pMW -avE +wIP tPE tPE tPE tPE -avE +wIP pMW pMW pMW @@ -144718,12 +144611,12 @@ pMW pMW pMW pMW -avE +wIP tPE tPE tPE tPE -avE +wIP pMW pMW pMW @@ -144731,12 +144624,12 @@ pMW pMW pMW pMW -avE +wIP tPE tPE tPE tPE -avE +wIP pMW pMW pMW @@ -144960,7 +144853,7 @@ oKl oKl oKl oKl -avE +wIP tPE qnv tld @@ -144980,7 +144873,7 @@ nmY cPH dfL nmY -avE +wIP pMW pMW pMW @@ -144988,7 +144881,7 @@ pMW pMW pMW pMW -avE +wIP nmY hng xnH @@ -145212,7 +145105,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -145469,7 +145362,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -150854,7 +150747,7 @@ fLY tFk kcV xNL -ozH +wAH tFk aaa aaa @@ -151122,8 +151015,8 @@ hzN hzN hzN hzN -dGP -nxM +kQP +asI rcx hzN xQv @@ -152979,7 +152872,7 @@ rAS xmZ qXS epP -aQL +iiE jFJ jFJ jFJ @@ -153498,10 +153391,10 @@ jFJ aHp qgS jFJ -avE -avE -avE -avE +wIP +wIP +wIP +wIP pMW pMW pMW @@ -154012,10 +153905,10 @@ jYe gnr bIJ jFJ -avE -avE -avE -avE +wIP +wIP +wIP +wIP pMW pMW pMW @@ -154718,7 +154611,7 @@ mwg ceF avX qyZ -knq +stg joF kSZ bvq @@ -156237,7 +156130,7 @@ aaa aaa aaa dEv -ggW +jlQ sne ubk hgn @@ -156532,7 +156425,7 @@ aQO rup wzm rAh -reJ +qpr eUy mgq nhV @@ -156839,8 +156732,8 @@ vCZ wAA vCZ vCZ -avE -avE +wIP +wIP esT mAG tMW @@ -156848,9 +156741,9 @@ byH tMW tMW esT -avE -avE -avE +wIP +wIP +wIP kFx pMW pMW @@ -157867,8 +157760,8 @@ aaa aaa aaa aai -avE -avE +wIP +wIP esT tMW tMW @@ -157876,10 +157769,10 @@ sOg mAG mAG esT -avE -avE -avE -avE +wIP +wIP +wIP +wIP kFx kFx kFx @@ -158136,7 +158029,7 @@ sdb pMW pMW pMW -avE +wIP pMW pMW pMW @@ -158146,7 +158039,7 @@ pMW pMW pMW pMW -avE +wIP kFx kFx kFx @@ -158302,7 +158195,7 @@ wbH wbH qPI cQM -gRO +bTI ppr gki cGg @@ -158393,7 +158286,7 @@ sdb pMW pMW pMW -avE +wIP pMW pMW pMW @@ -158403,14 +158296,14 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW pMW pMW pMW -avE +wIP pMW kFx pMW @@ -158586,9 +158479,9 @@ kOr cvf iUw moq -aBZ +eyh xEo -aCE +mGB aCS pIl gdF @@ -158660,14 +158553,14 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -158845,7 +158738,7 @@ aBt crE tEl xEo -vTE +pQL kyq pIl dUl @@ -158924,7 +158817,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -159182,10 +159075,10 @@ sdb sdb sdb esT -avE -avE -avE -avE +wIP +wIP +wIP +wIP kFx pMW pMW @@ -160724,10 +160617,10 @@ sdb sdb sdb esT -avE -avE -avE -avE +wIP +wIP +wIP +wIP kFx pMW pMW @@ -160980,7 +160873,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -161237,7 +161130,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -161494,7 +161387,7 @@ pMW pMW pMW pMW -avE +wIP pMW kFx pMW @@ -166594,7 +166487,7 @@ gnM apC abM mBq -tgw +pdX kHy fxM qUL @@ -172932,10 +172825,10 @@ pMW pMW pMW kFx -avE -avE -avE -avE +wIP +wIP +wIP +wIP aTY iCA fZL @@ -174540,7 +174433,7 @@ afy age afy afy -agm +abW aaa abM abM @@ -174989,10 +174882,10 @@ pMW pMW pMW kFx -avE -avE -avE -avE +wIP +wIP +wIP +wIP aTY iCA iCA @@ -176525,12 +176418,12 @@ pMW kFx pMW pMW -avE +wIP pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -176782,12 +176675,12 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -177039,12 +176932,12 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -177292,10 +177185,10 @@ pMW pMW pMW kFx -avE -avE -avE -avE +wIP +wIP +wIP +wIP aTY uRv uRv @@ -178834,10 +178727,10 @@ pMW pMW pMW kFx -avE -avE -avE -avE +wIP +wIP +wIP +wIP aTY uRv uRv @@ -179095,14 +178988,14 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -179352,14 +179245,14 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -179609,14 +179502,14 @@ pMW kFx pMW pMW -avE +wIP pMW pMW pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -179919,7 +179812,7 @@ abM abM abM usY -fSY +kzq tJR usY abM @@ -180177,7 +180070,7 @@ abM abM usY kiT -iYa +jvW usY usY usY @@ -180203,7 +180096,7 @@ ixu eeE muZ gSF -njk +egx uje dLO dLO @@ -180435,8 +180328,8 @@ lZW usY mgh uYZ -oSB -nVd +qlK +qaH vUE bMb kdz @@ -180940,7 +180833,7 @@ uax uax mur qza -vTH +mhJ aAJ riJ aAJ @@ -180997,8 +180890,8 @@ aaa aaa aaa qVr -gFm -hwQ +wye +biJ soq abM abM @@ -181159,11 +181052,11 @@ pMW pMW pMW kFx -avE -avE -avE -avE -avE +wIP +wIP +wIP +wIP +wIP aTY iCA iCA @@ -181221,7 +181114,7 @@ mEd kuq aHq lfQ -jVK +hks aHQ tFB vnu @@ -182020,8 +181913,8 @@ umu qVr qVr mFh -bfH -bfH +tBo +tBo qVr gYw cHY @@ -182276,13 +182169,13 @@ mAL nKU qVr tEx -bfH -bfH -bfH +tBo +tBo +tBo qVr -pNa -uGJ -pTP +cdM +eiy +itq qyQ qyQ gun @@ -182472,7 +182365,7 @@ cdy iWz hFV gDr -pZg +iAr uax axG bTx @@ -182533,10 +182426,10 @@ bmz pIx qVr ttj -bfH -bfH -bfH -bfH +tBo +tBo +tBo +tBo pNa qNk xmY @@ -182791,7 +182684,7 @@ pHX qVr cAK ttj -bhf +ttj ttj ttj nzg @@ -183046,10 +182939,10 @@ pbH kBo kJA qVr -bfH -bfH -bfH -bfH +tBo +tBo +tBo +tBo kGv qSS cFQ @@ -183216,12 +183109,12 @@ pMW pMW pMW kFx -avE -avE -avE -avE -avE -avE +wIP +wIP +wIP +wIP +wIP +wIP aTY iCA fZL @@ -183298,15 +183191,15 @@ kye tes kye kye -nwE +lHJ pbH mAL nKU qVr -bfH -bfH -bfH -bfH +tBo +tBo +tBo +tBo qVr jqK ijR @@ -183350,14 +183243,14 @@ rxw rxw pMW pMW -avE +wIP pMW pMW pMW bGh pMW pMW -avE +wIP pMW pMW rxw @@ -183561,8 +183454,8 @@ vSa cJR qVr qVr -iNs -qVL +tBo +tBo tBo qVr gYw @@ -183859,7 +183752,7 @@ pMW pMW pMW pMW -avE +wIP pMW gFf gFf @@ -184391,7 +184284,7 @@ oMI gFf gFf gFf -avE +wIP rxw pMW pMW @@ -184595,8 +184488,8 @@ aaa aaa aaa qVr -nSR -hwQ +xFp +biJ qVr aaa aaa @@ -185122,23 +185015,23 @@ aaa aaa aaa aaS -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP vUu vUu lwj @@ -185303,7 +185196,7 @@ udQ udQ aWL tft -hqw +ttS qyg utY fHV @@ -185381,7 +185274,7 @@ aaa pMW pMW pMW -avE +wIP pMW pMW pMW @@ -185391,7 +185284,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -185638,7 +185531,7 @@ aaa pMW pMW pMW -avE +wIP pMW pMW pMW @@ -185648,7 +185541,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -185892,24 +185785,24 @@ aaa aaa aaa aaS -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP xSS lwj tqN @@ -186157,7 +186050,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -186414,7 +186307,7 @@ pMW pMW pMW pMW -avE +wIP pMW pMW pMW @@ -186659,28 +186552,28 @@ aac aaa aaa aaS -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE -avE +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP +wIP vUu vUu lwj @@ -187475,7 +187368,7 @@ oMI gFf gFf gFf -avE +wIP rxw pMW pMW @@ -187971,7 +187864,7 @@ pMW pMW pMW pMW -avE +wIP pMW gFf gFf @@ -188490,14 +188383,14 @@ rxw rxw pMW pMW -avE +wIP pMW pMW pMW ylt pMW pMW -avE +wIP pMW pMW rxw @@ -191006,7 +190899,7 @@ pMW pMW pMW iLP -tCf +aac iLP pMW pMW @@ -191262,9 +191155,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -191519,9 +191412,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -191776,9 +191669,9 @@ pMW pMW pMW pMW -avE -avE -avE +wIP +wIP +wIP pMW pMW pMW @@ -192033,9 +191926,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -192290,9 +192183,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -192547,9 +192440,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -192804,9 +192697,9 @@ pMW pMW pMW pMW -avE -avE -avE +wIP +wIP +wIP pMW pMW pMW @@ -193061,9 +192954,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -193318,9 +193211,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -193575,9 +193468,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -193832,9 +193725,9 @@ pMW pMW pMW pMW -avE -avE -avE +wIP +wIP +wIP pMW pMW pMW @@ -194089,9 +193982,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -194346,9 +194239,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -194603,9 +194496,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW pMW @@ -194860,9 +194753,9 @@ pMW pMW pMW pMW -avE -avE -avE +wIP +wIP +wIP pMW pMW pMW @@ -195117,9 +195010,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP pMW pMW aaa @@ -195374,9 +195267,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP aac aaa aac @@ -195631,9 +195524,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP aac aac aac @@ -195888,9 +195781,9 @@ pMW pMW pMW pMW -avE -avE -avE +wIP +wIP +wIP aac aac aac @@ -196145,9 +196038,9 @@ pMW pMW pMW pMW -avE +wIP pMW -avE +wIP aac aac aaa @@ -196402,9 +196295,9 @@ pMW aac aac aac -avE +wIP pMW -avE +wIP aaa aaa aaa @@ -196659,9 +196552,9 @@ aac aac aac aac -avE +wIP pMW -avE +wIP aaa aaa aaa diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index 7cd10a421e4bb..372095edd92d0 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -129,18 +129,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/command/gateway) -"abP" = ( -/obj/effect/turf_decal/caution/stand_clear/red, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "ordstorage" - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) "abX" = ( /obj/machinery/door/airlock/public/glass{ name = "Library" @@ -593,6 +581,19 @@ }, /turf/open/floor/iron/textured_large, /area/station/medical/treatment_center) +"ajs" = ( +/obj/machinery/door/poddoor/shutters/window{ + id = "ordauxgarage"; + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/asteroid/line, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "ajK" = ( /obj/machinery/door/firedoor, /obj/effect/landmark/navigate_destination/bar, @@ -978,6 +979,14 @@ "apQ" = ( /turf/closed/wall, /area/station/service/library) +"apW" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/structure/closet_empty/crate, +/obj/item/stock_parts/power_store/cell, +/obj/structure/broken_flooring, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plating, +/area/station/cargo/warehouse) "aqa" = ( /obj/structure/railing, /obj/machinery/door/firedoor/border_only, @@ -1205,6 +1214,16 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/textured_large, /area/station/service/hydroponics/garden) +"auA" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "auB" = ( /turf/open/floor/engine, /area/station/medical/chemistry) @@ -1340,7 +1359,7 @@ "awf" = ( /obj/machinery/igniter/incinerator_ordmix, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "awi" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, @@ -1691,15 +1710,6 @@ }, /turf/open/openspace, /area/station/security/prison/shower) -"aCh" = ( -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) "aCp" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -2032,7 +2042,7 @@ dir = 8 }, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "aIc" = ( /obj/structure/table, /obj/effect/spawner/random/bureaucracy/paper, @@ -2246,7 +2256,6 @@ "aKU" = ( /obj/effect/landmark/start/ai/secondary, /obj/machinery/door/window/brigdoor/left/directional/north{ - layer = 4.1; name = "Tertiary AI Core Access"; req_access = list("ai_upload"); pixel_y = 3 @@ -2282,17 +2291,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/cargo/warehouse/upper) -"aLF" = ( -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/door/airlock/research{ - name = "Ordnance Auxiliary Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/simple/green/hidden, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "aLH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2368,6 +2366,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/station/commons/lounge) +"aMS" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "aMU" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/flora/bush/fullgrass/style_random, @@ -3326,7 +3329,7 @@ /obj/effect/decal/cleanable/blood/footprints{ dir = 8 }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "bga" = ( /obj/structure/chair/wood{ @@ -3523,18 +3526,6 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"bjK" = ( -/obj/structure/barricade/wooden, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/item/flashlight/glowstick/blue{ - start_on = 1; - light_range = 2 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) "bjM" = ( /obj/effect/turf_decal/tile/brown/opposingcorners{ dir = 1 @@ -3597,12 +3588,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/asteroid) -"blP" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "bme" = ( /obj/structure/sign/warning, /turf/closed/wall/r_wall, @@ -3655,6 +3640,13 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/carpet, /area/station/service/theater) +"bnb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "bnn" = ( /obj/effect/turf_decal/tile/purple/full, /turf/open/floor/iron/dark/smooth_large, @@ -3746,7 +3738,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/airlock/abandoned, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, @@ -4121,10 +4112,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/station/security/detectives_office/private_investigators_office) -"bwC" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "bwQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4477,6 +4464,16 @@ /obj/structure/girder/displaced, /turf/open/misc/asteroid, /area/station/maintenance/central/greater) +"bCr" = ( +/obj/machinery/computer/security/mining{ + dir = 8 + }, +/obj/machinery/keycard_auth/directional/east, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "bCv" = ( /obj/effect/decal/cleanable/blood/old, /obj/item/restraints/handcuffs, @@ -4637,9 +4634,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) -"bFj" = ( -/turf/closed/wall/rock/porous, -/area/station/science/ordnance) "bFw" = ( /obj/machinery/door/window/right/directional/east{ name = "Delivery Door"; @@ -5200,6 +5194,21 @@ }, /turf/open/floor/iron/white, /area/station/medical/exam_room) +"bRl" = ( +/obj/machinery/suit_storage_unit/captain{ + req_access = list("captain") + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/obj/machinery/computer/security/telescreen/minisat/directional/west, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) +"bRD" = ( +/obj/structure/table, +/turf/open/floor/iron/white, +/area/station/science/ordnance/testlab) "bRI" = ( /obj/machinery/rnd/production/techfab/department/medical, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -5216,11 +5225,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"bRZ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/simple/green/hidden, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "bSr" = ( /obj/effect/turf_decal/siding/purple{ dir = 4 @@ -5361,6 +5365,16 @@ dir = 8 }, /area/station/science/xenobiology) +"bUu" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/white, +/area/station/science/lobby) "bUx" = ( /obj/effect/landmark/event_spawn, /obj/effect/decal/cleanable/dirt, @@ -5758,17 +5772,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_dark, /area/station/ai_monitored/turret_protected/aisat_interior) -"cbT" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/command, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/autoname, -/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/any/admin/general, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/emergency_closet) "cca" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6174,9 +6177,7 @@ /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) "ckb" = ( -/obj/effect/turf_decal/siding/dark_blue{ - dir = 2 - }, +/obj/effect/turf_decal/siding/dark_blue, /obj/machinery/holopad, /turf/open/floor/iron/textured_large, /area/station/command/bridge) @@ -6242,6 +6243,15 @@ /obj/item/storage/box/hug/medical, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"clQ" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/door/poddoor/preopen{ + id = "rdoffice"; + name = "Research Director's Shutters" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/command/heads_quarters/rd) "clX" = ( /obj/machinery/seed_extractor, /obj/effect/turf_decal/stripes/line{ @@ -6396,6 +6406,12 @@ dir = 4 }, /area/station/hallway/secondary/exit/departure_lounge) +"cqf" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "cqm" = ( /obj/structure/cable, /obj/machinery/camera/autoname/directional/south{ @@ -6405,6 +6421,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) +"cqt" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/button/door/directional/east{ + name = "shutter control"; + id = "ordauxgarage" + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "cqH" = ( /obj/structure/transit_tube, /obj/structure/lattice, @@ -6604,6 +6631,23 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"ctE" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/white, +/area/station/science/research) "ctL" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/cable, @@ -6736,7 +6780,7 @@ /area/station/maintenance/central/lesser) "cxg" = ( /turf/open/misc/asteroid/airless, -/area/space) +/area/space/nearstation) "cxr" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, @@ -6883,6 +6927,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/cargo/storage) +"cAy" = ( +/obj/structure/table/glass, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -5 + }, +/obj/item/multitool{ + pixel_x = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "cAC" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -6900,7 +6955,7 @@ network = list("ss13","rd") }, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "cAQ" = ( /obj/vehicle/sealed/mecha/ripley/cargo, /obj/effect/decal/cleanable/dirt, @@ -7072,22 +7127,6 @@ /obj/effect/turf_decal/stripes, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) -"cEi" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","rd") - }, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) "cEr" = ( /obj/structure/chair/sofa/bench/right{ dir = 1 @@ -7384,7 +7423,7 @@ "cKD" = ( /mob/living/basic/mining/basilisk, /turf/open/misc/asteroid/airless, -/area/space) +/area/space/nearstation) "cLd" = ( /obj/machinery/oven/range, /obj/machinery/light/directional/north, @@ -7650,14 +7689,6 @@ dir = 4 }, /area/station/science/research) -"cPs" = ( -/obj/machinery/portable_atmospherics/pump, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) "cPt" = ( /turf/closed/wall/r_wall, /area/station/science/lab) @@ -7738,7 +7769,7 @@ dir = 8 }, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "cQK" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -7769,6 +7800,13 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"cQX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/iron/white, +/area/station/science/ordnance/storage) "cRa" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/chair/office{ @@ -7865,6 +7903,13 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"cSI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "cSJ" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/snack, @@ -8314,19 +8359,19 @@ }, /turf/open/floor/carpet/executive, /area/station/command/meeting_room) -"dbA" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 +"dbJ" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ - dir = 4 +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridgec" }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "dbN" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -9014,6 +9059,24 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"dmE" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/white, +/area/station/science/research) "dmH" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -9174,6 +9237,11 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) +"dpf" = ( +/obj/structure/transport/linear/public, +/obj/machinery/light/floor/transport, +/turf/open/floor/plating/elevatorshaft, +/area/station/medical/treatment_center) "dpj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, @@ -9345,7 +9413,6 @@ dir = 4 }, /obj/structure/chair{ - dir = 2; name = "Defense" }, /obj/structure/cable, @@ -9499,6 +9566,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"duB" = ( +/obj/structure/cable, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/prison) "duS" = ( /obj/machinery/duct, /obj/structure/cable, @@ -9658,7 +9731,7 @@ dir = 8 }, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "dyV" = ( /obj/structure/railing{ dir = 1 @@ -10029,9 +10102,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/eva) "dCv" = ( -/obj/structure/railing{ - layer = 3.01 - }, +/obj/structure/railing, /obj/structure/dresser, /obj/machinery/light_switch/directional/west, /turf/open/floor/carpet/red, @@ -10268,6 +10339,22 @@ }, /turf/open/floor/iron/white, /area/station/medical/paramedic) +"dHy" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/cell_charger, +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/camera/autoname/directional/east{ + network = list("ss13","rd") + }, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) "dHL" = ( /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, /obj/effect/turf_decal/tile/yellow{ @@ -10420,10 +10507,9 @@ /turf/open/floor/iron/dark, /area/station/security/execution/education) "dJM" = ( -/obj/structure/table/optable, /obj/item/radio/intercom/directional/east, /obj/effect/decal/cleanable/blood/old, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "dKp" = ( /obj/structure/lattice/catwalk, @@ -10468,18 +10554,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"dLy" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/button/door/directional/south{ - id = "evashutter"; - name = "E.V.A. Storage Shutter Control"; - req_access = list("command") - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) "dLI" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -10500,7 +10574,7 @@ "dLY" = ( /obj/structure/broken_flooring/singular/directional/east, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "dMa" = ( /obj/structure/chair/office, /obj/effect/turf_decal/tile/brown/fourcorners, @@ -10993,28 +11067,6 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central) -"dTV" = ( -/obj/machinery/light/dim/directional/west, -/obj/structure/cable, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/item/holosign_creator/atmos{ - pixel_y = 5 - }, -/obj/structure/table, -/obj/item/holosign_creator/atmos{ - pixel_y = 7 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/upper) "dUb" = ( /obj/machinery/airalarm/directional/west, /obj/item/kirbyplants/random, @@ -11025,7 +11077,7 @@ "dUc" = ( /obj/structure/lattice, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "dUi" = ( /turf/closed/wall/r_wall, /area/station/engineering/lobby) @@ -11189,12 +11241,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/lockers) -"dXh" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/closed/wall, -/area/station/cargo/storage) "dXN" = ( /obj/machinery/door/airlock/research{ name = "Robotics Lab Storage" @@ -11384,22 +11430,6 @@ }, /turf/open/floor/iron, /area/station/engineering/main) -"eaY" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/obj/structure/table, -/obj/item/restraints/handcuffs/cable/yellow, -/obj/item/restraints/handcuffs, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching output from station security cameras."; - name = "Security Camera Monitor"; - network = list("ss13"); - pixel_x = -30; - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "ebi" = ( /obj/structure/curtain/cloth/fancy/mechanical/start_closed{ desc = "A set of curtains serving as a fancy theater backdrop. They can only be opened by a button."; @@ -11474,15 +11504,13 @@ /turf/open/floor/iron/white, /area/station/medical/treatment_center) "ebE" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 2 - }, +/obj/effect/spawner/structure/window/hollow/end, /turf/open/floor/plating, /area/station/security/courtroom) "ebN" = ( /obj/structure/broken_flooring/pile/directional/east, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "ebP" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/effect/mapping_helpers/apc/cell_5k, @@ -11559,6 +11587,7 @@ pixel_x = 3; pixel_y = -2 }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance) "edv" = ( @@ -11655,7 +11684,7 @@ "efL" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "efQ" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -11703,7 +11732,7 @@ dir = 8 }, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "egY" = ( /obj/machinery/light_switch/directional/west, /turf/open/openspace, @@ -11979,6 +12008,11 @@ /obj/structure/door_assembly, /turf/open/misc/asteroid, /area/station/asteroid) +"elG" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "elT" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 1 @@ -11990,12 +12024,6 @@ /obj/machinery/igniter/incinerator_atmos, /turf/open/floor/engine/airless, /area/station/maintenance/disposal/incinerator) -"emb" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) "emf" = ( /obj/structure/window/spawner/directional/south, /obj/structure/window/spawner/directional/north, @@ -12054,6 +12082,18 @@ /obj/structure/stairs/north, /turf/open/floor/iron, /area/station/command/corporate_showroom) +"enX" = ( +/obj/effect/turf_decal/caution/stand_clear/red, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/poddoor/shutters/window/preopen{ + id = "ordstorage" + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/station/science/ordnance/storage) "eon" = ( /obj/effect/spawner/random/structure/chair_comfy{ dir = 4 @@ -12343,6 +12383,24 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"esX" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -8; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/item/borg/upgrade/rename{ + pixel_x = 3; + pixel_y = 18 + }, +/turf/open/floor/iron/dark/textured, +/area/station/science/robotics/lab) "etg" = ( /obj/machinery/shower/directional/north, /obj/effect/turf_decal/tile/green/anticorner/contrasted{ @@ -12391,15 +12449,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) -"etE" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Primary Tool Storage" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/storage/primary) "etI" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/snack, @@ -12509,6 +12558,18 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) +"ewa" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_y = 6 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_y = 3 + }, +/obj/item/stock_parts/power_store/cell/emproof, +/turf/open/floor/iron, +/area/station/engineering/main) "ewr" = ( /obj/effect/spawner/random/trash/botanical_waste, /obj/effect/mapping_helpers/burnt_floor, @@ -12689,17 +12750,6 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/command/heads_quarters/cmo) -"ezH" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron, -/area/station/cargo/storage) "ezL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -13061,17 +13111,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"eFd" = ( -/obj/machinery/door/poddoor/shutters{ - id = "ordauxgarage"; - dir = 1 - }, -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/science/ordnance) "eFj" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -13110,12 +13149,10 @@ /turf/open/floor/iron/textured, /area/station/security/processing) "eFJ" = ( -/obj/structure/table, -/obj/item/biopsy_tool, /obj/machinery/sparker/directional/north{ id = "Xenobio" }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "eFK" = ( /obj/structure/cable, @@ -13186,17 +13223,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/storage/art) -"eGL" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "ordauxgarage" - }, -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/end{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/science/ordnance) "eGN" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -13207,6 +13233,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"eHa" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/east, +/turf/open/floor/iron, +/area/station/command/bridge) "eHc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -13242,8 +13275,7 @@ /area/station/engineering/supermatter/room) "eIo" = ( /obj/structure/statue/sandstone/venus{ - dir = 1; - layer = 3.3 + dir = 1 }, /turf/open/floor/grass, /area/station/science/research) @@ -13354,6 +13386,10 @@ pixel_y = 7 }, /obj/item/pipe_dispenser, +/obj/machinery/power/apc/auto_name/directional/south{ + areastring = "/area/station/science/ordnance/burnchamber" + }, +/obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/ordnance) "eLe" = ( @@ -13556,6 +13592,15 @@ /obj/structure/sign/poster/random/directional/west, /turf/open/floor/plating, /area/station/maintenance/department/medical) +"eQJ" = ( +/obj/structure/rack, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/item/radio/intercom/directional/south, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "eQQ" = ( /obj/machinery/door/firedoor/border_only{ dir = 4 @@ -14073,6 +14118,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"fbN" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, +/obj/item/coin/plasma, +/turf/open/misc/asteroid, +/area/station/maintenance/department/science) "fcH" = ( /obj/structure/frame/computer{ anchored = 1; @@ -14187,6 +14238,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"feR" = ( +/obj/machinery/computer/security/telescreen/ordnance/directional/south, +/turf/open/floor/iron/white, +/area/station/science/ordnance/testlab) "feU" = ( /obj/structure/cable, /obj/machinery/door/airlock/maintenance/external, @@ -14237,6 +14292,19 @@ }, /turf/closed/wall/r_wall, /area/station/engineering/atmos/pumproom) +"ffK" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "ffT" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance/no_decals/two, @@ -14292,20 +14360,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) -"fgZ" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Foyer" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination/engineering, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/lobby) "fhs" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -14413,9 +14467,7 @@ /area/station/construction/mining/aux_base) "fjb" = ( /obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/engine, /area/station/science/xenobiology) "fjg" = ( @@ -14524,7 +14576,7 @@ dir = 8 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "flH" = ( /obj/structure/closet/boxinggloves, /obj/effect/landmark/start/hangover/closet, @@ -14543,17 +14595,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"flW" = ( -/obj/structure/table/wood, -/obj/item/stock_parts/power_store/cell/crap, -/obj/item/clothing/head/collectable/hop{ - name = "novelty HoP hat" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) "flZ" = ( /obj/structure/cable, /obj/structure/disposalpipe/sorting/mail/flip{ @@ -14903,6 +14944,28 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/hallway/primary/central) +"fst" = ( +/obj/machinery/light/dim/directional/west, +/obj/structure/cable, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/item/holosign_creator/atmos{ + pixel_y = 5 + }, +/obj/structure/table, +/obj/item/holosign_creator/atmos{ + pixel_y = 7 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/engineering/atmos/upper) "fsu" = ( /obj/structure/railing{ dir = 1 @@ -14974,7 +15037,7 @@ /obj/effect/decal/cleanable/blood/old{ icon_state = "gib3-old" }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "fsZ" = ( /obj/machinery/door/window/brigdoor/left/directional/south{ @@ -15083,6 +15146,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) +"fuZ" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/white, +/area/station/hallway/secondary/entry) "fvd" = ( /obj/machinery/duct, /obj/effect/turf_decal/tile/dark_green/opposingcorners, @@ -15382,6 +15452,12 @@ /obj/machinery/air_sensor/carbon_tank, /turf/open/floor/engine/co2, /area/station/engineering/atmos) +"fzW" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/engineering/lobby) "fzY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16021,13 +16097,6 @@ }, /turf/open/floor/carpet/purple, /area/station/service/library) -"fKp" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/keycard_auth/directional/north, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) "fKs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -16074,6 +16143,11 @@ }, /turf/open/floor/iron/half, /area/station/security/breakroom) +"fLM" = ( +/obj/structure/transport/linear/public, +/obj/machinery/light/floor/transport, +/turf/open/floor/plating/elevatorshaft, +/area/station/cargo/storage) "fLU" = ( /obj/effect/spawner/random/trash/mess, /obj/effect/mapping_helpers/broken_floor, @@ -16200,6 +16274,10 @@ /obj/effect/landmark/carpspawn, /turf/open/space/openspace, /area/space) +"fOe" = ( +/obj/effect/landmark/carpspawn, +/turf/open/space/openspace, +/area/space/nearstation) "fOi" = ( /obj/effect/turf_decal/stripes{ dir = 8 @@ -16376,6 +16454,18 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron, /area/station/engineering/lobby) +"fQr" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +/obj/effect/mapping_helpers/airalarm/link{ + chamber_id = "ordnancefreezer" + }, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "fQG" = ( /obj/machinery/door/airlock/virology/glass{ name = "Virology Lab"; @@ -16515,26 +16605,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"fSH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/button/door/directional/south{ - id = "capshut"; - pixel_x = -8; - name = "shutter control" - }, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/obj/structure/table/reinforced, -/obj/machinery/keycard_auth/directional/south{ - pixel_y = -24; - pixel_x = 8 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "fSK" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 @@ -16701,21 +16771,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, /area/station/cargo/storage) -"fWa" = ( -/obj/machinery/suit_storage_unit/captain{ - req_access = list("captain") - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 4; - pixel_x = -30; - pixel_y = 1 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "fWp" = ( /obj/effect/turf_decal/siding/white{ dir = 10 @@ -17187,13 +17242,6 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/psychology) -"gez" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron, -/area/station/command/bridge) "geB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17406,18 +17454,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/drone_bay) -"giX" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/table, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_y = 6 - }, -/obj/item/stock_parts/power_store/cell/emproof{ - pixel_y = 3 - }, -/obj/item/stock_parts/power_store/cell/emproof, -/turf/open/floor/iron, -/area/station/engineering/main) "gjo" = ( /obj/structure/cable, /obj/machinery/button/door/directional/east{ @@ -17622,8 +17658,13 @@ /turf/open/floor/iron/dark, /area/station/security/mechbay) "gmm" = ( -/obj/structure/table, -/obj/item/storage/box/monkeycubes, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Blast Door" + }, +/obj/structure/sign/warning/gas_mask/directional/north, /turf/open/floor/engine, /area/station/science/xenobiology) "gms" = ( @@ -17686,6 +17727,16 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"gop" = ( +/obj/effect/landmark/blobstart, +/obj/structure/closet/crate/science{ + opened = 1; + icon_state = "scicrateopen" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "goB" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/blood/tracks, @@ -17819,6 +17870,15 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/lobby) +"grm" = ( +/obj/machinery/door/poddoor/shutters/window{ + dir = 4; + id = "ordauxgarage" + }, +/obj/effect/turf_decal/stripes/asteroid/end, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/station/science/ordnance) "grv" = ( /obj/structure/table/glass, /obj/item/clothing/head/cone{ @@ -17883,14 +17943,12 @@ }, /obj/machinery/button/door/directional/west{ id = "QMLoaddoor"; - layer = 4; name = "Loading Doors"; pixel_y = -8; req_access = list("cargo") }, /obj/machinery/button/door/directional/west{ id = "QMLoaddoor2"; - layer = 4; name = "Loading Doors"; pixel_y = 8; req_access = list("cargo") @@ -17927,6 +17985,9 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) +"gsW" = ( +/turf/closed/wall/rock/porous, +/area/station/science/ordnance) "gtj" = ( /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 4 @@ -18759,6 +18820,41 @@ /obj/machinery/light/small/broken/directional/east, /turf/open/floor/iron/freezer, /area/station/maintenance/department/medical/central) +"gHL" = ( +/obj/structure/table, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/west{ + c_tag = "Science Ordnance Test Lab"; + network = list("ss13","rd") + }, +/obj/item/assembly/prox_sensor{ + pixel_y = 2 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = 9; + pixel_y = -2 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/machinery/requests_console/directional/west{ + department = "Ordnance Test Range"; + name = "Test Range Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/information, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/binoculars{ + pixel_y = -10; + pixel_x = -5 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "gHN" = ( /turf/closed/wall, /area/station/medical/chemistry/minisat) @@ -18879,13 +18975,6 @@ }, /turf/open/floor/plating, /area/station/service/chapel/funeral) -"gKe" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/airalarm/directional/north, -/obj/structure/filingcabinet, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "gKt" = ( /turf/closed/wall, /area/station/science/auxlab/firing_range) @@ -18994,6 +19083,21 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) +"gME" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/table, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/raw_anomaly_core/random{ + pixel_x = -5; + pixel_y = 7 + }, +/obj/item/raw_anomaly_core/random, +/obj/item/raw_anomaly_core/random{ + pixel_x = 7; + pixel_y = 9 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "gMH" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/abandoned, @@ -19278,7 +19382,7 @@ dir = 8 }, /obj/effect/spawner/random/entertainment/cigarette_pack, -/obj/item/clothing/mask/cigarette/rollie/mindbreaker, +/obj/item/cigarette/rollie/mindbreaker, /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/cargo/miningoffice) @@ -19868,21 +19972,6 @@ "hbV" = ( /turf/open/floor/iron/dark, /area/station/science/xenobiology) -"hcd" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) "hce" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20080,19 +20169,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos) -"hfq" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Break Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/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/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/break_room) "hfv" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt/dust, @@ -20157,15 +20233,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"hgq" = ( -/obj/machinery/door/poddoor/shutters/window{ - dir = 4; - id = "ordauxgarage" - }, -/obj/effect/turf_decal/stripes/asteroid/end, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/station/science/ordnance) "hgB" = ( /obj/machinery/door/airlock/maintenance/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, @@ -20175,16 +20242,6 @@ }, /turf/open/floor/plating, /area/station/science/lobby) -"hgE" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 4; - pixel_x = -29 - }, -/turf/open/floor/iron, -/area/station/command/bridge) "hgN" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -20523,19 +20580,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"hng" = ( -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/window/right/directional/north{ - req_access = list("medical"); - name = "Anti Assistant Protection Door" - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "hnh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -20682,12 +20726,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"hpC" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/obj/item/coin/plasma, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) "hpT" = ( /obj/machinery/door/airlock/command{ name = "Quartermaster's Office" @@ -21403,10 +21441,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"hCu" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/space) "hCv" = ( /obj/machinery/mech_bay_recharge_port{ dir = 2 @@ -21481,6 +21515,17 @@ "hDo" = ( /turf/closed/wall/r_wall, /area/station/security/evidence) +"hDJ" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "ordauxgarage" + }, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/asteroid/end{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "hDK" = ( /obj/effect/turf_decal/tile/neutral, /obj/machinery/camera/autoname/directional/south, @@ -21488,16 +21533,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) -"hDM" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light/small/directional/south, -/obj/structure/broken_flooring/pile, -/obj/machinery/atmospherics/components/binary/pump/off/green/hidden{ - dir = 4; - name = "Aux Oxygen To Port" - }, -/turf/open/floor/plating, -/area/station/science/ordnance) "hDV" = ( /obj/effect/turf_decal/tile/yellow/diagonal_centre, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21569,13 +21604,6 @@ /obj/machinery/atmospherics/components/tank/plasma, /turf/open/misc/asteroid, /area/station/maintenance/disposal/incinerator) -"hFq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/valve{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) "hFA" = ( /obj/machinery/light/small/directional/south, /obj/effect/turf_decal/stripes/asteroid/line{ @@ -21593,7 +21621,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 8 }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "hFO" = ( /obj/machinery/power/apc/auto_name/directional/north, @@ -21779,19 +21807,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"hJj" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/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/machinery/atmospherics/pipe/smart/simple/green/hidden{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "hJo" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -22377,9 +22392,7 @@ /obj/item/reagent_containers/cup/beaker{ pixel_x = 5 }, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, +/obj/item/reagent_containers/condiment/enzyme, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) "hUm" = ( @@ -22445,14 +22458,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/engine, /area/station/science/xenobiology) -"hVb" = ( -/obj/item/stock_parts/power_store/cell/bluespace{ - rigged = 1; - pixel_x = -5; - pixel_y = -8 - }, -/turf/open/misc/asteroid, -/area/station/asteroid) "hVe" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -22464,6 +22469,14 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron, /area/station/engineering/storage) +"hVm" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "hVs" = ( /obj/structure/cable, /turf/open/floor/plating, @@ -22834,41 +22847,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/plating, /area/station/hallway/secondary/entry) -"idN" = ( -/obj/structure/table, -/obj/effect/turf_decal/bot, -/obj/machinery/camera/directional/west{ - c_tag = "Science Ordnance Test Lab"; - network = list("ss13","rd") - }, -/obj/item/assembly/prox_sensor{ - pixel_y = 2 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = 9; - pixel_y = -2 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -4; - pixel_y = 1 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/machinery/requests_console/directional/west{ - department = "Ordnance Test Range"; - name = "Test Range Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/binoculars{ - pixel_y = -10; - pixel_x = -5 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "idU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, @@ -22981,7 +22959,7 @@ /area/station/engineering/lobby) "ifd" = ( /turf/open/floor/engine/airless, -/area/space) +/area/space/nearstation) "ifj" = ( /turf/open/floor/circuit/red, /area/station/ai_monitored/turret_protected/ai_upload) @@ -23425,6 +23403,11 @@ /obj/item/storage/box/monkeycubes, /turf/open/floor/iron/white/textured_half, /area/station/science/xenobiology) +"ioL" = ( +/obj/item/radio/intercom/directional/east, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/iron/white, +/area/station/science/ordnance/storage) "ioP" = ( /obj/structure/cable/multilayer/multiz, /obj/effect/decal/cleanable/dirt, @@ -23460,7 +23443,6 @@ "ipq" = ( /obj/structure/table, /obj/item/reagent_containers/condiment/saltshaker{ - layer = 3.1; pixel_x = -2; pixel_y = 2 }, @@ -23579,7 +23561,6 @@ "irf" = ( /obj/structure/ladder, /obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9; pixel_x = 3 }, /obj/machinery/door/window/brigdoor/left/directional/south{ @@ -24073,6 +24054,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"iAM" = ( +/obj/machinery/computer/security/telescreen/rd/directional/south, +/turf/open/floor/glass/reinforced/plasma, +/area/station/command/heads_quarters/rd) "iBe" = ( /obj/structure/chair/pew/right{ dir = 4 @@ -24278,17 +24263,6 @@ dir = 1 }, /area/station/service/chapel) -"iEL" = ( -/obj/structure/table/glass, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -5 - }, -/obj/item/multitool{ - pixel_x = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "iEO" = ( /turf/closed/wall, /area/station/security/prison/mess) @@ -24321,6 +24295,19 @@ }, /turf/open/floor/iron/white, /area/station/security/medical) +"iFn" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/turf/open/floor/plating, +/area/station/engineering/storage) "iFq" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -24491,7 +24478,6 @@ /area/station/commons/storage/tools) "iII" = ( /obj/machinery/shower/directional/east, -/obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/showroomfloor, /area/station/cargo/storage) "iIR" = ( @@ -24610,22 +24596,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/small, /area/station/science/cytology) -"iKb" = ( -/obj/machinery/door/poddoor/shutters/window/preopen{ - id = "ordstorage" - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/button/door/directional/east{ - req_access = list("ordnance"); - name = "Ordnance Storage Shutter Control"; - id = "ordstorage" - }, -/obj/effect/turf_decal/caution/stand_clear/red, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) +"iJZ" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/airalarm/directional/north, +/obj/structure/filingcabinet, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "iKc" = ( /turf/open/floor/iron/white, /area/station/science/lobby) @@ -24876,6 +24853,18 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/maintenance/disposal) +"iPz" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron, +/area/station/command/gateway) "iPH" = ( /obj/structure/cable, /turf/open/floor/iron/dark, @@ -24889,6 +24878,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/command/corporate_showroom) +"iPW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/tank/oxygen{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "iQt" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/random/trash/food_packaging, @@ -25348,9 +25344,7 @@ /area/station/medical/medbay/central) "jbL" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 2 - }, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted, /turf/open/floor/iron/white, /area/station/science/lobby) "jbM" = ( @@ -26086,17 +26080,6 @@ }, /turf/open/floor/iron/textured, /area/station/cargo/storage) -"jnV" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/white, -/area/station/medical/storage) "jnY" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/structure/cable, @@ -26371,11 +26354,6 @@ "jsC" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/medical/central) -"jsI" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/space/nearstation) "jsL" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -26532,19 +26510,9 @@ }, /turf/open/floor/wood, /area/station/commons/lounge) -"jvU" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/hallway/primary/central) "jvV" = ( -/obj/machinery/computer/operating{ - dir = 8 - }, /obj/structure/sign/warning/biohazard/directional/east, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "jwa" = ( /obj/structure/lattice, @@ -27126,15 +27094,21 @@ }, /turf/open/floor/engine, /area/station/medical/chemistry) +"jEw" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/closet/crate/science{ + opened = 1; + icon_state = "scicrateopen" + }, +/obj/item/tank, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "jED" = ( /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/freezer, /area/station/security/prison/shower) -"jEO" = ( -/obj/structure/transport/linear/public, -/obj/machinery/light/floor/transport, -/turf/open/floor/plating/elevatorshaft, -/area/station/medical/treatment_center) "jEX" = ( /obj/machinery/newscaster/directional/west, /turf/open/floor/carpet/orange, @@ -27295,15 +27269,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/command/corporate_showroom) -"jHE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) "jHH" = ( /obj/machinery/disposal/bin, /obj/machinery/airalarm/directional/east, @@ -27410,7 +27375,6 @@ /area/station/maintenance/central/greater) "jIY" = ( /obj/structure/chair{ - dir = 2; name = "Defense" }, /obj/machinery/power/apc/auto_name/directional/north, @@ -27914,6 +27878,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) +"jSs" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Personnel's Booth" + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/mapping_helpers/airlock/access/any/command/hop, +/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/cyclelink_helper_multi{ + cycle_id = "bridgehop" + }, +/turf/open/floor/carpet/green, +/area/station/command/heads_quarters/hop) "jSu" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 8 @@ -28165,13 +28144,6 @@ "jXb" = ( /turf/open/floor/iron/white/textured_large, /area/station/science/genetics) -"jXk" = ( -/obj/structure/closet/secure_closet/security/med, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) "jXl" = ( /obj/effect/turf_decal/trimline/dark_red/arrow_cw{ dir = 5 @@ -28357,22 +28329,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"kaD" = ( -/obj/item/circuitboard/machine/thermomachine, -/obj/item/circuitboard/machine/thermomachine, -/obj/item/storage/bag/construction, -/obj/item/storage/bag/construction, -/obj/item/storage/bag/construction, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/closet/crate, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/iron/large, -/area/station/engineering/atmos) "kaJ" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/structure/cable, @@ -28415,18 +28371,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/command/bridge) -"kbU" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Personnel's Quarters" - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgehop" - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/hop) "kbW" = ( /obj/structure/chair/plastic{ dir = 8 @@ -28796,7 +28740,7 @@ /obj/effect/decal/cleanable/blood/old{ icon_state = "gib5-old" }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "khL" = ( /obj/effect/turf_decal/trimline/green/filled/line, @@ -28992,9 +28936,6 @@ /obj/structure/table/wood/fancy/orange, /turf/open/floor/wood, /area/station/command/heads_quarters/qm) -"kkx" = ( -/turf/open/misc/asteroid/airless, -/area/space/nearstation) "kkA" = ( /obj/machinery/light_switch/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -29024,6 +28965,18 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"kkJ" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/button/door/directional/south{ + id = "evashutter"; + name = "E.V.A. Storage Shutter Control"; + req_access = list("command") + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "kkK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -29511,12 +29464,9 @@ "krz" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ dir = 4; - name = "euthanization chamber freezer"; - layer = 2.89 - }, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 + name = "euthanization chamber freezer" }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/science/xenobiology) @@ -30058,6 +30008,18 @@ /obj/structure/cable, /turf/open/floor/iron/large, /area/station/service/hydroponics/garden) +"kBr" = ( +/obj/structure/barricade/wooden, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 4 + }, +/obj/item/flashlight/glowstick/blue{ + start_on = 1; + light_range = 2 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "kBt" = ( /obj/machinery/modular_computer/preset/civilian, /obj/machinery/button/door/directional/north{ @@ -30615,13 +30577,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"kKS" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white, -/area/station/science/lab) "kLi" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/station/maintenance/department/medical/central) @@ -30727,16 +30682,6 @@ }, /turf/open/floor/engine, /area/station/command/corporate_dock) -"kNM" = ( -/obj/machinery/door/airlock/multi_tile/public{ - name = "Corporate Private Dock" - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/corporate_dock) "kNO" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/newscaster/directional/south, @@ -30897,6 +30842,16 @@ /obj/structure/sign/poster/random/directional/north, /turf/open/floor/iron, /area/station/cargo/storage) +"kQV" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/cmo/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/holofloor/dark, +/area/station/command/heads_quarters/cmo) "kRl" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31694,7 +31649,7 @@ dir = 8 }, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "lfu" = ( /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/effect/landmark/start/bartender, @@ -32009,13 +31964,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) -"lmc" = ( -/obj/machinery/computer/records/medical, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) "lmd" = ( /obj/effect/turf_decal/siding/wood/end{ dir = 1 @@ -32040,17 +31988,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"lmw" = ( -/obj/machinery/door/poddoor/shutters{ - id = "ordauxgarage"; - dir = 1 - }, -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/science/ordnance) "lmI" = ( /obj/structure/lattice, /obj/machinery/atmospherics/components/unary/passive_vent/layer2{ @@ -32109,9 +32046,7 @@ /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) "lny" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/light/directional/south, /turf/open/floor/engine, /area/station/science/xenobiology) @@ -32169,6 +32104,18 @@ /obj/item/toy/figure/borg, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/teleporter) +"loC" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Personnel's Quarters" + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/hop, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridgehop" + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/hop) "loR" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/power/port_gen/pacman/pre_loaded, @@ -32265,11 +32212,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/drone_bay) -"lqZ" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) "lrc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32804,6 +32746,15 @@ dir = 4 }, /area/station/command/meeting_room) +"lBm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ + dir = 9 + }, +/turf/open/floor/iron/white, +/area/station/science/ordnance/testlab) "lBu" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 1 @@ -32880,9 +32831,7 @@ /turf/open/floor/iron/white, /area/station/medical/chemistry/minisat) "lCK" = ( -/obj/effect/turf_decal/siding/dark_blue{ - dir = 2 - }, +/obj/effect/turf_decal/siding/dark_blue, /turf/open/floor/iron/textured_large, /area/station/command/bridge) "lCO" = ( @@ -33166,7 +33115,7 @@ /area/station/engineering/storage/tech) "lHp" = ( /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "lHx" = ( /obj/machinery/door/airlock/engineering{ @@ -33581,6 +33530,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/lesser) +"lQe" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/multilayer/connected, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/satellite) "lQl" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/hollow/reinforced/end{ @@ -34007,6 +33965,13 @@ }, /turf/open/floor/iron/dark/textured, /area/station/science/robotics/lab) +"lYo" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "lYp" = ( /obj/structure/railing/corner{ dir = 4 @@ -34157,10 +34122,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/wood, /area/station/commons/lounge) -"maT" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) "maY" = ( /obj/structure/table/wood, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -34325,6 +34286,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/lockers) +"meT" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/station/cargo/storage) "mff" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron, @@ -34350,6 +34320,17 @@ /obj/effect/baseturf_helper/reinforced_plating/ceiling, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"mgi" = ( +/obj/machinery/door/poddoor/shutters{ + id = "ordauxgarage"; + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/asteroid/end{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "mgn" = ( /obj/docking_port/stationary{ dir = 8; @@ -34361,13 +34342,6 @@ }, /turf/open/space/basic, /area/space) -"mgD" = ( -/obj/machinery/computer/security/telescreen/ordnance{ - dir = 1; - pixel_y = -30 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) "mgH" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -34538,7 +34512,7 @@ dir = 8 }, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "miR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -34803,9 +34777,7 @@ /turf/open/floor/iron/dark, /area/station/maintenance/department/engine) "mnm" = ( -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/item/radio/intercom/directional/north, /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -34869,6 +34841,14 @@ "mnP" = ( /turf/open/floor/iron, /area/station/service/hydroponics) +"mnS" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "mnU" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -35153,6 +35133,21 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"mtG" = ( +/obj/machinery/door/airlock/command, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridgec" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/command/corporate_showroom) "mtH" = ( /turf/open/floor/plating/airless, /area/station/solars/port) @@ -35591,6 +35586,20 @@ /obj/structure/weightmachine, /turf/open/floor/iron/white/textured_large, /area/station/commons/fitness/recreation) +"mBX" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering Foyer" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/landmark/navigate_destination/engineering, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/turf/open/floor/iron, +/area/station/engineering/lobby) "mBY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -35650,16 +35659,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) -"mCH" = ( -/obj/machinery/computer/security{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/west, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "mCN" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -35697,7 +35696,7 @@ "mDx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "mDF" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -35776,6 +35775,17 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"mFa" = ( +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/door/airlock/research{ + name = "Ordnance Auxiliary Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "mFb" = ( /obj/structure/fans/tiny, /obj/machinery/door/poddoor/massdriver_chapel, @@ -35804,21 +35814,21 @@ /obj/item/clothing/gloves/color/yellow, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"mFR" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/closet/toolcloset, +/obj/machinery/computer/security/telescreen/auxbase/directional/east, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light_switch/directional/north, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "mFT" = ( /obj/machinery/newscaster/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/freezer, /area/station/security/prison/shower) -"mGg" = ( -/obj/effect/landmark/blobstart, -/obj/structure/closet/crate/science{ - opened = 1; - icon_state = "scicrateopen" - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) "mGk" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 9 @@ -35850,21 +35860,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/primary/central) -"mGw" = ( -/obj/machinery/door/airlock/command, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" - }, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/corporate_showroom) "mGG" = ( /turf/closed/wall, /area/station/security/breakroom) @@ -36106,6 +36101,13 @@ "mKD" = ( /turf/closed/wall, /area/station/hallway/secondary/command) +"mKF" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron/white, +/area/station/science/lab) "mKJ" = ( /obj/structure/lattice/catwalk, /obj/machinery/camera/autoname/directional/south, @@ -36271,6 +36273,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/courtroom) +"mOc" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/white, +/area/station/science/research) "mOo" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, @@ -36497,6 +36513,14 @@ /obj/item/pen, /turf/open/floor/carpet, /area/station/service/lawoffice) +"mTZ" = ( +/obj/structure/closet/secure_closet/security/med, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/item/radio/intercom/directional/north, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) "mUg" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /turf/open/floor/iron, @@ -36564,15 +36588,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos) -"mVR" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "mVU" = ( /obj/effect/spawner/random/maintenance/two, /obj/effect/spawner/random/structure/crate, @@ -36705,18 +36720,6 @@ }, /turf/open/floor/plating/airless, /area/station/maintenance/department/medical/central) -"mXT" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/command/gateway) "mXV" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 @@ -36986,7 +36989,7 @@ /area/station/medical/medbay/central) "nbS" = ( /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "ncc" = ( /obj/structure/flora/bush/flowers_br/style_random, /obj/structure/window/spawner/directional/north, @@ -37063,19 +37066,6 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/dark, /area/station/security/lockers) -"ndk" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/cmo{ - dir = 8; - pixel_x = 30 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/holofloor/dark, -/area/station/command/heads_quarters/cmo) "ndo" = ( /obj/structure/flora/bush/flowers_br/style_random, /obj/structure/window/spawner/directional/west, @@ -37105,12 +37095,6 @@ }, /turf/closed/wall, /area/station/service/bar) -"ndC" = ( -/obj/structure/table/glass, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/effect/spawner/random/food_or_drink/refreshing_beverage, -/turf/open/floor/iron, -/area/station/engineering/lobby) "ndI" = ( /obj/structure/table, /obj/item/hand_labeler, @@ -37224,6 +37208,13 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter) +"neH" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/minisat/directional/west, +/turf/open/floor/iron, +/area/station/command/bridge) "neM" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, /obj/structure/cable, @@ -37403,20 +37394,6 @@ dir = 10 }, /area/station/maintenance/radshelter/medical) -"nhc" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) "nhf" = ( /obj/machinery/computer/records/medical/laptop{ dir = 8; @@ -37596,6 +37573,20 @@ dir = 1 }, /area/station/engineering/atmos) +"nkM" = ( +/turf/closed/wall/r_wall, +/area/station/science/ordnance/burnchamber) +"nli" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airalarm/link{ + chamber_id = "ordnanceburn" + }, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "nlu" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/structure/cable, @@ -37651,16 +37642,6 @@ /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"nmF" = ( -/obj/machinery/computer/security/mining{ - dir = 8 - }, -/obj/machinery/keycard_auth/directional/east, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "nmG" = ( /obj/effect/turf_decal/trimline/blue/filled/end, /obj/structure/cable, @@ -37698,6 +37679,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"nnt" = ( +/obj/machinery/computer/security/qm, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/machinery/computer/security/telescreen/vault/directional/north, +/obj/machinery/button/door/directional/west{ + id = "qmprivacy"; + name = "Privacy Shutters Control" + }, +/obj/machinery/keycard_auth/directional/west{ + pixel_y = 12 + }, +/turf/open/floor/wood, +/area/station/command/heads_quarters/qm) "nnv" = ( /obj/structure/table/reinforced/rglass, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -37974,10 +37970,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"nsH" = ( -/obj/structure/lattice, -/turf/open/space/openspace, -/area/space) "nsI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -37995,7 +37987,6 @@ /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) "ntd" = ( -/obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/command/heads_quarters/qm) "ntQ" = ( @@ -38021,8 +38012,7 @@ /area/station/service/chapel) "nur" = ( /obj/structure/chair/wood{ - dir = 1; - layer = 2.89 + dir = 1 }, /obj/machinery/light/small/directional/east, /turf/open/floor/carpet, @@ -38131,16 +38121,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/security/detectives_office) -"nwi" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lobby) "nwp" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 @@ -38484,12 +38464,6 @@ /obj/machinery/power/port_gen/pacman/pre_loaded, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"nCv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) "nCH" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -38672,19 +38646,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"nHk" = ( -/obj/machinery/computer/security/telescreen/interrogation{ - dir = 8; - pixel_x = 30 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/security/interrogation) "nHm" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt/dust, @@ -38814,6 +38775,17 @@ /obj/effect/spawner/random/clothing/pirate_or_bandana, /turf/open/floor/plating, /area/station/maintenance/aft/upper) +"nKa" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/turf_decal/box/white{ + color = "#52B4E9" + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/requests_console/auto_name/directional/north, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/iron/white, +/area/station/medical/storage) "nKc" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -39038,6 +39010,12 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central) +"nNl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/iron/white, +/area/station/science/ordnance/storage) "nNo" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -39149,7 +39127,7 @@ c_tag = "Secure - AI Upper External East" }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "nQs" = ( /obj/machinery/light/small/directional/north, /turf/open/misc/asteroid, @@ -39237,22 +39215,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"nSZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) -"nTb" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron, -/area/station/cargo/storage) "nTm" = ( /obj/structure/chair/office{ dir = 1 @@ -39433,11 +39395,6 @@ /obj/machinery/light/warm/directional/east, /turf/open/floor/wood/tile, /area/station/service/chapel) -"nYi" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "nYj" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, @@ -39575,7 +39532,7 @@ /mob/living/basic/mothroach, /obj/item/stack/spacecash/c100, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "oaY" = ( /obj/effect/landmark/start/medical_doctor, /obj/effect/turf_decal/trimline/blue/filled/line, @@ -39935,6 +39892,12 @@ }, /turf/open/floor/iron/textured, /area/station/cargo/drone_bay) +"ojR" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden, +/turf/open/floor/iron/white, +/area/station/science/ordnance/testlab) "oka" = ( /obj/effect/turf_decal/siding/purple{ dir = 1 @@ -40054,22 +40017,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"oml" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/closet/toolcloset, -/obj/machinery/computer/security/telescreen{ - desc = "Used for the Auxiliary Mining Base."; - dir = 8; - name = "Auxiliary Base Monitor"; - network = list("auxbase"); - pixel_x = 28 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) "omv" = ( /obj/structure/rack, /obj/effect/spawner/random/clothing/backpack, @@ -40094,6 +40041,12 @@ /obj/machinery/quantum_server, /turf/open/floor/circuit, /area/station/cargo/bitrunning/den) +"omE" = ( +/obj/structure/table/glass, +/obj/effect/spawner/random/food_or_drink/snack, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage, +/turf/open/floor/iron, +/area/station/engineering/lobby) "omL" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -40628,13 +40581,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"oxg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) "oxB" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -40659,6 +40605,20 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron, /area/station/service/hydroponics) +"oxN" = ( +/obj/machinery/door/airlock/multi_tile/public{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room) "oxU" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -40876,6 +40836,15 @@ }, /turf/open/floor/iron/dark, /area/station/security/lockers) +"oBK" = ( +/obj/structure/window/spawner/directional/east, +/obj/machinery/portable_atmospherics/pipe_scrubber, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "oBP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41899,7 +41868,7 @@ spawn_scatter_radius = 1 }, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "oUm" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 8 @@ -41981,13 +41950,12 @@ /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai_upload) "oVV" = ( -/obj/structure/table, /obj/machinery/camera/directional/east{ c_tag = "Xenobiology Lab - Secure Pen"; network = list("ss13","rd","xeno") }, /obj/structure/sign/warning/biohazard/directional/east, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "oVX" = ( /obj/structure/table, @@ -42034,16 +42002,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/solars/port) -"oWw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 9 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/checker, -/area/station/science/research) "oWy" = ( /obj/effect/turf_decal/box/corners, /turf/open/floor/iron/dark, @@ -42581,6 +42539,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/security/detectives_office) +"pgJ" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) "pgN" = ( /obj/machinery/light/small/dim/directional/east, /obj/structure/closet/crate/medical, @@ -42589,6 +42553,16 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/maintenance/department/cargo) +"pgS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/checker, +/area/station/science/research) "pgW" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/effect/landmark/start/medical_doctor, @@ -42726,20 +42700,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) -"pjf" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "medbay1"; - pixel_x = -32 - }, -/obj/machinery/button/elevator/directional/south{ - id = "medbay1"; - pixel_x = -32 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "pjk" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/open/floor/engine/n2, @@ -42823,14 +42783,6 @@ dir = 1 }, /area/station/engineering/atmos/storage/gas) -"pka" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/broken/directional/north, -/obj/machinery/atmospherics/components/tank/oxygen{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) "pkl" = ( /turf/closed/wall, /area/station/maintenance/solars/starboard/fore) @@ -43327,10 +43279,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"pti" = ( -/obj/machinery/plumbing/growing_vat, -/turf/open/misc/asteroid, -/area/station/asteroid) "ptq" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt/dust, @@ -43526,6 +43474,18 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/commons/locker) +"pwE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/box/red, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/camera/autoname/directional/north{ + network = list("ss13","rd") + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron/dark, +/area/station/science/ordnance/testlab) "pwO" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -43535,7 +43495,7 @@ "pwU" = ( /obj/structure/fluff/iced_abductor, /turf/open/misc/asteroid/airless, -/area/space) +/area/space/nearstation) "pwV" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -43735,7 +43695,7 @@ "pAK" = ( /obj/item/stack/cable_coil, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "pAP" = ( /obj/effect/spawner/random/food_or_drink/seed{ spawn_all_loot = 1; @@ -43750,19 +43710,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron, /area/station/security/prison/garden) -"pBf" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/turf/open/floor/plating, -/area/station/engineering/storage) "pBg" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 @@ -44209,10 +44156,6 @@ }, /turf/open/floor/iron/white, /area/station/science/research) -"pIB" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) "pIF" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/right/directional/north{ @@ -44306,9 +44249,7 @@ "pKI" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/grass, /area/station/science/research) "pLd" = ( @@ -44495,9 +44436,7 @@ /area/station/maintenance/department/cargo) "pNW" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/machinery/light/directional/south, /turf/open/floor/iron/white, /area/station/medical/chemistry) @@ -44821,20 +44760,6 @@ /obj/item/food/sandwich/cheese, /turf/open/floor/iron/dark/textured, /area/station/command/heads_quarters/cmo) -"pTx" = ( -/obj/machinery/door/airlock/research{ - name = "Ordnance Lab" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/flat_white, -/area/station/science/ordnance) "pTC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -44956,8 +44881,7 @@ /area/station/commons/storage/art) "pVd" = ( /obj/structure/chair/wood{ - dir = 1; - layer = 2.89 + dir = 1 }, /obj/structure/railing, /turf/open/floor/carpet, @@ -45007,6 +44931,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/warehouse/upper) +"pWh" = ( +/obj/machinery/computer/security/telescreen/interrogation/directional/east, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/security/interrogation) "pWn" = ( /obj/structure/railing/corner{ dir = 8 @@ -45230,7 +45164,7 @@ dir = 4 }, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "pZP" = ( /obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, @@ -45546,6 +45480,7 @@ "qgy" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/structure/railing/corner, +/obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white, /area/station/hallway/secondary/entry) "qgA" = ( @@ -45601,17 +45536,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_large, /area/station/engineering/storage/tech) -"qgZ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, +"qhg" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/command, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/effect/mapping_helpers/airlock/autoname, +/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/airalarm/link{ - chamber_id = "ordnanceburn" - }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/emergency_closet) "qhm" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/asteroid/line{ @@ -45641,19 +45576,6 @@ "qhP" = ( /turf/closed/wall/r_wall, /area/station/security/execution/education) -"qhQ" = ( -/obj/machinery/door/poddoor/shutters/window{ - id = "ordauxgarage"; - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/asteroid/line, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/science/ordnance) "qhS" = ( /obj/structure/disposalpipe/junction/flip{ dir = 1 @@ -45760,7 +45682,7 @@ "qjk" = ( /obj/structure/broken_flooring/singular/directional/south, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "qjp" = ( /obj/structure/flora/bush/flowers_yw/style_random, /obj/structure/window/spawner/directional/north, @@ -45770,6 +45692,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/break_room) +"qjV" = ( +/obj/effect/turf_decal/tile/brown/fourcorners, +/obj/structure/railing, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/iron, +/area/station/cargo/storage) "qjW" = ( /obj/effect/spawner/random/vending/colavend, /obj/effect/turf_decal/siding/brown{ @@ -45873,6 +45801,17 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/circuit/green, /area/station/ai_monitored/command/nuke_storage) +"qmg" = ( +/obj/structure/table/wood, +/obj/item/stock_parts/power_store/cell/crap, +/obj/item/clothing/head/collectable/hop{ + name = "novelty HoP hat" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/tile, +/area/station/command/corporate_showroom) "qml" = ( /obj/machinery/chem_master, /obj/effect/turf_decal/trimline/yellow/filled/line, @@ -45907,6 +45846,15 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/station/hallway/secondary/command) +"qmD" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Primary Tool Storage" + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "qmI" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/machinery/light/small/directional/north, @@ -45950,17 +45898,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"qny" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/button/door/directional/east{ - name = "shutter control"; - id = "ordauxgarage" - }, -/turf/open/floor/plating, -/area/station/science/ordnance) "qnQ" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -45969,6 +45906,14 @@ }, /turf/open/floor/iron/white/smooth_half, /area/station/science/robotics/lab) +"qnV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/broken/directional/north, +/obj/machinery/atmospherics/components/tank/oxygen{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "qob" = ( /obj/structure/table, /obj/item/stock_parts/micro_laser{ @@ -46777,10 +46722,8 @@ /turf/open/floor/engine/cult, /area/station/service/library) "qEr" = ( -/obj/structure/table, -/obj/item/electropack, -/obj/item/electropack, -/turf/open/floor/engine, +/obj/machinery/light/floor, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "qEC" = ( /obj/effect/turf_decal/stripes{ @@ -46847,6 +46790,10 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/teleporter) +"qFS" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/glass/reinforced, +/area/station/security/prison) "qGk" = ( /turf/closed/wall/r_wall, /area/station/hallway/secondary/command) @@ -46986,21 +46933,6 @@ /obj/structure/girder, /turf/open/misc/asteroid, /area/station/asteroid) -"qII" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/table, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/raw_anomaly_core/random{ - pixel_x = -5; - pixel_y = 7 - }, -/obj/item/raw_anomaly_core/random, -/obj/item/raw_anomaly_core/random{ - pixel_x = 7; - pixel_y = 9 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "qIJ" = ( /obj/structure/table/wood, /obj/effect/spawner/random/engineering/tool, @@ -47590,7 +47522,6 @@ dir = 1 }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/airlock/abandoned, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, @@ -47828,17 +47759,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/department/engine) -"qZf" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "qZh" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, @@ -48090,6 +48010,16 @@ }, /turf/open/floor/iron/checker, /area/station/maintenance/department/medical) +"rcz" = ( +/obj/machinery/computer/security{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/west, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "rcG" = ( /obj/machinery/mech_bay_recharge_port{ dir = 1 @@ -48155,9 +48085,7 @@ /turf/open/floor/circuit/green/telecomms/mainframe, /area/station/tcommsat/server) "rdP" = ( -/obj/machinery/chem_dispenser{ - layer = 2.7 - }, +/obj/machinery/chem_dispenser, /obj/machinery/newscaster/directional/east, /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 6 @@ -48582,13 +48510,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/fore) -"rjv" = ( -/obj/machinery/computer/security/telescreen/rd{ - pixel_y = -30; - dir = 1 - }, -/turf/open/floor/glass/reinforced/plasma, -/area/station/command/heads_quarters/rd) "rjx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -48625,12 +48546,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/security/brig/entrance) -"rjP" = ( -/obj/structure/table/glass, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron, -/area/station/engineering/lobby) "rjX" = ( /turf/closed/wall, /area/station/security/courtroom) @@ -48642,6 +48557,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"rkd" = ( +/obj/structure/closet/crate/science, +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm/directional/west, +/obj/effect/spawner/random/maintenance, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "rkm" = ( /obj/machinery/washing_machine, /turf/open/floor/iron/freezer, @@ -48742,6 +48666,18 @@ }, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) +"rkZ" = ( +/obj/machinery/suit_storage_unit/ce, +/obj/machinery/requests_console/directional/south{ + department = "Chief Engineer's Desk"; + name = "Chief Engineer's Request Console" + }, +/obj/machinery/computer/security/telescreen/ce/directional/west, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "rlp" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -48888,15 +48824,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security) -"roH" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/multilayer/connected, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/satellite) +"roK" = ( +/obj/machinery/door/airlock/research{ + name = "Ordnance Lab" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/structure/cable, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ + dir = 4 + }, +/turf/open/floor/catwalk_floor/flat_white, +/area/station/science/ordnance) "roO" = ( /obj/machinery/door/airlock/security/glass{ name = "Prison Wing" @@ -49027,7 +48968,7 @@ c_tag = "Secure - AI Upper External South" }, /turf/open/space/openspace, -/area/space) +/area/space/nearstation) "rqJ" = ( /obj/machinery/air_sensor/plasma_tank, /turf/open/floor/engine/plasma, @@ -49279,12 +49220,6 @@ }, /turf/open/floor/iron/white/textured, /area/station/maintenance/department/medical/central) -"rvu" = ( -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/prison) "rwf" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -49477,6 +49412,19 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"ryG" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/engineering/glass{ + name = "Break Room" + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/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/any/engineering/general, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/turf/open/floor/iron, +/area/station/engineering/break_room) "ryP" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 2"; @@ -50219,16 +50167,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"rKH" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "rKW" = ( /obj/machinery/photocopier, /obj/effect/turf_decal/bot_red, @@ -51271,18 +51209,6 @@ }, /turf/open/floor/engine, /area/station/hallway/secondary/entry) -"sbE" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/effect/turf_decal/box/red, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","rd") - }, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) "sbL" = ( /obj/machinery/door/airlock/engineering{ name = "Aft Port Solar Access" @@ -51301,12 +51227,6 @@ /obj/structure/lattice/catwalk, /turf/open/openspace, /area/station/science/xenobiology) -"sbS" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/green/hidden, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) "sbU" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/random/structure/crate, @@ -51543,6 +51463,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/main) +"sgR" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/requests_console/auto_name/directional/north, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/iron, +/area/station/cargo/storage) "sgW" = ( /obj/structure/chair/office/tactical{ dir = 8 @@ -52349,16 +52280,10 @@ /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "sug" = ( -/obj/structure/table, -/obj/item/assembly/igniter{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/assembly/igniter, /obj/machinery/sparker/directional/south{ id = "Xenobio" }, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "suq" = ( /obj/effect/landmark/start/station_engineer, @@ -52855,9 +52780,7 @@ /turf/open/floor/iron, /area/station/engineering/break_room) "sDq" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/light/directional/north, /turf/open/floor/engine, /area/station/science/xenobiology) @@ -53282,7 +53205,7 @@ pixel_y = -24 }, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "sLt" = ( /obj/machinery/camera/autoname/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53534,23 +53457,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"sQi" = ( -/obj/machinery/computer/security/qm, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/computer/security/telescreen/vault{ - pixel_y = 30 - }, -/obj/machinery/button/door/directional/west{ - id = "qmprivacy"; - name = "Privacy Shutters Control" - }, -/obj/machinery/keycard_auth/directional/west{ - pixel_y = 12 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) "sQC" = ( /obj/structure/chair/pew/left{ dir = 4 @@ -54259,23 +54165,6 @@ "tdq" = ( /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"tdN" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) "tdW" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 @@ -54350,23 +54239,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"tgn" = ( -/obj/machinery/computer/pod/old/mass_driver_controller/trash{ - pixel_x = -32; - pixel_y = 6; - range = 5 - }, -/obj/structure/cable, -/obj/machinery/button/door/directional/west{ - id = "Disposal Exit"; - name = "Disposal Vent Control"; - req_access = list("maint_tunnels"); - pixel_x = -32; - pixel_y = -6 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/disposal) "tgr" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 6 @@ -54894,8 +54766,20 @@ /obj/machinery/camera/autoname/directional/north{ network = list("ss13","rd") }, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker + }, +/obj/item/multitool, /turf/open/floor/iron/white, /area/station/science/lab) +"tpf" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1, +/obj/machinery/portable_atmospherics/pipe_scrubber, +/turf/open/floor/iron/textured, +/area/station/engineering/atmos) "tpj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -55208,6 +55092,13 @@ /obj/structure/railing, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"tuT" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/ordnance/directional/south, +/turf/open/floor/iron/white, +/area/station/science/ordnance/testlab) "tuY" = ( /obj/effect/turf_decal/trimline/blue/arrow_ccw{ dir = 1 @@ -55435,15 +55326,6 @@ }, /turf/open/floor/iron/large, /area/station/hallway/secondary/exit/departure_lounge) -"tAs" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/machinery/door/window/brigdoor/right/directional/east{ - req_access = list("command") - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/iron, -/area/station/command/bridge) "tAt" = ( /obj/machinery/power/smes, /turf/open/floor/plating, @@ -55490,6 +55372,23 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"tBe" = ( +/obj/machinery/computer/pod/old/mass_driver_controller/trash{ + pixel_x = -32; + pixel_y = 6; + range = 5 + }, +/obj/structure/cable, +/obj/machinery/button/door/directional/west{ + id = "Disposal Exit"; + name = "Disposal Vent Control"; + req_access = list("maint_tunnels"); + pixel_x = -32; + pixel_y = -6 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/station/maintenance/disposal) "tBg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55538,7 +55437,7 @@ dir = 4 }, /obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) "tBF" = ( /obj/structure/closet/secure_closet/chief_medical, @@ -55728,13 +55627,6 @@ "tEy" = ( /turf/open/floor/plating, /area/station/maintenance/department/bridge) -"tEB" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Primary Tool Storage" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/storage/primary) "tEH" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ @@ -55748,6 +55640,12 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/cargo/warehouse) +"tEJ" = ( +/obj/machinery/vatgrower{ + dir = 4 + }, +/turf/open/misc/asteroid, +/area/station/asteroid) "tEM" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/tile/yellow, @@ -55780,7 +55678,6 @@ dir = 1 }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/central/greater) @@ -55874,19 +55771,6 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron/white/smooth_large, /area/station/medical/chemistry) -"tGU" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/engineering/glass{ - name = "Break Room" - }, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/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/any/engineering/general, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/break_room) "tGW" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -56170,9 +56054,7 @@ /turf/open/floor/plating/reinforced, /area/station/command/emergency_closet) "tMu" = ( -/obj/structure/railing{ - layer = 3.01 - }, +/obj/structure/railing, /obj/effect/spawner/random/structure/closet_private, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) @@ -56364,18 +56246,6 @@ /obj/machinery/telecomms/bus/preset_one, /turf/open/floor/circuit/green/telecomms/mainframe, /area/station/tcommsat/server) -"tOz" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "ordnancefreezer" - }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "tOA" = ( /obj/machinery/door/airlock/highsecurity{ name = "Gravity Generator Room" @@ -56570,14 +56440,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/science/xenobiology) -"tRT" = ( -/obj/structure/table/reinforced, -/obj/item/storage/medkit/regular, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "tRX" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 @@ -56714,6 +56576,13 @@ dir = 4 }, /area/station/command/meeting_room) +"tUF" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/keycard_auth/directional/north, +/turf/open/floor/carpet/green, +/area/station/command/heads_quarters/hop) "tUG" = ( /obj/structure/chair/stool/bar/directional/west, /obj/effect/turf_decal/siding/wood{ @@ -56735,14 +56604,6 @@ /obj/structure/cable, /turf/closed/wall/r_wall, /area/station/engineering/main) -"tVn" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance) "tVF" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle, /obj/structure/cable, @@ -57030,8 +56891,13 @@ /turf/open/floor/iron/showroomfloor, /area/station/maintenance/department/engine) "uak" = ( -/obj/structure/table, -/obj/item/restraints/handcuffs, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Blast Door" + }, +/obj/structure/sign/warning/gas_mask/directional/south, /turf/open/floor/engine, /area/station/science/xenobiology) "uat" = ( @@ -57140,24 +57006,6 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"uby" = ( -/obj/structure/transport/linear/public, -/obj/machinery/light/floor/transport, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) -"ubF" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" - }, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "ubV" = ( /obj/structure/chair{ dir = 1 @@ -57357,6 +57205,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/command/gateway) +"ufW" = ( +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/table, +/obj/item/restraints/handcuffs/cable/yellow, +/obj/item/restraints/handcuffs, +/obj/machinery/computer/security/telescreen/normal/directional/west, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "ugh" = ( /obj/machinery/door/airlock/research{ name = "Research and Development Lab" @@ -57768,9 +57626,7 @@ /area/station/hallway/primary/starboard) "umA" = ( /obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/engine, /area/station/science/xenobiology) "umK" = ( @@ -57866,9 +57722,7 @@ /turf/open/floor/plating, /area/station/maintenance/department/medical/central) "uoP" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{ - dir = 2 - }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2, /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/catwalk_floor/flat_white, /area/station/medical/treatment_center) @@ -58321,6 +58175,22 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/storage) +"uwV" = ( +/obj/machinery/door/poddoor/shutters/window/preopen{ + id = "ordstorage" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/button/door/directional/east{ + req_access = list("ordnance"); + name = "Ordnance Storage Shutter Control"; + id = "ordstorage" + }, +/obj/effect/turf_decal/caution/stand_clear/red, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/science/ordnance/storage) "uwW" = ( /obj/structure/cable/layer1, /turf/open/floor/iron, @@ -58970,6 +58840,14 @@ /obj/structure/cable, /turf/open/floor/plating/airless, /area/station/solars/port) +"uJq" = ( +/obj/machinery/computer/records/medical, +/obj/effect/turf_decal/tile/red/fourcorners, +/obj/machinery/computer/security/telescreen/cmo/directional/north{ + name = "Medbay Monitor" + }, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/medical) "uJt" = ( /obj/effect/mapping_helpers/engraving, /turf/closed/wall, @@ -59340,6 +59218,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/large, /area/station/service/hydroponics/garden) +"uPg" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/lift_indicator/directional/south{ + linked_elevator_id = "medbay1"; + pixel_x = -32 + }, +/obj/machinery/button/elevator/directional/south{ + id = "medbay1"; + pixel_x = -32 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "uPi" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /obj/effect/decal/cleanable/dirt, @@ -59714,6 +59606,19 @@ }, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/upper) +"uXb" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/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/machinery/atmospherics/pipe/smart/simple/green/hidden{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "uXe" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -59723,20 +59628,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"uXk" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - dir = 1; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = -30 - }, -/obj/machinery/modular_computer/preset/cargochat/security{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/office) "uXp" = ( /obj/docking_port/stationary{ dir = 2; @@ -59925,6 +59816,14 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) +"vay" = ( +/obj/structure/table/reinforced, +/obj/item/storage/medkit/regular, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "vaC" = ( /turf/open/floor/catwalk_floor/iron_dark, /area/station/command/corporate_dock) @@ -59933,7 +59832,7 @@ name = "Delaminates-The-Supermatter" }, /turf/open/misc/asteroid/airless, -/area/space) +/area/space/nearstation) "vaY" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/broken_flooring/pile, @@ -60012,6 +59911,22 @@ /obj/effect/mapping_helpers/airlock/access/all/service/crematorium, /turf/open/floor/iron/dark, /area/station/service/chapel/office) +"vcZ" = ( +/obj/item/circuitboard/machine/thermomachine, +/obj/item/circuitboard/machine/thermomachine, +/obj/item/storage/bag/construction, +/obj/item/storage/bag/construction, +/obj/item/storage/bag/construction, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/closet/crate, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/iron/large, +/area/station/engineering/atmos) "vdb" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -60086,11 +60001,6 @@ }, /turf/open/floor/iron/large, /area/station/service/hydroponics/garden) -"veF" = ( -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/structure/railing, -/turf/open/floor/iron, -/area/station/cargo/storage) "veW" = ( /obj/structure/extinguisher_cabinet/directional/north, /turf/closed/wall, @@ -60210,7 +60120,7 @@ "vgW" = ( /obj/structure/lattice, /turf/open/floor/engine/airless, -/area/space) +/area/space/nearstation) "vhf" = ( /obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4, /obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, @@ -60263,7 +60173,7 @@ dir = 4 }, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "viK" = ( /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 8 @@ -60333,6 +60243,17 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron, /area/station/security/warden) +"vjB" = ( +/obj/machinery/door/poddoor/shutters{ + id = "ordauxgarage"; + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/asteroid/end{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "vjD" = ( /obj/structure/cable, /obj/structure/sign/poster/random/directional/north, @@ -60377,6 +60298,14 @@ /obj/effect/turf_decal/stripes/full, /turf/open/floor/iron, /area/station/science/robotics/mechbay) +"vkv" = ( +/obj/item/stock_parts/power_store/cell/bluespace{ + rigged = 1; + pixel_x = -5; + pixel_y = -8 + }, +/turf/open/misc/asteroid, +/area/station/asteroid) "vkx" = ( /obj/machinery/recycler{ dir = 4 @@ -60406,22 +60335,6 @@ /obj/structure/tank_dispenser/oxygen, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"vkP" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/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/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" - }, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "vkR" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -61018,7 +60931,7 @@ dir = 4 }, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "vyj" = ( /obj/structure/stairs/east, /obj/structure/railing, @@ -61280,13 +61193,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"vDA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/tank/oxygen{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/department/science) "vDK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61441,9 +61347,7 @@ "vFG" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/stairs/north, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark/textured_large, /area/station/engineering/storage/tech) "vFH" = ( @@ -61703,9 +61607,7 @@ /area/station/maintenance/department/cargo) "vLa" = ( /obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/grass, /area/station/science/research) "vLs" = ( @@ -61795,6 +61697,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/service/bar) +"vME" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Break Room" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/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/any/engineering/construction, +/turf/open/floor/iron, +/area/station/engineering/break_room) "vMN" = ( /obj/structure/flora/coconuts, /turf/open/floor/grass, @@ -61802,7 +61717,7 @@ "vMR" = ( /obj/machinery/door/poddoor/incinerator_ordmix, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "vNc" = ( /obj/machinery/modular_computer/preset/id{ dir = 1 @@ -61993,21 +61908,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"vPL" = ( -/obj/machinery/suit_storage_unit/ce, -/obj/machinery/requests_console/directional/south{ - department = "Chief Engineer's Desk"; - name = "Chief Engineer's Request Console" - }, -/obj/machinery/computer/security/telescreen/ce{ - dir = 4; - pixel_x = -30 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "vPN" = ( /obj/structure/urinal/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -62048,6 +61948,15 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"vQf" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/door/window/brigdoor/right/directional/east{ + req_access = list("command") + }, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/dim/directional/west, +/turf/open/floor/iron, +/area/station/command/bridge) "vQn" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -62469,21 +62378,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"vXW" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Personnel's Booth" - }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, -/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/cyclelink_helper_multi{ - cycle_id = "bridgehop" - }, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) "vYg" = ( /obj/effect/turf_decal/bot/right, /turf/open/floor/engine, @@ -62497,15 +62391,6 @@ "vYz" = ( /turf/closed/wall/r_wall, /area/station/medical/chemistry/minisat) -"vYH" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/rd) "vYL" = ( /obj/machinery/computer/atmos_control/nitrous_tank, /obj/effect/turf_decal/tile/yellow{ @@ -62706,14 +62591,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"wcl" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/item/stock_parts/power_store/cell, -/obj/structure/broken_flooring, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/cargo/warehouse) "wcm" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/cold/directional/north, @@ -62953,7 +62830,7 @@ "wgI" = ( /obj/machinery/air_sensor/ordnance_burn_chamber, /turf/open/floor/engine/vacuum, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "wgK" = ( /obj/effect/turf_decal/box/corners{ dir = 8 @@ -63249,6 +63126,17 @@ /obj/effect/turf_decal/stripes, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) +"wmM" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/cable, +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "wmO" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/glass/reinforced, @@ -63284,6 +63172,12 @@ dir = 8 }, /area/station/science/xenobiology) +"wnH" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/iron/white, +/area/station/science/ordnance/storage) "wnL" = ( /turf/open/floor/plating, /area/station/medical/medbay/central) @@ -63907,24 +63801,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/satellite) -"wzW" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) "wzX" = ( /obj/structure/flora/tree/palm/style_random, /turf/open/floor/grass, @@ -64450,7 +64326,7 @@ "wHl" = ( /obj/structure/girder, /turf/open/misc/asteroid/airless, -/area/space) +/area/space/nearstation) "wHo" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/spawner/random/entertainment/arcade{ @@ -64532,31 +64408,13 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry/minisat) -"wJo" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -8; - pixel_y = 9 - }, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/item/borg/upgrade/rename{ - pixel_x = 3; - pixel_y = 18 - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) "wJy" = ( /turf/closed/wall, /area/station/medical/storage) "wJC" = ( /obj/structure/sign/poster/contraband/communist_state/directional/east, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "wJN" = ( /obj/machinery/space_heater/improvised_chem_heater, /turf/open/floor/plating, @@ -64998,7 +64856,7 @@ /area/station/hallway/primary/central) "wSj" = ( /turf/closed/mineral/asteroid, -/area/space) +/area/space/nearstation) "wSn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, @@ -65135,6 +64993,21 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos) +"wVL" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/white, +/area/station/science/research) "wWk" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -65278,6 +65151,14 @@ /obj/effect/mapping_helpers/airlock/autoname, /turf/open/floor/iron, /area/station/command/heads_quarters/rd) +"wYO" = ( +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/machinery/computer/security/telescreen/prison/directional/south, +/obj/machinery/modular_computer/preset/cargochat/security{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/security/office) "wYW" = ( /obj/machinery/door/airlock/research{ autoclose = 0; @@ -65433,6 +65314,19 @@ /obj/effect/turf_decal/siding/purple/corner, /turf/open/floor/iron/white/smooth_large, /area/station/science/research) +"xaC" = ( +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/window/right/directional/north{ + req_access = list("medical"); + name = "Anti Assistant Protection Door" + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "xaH" = ( /obj/structure/filingcabinet, /obj/machinery/button/ticket_machine{ @@ -65507,6 +65401,10 @@ /obj/structure/rack, /turf/open/floor/plating, /area/station/asteroid) +"xbr" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/glass/reinforced, +/area/station/security/prison) "xbs" = ( /obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65759,7 +65657,7 @@ "xfQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall/r_wall, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "xfS" = ( /obj/structure/sign/departments/aisat/directional/east, /obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ @@ -66137,10 +66035,24 @@ /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) "xna" = ( -/obj/structure/table, -/obj/item/tank/internals/anesthetic, -/turf/open/floor/engine, +/turf/open/floor/engine/xenobio, /area/station/science/xenobiology) +"xnc" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/effect/mapping_helpers/airlock/access/any/command/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/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridgec" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "xne" = ( /obj/structure/cable, /obj/effect/spawner/random/maintenance/two, @@ -66640,17 +66552,6 @@ /obj/structure/cable/layer1, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"xwJ" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/closet/crate/science{ - opened = 1; - icon_state = "scicrateopen" - }, -/obj/item/tank, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) "xwO" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/disposalpipe/segment, @@ -66683,6 +66584,16 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"xxs" = ( +/obj/machinery/door/airlock/multi_tile/public{ + name = "Corporate Private Dock" + }, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/corporate_dock) "xxH" = ( /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/stripes/line{ @@ -66702,9 +66613,7 @@ "xxO" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/grass, /area/station/science/research) "xxT" = ( @@ -67304,6 +67213,16 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/central) +"xJt" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light/small/directional/south, +/obj/structure/broken_flooring/pile, +/obj/machinery/atmospherics/components/binary/pump/off/green/hidden{ + dir = 4; + name = "Aux Oxygen To Port" + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "xJA" = ( /obj/structure/table/wood/fancy/blue, /obj/effect/spawner/random/aimodule/neutral, @@ -67441,6 +67360,26 @@ }, /turf/open/floor/iron/dark/textured, /area/station/medical/morgue) +"xNb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/button/door/directional/south{ + id = "capshut"; + pixel_x = -8; + name = "shutter control" + }, +/obj/machinery/fax{ + fax_name = "Captain's Office"; + name = "Captain's Fax Machine" + }, +/obj/structure/table/reinforced, +/obj/machinery/keycard_auth/directional/south{ + pixel_y = -24; + pixel_x = 8 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) "xNh" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -67658,20 +67597,6 @@ /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"xQY" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring medbay to ensure patient safety."; - dir = 1; - name = "Medbay Monitor"; - network = list("medbay"); - pixel_x = -2; - pixel_y = 3 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/medical) "xRj" = ( /obj/structure/fence{ dir = 4 @@ -67710,15 +67635,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"xSa" = ( -/obj/structure/table, -/obj/machinery/computer/security/telescreen/ordnance{ - dir = 1; - pixel_y = 4; - pixel_x = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) "xSE" = ( /obj/machinery/door/poddoor/lift/preopen{ transport_linked_id = "cargo" @@ -67759,20 +67675,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/storage) -"xTN" = ( -/obj/machinery/door/airlock/multi_tile/public{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) "xTP" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 5 @@ -67931,7 +67833,6 @@ "xWR" = ( /obj/effect/landmark/start/ai/secondary, /obj/machinery/door/window/brigdoor/right/directional/south{ - layer = 4.1; name = "Secondary AI Core Access"; req_access = list("ai_upload"); pixel_y = -4 @@ -67955,15 +67856,6 @@ }, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai) -"xXf" = ( -/obj/structure/closet/crate/science, -/obj/item/wrench, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/firealarm/directional/west, -/obj/effect/spawner/random/maintenance, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/ordnance) "xXh" = ( /obj/machinery/power/shieldwallgen, /obj/effect/decal/cleanable/dirt/dust, @@ -68010,7 +67902,7 @@ "xXF" = ( /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix, /turf/open/floor/engine, -/area/station/science/ordnance) +/area/station/science/ordnance/burnchamber) "xXY" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /obj/effect/turf_decal/siding/wideplating/dark/end{ @@ -68340,6 +68232,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/service/theater) +"ydy" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Primary Tool Storage" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "ydC" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/holosign/barrier, @@ -73331,15 +73230,15 @@ cLf cLf iUF tLg -bwC -bwC -bwC -bwC -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc +dUc +dUc +dUc +dUc tLg iUF cLf @@ -73587,7 +73486,7 @@ cLf cLf cLf iUF -bwC +dUc wfz uuN uuN @@ -73597,7 +73496,7 @@ uuN uuN uuN wfz -bwC +dUc iUF cLf cLf @@ -73844,17 +73743,17 @@ cLf cLf cLf cLf -bwC +dUc uuN cLf cLf cLf -bwC +dUc cLf cLf cLf uuN -bwC +dUc cLf cLf cLf @@ -74101,17 +74000,17 @@ cLf cLf cLf cLf -bwC +dUc uuN cLf cLf cLf -bwC +dUc cLf cLf cLf uuN -bwC +dUc cLf cLf cLf @@ -74358,17 +74257,17 @@ cLf cLf cLf cLf -bwC +dUc uuN cLf cLf cLf -bwC +dUc cLf cLf cLf uuN -bwC +dUc cLf cLf cLf @@ -74615,17 +74514,17 @@ cLf cLf cLf cLf -bwC +dUc uuN -bwC -bwC -bwC +dUc +dUc +dUc itt -bwC -bwC -bwC +dUc +dUc +dUc uuN -bwC +dUc cLf cLf cLf @@ -74872,17 +74771,17 @@ cLf cLf cLf cLf -bwC +dUc uuN cLf cLf cLf -bwC +dUc cLf cLf cLf uuN -bwC +dUc cLf cLf cLf @@ -75129,17 +75028,17 @@ cLf cLf cLf cLf -bwC +dUc uuN cLf cLf cLf -bwC +dUc cLf cLf cLf uuN -bwC +dUc cLf cLf cLf @@ -75386,17 +75285,17 @@ cLf cLf cLf cLf -bwC +dUc uuN cLf cLf cLf -bwC +dUc cLf cLf cLf uuN -bwC +dUc cLf cLf cLf @@ -75643,7 +75542,7 @@ cLf cLf cLf iUF -bwC +dUc wfz uuN uuN @@ -75653,7 +75552,7 @@ uuN uuN uuN wfz -bwC +dUc iUF cLf cLf @@ -75901,15 +75800,15 @@ cLf cLf iUF tLg -bwC -bwC -bwC -bwC -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc +dUc +dUc +dUc +dUc tLg iUF cLf @@ -76118,16 +76017,16 @@ iUF iUF cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf iUF -bwC +dUc iUF cLf cLf @@ -76159,17 +76058,17 @@ cLf iUF iUF cLf -bwC +dUc cLf uuN uuN uuN cLf -bwC +dUc cLf iUF iUF -bwC +dUc cLf cLf cLf @@ -76375,16 +76274,16 @@ iUF cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf iUF -bwC +dUc iUF cLf cLf @@ -76416,17 +76315,17 @@ cLf cLf cLf cLf -bwC +dUc cLf uuN uuN uuN cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -76629,19 +76528,19 @@ cLf cLf cLf iUF -bwC -bwC -bwC +dUc +dUc +dUc rGO cLf qJB cLf rGO -bwC -bwC -bwC +dUc +dUc +dUc iUF -bwC +dUc iUF cLf cLf @@ -76673,22 +76572,22 @@ cLf cLf cLf cLf -bwC +dUc cLf uuN uuN uuN cLf -bwC +dUc cLf cLf cLf -bwC -bwC +dUc +dUc iUF iUF iUF -bwC +dUc cLf cLf cLf @@ -76898,7 +76797,7 @@ cLf cLf cLf iUF -bwC +dUc iUF cLf cLf @@ -76930,22 +76829,22 @@ cLf cLf cLf cLf -bwC +dUc cLf uuN uuN uuN cLf -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -77155,7 +77054,7 @@ cLf cLf cLf iUF -bwC +dUc iUF cLf cLf @@ -77187,22 +77086,22 @@ cLf cLf cLf cLf -bwC +dUc cLf uuN uuN uuN cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf kJV cLf -bwC +dUc cLf cLf cLf @@ -77412,7 +77311,7 @@ rGO cLf cLf iUF -bwC +dUc iUF cLf cLf @@ -77444,24 +77343,24 @@ cLf cLf cLf cLf -bwC +dUc cLf uuN uuN uuN cLf -bwC +dUc cLf cLf cLf iUF iUF -bwC -bwC -bwC +dUc +dUc +dUc iUF iUF -bwC +dUc mPv cLf cLf @@ -77669,7 +77568,7 @@ opZ rGO cLf iUF -bwC +dUc iUF cLf cLf @@ -77678,7 +77577,7 @@ cLf cLf cLf cLf -bwC +dUc iUF cLf cLf @@ -77695,12 +77594,12 @@ cLf cLf cLf iUF -bwC -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc +dUc iUF iUF kYn @@ -77712,18 +77611,18 @@ iUF iUF cLf cLf -bwC +dUc cLf cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -77914,7 +77813,7 @@ cLf cLf cLf iUF -bwC +dUc rGO sKL rGO @@ -77924,18 +77823,18 @@ nMk rGO sKL rGO -bwC +dUc iUF -bwC +dUc iUF -bwC -bwC +dUc +dUc iUF iUF iUF iUF -bwC -bwC +dUc +dUc cLf cLf cLf @@ -77952,7 +77851,7 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -77960,16 +77859,16 @@ cLf cLf iUF cLf -bwC +dUc cLf -bwC +dUc cLf -bwC +dUc cLf iUF cLf cLf -bwC +dUc cLf cLf cLf @@ -78183,14 +78082,14 @@ opZ opZ cLf iUF -bwC +dUc iUF cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -78209,19 +78108,19 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -78253,12 +78152,12 @@ kYn cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf shs @@ -78438,16 +78337,16 @@ nMk rGO sKL rGO -bwC +dUc iUF -bwC +dUc iUF cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -78466,19 +78365,19 @@ cLf cLf cLf tyd -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc cLf -bwC +dUc cLf -bwC +dUc cLf cLf rnk @@ -78505,8 +78404,8 @@ shs shs kYn shs -bwC -bwC +dUc +dUc cLf cLf oDH @@ -78515,7 +78414,7 @@ oDH cLf cLf cLf -bwC +dUc cLf cLf shs @@ -78685,7 +78584,7 @@ cLf cLf cLf iUF -bwC +dUc opZ opZ opZ @@ -78697,14 +78596,14 @@ opZ fYX cLf iUF -bwC +dUc iUF cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -78723,15 +78622,15 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc rnk rnk oFu @@ -78757,13 +78656,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf oDH weu @@ -78771,10 +78670,10 @@ oDH weu oDH bfl -bwC +dUc wfz -bwC -bwC +dUc +dUc shs cLf cLf @@ -78944,24 +78843,24 @@ cLf iUF cLf cLf -bwC +dUc cLf cLf pNk cLf cLf -bwC +dUc cLf cLf iUF -bwC +dUc iUF cLf cLf cLf cLf cLf -bwC +dUc cLf tyd cLf @@ -78980,7 +78879,7 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -79014,14 +78913,14 @@ vxX vxX vxX cLf -bwC +dUc cLf cLf cLf -bwC -bwC +dUc +dUc wfz -bwC +dUc oDH weu oDH @@ -79029,7 +78928,7 @@ weu oDH lTb oDH -bwC +dUc cLf cLf shs @@ -79201,24 +79100,24 @@ cLf iUF cLf cLf -bwC +dUc cLf cLf pNk cLf cLf -bwC +dUc cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -79237,7 +79136,7 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -79275,9 +79174,9 @@ loh loh loh loh -bwC +dUc cLf -bwC +dUc cLf oDH weu @@ -79286,7 +79185,7 @@ weu oDH weu oDH -bwC +dUc cLf cLf shs @@ -79458,24 +79357,24 @@ cLf cLf cLf cLf -bwC +dUc cLf oyS oDZ oyS cLf -bwC +dUc tyd cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -79494,7 +79393,7 @@ cLf cLf cLf cLf -bwC +dUc cLf vxX vxX @@ -79534,8 +79433,8 @@ sRo iFz iFz iFz -bwC -bwC +dUc +dUc lTb weu lTb @@ -79721,12 +79620,12 @@ oyS hPg oyS cLf -bwC +dUc cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -79751,7 +79650,7 @@ cLf cLf cLf cLf -bwC +dUc vxX vxX vxX @@ -79802,7 +79701,7 @@ kqy kqy kqy pBk -bwC +dUc shs cLf cLf @@ -79964,7 +79863,7 @@ cLf cLf cLf mPv -bwC +dUc nAb eSS eSS @@ -79978,12 +79877,12 @@ oyS qjc oyS oyS -bwC +dUc cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -79993,10 +79892,10 @@ vxX vxX vxX cLf -bwC -bwC +dUc +dUc mfA -bwC +dUc fVZ mWe aoL @@ -80048,8 +79947,8 @@ hVs iFz iFz iFz -bwC -bwC +dUc +dUc lTb weu lTb @@ -80238,9 +80137,9 @@ poi poi poi mxq -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -80250,7 +80149,7 @@ poi poi poi cLf -bwC +dUc cLf fsI cLf @@ -80303,9 +80202,9 @@ loh loh loh loh -bwC +dUc cLf -bwC +dUc cLf oDH weu @@ -80314,7 +80213,7 @@ weu oDH weu oDH -bwC +dUc cLf cLf shs @@ -80520,7 +80419,7 @@ uMa sdc sdc hCS -wcl +apW lLk lLk sWd @@ -80560,10 +80459,10 @@ sHh xyN nNv rnk -bwC -bwC +dUc +dUc wfz -bwC +dUc oDH weu oDH @@ -80571,7 +80470,7 @@ weu oDH lTb oDH -bwC +dUc cLf cLf shs @@ -80827,10 +80726,10 @@ oDH weu oDH bfl -bwC +dUc wfz dUc -bwC +dUc shs cLf cLf @@ -80992,7 +80891,7 @@ cLf cLf cLf mPv -bwC +dUc nAb eSS eSS @@ -81085,7 +80984,7 @@ oDH cLf cLf cLf -bwC +dUc cLf cLf shs @@ -81337,12 +81236,12 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf shs @@ -81495,22 +81394,22 @@ cLf cLf cLf cLf -bwC +dUc iUF iUF iUF -bwC +dUc iUF iUF iUF -bwC +dUc iUF iUF iUF -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc eSS cro cro @@ -81588,11 +81487,11 @@ fma fma gtK rnk -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc kYn shs shs @@ -81748,21 +81647,21 @@ cLf cLf cLf cLf -bwC +dUc iUF iUF iUF -bwC +dUc cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -81782,7 +81681,7 @@ eio eio mxq iPw -tgn +tBe vjZ jtd bPP @@ -81852,7 +81751,7 @@ rnk cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -82005,21 +81904,21 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -82318,7 +82217,7 @@ ghU icM hoX wOU -sQi +nnt dNW hdK xiV @@ -82364,8 +82263,8 @@ uoo bMx hiO oFu -bwC -bwC +dUc +dUc iUF cLf cLf @@ -82520,7 +82419,7 @@ cLf cLf cLf iUF -bwC +dUc xrb xrb dEG @@ -82563,7 +82462,7 @@ jch oey dhN sdc -ezH +sgR eQQ vSt umh @@ -82596,7 +82495,7 @@ pzx jgH yds kFT -jXk +mTZ hQK dPg fvo @@ -82604,7 +82503,7 @@ jPO osT dci piH -hng +xaC dKw dKw dKw @@ -82621,7 +82520,7 @@ sEY vJf rnk rnk -bwC +dUc cLf iUF cLf @@ -82793,7 +82692,7 @@ cem cem whY baH -bwC +dUc qhP dJK geh @@ -82853,7 +82752,7 @@ mBj jHx iJF kFT -lmc +uJq sGt ltj fvo @@ -82861,10 +82760,10 @@ pwn eaL eUB dgR -pjf +uPg bui yit -jEO +dpf yit dKw miD @@ -83033,7 +82932,7 @@ tyd cLf cLf cLf -bwC +dUc cLf xrb nEx @@ -83112,7 +83011,7 @@ vGn kFT moH bhZ -xQY +pgJ fvo lcM eaL @@ -83133,7 +83032,7 @@ lXG rnk cLf cLf -bwC +dUc kYn shs cLf @@ -83548,7 +83447,7 @@ cLf cLf cLf iUF -bwC +dUc xrb iNq oHi @@ -83849,11 +83748,11 @@ uDB uDB uDB sdc -uby +fLM soZ jCX jCX -uby +fLM sdc guF uyL @@ -84061,7 +83960,7 @@ cLf cLf cLf cLf -bwC +dUc cLf oPe xch @@ -84161,7 +84060,7 @@ oaP oFu cLf cLf -bwC +dUc cLf cLf cLf @@ -84318,7 +84217,7 @@ cLf cLf cLf cLf -bwC +dUc vxX ubm ubm @@ -84350,10 +84249,10 @@ uZc uZc uZc uZc -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc poi poi poi @@ -84372,7 +84271,7 @@ xSE twR uyL dUS -nTb +meT sdc mHU cAQ @@ -84386,7 +84285,7 @@ ylV wdx rnk rnk -jnV +nKa kxa gwA mcl @@ -84418,7 +84317,7 @@ oqj rnk vxX vxX -bwC +dUc cLf cLf cLf @@ -84614,7 +84513,7 @@ cLf cLf cLf cLf -bwC +dUc htf kpT jdK @@ -84871,17 +84770,17 @@ cLf cLf cLf cLf -bwC +dUc htf iHv rZJ rAK sdc -uby +fLM jCX qzF jCX -uby +fLM sdc dro uyL @@ -85128,7 +85027,7 @@ cLf cLf cLf cLf -bwC +dUc poi mhF jdK @@ -85385,7 +85284,7 @@ cLf cLf cLf cLf -bwC +dUc poi htf poi @@ -85642,7 +85541,7 @@ uOf cLf cLf cLf -bwC +dUc iua tdq cTa @@ -85897,8 +85796,8 @@ cLf ved gxu ved -bwC -bwC +dUc +dUc poi poi poi @@ -86473,7 +86372,7 @@ paa pEZ wiK mXM -bwC +dUc gGf cLf cLf @@ -87407,8 +87306,8 @@ cLf cLf cLf cLf -bwC -bwC +dUc +dUc cLf cLf cLf @@ -87499,7 +87398,7 @@ lKh dgp paa rnk -bwC +dUc iUF cLf cLf @@ -87756,7 +87655,7 @@ dgp dgp rFd rnk -bwC +dUc iUF cLf cLf @@ -88004,10 +87903,10 @@ kJT fhL kJT cLf -bwC +dUc cLf -bwC -kkx +dUc +cxg rnk wdV nHm @@ -88181,8 +88080,8 @@ pnS pnS pnS unk -bwC -bwC +dUc +dUc jza mbM mbM @@ -88261,9 +88160,9 @@ kJT kyi kJT cLf -bwC +dUc cLf -bwC +dUc cLf rnk xuD @@ -88440,7 +88339,7 @@ pnS pnS cLf cLf -bwC +dUc uuN uuN plA @@ -88517,11 +88416,11 @@ hDK kJT iTL kJT -bwC +dUc wfz uuN wfz -bwC +dUc jsC xWi jsC @@ -88697,7 +88596,7 @@ unk cLf cLf cLf -bwC +dUc uuN uuN plA @@ -88950,10 +88849,10 @@ cLf cLf cLf cLf -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc rTM rTM rTM @@ -88997,7 +88896,7 @@ axi bAw cGP ygb -mXT +iPz lQN qsI haf @@ -89224,7 +89123,7 @@ gPZ pDG nGd xst -uXk +wYO ecC wrx gpV @@ -89291,7 +89190,7 @@ pUY kJT hgV wJC -bwC +dUc uuN gJE paa @@ -89548,7 +89447,7 @@ hYg kJT rnk rnk -bwC +dUc wfz gJE paa @@ -89805,7 +89704,7 @@ ndI kJT afV rnk -bwC +dUc uuN gJE paa @@ -90494,7 +90393,7 @@ cLf cLf cLf iUF -bwC +dUc hDo sIM wVz @@ -90757,7 +90656,7 @@ laF mnX rkt bqr -nHk +pWh pyF waJ lEM @@ -90831,13 +90730,13 @@ uZx paa lqf rnk -jsI -jsI -jsI +vxX +vxX +vxX cLf cLf -bwC -bwC +dUc +dUc cLf cLf cLf @@ -91008,7 +90907,7 @@ cLf cLf cLf iUF -bwC +dUc hDo fmB rAu @@ -91088,13 +90987,13 @@ uZx paa pDQ rnk -jsI -jsI +vxX +vxX rnk rnk rnk rnk -bwC +dUc cLf cLf cLf @@ -91576,7 +91475,7 @@ tWs acc oRa hWx -jvU +lYo acc vjq pKb @@ -92373,13 +92272,13 @@ uZx rms tcN rnk -bwC -bwC +dUc +dUc rnk rnk rnk rnk -bwC +dUc cLf cLf cLf @@ -92563,14 +92462,14 @@ axD axD axD fYe -bwC -bwC -bwC +dUc +dUc +dUc uuN uuN -bwC -bwC -bwC +dUc +dUc +dUc fYe fYe fri @@ -92632,11 +92531,11 @@ lqf rnk cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -92811,7 +92710,7 @@ cLf cLf cLf cLf -bwC +dUc cLf fZF mGX @@ -92891,9 +92790,9 @@ hzF hzF hzF hzF -bwC -bwC -bwC +dUc +dUc +dUc cLf cLf cLf @@ -93150,7 +93049,7 @@ pCJ hzF cLf cLf -bwC +dUc cLf cLf cLf @@ -93320,29 +93219,29 @@ cLf cLf cLf iUF -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc axD axD axD axD -fWa +bRl jxq vEF axD axD -bwC +dUc uuN -bwC +dUc uuN uuN -bwC +dUc uuN -bwC -bwC +dUc +dUc fYe fri nAe @@ -93592,12 +93491,12 @@ dGh jqu hrM cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf fYe fYe @@ -93849,7 +93748,7 @@ nbm iDJ hrM cLf -bwC +dUc cLf cLf cLf @@ -94091,11 +93990,11 @@ cLf cLf cLf iUF -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc axD hnE axD @@ -94346,8 +94245,8 @@ cLf cLf cLf cLf -bwC -bwC +dUc +dUc cLf cLf cLf @@ -94360,11 +94259,11 @@ jpd jRc ruc jcW -fSH +xNb axD eKR sgz -fKp +tUF sPv eoo iLG @@ -94619,13 +94518,13 @@ aEP axD axD axD -tAs +vQf sgz vlD puT tsP wNa -vXW +jSs jzC mcw aKg @@ -94869,15 +94768,15 @@ cLf bqX bqX bhY -mCH +rcz eYO mrq eBK bQc -hgE +neH nZB fCY -kbU +loC ejb fZr bUM @@ -95375,11 +95274,11 @@ cLf cLf cLf iUF -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc eKR pVC yhk @@ -95910,7 +95809,7 @@ alc jZj nAx kaz -ubF +dbJ mMH sPS jww @@ -96167,7 +96066,7 @@ cgo wHs odL wHs -vkP +xnc rEp qgd xaI @@ -96660,11 +96559,11 @@ cLf cLf cLf iUF -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc eKR cNQ kjs @@ -96679,7 +96578,7 @@ oOP eKR eKR juw -mGw +mtG juw juw juw @@ -96748,7 +96647,7 @@ tNz nHK cLf cLf -bwC +dUc cLf cLf cLf @@ -96924,7 +96823,7 @@ cLf cLf bqX cQP -tRT +vay eon sZK sZK @@ -97003,8 +96902,8 @@ xcl xrd ppk hzF -bwC -bwC +dUc +dUc wfz cLf cLf @@ -97182,12 +97081,12 @@ cLf bqX bqX tsJ -nmF +bCr kYU jTd rkz lrc -gez +eHa vQP ita hOb @@ -97262,7 +97161,7 @@ azg azg cLf cLf -bwC +dUc cLf cLf cLf @@ -97695,7 +97594,7 @@ cLf cLf cLf cLf -bwC +dUc cLf eKR iSE @@ -97946,13 +97845,13 @@ cLf cLf cLf iUF -bwC -bwC -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc +dUc +dUc cLf eKR tju @@ -98467,7 +98366,7 @@ cLf cLf cLf iUF -bwC +dUc eKR eKR uCw @@ -98483,7 +98382,7 @@ juw juw juw wxW -flW +qmg dTd npg juw @@ -98731,13 +98630,13 @@ jVy brP jVy eKR -bwC -bwC -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc +dUc +dUc juw vOe vOe @@ -99242,10 +99141,10 @@ ili cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc dVE pjN hoe @@ -99489,8 +99388,8 @@ kGm aPz aPz xsN -bwC -bwC +dUc +dUc cLf cLf reg @@ -99574,7 +99473,7 @@ vFr vlM uEo cLf -bwC +dUc cLf cLf cLf @@ -99747,7 +99646,7 @@ oOC oOC xsN cLf -bwC +dUc cLf cLf dwF @@ -99756,7 +99655,7 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -99830,7 +99729,7 @@ mUU sLt dnt uEo -bwC +dUc iUF cLf cLf @@ -99998,7 +99897,7 @@ cLf cLf cLf iUF -bwC +dUc srs aPz aPz @@ -100278,7 +100177,7 @@ cLf iWV hJs xqe -bwC +dUc utM utM kOd @@ -100530,8 +100429,8 @@ vBs hfm eVE jEY -bwC -bwC +dUc +dUc vfJ hJs vfJ @@ -100792,7 +100691,7 @@ cLf iWV hJs iWV -bwC +dUc utM utM wWD @@ -101058,7 +100957,7 @@ lnZ dCu xUR vRm -dLy +kkJ utM xsv tHF @@ -101305,8 +101204,8 @@ cLf cLf cLf hJs -bwC -bwC +dUc +dUc obA utM utM @@ -101557,10 +101456,10 @@ eEx sYI sfY srs -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc hJs cLf cLf @@ -101795,8 +101694,8 @@ cLf cLf cLf iUF -bwC -bwC +dUc +dUc unk vxX srs @@ -101816,7 +101715,7 @@ srs srs cLf cLf -bwC +dUc cLf hqF epi @@ -102073,7 +101972,7 @@ skw srs cLf cLf -bwC +dUc cLf cLf cLf @@ -102130,7 +102029,7 @@ nSH oqz kXz oqz -tEB +ydy dct hqk jFc @@ -102143,7 +102042,7 @@ uFb jke kiK uFb -bwC +dUc iUF cLf cLf @@ -102330,7 +102229,7 @@ hnL srs cLf cLf -bwC +dUc cLf cLf cLf @@ -102339,7 +102238,7 @@ vfJ vfJ vfJ vfJ -nwi +bUu grl pJN iKc @@ -102401,7 +102300,7 @@ vBV cpF uFb cLf -bwC +dUc cLf cLf cLf @@ -102587,7 +102486,7 @@ kYu kYu cLf cLf -bwC +dUc cLf cLf cLf @@ -102843,10 +102742,10 @@ pgk ins kYu kYu -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc vxX vxX vxX @@ -102874,7 +102773,7 @@ nJF stw azv dZd -wJo +esX lYm azv azv @@ -103080,9 +102979,9 @@ cLf cLf cLf iUF -bwC -bwC -bwC +dUc +dUc +dUc dZy awB glq @@ -103158,7 +103057,7 @@ uLY teG sHg sHg -etE +qmD wKY iFq jFc @@ -103433,7 +103332,7 @@ jge uFb cLf cLf -bwC +dUc cLf iUF cLf @@ -103599,7 +103498,7 @@ cLf vxX dZy fhG -roH +lQe qrt rmx wHJ @@ -103890,7 +103789,7 @@ ipv tdk hkc swi -cEi +dHy cBB trL nMP @@ -103918,11 +103817,11 @@ kBM nMI cLf xAy -bwC -bwC +dUc +dUc xAy cLf -bwC +dUc xAy xAy xTw @@ -104143,9 +104042,9 @@ qIQ irJ rBI cPt -tdN +ctE ixU -nhc +mOc swi swi swi @@ -104174,7 +104073,7 @@ jUU kBM pWw cLf -bwC +dUc cLf cLf uuN @@ -104205,7 +104104,7 @@ wag xzJ kub pUr -bwC +dUc iUF cLf cLf @@ -104398,12 +104297,12 @@ cPt lcj tCz dfr -kKS +mKF cPt iQZ oqp dfM -oWw +pgS lMT ixU ixU @@ -104431,7 +104330,7 @@ jUU nyQ pWw cLf -bwC +dUc cLf cLf uuN @@ -104688,7 +104587,7 @@ jUU kBM pWw cLf -bwC +dUc cLf cLf axt @@ -104946,11 +104845,11 @@ ajQ nMI cLf xAy -bwC -bwC +dUc +dUc xAy cLf -bwC +dUc xAy xAy qXB @@ -104981,7 +104880,7 @@ ruZ ruZ ruZ fmY -bwC +dUc mPv cLf cLf @@ -105171,9 +105070,9 @@ hEw irJ cPt cPt -wzW +dmE ixU -hcd +wVL ixU ixU ixU @@ -105730,7 +105629,7 @@ cwk joB dUi nCe -fgZ +mBX xma dUi xma @@ -106009,7 +105908,7 @@ ykG ykG ykG fdj -bwC +dUc mPv vxX vxX @@ -106505,7 +106404,7 @@ gEJ jEc sJo xKC -ndC +omE jxd mQk dUi @@ -106756,13 +106655,13 @@ qsu kFp csB pAB -tGU +ryG sIx cFc iCM grv dUi -iEL +cAy vqI ger dUi @@ -106990,15 +106889,15 @@ niB hjI crU vxX -bwC -bwC +dUc +dUc nbu nbu nbu nbu nbu -bwC -bwC +dUc +dUc pLB dpU dpU @@ -107017,7 +106916,7 @@ gTV aGQ kEn jxd -rjP +fzW gur mkE jxd @@ -107247,16 +107146,16 @@ pXS hjI crU vxX -bwC -bwC +dUc +dUc nbu gxw gxw cxN nbu -bwC -bwC -bwC +dUc +dUc +dUc dpU iel hTX @@ -107504,16 +107403,16 @@ niB qAI crU vxX -bwC -bwC +dUc +dUc nbu gxw puQ gxw nbu -bwC -bwC -bwC +dUc +dUc +dUc dpU nav pJw @@ -107525,7 +107424,7 @@ vIi dpU eyg gTV -hfq +vME gTV eyg wpn @@ -107761,16 +107660,16 @@ qOs bpy crU vxX -bwC -bwC +dUc +dUc nbu cIx enn tBt nbu -bwC -bwC -bwC +dUc +dUc +dUc dpU iPu eoQ @@ -108018,16 +107917,16 @@ niB aoA crU vxX -bwC -bwC +dUc +dUc nbu wpM wVI bvl nbu -bwC -bwC -bwC +dUc +dUc +dUc dpU ppR mZA @@ -108064,10 +107963,10 @@ pGo ykG ykG ykG -bwC -bwC +dUc +dUc fmr -bwC +dUc cLf cLf vxX @@ -108230,9 +108129,9 @@ cLf cLf cLf cLf -bwC +dUc utU -bwC +dUc cLf cLf cLf @@ -108275,16 +108174,16 @@ ers dsL crU vxX -bwC -bwC -bwC +dUc +dUc +dUc gdP -bwC +dUc mXr -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc dpU kRq kLU @@ -108320,9 +108219,9 @@ ece kcz ykG mXK -bwC -bwC -bwC +dUc +dUc +dUc fmr cLf cLf @@ -108487,9 +108386,9 @@ cLf cLf cLf cLf -bwC +dUc utU -bwC +dUc cLf cLf cLf @@ -108748,14 +108647,14 @@ qVF izr qVF wNk -bwC -bwC -bwC -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc +dUc +dUc +dUc fYe vxX vxX @@ -108783,11 +108682,11 @@ gOY vxX cxg vxX -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc cNc pNi kUb @@ -108997,9 +108896,9 @@ cLf cLf cLf cLf -bwC -bwC -bwC +dUc +dUc +dUc wZz wZz qpj @@ -109008,7 +108907,7 @@ wZz cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -109032,7 +108931,7 @@ pQG atb qVB iOH -tOz +fQr gOY tDS cpJ @@ -109055,7 +108954,7 @@ oRf sYU hLj syl -nDN +tpf nDN nDN pPv @@ -109261,11 +109160,11 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -109283,7 +109182,7 @@ ilp jTB jTB mHc -emb +wnH gOY nQl jSR @@ -109518,7 +109417,7 @@ cLf cLf cLf cLf -bwC +dUc cLf fYe fYe @@ -109540,8 +109439,8 @@ ilp jTB jGd eBH -oxg -abP +cQX +enX rSB bwj mSG @@ -109559,7 +109458,7 @@ aXt jyO qsa wVI -bwC +dUc rLK vYL jSu @@ -109775,7 +109674,7 @@ cLf cLf cLf cLf -bwC +dUc cLf vxX vxX @@ -110026,12 +109925,12 @@ cLf cLf cLf shs -bwC +dUc wfz -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc vxX vxX vxX @@ -110073,7 +109972,7 @@ nbu nbu nbu nbu -bwC +dUc utf qKj jSu @@ -110284,7 +110183,7 @@ shs shs shs cLf -bwC +dUc cLf cLf cLf @@ -110338,7 +110237,7 @@ rFZ bND mjR bND -kaD +vcZ fTX fTX fTX @@ -110541,7 +110440,7 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -110550,7 +110449,7 @@ cLf vxX cLf cLf -bwC +dUc cLf cLf cLf @@ -110587,7 +110486,7 @@ pIV mBg rqJ wVI -bwC +dUc rLK nLD jSu @@ -110793,21 +110692,21 @@ cLf shs shs cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc cLf cLf cLf @@ -110825,13 +110724,13 @@ ilp jTB cuA cuA -nCv -iKb +nNl +uwV vNl nCo tGW tGW -qgZ +nli pLk vvE aWM @@ -111048,11 +110947,11 @@ cLf cLf cLf shs -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc pbP pih pbP @@ -111061,10 +110960,10 @@ pbP cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc cLf cLf cLf @@ -111082,13 +110981,13 @@ ilp jTB jTB kQB -lqZ +ioL gOY aks tTK tvB -nSZ -gOY +cSI +nkM vxZ dyS lfq @@ -111101,7 +111000,7 @@ nbu nbu nbu nbu -bwC +dUc utf hon jSu @@ -111318,10 +111217,10 @@ pih cLf cLf tyd -bwC +dUc cLf cLf -bwC +dUc cLf cLf cLf @@ -111344,7 +111243,7 @@ gOY gOY tTK rFA -aCh +oBK xfQ cAG xXF @@ -111575,10 +111474,10 @@ pih cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc cLf cLf pkl @@ -111592,21 +111491,21 @@ aku uOo aku aku -hpC -bFj -bFj -cPs -cPs +fbN +gsW +gsW +mnS +mnS gOY -gKe +iJZ lcd ecM eKT -gOY +nkM vxZ pZK lfq -gOY +nkM cxg cxg vxX @@ -111615,7 +111514,7 @@ msY qNM fzM wVI -bwC +dUc rLK fMS jSu @@ -111832,10 +111731,10 @@ pih cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc rXt rXt rXt @@ -111850,13 +111749,13 @@ uOo aku aku pkw -lmw -xXf -nYi -tVn -aLF -bRZ -hJj +mgi +rkd +aMS +hVm +mFa +elG +uXb cmn jgl efL @@ -111864,7 +111763,7 @@ cQu wgI vib vMR -bwC +dUc cxg vxX nbu @@ -111918,7 +111817,7 @@ cvL mCm cpG hRX -pBf +iFn prc prc prc @@ -112107,13 +112006,13 @@ uOo aku aku aku -qhQ -mGg -blP -hDM +ajs +gop +cqf +xJt gOY joD -dbA +ffK cut rcR efL @@ -112121,7 +112020,7 @@ miM awf egV vMR -bwC +dUc cxg vxX nbu @@ -112346,10 +112245,10 @@ pih cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc rXt rXt rXt @@ -112364,21 +112263,21 @@ aku aku aku aku -eFd -xwJ +vjB +jEw cmn -qny +cqt gOY kke -qZf -rKH +wmM +auA icz efL nbS nbS nbS vMR -bwC +dUc cLf vxX vxX @@ -112386,7 +112285,7 @@ vxX vxX vxX vxX -bwC +dUc wRN fdC uVP @@ -112603,10 +112502,10 @@ pih cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc cLf cLf pkl @@ -112621,29 +112520,29 @@ aku aku aku uro -bFj -eGL -hgq -bFj -gOY -gOY +gsW +hDJ +grm +gsW gOY -pTx gOY gOY +roK gOY -gOY -gOY -gOY -bwC +nkM +nkM +nkM +nkM +nkM +dUc cLf -bwC +dUc vxX vxX vxX vxX vxX -bwC +dUc fTX rLK hfp @@ -112860,10 +112759,10 @@ pih cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc cLf cLf cLf @@ -112884,34 +112783,34 @@ xAd wfU rbS kAI -sbS -jHE +ojR +lBm uvx mna gXw -idN +gHL jGy moe -bwC +dUc cLf -bwC +dUc vxX vxX vxX vxX vxX vxX -bwC +dUc eTZ -bwC +dUc xLu rZB pLe -bwC +dUc lfG rZB pLe -bwC +dUc lfG aUx kUX @@ -113104,11 +113003,11 @@ cLf cLf cLf shs -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc pbP pih pbP @@ -113117,14 +113016,14 @@ pbP cLf cLf cLf -bwC +dUc fYe fYe wfz -bwC +dUc vxX -bwC -bwC +dUc +dUc ilp ilp ilp @@ -113149,13 +113048,13 @@ uEV rRO yai moe -bwC -bwC -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc +dUc +dUc vxX vxX nbu @@ -113363,12 +113262,12 @@ cLf shs cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -113395,7 +113294,7 @@ tsz lJq obA vfJ -bjK +kBr vfJ moe tLh @@ -113406,13 +113305,13 @@ rxn rRO mIa moe -bwC +dUc cLf iUF cLf cLf cLf -bwC +dUc vxX vxX nbu @@ -113620,12 +113519,12 @@ cLf shs shs cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -113652,7 +113551,7 @@ uYH aQm obA upd -hFq +bnb upd moe rHG @@ -113663,13 +113562,13 @@ rxn rRO iNC moe -bwC +dUc cLf iUF cLf cLf cLf -bwC +dUc vxX vxX nbu @@ -113881,13 +113780,13 @@ shs shs shs shs -bwC +dUc wfz -bwC +dUc shs shs shs -bwC +dUc vxX vxX vxX @@ -113908,8 +113807,8 @@ lJq jBM lJq obA -pka -vDA +qnV +iPW hkG moe mJU @@ -113917,16 +113816,16 @@ bpW oix oix hmG -qII +gME xGg moe -bwC +dUc cLf iUF cLf cLf cLf -bwC +dUc vxX vxX nbu @@ -114169,21 +114068,21 @@ vfJ vfJ vfJ moe -sbE +pwE dlE xjq -mgD +feR moe fDj fDj moe -bwC +dUc cLf iUF cLf cLf cLf -bwC +dUc vxX vxX nbu @@ -114202,11 +114101,11 @@ nbu vxX mUQ cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf vxX vxX @@ -114431,16 +114330,16 @@ fDj moe iyE moe -bwC -bwC -bwC +dUc +dUc +dUc nmN cLf iUF cLf cLf cLf -bwC +dUc cLf vxX vxX @@ -114459,18 +114358,18 @@ fYe fYe uVI cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf vxX vxX vxX vxX -bwC +dUc cLf mDV uFC @@ -114682,13 +114581,13 @@ etW cLf cLf cLf -bwC -bwC -bwC +dUc +dUc +dUc moe aub moe -bwC +dUc cLf cLf cLf @@ -114697,12 +114596,12 @@ iUF cLf cLf cLf -bwC +dUc cLf cLf vxX cLf -bwC +dUc vxX vxX vxX @@ -114716,18 +114615,18 @@ fYe vxX mUQ vxX -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf vxX vxX vxX -bwC +dUc cLf mDV uFC @@ -114931,22 +114830,22 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc iUF iUF cLf cLf cLf -bwC +dUc ojz aHZ ojz -bwC -bwC +dUc +dUc iUF iUF iUF @@ -114954,12 +114853,12 @@ iUF cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -114973,19 +114872,19 @@ vxX vxX vxX vxX -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf vxX vxX vxX vxX -bwC -bwC +dUc +dUc mDV uFC ivC @@ -115197,7 +115096,7 @@ cLf iUF iUF iUF -bwC +dUc nmN dXU dXU @@ -115211,17 +115110,17 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -115230,11 +115129,11 @@ cLf cLf vxX vxX -bwC +dUc iUF iUF iUF -bwC +dUc vxX vxX vxX @@ -115258,10 +115157,10 @@ uFC vxX vxX vxX -kkx -kkx -kkx -kkx +cxg +cxg +cxg +cxg vxX vxX vxX @@ -115456,9 +115355,9 @@ cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -115468,17 +115367,17 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -115500,7 +115399,7 @@ mUQ fYe cLf cLf -bwC +dUc uFC kEu kEu @@ -115712,11 +115611,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -115725,17 +115624,17 @@ cLf cLf cLf cLf -bwC -bwC -bwC -bwC -bwC -bwC -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc +dUc +dUc +dUc +dUc +dUc +dUc cLf cLf cLf @@ -115968,13 +115867,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -115982,17 +115881,17 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -116225,13 +116124,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -116239,17 +116138,17 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -116483,11 +116382,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -116496,17 +116395,17 @@ cLf cLf cLf cLf -bwC -bwC +dUc +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC -bwC +dUc +dUc cLf cLf cLf @@ -116741,9 +116640,9 @@ cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -116754,15 +116653,15 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -116997,11 +116896,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -117011,15 +116910,15 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -117253,13 +117152,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -117268,15 +117167,15 @@ cLf cLf cLf shs -bwC -bwC +dUc +dUc jQS jQS jQS jQS jQS -bwC -bwC +dUc +dUc shs cLf cLf @@ -117510,13 +117409,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -117525,7 +117424,7 @@ cLf cLf cLf shs -bwC +dUc cLf jQS lgO @@ -117533,9 +117432,9 @@ czY kOL jQS cLf -bwC +dUc shs -bwC +dUc cLf cLf cLf @@ -117768,11 +117667,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -117780,19 +117679,19 @@ shs shs shs shs -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc jQS pRN kOL sgc jQS -bwC -bwC +dUc +dUc cLf -bwC +dUc shs shs shs @@ -118026,9 +117925,9 @@ cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -118282,15 +118181,15 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf -bwC +dUc cLf cLf cLf @@ -118310,8 +118209,8 @@ jQS uep qDP qDP -bwC -bwC +dUc +dUc cLf cLf cLf @@ -118538,17 +118437,17 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc jQS tLO jQS @@ -118568,7 +118467,7 @@ ifV jQS qDP cLf -bwC +dUc cLf cLf cLf @@ -118795,17 +118694,17 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC -bwC -bwC -bwC -bwC +dUc +dUc +dUc +dUc +dUc jQS xnB jQS @@ -119053,11 +118952,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -119311,9 +119210,9 @@ cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -119567,16 +119466,16 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf shs -bwC +dUc jQS hAL jQS @@ -119594,8 +119493,8 @@ tVV jQS ucG jQS -bwC -bwC +dUc +dUc shs cLf cLf @@ -119823,13 +119722,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf shs @@ -120080,13 +119979,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -120338,11 +120237,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -120596,9 +120495,9 @@ cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -120852,11 +120751,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -121108,13 +121007,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf fZF @@ -121365,13 +121264,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf fZF @@ -121395,7 +121294,7 @@ jQS jQS jQS fZF -bwC +dUc shs cLf cLf @@ -121623,11 +121522,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -121881,9 +121780,9 @@ cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf @@ -121909,7 +121808,7 @@ wTs jQS jQS fZF -bwC +dUc shs cLf cLf @@ -122137,11 +122036,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -122393,13 +122292,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc dUc dUc fZF @@ -122650,13 +122549,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc dUc dUc fZF @@ -122667,11 +122566,11 @@ jQS jQS jQS jQS -pXV +gmm pXV hNP pXV -pXV +uak jQS jQS jQS @@ -122908,11 +122807,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -122923,20 +122822,20 @@ fZF fZF jQS jQS -kOL -kOL +xna +xna fsV bfX -kOL -kOL -kOL +xna +xna +xna jQS jQS fZF fZF fZF fZF -bwC +dUc cLf cLf cLf @@ -123166,34 +123065,34 @@ cLf cLf cLf cLf -bwC +dUc cLf -bwC +dUc cLf cLf cLf cLf cLf cLf -bwC +dUc cLf fZF jQS jQS eFJ -kOL -kOL +xna +xna tBC -kOL -kOL -qEr +xna +xna +xna jQS jQS fZF tyd cLf -bwC -bwC +dUc +dUc cLf cLf cLf @@ -123422,26 +123321,26 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf cLf shs shs -bwC +dUc fZF jQS jQS -gmm -kOL -mvh +xna +xna +qEr hFN -mvh +qEr khJ sug jQS @@ -123678,13 +123577,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -123694,12 +123593,12 @@ cLf fZF jQS jQS -kOL -kOL -kOL -kOL -kOL -kOL +xna +xna +xna +xna +xna +xna lHp jQS jQS @@ -123935,13 +123834,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -123952,7 +123851,7 @@ fZF jQS jQS jQS -uak +xna oVV dJM jvV @@ -124193,11 +124092,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -124217,7 +124116,7 @@ jQS jQS jQS fZF -bwC +dUc cLf cLf cLf @@ -124451,9 +124350,9 @@ cLf cLf cLf cLf -bwC -bwC -bwC +dUc +dUc +dUc cLf cLf cLf @@ -124463,7 +124362,7 @@ cLf cLf cLf cLf -bwC +dUc fZF jQS jQS @@ -124474,7 +124373,7 @@ jQS jQS fZF cLf -bwC +dUc cLf cLf cLf @@ -124707,11 +124606,11 @@ cLf cLf cLf cLf -bwC -bwC +dUc +dUc nmN -bwC -bwC +dUc +dUc cLf cLf cLf @@ -124720,7 +124619,7 @@ cLf cLf cLf cLf -bwC +dUc cLf fZF fZF @@ -124731,7 +124630,7 @@ fZF fZF cLf cLf -bwC +dUc cLf cLf cLf @@ -124964,11 +124863,11 @@ cLf cLf cLf cLf -bwC +dUc xUA uuN oJv -bwC +dUc cLf cLf cLf @@ -124977,18 +124876,18 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -125221,11 +125120,11 @@ cLf cLf cLf cLf -bwC -bwC +dUc +dUc nmN -bwC -bwC +dUc +dUc cLf cLf cLf @@ -125234,18 +125133,18 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -125479,9 +125378,9 @@ cLf cLf cLf cLf -bwC -bwC -bwC +dUc +dUc +dUc cLf cLf cLf @@ -125494,11 +125393,11 @@ shs shs cLf cLf -bwC +dUc cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -125735,11 +125634,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -125991,13 +125890,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -126248,13 +126147,13 @@ cLf cLf cLf cLf -bwC +dUc cLf cLf cLf cLf cLf -bwC +dUc cLf cLf cLf @@ -126506,11 +126405,11 @@ cLf cLf cLf nmN -bwC -bwC +dUc +dUc cLf -bwC -bwC +dUc +dUc nmN cLf cLf @@ -126764,9 +126663,9 @@ cLf cLf cLf cLf -bwC -bwC -bwC +dUc +dUc +dUc cLf cLf cLf @@ -142999,9 +142898,9 @@ hhX hhX hhX hhX -hhX -hhX -hhX +hen +hen +hen hhX hhX hhX @@ -143256,9 +143155,9 @@ hhX hhX hhX hhX -hhX -hhX -hhX +hen +hen +hen hhX hhX hhX @@ -143513,9 +143412,9 @@ vxX hhX hhX fZF -hhX -hhX -hhX +hen +hen +hen fZF hhX hhX @@ -143770,9 +143669,9 @@ fYe fYe qHE fZF -hhX -hhX -hhX +hen +hen +hen fZF hhX hhX @@ -145756,11 +145655,11 @@ hhX hhX hhX hhX -hhX -hhX -hhX -hhX -hhX +hen +hen +hen +hen +hen vxX vxX vxX @@ -146013,11 +145912,11 @@ hhX hhX hhX hhX -hhX -fNW -hhX -hhX -hhX +hen +fOe +hen +hen +hen vxX vxX vxX @@ -146044,7 +145943,7 @@ wli aJP iaN sdc -dXh +sdc fVZ fVZ sdc @@ -146270,11 +146169,11 @@ hhX hhX hhX hhX -hhX -hhX -hhX -hhX -hhX +hen +hen +hen +hen +hen vxX vxX vxX @@ -147332,7 +147231,7 @@ sdc ilr gDQ qWY -veF +qjV oZQ oZQ oZQ @@ -150635,7 +150534,7 @@ jOV kDb ctL qCU -rvu +duB nvR fDi uEX @@ -151403,8 +151302,8 @@ hHw uRG oyP dAq -maT -pIB +xbr +qFS wSc jOV vxX @@ -151424,7 +151323,7 @@ mqA uaT tGw ipc -mVR +eQJ hED vxX vxX @@ -153276,7 +153175,7 @@ vxX gvw gjt jEf -ndk +kQV uKv evg gvw @@ -156312,10 +156211,10 @@ vxX vxX unk unk -kkx -kkx -kkx -kkx +cxg +cxg +cxg +cxg unk unk vxX @@ -156568,12 +156467,12 @@ vxX vxX vxX unk -kkx -kkx -kkx +cxg +cxg +cxg nQT -kkx -kkx +cxg +cxg unk jCD jCD @@ -156825,12 +156724,12 @@ dsG vxX vxX unk -kkx +cxg joM joM joM joM -kkx +cxg eOx wMY apb @@ -157082,12 +156981,12 @@ dsG dsG dsG any -kkx +cxg joM joM joM joM -kkx +cxg eOx fFt cTH @@ -157339,12 +157238,12 @@ fYe fYe fYe unk -kkx -kkx -kkx -kkx -kkx -kkx +cxg +cxg +cxg +cxg +cxg +cxg unk jCD jCD @@ -157597,10 +157496,10 @@ fYe fYe unk unk -kkx -kkx -kkx -kkx +cxg +cxg +cxg +cxg unk unk vxX @@ -157632,7 +157531,7 @@ oKx oKx dzu oKx -oKx +fuZ mCn cUv nsY @@ -161188,7 +161087,7 @@ jxE ttt ttt ttt -cbT +qhg ttt wcH fib @@ -161442,7 +161341,7 @@ tot pWn ylD rTc -kNM +xxs xeF flm qeA @@ -161757,7 +161656,7 @@ mGW mGW iZz nHK -eaY +ufW vwn eRf vRC @@ -162979,7 +162878,7 @@ fIv fIv fIv iEQ -xTN +oxN fIv fIv fIv @@ -165869,7 +165768,7 @@ vDa gMk gMk lAj -oml +mFR kRX hRO ajS @@ -167077,7 +166976,7 @@ oID hhX hhX hhX -kkx +cxg srs bFS bFS @@ -167333,7 +167232,7 @@ hhX oID jVV jVV -kkx +cxg pvT srs upF @@ -167590,8 +167489,8 @@ hhX oID hhX hhX -kkx -kkx +cxg +cxg srs mCt riQ @@ -167848,7 +167747,7 @@ oID hhX hhX hhX -kkx +cxg srs riQ bNI @@ -168657,7 +168556,7 @@ vxX vxX uet gMk -pti +tEJ gMk gMk gMk @@ -169132,7 +169031,7 @@ hhX oID hhX hhX -kkx +cxg mQE mQE gwF @@ -169388,8 +169287,8 @@ hhX hhX hhX hhX -kkx -kkx +cxg +cxg vxX imZ mQE @@ -169645,7 +169544,7 @@ hhX hhX hhX hhX -kkx +cxg pvT vxX vxX @@ -169921,7 +169820,7 @@ wYj pdo sJT vxX -pvT +uif hhX hhX fYe @@ -170732,7 +170631,7 @@ vxX vxX vxX gMk -hVb +vkv vxX dtQ vxX @@ -170773,9 +170672,9 @@ vxX vxX vxX vxX -hhX -hhX -hhX +hen +hen +hen jVV hhX hhX @@ -172233,7 +172132,7 @@ vAB kWb kWb kWb -cxg +fYe hhX hhX hhX @@ -172597,7 +172496,7 @@ uJc mml mml eLU -nsH +jVV oID hhX hhX @@ -172746,7 +172645,7 @@ kWb kWb kWb kWb -cxg +fYe hhX hhX hhX @@ -173072,7 +172971,7 @@ vHa aWD aWD aWD -giX +ewa gCT kgb gaI @@ -174343,7 +174242,7 @@ kHU kHU kHU ouG -dTV +fst dBp bPH dUi @@ -174617,7 +174516,7 @@ wtH wtH rsw vEq -vPL +rkZ wtH wtH aWD @@ -176621,7 +176520,7 @@ raz raz nzk fpY -vYH +clQ ssg vtN ylR @@ -177912,7 +177811,7 @@ gmH rXS tOL fPv -rjv +iAM iFN mZn oND @@ -179697,8 +179596,8 @@ uif mNZ mNZ fYe -hhX -hhX +hen +hen fYe mNZ mNZ @@ -179954,9 +179853,9 @@ fYe fYe fYe fYe -hhX -hhX -hhX +hen +hen +hen mNZ mNZ mNZ @@ -180211,10 +180110,10 @@ mNZ mNZ mNZ fYe -hhX -hhX -hhX -hCu +hen +hen +hen +umg hhX jVV hhX @@ -180468,9 +180367,9 @@ hhX hhX hhX hhX -hhX -hhX -hhX +hen +hen +hen hhX hhX jVV @@ -180725,9 +180624,9 @@ hhX hhX hhX hhX -hhX -hhX -hhX +hen +hen +hen hhX hhX uOY @@ -180763,9 +180662,9 @@ vxX vxX vxX vxX -cxg -cxg -cxg +fYe +fYe +fYe hhX hhX hhX @@ -180994,8 +180893,8 @@ fDj wou qSt jYT -hQq -xSa +tuT +bRD fDj hhX hhX diff --git a/_maps/modular_generic/ice_l_storage.dmm b/_maps/modular_generic/ice_l_storage.dmm index 5914568908c58..6aca9bec648fb 100644 --- a/_maps/modular_generic/ice_l_storage.dmm +++ b/_maps/modular_generic/ice_l_storage.dmm @@ -38,9 +38,7 @@ /turf/closed/wall/ice, /area/template_noop) "i" = ( -/obj/structure/railing{ - layer = 4 - }, +/obj/structure/railing, /obj/effect/decal/cleanable/dirt, /obj/machinery/space_heater, /turf/open/floor/plastic, @@ -122,17 +120,13 @@ }, /obj/item/trash/can, /obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - layer = 4 - }, +/obj/structure/railing, /turf/open/floor/plastic, /area/template_noop) "y" = ( /obj/structure/closet/crate/bin, /obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - layer = 4 - }, +/obj/structure/railing, /turf/open/floor/plastic, /area/template_noop) "z" = ( @@ -164,9 +158,7 @@ /turf/open/floor/plating, /area/template_noop) "D" = ( -/obj/structure/railing{ - layer = 4 - }, +/obj/structure/railing, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plastic, /area/template_noop) @@ -203,9 +195,7 @@ /obj/structure/chair/plastic{ dir = 1 }, -/obj/structure/railing{ - layer = 4 - }, +/obj/structure/railing, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plastic, /area/template_noop) diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm index 41860e3beabd8..fd82a5b0e2bd7 100644 --- a/_maps/shuttles/emergency_birdboat.dmm +++ b/_maps/shuttles/emergency_birdboat.dmm @@ -158,7 +158,8 @@ /obj/docking_port/mobile/emergency{ dir = 8; name = "Birdboat emergency escape shuttle"; - port_direction = 4 + port_direction = 2; + preferred_direction = 8 }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_birdshot.dmm b/_maps/shuttles/emergency_birdshot.dmm index cb50d42c56db0..086674b1a50a8 100644 --- a/_maps/shuttles/emergency_birdshot.dmm +++ b/_maps/shuttles/emergency_birdshot.dmm @@ -9,9 +9,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) -"ax" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "aQ" = ( /obj/effect/decal/cleanable/insectguts, /turf/open/floor/mineral/plastitanium/red, @@ -99,7 +96,7 @@ pixel_x = 3; pixel_y = 2 }, -/obj/item/clothing/mask/cigarette/dromedary{ +/obj/item/cigarette/dromedary{ pixel_x = 8; pixel_y = 15 }, @@ -229,16 +226,6 @@ /obj/item/trash/cheesie, /turf/open/floor/mineral/titanium/tiled, /area/shuttle/escape) -"ll" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dir = 8; - name = "birdshot emergency shuttle" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "lp" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" @@ -287,7 +274,7 @@ "mU" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/shuttle/escape) "no" = ( /obj/item/trash/popcorn/caramel, /turf/open/floor/mineral/titanium, @@ -552,7 +539,7 @@ /obj/structure/lattice, /obj/item/stack/rods/two, /turf/template_noop, -/area/template_noop) +/area/shuttle/escape) "Ay" = ( /obj/item/shard{ pixel_y = 19 @@ -802,6 +789,17 @@ "MW" = ( /turf/open/floor/mineral/titanium/tiled/white, /area/shuttle/escape) +"NE" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + dir = 8; + name = "birdshot emergency shuttle"; + port_direction = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/escape) "Oq" = ( /obj/structure/chair{ dir = 1; @@ -1001,15 +999,15 @@ nQ nQ nQ nQ -ax +LX LX rZ LX -ax +LX nQ nQ nQ -ax +LX rZ LX LX @@ -1018,7 +1016,7 @@ LX LX LX LX -ax +LX nQ "} (2,1,1) = {" @@ -1030,7 +1028,7 @@ nQ nQ nQ nQ -ax +LX LX LX ON @@ -1058,7 +1056,7 @@ nQ nQ nQ nQ -ax +LX rZ rZ LX @@ -1086,7 +1084,7 @@ vk (4,1,1) = {" nQ nQ -ax +LX LX LX LX @@ -1185,13 +1183,13 @@ ye LX mU nQ -ax +LX LX LX hF LX LX -ax +LX nQ nQ mU @@ -1200,9 +1198,9 @@ hF LX rZ LX -ax +LX nQ -ax +LX LX nQ nQ @@ -1309,13 +1307,13 @@ eR LX mU nQ -ax +LX LX LX hF LX LX -ax +LX nQ nQ mU @@ -1324,7 +1322,7 @@ hF LX rZ LX -ax +LX nQ bo mU @@ -1396,7 +1394,7 @@ ST (14,1,1) = {" nQ nQ -ax +LX LX LX LX @@ -1430,7 +1428,7 @@ nQ nQ nQ nQ -ax +LX rZ rZ LX @@ -1464,7 +1462,7 @@ nQ nQ nQ nQ -ax +LX LX LX dv @@ -1497,16 +1495,16 @@ nQ nQ nQ nQ -ax +LX Xy rZ Xy -ax +LX nQ nQ nQ -ax -ll +LX +NE LX lp rZ @@ -1514,6 +1512,6 @@ LX rZ rZ rZ -ax +LX nQ "} diff --git a/_maps/shuttles/emergency_casino.dmm b/_maps/shuttles/emergency_casino.dmm index a3280acfeb7b4..c1332f0ef1ded 100644 --- a/_maps/shuttles/emergency_casino.dmm +++ b/_maps/shuttles/emergency_casino.dmm @@ -753,7 +753,6 @@ /area/shuttle/escape) "wv" = ( /obj/structure/tank_dispenser/oxygen{ - layer = 2.7; pixel_x = -1; pixel_y = 2 }, diff --git a/_maps/shuttles/emergency_cruise.dmm b/_maps/shuttles/emergency_cruise.dmm index 8045930388cef..c111505c14789 100644 --- a/_maps/shuttles/emergency_cruise.dmm +++ b/_maps/shuttles/emergency_cruise.dmm @@ -857,7 +857,6 @@ "sz" = ( /obj/machinery/shuttle_manipulator{ desc = "A holographic display of the cruise shuttle we're on right now."; - layer = 2.7; max_integrity = 99999; name = "shuttle holographic display" }, @@ -1345,7 +1344,6 @@ density = 1; icon = 'icons/obj/machines/shuttle_manipulator.dmi'; icon_state = "hologram_on"; - layer = 2.8; light_color = "#2cb2e8"; light_range = 2; max_integrity = 7500; @@ -1358,7 +1356,6 @@ desc = "This is the shuttle we're on. It's amazing what Nanotrasen can do once they actually put more than ten seconds of effort into their projects."; icon = 'icons/obj/machines/shuttle_manipulator.dmi'; icon_state = "hologram_whiteship"; - layer = 4; light_color = "#2cb2e8"; light_range = 7; max_integrity = 75000; diff --git a/_maps/shuttles/emergency_fame.dmm b/_maps/shuttles/emergency_fame.dmm index 368de11546d7a..919a8651b378a 100644 --- a/_maps/shuttles/emergency_fame.dmm +++ b/_maps/shuttles/emergency_fame.dmm @@ -605,7 +605,6 @@ /area/shuttle/escape/brig) "zc" = ( /obj/structure/tank_dispenser/oxygen{ - layer = 2.7; pixel_x = -1; pixel_y = 2 }, diff --git a/_maps/shuttles/emergency_fish.dmm b/_maps/shuttles/emergency_fish.dmm index 3726a7399d9ab..b99aa01b096bf 100644 --- a/_maps/shuttles/emergency_fish.dmm +++ b/_maps/shuttles/emergency_fish.dmm @@ -311,21 +311,18 @@ "qO" = ( /obj/structure/table/wood, /obj/item/fishing_line{ - layer = 4; pixel_x = 6; pixel_y = 3 }, -/obj/item/fishing_hook{ - layer = 5; - pixel_y = 3 - }, /obj/item/bait_can/worm{ - pixel_x = -5; pixel_y = 13 }, /obj/effect/turf_decal/tile/dark/half/contrasted{ dir = 4 }, +/obj/item/fishing_hook{ + pixel_y = 3 + }, /turf/open/floor/wood/tile, /area/shuttle/escape) "rj" = ( @@ -586,12 +583,7 @@ /area/shuttle/escape) "IM" = ( /obj/structure/table/wood, -/obj/item/fishing_hook{ - layer = 5; - pixel_y = 3 - }, /obj/item/fishing_line{ - layer = 4; pixel_x = 6; pixel_y = 3 }, @@ -602,6 +594,9 @@ /obj/effect/turf_decal/tile/dark/half/contrasted{ dir = 4 }, +/obj/item/fishing_hook{ + pixel_y = 3 + }, /turf/open/floor/wood/tile, /area/shuttle/escape) "Jh" = ( diff --git a/_maps/shuttles/emergency_humpback.dmm b/_maps/shuttles/emergency_humpback.dmm index f4c50bf6b84ec..f76d06925a343 100644 --- a/_maps/shuttles/emergency_humpback.dmm +++ b/_maps/shuttles/emergency_humpback.dmm @@ -750,7 +750,10 @@ /obj/machinery/door/airlock/grunge{ name = "Emergency Shuttle Airlock" }, -/obj/docking_port/mobile/emergency, +/obj/docking_port/mobile/emergency{ + port_direction = 4; + preferred_direction = 2 + }, /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape) "UR" = ( diff --git a/_maps/shuttles/emergency_kilo.dmm b/_maps/shuttles/emergency_kilo.dmm index b8710eb116450..4ebd7843239aa 100644 --- a/_maps/shuttles/emergency_kilo.dmm +++ b/_maps/shuttles/emergency_kilo.dmm @@ -630,11 +630,8 @@ /obj/structure/chair/comfy/shuttle{ dir = 8 }, -/obj/machinery/computer/security/telescreen{ - dir = 8; - name = "Shuttle Camera Monitor"; - network = list("ss13"); - pixel_x = 26 +/obj/machinery/computer/security/telescreen/normal/directional/east{ + name = "Shuttle Camera Monitor" }, /turf/open/floor/mineral/plastitanium, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index af17c03a0d8be..74b18ef61b4de 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -138,9 +138,7 @@ name = "Escape Shuttle Cell" }, /obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/machinery/scanner_gate/luxury_shuttle{ - layer = 2.6 - }, +/obj/machinery/scanner_gate/luxury_shuttle, /turf/open/indestructible/white, /area/shuttle/escape/brig) "gY" = ( @@ -340,9 +338,7 @@ /obj/structure/closet/crate/large, /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/item/toy/plush/rouny{ name = "rouny plushie" }, @@ -444,9 +440,7 @@ /obj/machinery/power/shuttle_engine/heater{ dir = 8 }, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, /area/shuttle/escape) "sH" = ( @@ -630,9 +624,7 @@ /turf/open/floor/mineral/titanium/white, /area/shuttle/escape/luxury) "Bj" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/effect/spawner/random/structure/closet_private, /turf/open/floor/iron/white/herringbone, /area/shuttle/escape/luxury) @@ -653,9 +645,7 @@ /area/shuttle/escape) "BK" = ( /obj/structure/girder, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -667,9 +657,7 @@ /turf/open/floor/iron, /area/shuttle/escape) "Ck" = ( -/obj/machinery/scanner_gate/luxury_shuttle{ - layer = 2.6 - }, +/obj/machinery/scanner_gate/luxury_shuttle, /obj/machinery/door/airlock/silver{ name = "First Class" }, @@ -695,18 +683,14 @@ dir = 2; name = "Luxurious Emergency Shuttle" }, -/obj/machinery/scanner_gate/luxury_shuttle{ - layer = 2.6 - }, +/obj/machinery/scanner_gate/luxury_shuttle, /obj/machinery/door/airlock/silver{ name = "First Class" }, /turf/open/floor/carpet/blue, /area/shuttle/escape/luxury) "Dj" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/structure/rack, /obj/effect/spawner/random/trash/soap, /turf/open/floor/iron/white/herringbone, @@ -792,9 +776,7 @@ /obj/structure/girder, /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron, /area/shuttle/escape) "EZ" = ( @@ -1080,9 +1062,7 @@ /turf/open/floor/carpet/green, /area/shuttle/escape/luxury) "Rk" = ( -/obj/machinery/scanner_gate/luxury_shuttle{ - layer = 2.6 - }, +/obj/machinery/scanner_gate/luxury_shuttle, /obj/effect/mapping_helpers/airlock/access/all/security/general, /obj/machinery/door/airlock/security/glass{ name = "Escape Shuttle Cell" diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm index 5a4ca2c48326f..f1064a77fdaf0 100644 --- a/_maps/shuttles/emergency_meta.dmm +++ b/_maps/shuttles/emergency_meta.dmm @@ -160,7 +160,6 @@ /area/shuttle/escape) "aA" = ( /obj/structure/tank_dispenser/oxygen{ - layer = 2.7; pixel_x = -1; pixel_y = 2 }, diff --git a/_maps/shuttles/emergency_meteor.dmm b/_maps/shuttles/emergency_meteor.dmm index 658c290b95684..9d05cf8cc62c4 100644 --- a/_maps/shuttles/emergency_meteor.dmm +++ b/_maps/shuttles/emergency_meteor.dmm @@ -6,9 +6,7 @@ /turf/closed/mineral/asteroid/porous, /area/shuttle/escape/meteor) "c" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/misc/asteroid, /area/shuttle/escape/meteor) "d" = ( diff --git a/_maps/shuttles/emergency_monastery.dmm b/_maps/shuttles/emergency_monastery.dmm index dbc203630102b..da8641ee0b1d6 100644 --- a/_maps/shuttles/emergency_monastery.dmm +++ b/_maps/shuttles/emergency_monastery.dmm @@ -8,10 +8,6 @@ }, /turf/open/floor/iron/dark, /area/shuttle/escape) -"af" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/space, -/area/shuttle/escape) "ap" = ( /obj/structure/chair/wood/wings{ dir = 1 @@ -25,10 +21,6 @@ }, /turf/open/floor/carpet, /area/shuttle/escape) -"as" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/space, -/area/shuttle/escape) "aF" = ( /obj/machinery/light/small/directional/south, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -40,13 +32,6 @@ /obj/structure/grille/broken, /turf/open/space/basic, /area/shuttle/escape) -"aN" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, -/turf/open/space/basic, -/area/shuttle/escape) "aO" = ( /obj/structure/sign/plaques/kiddie{ desc = "It reads: PRIVATE EXHIBIT - Please inquire with library staff for guided tours."; @@ -65,19 +50,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/closed/wall, /area/shuttle/escape) -"aT" = ( -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, -/turf/open/space/basic, -/area/shuttle/escape) -"aW" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/shuttle/escape) "bb" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, @@ -103,9 +75,7 @@ /area/shuttle/escape) "bl" = ( /obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/space/basic, /area/shuttle/escape) "bn" = ( @@ -145,13 +115,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/plating, /area/shuttle/escape) -"bx" = ( -/obj/machinery/power/shuttle_engine/propulsion, -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, -/turf/open/floor/plating, -/area/shuttle/escape) "by" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/painting/library_private{ @@ -162,13 +125,9 @@ /area/shuttle/escape) "bC" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/plating, /area/shuttle/escape) "bI" = ( @@ -204,6 +163,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/shuttle/escape) +"cH" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/space, +/area/shuttle/escape) "cT" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -378,11 +341,6 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron/dark, /area/shuttle/escape) -"fA" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/space, -/area/shuttle/escape) "fL" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/lattice, @@ -428,13 +386,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/space/basic, /area/shuttle/escape) -"hC" = ( -/obj/machinery/power/shuttle_engine/propulsion, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/turf/open/floor/plating, -/area/shuttle/escape) "hI" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; @@ -467,9 +418,7 @@ /obj/structure/window/reinforced/spawner/directional/north{ pixel_y = 1 }, -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/space/basic, /area/shuttle/escape) "hW" = ( @@ -495,7 +444,6 @@ "hZ" = ( /obj/structure/table/wood, /obj/item/paper_bin{ - layer = 2.9; pixel_x = -2; pixel_y = 4 }, @@ -633,9 +581,7 @@ "jt" = ( /obj/machinery/power/shuttle_engine/heater, /obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/plating, /area/shuttle/escape) "jx" = ( @@ -755,14 +701,15 @@ /obj/machinery/door/airlock/external/ruin, /turf/open/floor/plating, /area/shuttle/escape) -"lj" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/shuttle/escape) "lm" = ( /obj/machinery/meter, /turf/open/floor/plating, /area/shuttle/escape) +"ln" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/space, +/area/shuttle/escape) "lB" = ( /turf/open/floor/iron/chapel{ dir = 8 @@ -790,6 +737,10 @@ }, /turf/open/floor/iron, /area/shuttle/escape) +"ml" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/space, +/area/shuttle/escape) "mm" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -910,12 +861,6 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/iron/dark, /area/shuttle/escape) -"nQ" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/turf/open/space/basic, -/area/shuttle/escape) "oa" = ( /obj/structure/chair/wood, /turf/open/floor/carpet, @@ -932,12 +877,6 @@ /obj/machinery/vending/wardrobe/curator_wardrobe, /turf/open/floor/iron/dark, /area/shuttle/escape) -"om" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/turf/open/space, -/area/shuttle/escape) "ov" = ( /obj/machinery/light/small/directional/east, /obj/machinery/camera/directional/east{ @@ -1078,7 +1017,6 @@ "qi" = ( /obj/structure/table/wood, /obj/item/paper_bin{ - layer = 2.9; pixel_x = -2; pixel_y = 4 }, @@ -1213,6 +1151,11 @@ }, /turf/open/floor/iron/dark, /area/shuttle/escape) +"rZ" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/lattice, +/turf/open/space/basic, +/area/shuttle/escape) "sa" = ( /obj/structure/chair/wood{ dir = 4 @@ -1311,6 +1254,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron/dark, /area/shuttle/escape) +"ti" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/shuttle/escape) "tm" = ( /obj/structure/table/wood/fancy, /obj/item/storage/box/matches{ @@ -1376,6 +1323,10 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) +"uP" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/space, +/area/shuttle/escape) "uX" = ( /obj/machinery/power/smes, /turf/open/floor/plating, @@ -1632,7 +1583,6 @@ "yP" = ( /obj/structure/table/wood, /obj/item/reagent_containers/condiment/saltshaker{ - layer = 3.1; pixel_x = -2; pixel_y = 2 }, @@ -1662,12 +1612,9 @@ /area/shuttle/escape) "zh" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/item/stack/sheet/glass/fifty{ - layer = 4 - }, +/obj/item/stack/sheet/glass/fifty, /obj/item/stack/sheet/iron{ - amount = 20; - layer = 3.1 + amount = 20 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 10 @@ -2162,9 +2109,7 @@ pixel_y = 4 }, /obj/item/reagent_containers/condiment/peppermill, -/obj/item/storage/box/ingredients/wildcard{ - layer = 3.1 - }, +/obj/item/storage/box/ingredients/wildcard, /turf/open/floor/iron, /area/shuttle/escape) "FA" = ( @@ -2412,10 +2357,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron/dark, /area/shuttle/escape) -"Jl" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/space, -/area/shuttle/escape) "Jp" = ( /obj/structure/table, /obj/item/crowbar, @@ -2506,8 +2447,7 @@ "JZ" = ( /obj/docking_port/mobile/emergency{ movement_force = list("KNOCKDOWN"=3,"THROW"=6); - name = "\proper a monastery with engines strapped to it"; - port_direction = 1 + name = "\proper a monastery with engines strapped to it" }, /turf/closed/mineral, /area/shuttle/escape) @@ -2664,16 +2604,6 @@ }, /turf/open/floor/iron/dark, /area/shuttle/escape) -"Ms" = ( -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, -/turf/open/space, -/area/shuttle/escape) -"Mt" = ( -/obj/structure/lattice, -/turf/open/space, -/area/shuttle/escape) "MC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2712,12 +2642,8 @@ /area/shuttle/escape) "Nb" = ( /obj/machinery/power/shuttle_engine/propulsion, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/plating, /area/shuttle/escape) "Nf" = ( @@ -2869,6 +2795,10 @@ /obj/effect/station_crash/devastating, /turf/open/floor/iron/dark, /area/shuttle/escape) +"OL" = ( +/obj/structure/lattice, +/turf/open/space, +/area/shuttle/escape) "OM" = ( /obj/item/cultivator, /turf/open/floor/grass, @@ -2886,9 +2816,7 @@ "Pb" = ( /obj/machinery/power/shuttle_engine/heater, /obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, /area/shuttle/escape) "Pe" = ( @@ -2974,7 +2902,6 @@ "Qj" = ( /obj/structure/table/wood, /obj/item/paper_bin{ - layer = 2.9; pixel_x = -2; pixel_y = 4 }, @@ -3254,9 +3181,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "SU" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) "SV" = ( @@ -3498,9 +3423,7 @@ /area/shuttle/escape) "VF" = ( /obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/west, /obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2{ name = "Outlet Injector" }, @@ -3508,9 +3431,7 @@ /area/shuttle/escape) "VM" = ( /obj/machinery/mass_driver/chapelgun, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/shuttle/escape) @@ -3632,9 +3553,7 @@ /turf/open/floor/iron/dark, /area/shuttle/escape) "Xx" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, @@ -3750,9 +3669,7 @@ /obj/structure/window/reinforced/spawner/directional/north{ pixel_y = 1 }, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/space/basic, /area/shuttle/escape) "YZ" = ( @@ -3797,9 +3714,7 @@ /area/shuttle/escape) "Zn" = ( /obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) "Zr" = ( @@ -4380,8 +4295,8 @@ nr nr nr nr -om -nQ +uP +hq JG JG JG @@ -4917,7 +4832,7 @@ JG JG JG PB -lj +ti iw iw iw @@ -4999,7 +4914,7 @@ JG JG JG PB -lj +ti iw JG JG @@ -5081,10 +4996,10 @@ JG JG JG PB -lj -Mt -af -fA +ti +OL +uP +ln zE zE AJ @@ -5118,8 +5033,8 @@ nr nr nr nr -aT -aT +IM +IM JG JG JG @@ -5158,7 +5073,7 @@ JG JG JG iw -Mt +OL iw iw iw @@ -5243,7 +5158,7 @@ iw JG JG dp -af +uP zE Zf zE @@ -5322,7 +5237,7 @@ JG JG JG bd -Mt +OL bT zE zE @@ -5404,7 +5319,7 @@ aH iw iw iw -as +cH zE zE jc @@ -5481,11 +5396,11 @@ JG JG "} (21,1,1) = {" -af -af -nQ -aW -nQ +uP +uP +hq +rZ +hq bl zE jc @@ -5891,7 +5806,7 @@ JG JG "} (26,1,1) = {" -as +cH zE ox bb @@ -6056,7 +5971,7 @@ JG "} (28,1,1) = {" JG -aN +jS zE wt Mf @@ -6216,7 +6131,7 @@ Ho Ho Ho jt -bx +bv "} (30,1,1) = {" JG @@ -6310,7 +6225,7 @@ LK zE LK dX -Jl +ml fm zE zE @@ -6380,17 +6295,17 @@ Ho Ho Ho Pb -hC +Ye "} (32,1,1) = {" JG JG -aT -aT -Ms -Ms -Ms -aT +IM +IM +ml +ml +ml +IM JG JG JG @@ -6477,7 +6392,7 @@ JG JG JG JG -Jl +ml fm zE zE @@ -6728,8 +6643,8 @@ JG JG JG JG -Jl -Jl +ml +ml jS zE ko @@ -6977,7 +6892,7 @@ JG JG JG JG -Mt +OL mm kJ IM diff --git a/_maps/shuttles/emergency_nature.dmm b/_maps/shuttles/emergency_nature.dmm index a1fa04c1c6a73..0f793c714753e 100644 --- a/_maps/shuttles/emergency_nature.dmm +++ b/_maps/shuttles/emergency_nature.dmm @@ -177,7 +177,6 @@ dir = 10 }, /obj/structure/tank_dispenser/oxygen{ - layer = 2.7; pixel_x = -1; pixel_y = 2 }, diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency_pubby.dmm index f346fe323c6e4..84780e4332b9d 100644 --- a/_maps/shuttles/emergency_pubby.dmm +++ b/_maps/shuttles/emergency_pubby.dmm @@ -276,9 +276,7 @@ /area/shuttle/escape) "bd" = ( /obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/west, /obj/structure/table, /obj/item/food/canned/beans{ pixel_x = 3; @@ -395,15 +393,11 @@ /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) "bB" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) "bC" = ( -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) "bD" = ( @@ -485,9 +479,7 @@ /area/shuttle/escape) "jO" = ( /obj/structure/closet/secure_closet/freezer/fridge, -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/west, /obj/item/food/butterdog, /obj/item/food/cakeslice/apple, /obj/item/food/cakeslice/brioche, @@ -548,9 +540,7 @@ /turf/open/floor/mineral/plastitanium/red, /area/shuttle/escape/brig) "xt" = ( -/obj/structure/window/reinforced/spawner/directional/west{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/plating, /area/shuttle/escape) "Br" = ( @@ -599,9 +589,7 @@ "ZM" = ( /obj/structure/table/glass, /obj/item/storage/medkit/regular, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/vending/wallmed/directional/north{ use_power = 0 }, diff --git a/_maps/shuttles/emergency_shadow.dmm b/_maps/shuttles/emergency_shadow.dmm index de99a937b35b1..5afa72919cb28 100644 --- a/_maps/shuttles/emergency_shadow.dmm +++ b/_maps/shuttles/emergency_shadow.dmm @@ -468,7 +468,7 @@ }, /obj/item/kirbyplants/organic/plant21, /obj/structure/sign/warning/hot_temp/directional/west, -/obj/item/clothing/mask/cigarette/rollie/cannabis, +/obj/item/cigarette/rollie/cannabis, /turf/open/floor/iron/dark/textured_large, /area/shuttle/escape) "yg" = ( diff --git a/_maps/shuttles/emergency_tranquility.dmm b/_maps/shuttles/emergency_tranquility.dmm index 5458e59c84316..3019f72a1d2da 100644 --- a/_maps/shuttles/emergency_tranquility.dmm +++ b/_maps/shuttles/emergency_tranquility.dmm @@ -37,8 +37,7 @@ dir = 4 }, /obj/structure/railing{ - dir = 4; - layer = 4.1 + dir = 4 }, /turf/open/floor/wood, /area/shuttle/escape) @@ -354,8 +353,7 @@ /obj/effect/turf_decal/siding/wood, /obj/structure/railing{ color = "#A47449"; - dir = 2; - layer = 3.1 + dir = 2 }, /obj/structure/table/wood, /obj/machinery/reagentgrinder{ @@ -461,8 +459,7 @@ "jl" = ( /obj/structure/railing{ color = "#A47449"; - dir = 10; - layer = 3.1 + dir = 10 }, /obj/structure/flora/bush/fullgrass/style_2, /obj/effect/turf_decal/siding/wood{ @@ -511,8 +508,7 @@ "jM" = ( /obj/structure/railing{ color = "#A47449"; - dir = 6; - layer = 3.1 + dir = 6 }, /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -537,8 +533,7 @@ }, /obj/structure/railing{ color = "#A47449"; - dir = 10; - layer = 3.1 + dir = 10 }, /obj/structure/flora/bush/fullgrass, /obj/effect/turf_decal/siding/wood{ @@ -695,8 +690,7 @@ "nA" = ( /obj/structure/railing/corner{ dir = 8; - color = "#A47449"; - layer = 3.1 + color = "#A47449" }, /obj/structure/flora/rock/pile/jungle/style_3{ pixel_x = -4 @@ -739,8 +733,7 @@ "oj" = ( /obj/structure/railing{ color = "#A47449"; - dir = 10; - layer = 3.1 + dir = 10 }, /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -767,8 +760,7 @@ }, /obj/structure/railing{ color = "#A47449"; - dir = 10; - layer = 3.1 + dir = 10 }, /turf/open/floor/grass, /area/shuttle/escape) @@ -819,8 +811,7 @@ "pf" = ( /obj/structure/railing{ color = "#A47449"; - dir = 6; - layer = 3.1 + dir = 6 }, /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -1013,8 +1004,7 @@ }, /obj/structure/railing{ color = "#A47449"; - dir = 6; - layer = 3.1 + dir = 6 }, /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -1058,9 +1048,7 @@ /area/shuttle/escape) "uR" = ( /obj/effect/turf_decal/siding/wood, -/obj/structure/railing{ - layer = 3.1 - }, +/obj/structure/railing, /turf/open/floor/wood/large, /area/shuttle/escape) "uT" = ( @@ -1211,16 +1199,14 @@ dir = 4 }, /obj/structure/railing{ - dir = 4; - layer = 4.1 + dir = 4 }, /turf/open/floor/wood, /area/shuttle/escape) "ya" = ( /obj/structure/railing/corner{ dir = 8; - color = "#A47449"; - layer = 3.1 + color = "#A47449" }, /obj/structure/flora/bush/large/style_2{ pixel_x = -6; @@ -1283,8 +1269,7 @@ }, /obj/structure/railing{ color = "#A47449"; - dir = 6; - layer = 3.1 + dir = 6 }, /obj/effect/turf_decal/weather/dirt{ dir = 5 @@ -1315,8 +1300,7 @@ dir = 4 }, /obj/structure/railing{ - dir = 4; - layer = 4.1 + dir = 4 }, /obj/effect/turf_decal/siding/wood/corner{ dir = 8 @@ -1515,8 +1499,7 @@ "Ci" = ( /obj/structure/railing{ color = "#A47449"; - dir = 6; - layer = 3.1 + dir = 6 }, /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -1563,8 +1546,7 @@ }, /obj/structure/railing{ color = "#A47449"; - dir = 2; - layer = 3.1 + dir = 2 }, /obj/machinery/chem_master/condimaster{ desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; @@ -1796,9 +1778,7 @@ /turf/open/floor/iron/dark/small, /area/shuttle/escape) "Hq" = ( -/obj/structure/railing{ - layer = 3.1 - }, +/obj/structure/railing, /obj/effect/turf_decal/siding/dark, /obj/effect/turf_decal/trimline/blue/line, /turf/open/floor/iron/dark/small, @@ -1944,9 +1924,7 @@ /turf/open/water, /area/shuttle/escape) "Kk" = ( -/obj/structure/railing{ - layer = 3.1 - }, +/obj/structure/railing, /obj/effect/turf_decal/siding/dark, /obj/effect/turf_decal/trimline/blue/line, /obj/machinery/light/floor, @@ -2011,8 +1989,7 @@ }, /obj/structure/railing{ color = "#A47449"; - dir = 4; - layer = 3.2 + dir = 4 }, /obj/structure/flora/bush/flowers_pp, /obj/structure/flora/bush/flowers_pp/style_2, @@ -2122,8 +2099,7 @@ /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/railing{ color = "#A47449"; - dir = 8; - layer = 3.2 + dir = 8 }, /turf/open/floor/grass, /area/shuttle/escape) @@ -2176,8 +2152,7 @@ "Oj" = ( /obj/structure/railing{ color = "#A47449"; - dir = 10; - layer = 3.1 + dir = 10 }, /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -2357,8 +2332,7 @@ /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ pixel_x = 7; - pixel_y = 14; - layer = 3.1 + pixel_y = 14 }, /obj/item/paper_bin{ pixel_x = -5; @@ -2377,15 +2351,11 @@ /area/shuttle/escape) "Sl" = ( /obj/effect/turf_decal/siding/wood, -/obj/structure/railing{ - layer = 3.1 - }, +/obj/structure/railing, /turf/open/floor/wood/tile, /area/shuttle/escape) "St" = ( -/obj/structure/railing{ - layer = 3.1 - }, +/obj/structure/railing, /obj/machinery/computer/communications{ dir = 8 }, @@ -2454,7 +2424,6 @@ /area/shuttle/escape) "Tw" = ( /obj/structure/statue/sandstone/venus{ - layer = 4; anchored = 1 }, /turf/open/floor/wood, @@ -2540,8 +2509,7 @@ /obj/effect/turf_decal/siding/wood, /obj/structure/railing{ color = "#A47449"; - dir = 2; - layer = 3.1 + dir = 2 }, /obj/machinery/microwave, /obj/structure/table/wood, diff --git a/_maps/shuttles/emergency_venture.dmm b/_maps/shuttles/emergency_venture.dmm index 6b72f22dc295a..29ad2a695d191 100644 --- a/_maps/shuttles/emergency_venture.dmm +++ b/_maps/shuttles/emergency_venture.dmm @@ -647,7 +647,6 @@ /area/shuttle/escape) "Jz" = ( /obj/structure/tank_dispenser/oxygen{ - layer = 2.7; pixel_x = -1; pixel_y = 2 }, diff --git a/_maps/shuttles/emergency_wawa.dmm b/_maps/shuttles/emergency_wawa.dmm index 01d03aa7c5d9c..458ffa8a17902 100644 --- a/_maps/shuttles/emergency_wawa.dmm +++ b/_maps/shuttles/emergency_wawa.dmm @@ -111,7 +111,7 @@ /obj/structure/lattice, /obj/structure/marker_beacon/burgundy, /turf/template_noop, -/area/template_noop) +/area/shuttle/escape) "au" = ( /obj/structure/chair/comfy/shuttle{ dir = 1 @@ -210,8 +210,7 @@ }, /obj/structure/fans/tiny/shield{ max_integrity = 400; - name = "recycling shield"; - layer = 2.61 + name = "recycling shield" }, /turf/open/floor/plating, /area/shuttle/escape) @@ -573,8 +572,7 @@ }, /obj/structure/fans/tiny/shield{ max_integrity = 400; - name = "recycling shield"; - layer = 2.61 + name = "recycling shield" }, /turf/open/floor/plating, /area/shuttle/escape) @@ -728,7 +726,7 @@ "Pw" = ( /obj/structure/lattice, /turf/template_noop, -/area/template_noop) +/area/shuttle/escape) "QP" = ( /obj/machinery/conveyor/auto/inverted{ dir = 1 diff --git a/_maps/shuttles/escape_pod_large.dmm b/_maps/shuttles/escape_pod_large.dmm index d803a681abe8c..9877e44bf1241 100644 --- a/_maps/shuttles/escape_pod_large.dmm +++ b/_maps/shuttles/escape_pod_large.dmm @@ -58,7 +58,9 @@ /obj/machinery/door/airlock/titanium{ name = "Shuttle Airlock" }, -/obj/docking_port/mobile/monastery, +/obj/docking_port/mobile/monastery{ + port_direction = 2 + }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) "W" = ( diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm index 18197d61f1401..b5bb7186693e8 100644 --- a/_maps/shuttles/ferry_lighthouse.dmm +++ b/_maps/shuttles/ferry_lighthouse.dmm @@ -192,8 +192,7 @@ "bb" = ( /obj/machinery/conveyor{ dir = 1; - id = "garbage"; - layer = 2.5 + id = "garbage" }, /turf/open/floor/wood, /area/shuttle/transport) diff --git a/_maps/shuttles/hunter_bounty.dmm b/_maps/shuttles/hunter_bounty.dmm index 3087fa376fee5..ba752de932b9b 100644 --- a/_maps/shuttles/hunter_bounty.dmm +++ b/_maps/shuttles/hunter_bounty.dmm @@ -149,7 +149,9 @@ /area/shuttle/hunter) "I" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/hunter{ - dir = 8 + dir = 8; + y_offset = 6; + x_offset = 3 }, /turf/open/floor/pod/dark, /area/shuttle/hunter) @@ -232,7 +234,9 @@ movement_force = list("KNOCKDOWN"=0,"THROW"=0); name = "hunter shuttle"; rechargeTime = 1800; - shuttle_id = "huntership" + shuttle_id = "huntership"; + port_direction = 4; + preferred_direction = 4 }, /obj/structure/fans/tiny, /obj/effect/mapping_helpers/airlock/access/all/hunter, diff --git a/_maps/shuttles/hunter_mi13_foodtruck.dmm b/_maps/shuttles/hunter_mi13_foodtruck.dmm new file mode 100644 index 0000000000000..5fe7324e8e83b --- /dev/null +++ b/_maps/shuttles/hunter_mi13_foodtruck.dmm @@ -0,0 +1,998 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/effect/spawner/structure/window/reinforced/shuttle, +/obj/machinery/door/poddoor/shutters{ + id = "foodtruck_backroom_shutters"; + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/hunter/mi13_foodtruck) +"ab" = ( +/obj/machinery/computer/operating{ + dir = 1 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"af" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/surgery_tray/full, +/obj/structure/sign/poster/contraband/hacking_guide/directional/south, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"ag" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/structure/cable/layer1, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"ah" = ( +/obj/effect/mapping_helpers/airlock/cutaiwire, +/obj/effect/mapping_helpers/airlock/access/any/syndicate/general, +/obj/machinery/door/airlock/vault{ + normalspeed = 0; + name = "Secure Door"; + desc = "An imposing looking door. It looks reinforced." + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"aj" = ( +/obj/machinery/power/shuttle_engine/heater, +/turf/closed/wall/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"al" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"ao" = ( +/obj/structure/sign/poster/contraband/bountyhunters/directional/north, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"bY" = ( +/turf/open/floor/iron/kitchen/small, +/area/shuttle/hunter/mi13_foodtruck) +"cm" = ( +/obj/structure/lattice, +/obj/structure/marker_beacon/burgundy, +/turf/template_noop, +/area/shuttle/hunter/mi13_foodtruck) +"dg" = ( +/obj/structure/closet/secure_closet/freezer/empty, +/obj/machinery/light/dim/directional/east, +/obj/item/food/fries{ + pixel_x = -2; + pixel_y = -8 + }, +/obj/item/food/fries{ + pixel_y = -11 + }, +/obj/item/food/fries{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/food/fries{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/food/fries{ + pixel_x = -3 + }, +/obj/item/food/fries{ + pixel_x = 5; + pixel_y = -2 + }, +/obj/item/food/burger/cheese{ + pixel_y = 7; + pixel_x = -5 + }, +/obj/item/food/burger/cheese{ + pixel_y = 7; + pixel_x = 5 + }, +/obj/item/food/fishandchips{ + pixel_y = -8 + }, +/turf/open/floor/iron/kitchen/small, +/area/shuttle/hunter/mi13_foodtruck) +"dB" = ( +/obj/machinery/vending/clothing, +/obj/structure/sign/poster/official/high_class_martini/directional/north, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"dC" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/binoculars{ + pixel_y = 10 + }, +/obj/item/traitor_bug{ + pixel_y = 6; + pixel_x = 6 + }, +/obj/item/traitor_bug{ + pixel_y = 3; + pixel_x = -5 + }, +/obj/item/storage/box/zipties{ + pixel_y = -4; + pixel_x = 4 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"dJ" = ( +/obj/machinery/computer/records/security/syndie, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"eA" = ( +/obj/machinery/vending/medical/syndicate_access/cybersun, +/obj/machinery/airalarm/directional/west, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"eP" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/light/dim/directional/north, +/obj/structure/cable/layer1, +/obj/machinery/button/door{ + id = "foodtruck_right_window"; + pixel_x = 6; + name = "SHUTTERS - R" + }, +/obj/machinery/button/door{ + id = "foodtruck_left_window"; + pixel_x = -6; + name = "SHUTTERS - L" + }, +/obj/item/reagent_containers/cup/glass/mug/tea{ + pixel_x = 8; + pixel_y = -9 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"fo" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"gc" = ( +/obj/structure/closet/crate/cardboard/mothic, +/obj/item/storage/box/mothic_rations{ + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/storage/box/mothic_rations{ + pixel_x = 8; + pixel_y = 7 + }, +/obj/item/storage/box/mothic_rations{ + pixel_x = -6; + pixel_y = -1 + }, +/obj/item/storage/box/mothic_rations{ + pixel_x = 8; + pixel_y = -1 + }, +/obj/item/poster/random_contraband{ + poster_type = /obj/structure/sign/poster/contraband/mothic_rations; + name = "mothic ration poster"; + desc = "A rolled up poster."; + pixel_y = 7 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"gs" = ( +/obj/structure/cable/layer1, +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"gv" = ( +/obj/structure/closet/crate/freezer, +/obj/machinery/button/door/directional/west{ + name = "External Shutter Switch"; + id = "foodtruck_backroom_shutters" + }, +/obj/item/pizzabox/margherita{ + pixel_y = 5 + }, +/obj/item/food/burrito{ + pixel_x = -9; + pixel_y = 2 + }, +/obj/item/food/burrito{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/item/food/burrito{ + pixel_x = 8; + pixel_y = 2 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"hB" = ( +/obj/machinery/power/shuttle_engine/propulsion, +/turf/template_noop, +/area/shuttle/hunter/mi13_foodtruck) +"iO" = ( +/obj/structure/noticeboard/directional/north, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"jb" = ( +/obj/machinery/light/dim/directional/south, +/obj/structure/cable/layer1, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/obj/machinery/power/terminal{ + dir = 1; + cable_layer = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"jc" = ( +/obj/machinery/light/floor, +/obj/structure/table/reinforced, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"jw" = ( +/obj/structure/closet/cardboard, +/obj/structure/cable/layer1, +/obj/item/cardboard_cutout, +/obj/item/cardboard_cutout, +/obj/item/cardboard_cutout, +/obj/item/cardboard_cutout, +/obj/item/storage/crayons, +/obj/item/soap/syndie{ + pixel_y = -7 + }, +/obj/item/mop{ + pixel_y = 2; + pixel_x = 4 + }, +/obj/effect/spawner/random/trash/bucket, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"jA" = ( +/obj/effect/turf_decal/siding/dark_red/corner, +/obj/item/storage/toolbox/syndicate, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"kf" = ( +/obj/effect/turf_decal/box, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/hunter/mi13_foodtruck) +"kj" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/ammo_box/c9mm{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/item/ammo_box/magazine/m9mm/ap{ + pixel_x = -7 + }, +/obj/item/ammo_box/magazine/m9mm/ap, +/obj/item/ammo_box/magazine/m9mm/ap{ + pixel_x = 7 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"ku" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/hunter/mi13_foodtruck) +"kv" = ( +/obj/machinery/door/window/brigdoor/right/directional/east{ + req_access = list("syndicate") + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"lp" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"lX" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/sign/poster/contraband/kss13/directional/north, +/obj/machinery/reagentgrinder, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"mT" = ( +/obj/machinery/power/smes/magical{ + cable_layer = 1; + name = "cybersun power storage unit"; + desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Produces power via a top-secret method." + }, +/obj/structure/cable/layer1, +/turf/open/floor/circuit/red, +/area/shuttle/hunter/mi13_foodtruck) +"nh" = ( +/obj/structure/sign/poster/ripped/directional/south, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"oA" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/arrows{ + pixel_y = 16 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"pQ" = ( +/obj/structure/cable/layer1, +/obj/machinery/computer/shuttle/hunter{ + req_access = list("syndicate") + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"pU" = ( +/obj/structure/chair/comfy/shuttle/tactical{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red/end{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"pZ" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"sN" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/structure/railing{ + dir = 4 + }, +/obj/item/reagent_containers/condiment/vinegar{ + pixel_y = 9 + }, +/obj/item/reagent_containers/condiment/mayonnaise{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/reagent_containers/condiment/ketchup{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -2; + pixel_y = -3 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_y = -4; + pixel_x = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"te" = ( +/obj/structure/fans/tiny, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 7; + height = 15; + name = "Deep Space"; + shuttle_id = "huntership_home"; + width = 13 + }, +/obj/docking_port/mobile{ + name = "food truck"; + rechargeTime = 1800; + dir = 4; + shuttle_id = "huntership"; + port_direction = 8 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/machinery/door/poddoor/shutters{ + id = "foodtruck_shutters"; + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/hunter/mi13_foodtruck) +"tW" = ( +/obj/structure/table/optable, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"ua" = ( +/obj/structure/sign/poster/contraband/donk_co/directional/south, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"ui" = ( +/obj/structure/table/reinforced, +/obj/item/food/classic_hard_shell_taco{ + pixel_x = 2; + pixel_y = 10 + }, +/obj/item/food/classic_hard_shell_taco{ + pixel_y = 8 + }, +/obj/item/food/classic_hard_shell_taco{ + pixel_y = 6; + pixel_x = -2 + }, +/obj/item/food/classic_hard_shell_taco{ + pixel_y = 4; + pixel_x = -4 + }, +/obj/item/food/classic_hard_shell_taco{ + pixel_y = 2; + pixel_x = -6 + }, +/obj/item/food/classic_hard_shell_taco{ + pixel_x = -8 + }, +/obj/structure/sign/poster/contraband/eat/directional/east, +/turf/open/floor/iron/kitchen/small, +/area/shuttle/hunter/mi13_foodtruck) +"uq" = ( +/obj/effect/mob_spawn/ghost_role/human/fugitive/mi13/chef{ + dir = 4 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"we" = ( +/obj/machinery/power/apc/auto_name/directional/south{ + cable_layer = 1 + }, +/obj/structure/cable/layer1, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 1 + }, +/obj/effect/mapping_helpers/apc/syndicate_access, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"wA" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/shuttle/hunter/mi13_foodtruck) +"xg" = ( +/obj/structure/chair/comfy/shuttle/tactical{ + dir = 1 + }, +/obj/structure/cable/layer1, +/obj/effect/turf_decal/siding/dark_red/end{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"xG" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"zJ" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"Ak" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/hunter{ + x_offset = 6; + y_offset = 1 + }, +/obj/structure/cable/layer1, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"Am" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/hunter/mi13_foodtruck) +"An" = ( +/obj/effect/spawner/structure/window/reinforced/shuttle, +/obj/structure/cable/layer1, +/obj/machinery/door/poddoor{ + id = "foodtruck_right_window" + }, +/turf/open/floor/plating, +/area/shuttle/hunter/mi13_foodtruck) +"Ay" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"AF" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor/shutters{ + id = "foodtruck_shutters"; + dir = 8 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/hunter/mi13_foodtruck) +"AP" = ( +/obj/effect/turf_decal/arrows, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"Bn" = ( +/obj/machinery/computer/crew/syndie, +/turf/open/floor/circuit/red, +/area/shuttle/hunter/mi13_foodtruck) +"CF" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/machinery/door/poddoor/shutters{ + id = "foodtruck_shutters"; + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/hunter/mi13_foodtruck) +"CY" = ( +/obj/machinery/deepfryer, +/obj/structure/noticeboard/directional/north, +/turf/open/floor/iron/kitchen/small, +/area/shuttle/hunter/mi13_foodtruck) +"Dp" = ( +/obj/effect/turf_decal/arrows{ + dir = 8; + pixel_x = 16 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"Ev" = ( +/obj/effect/spawner/structure/window/reinforced/shuttle, +/obj/structure/cable/layer1, +/obj/machinery/door/poddoor{ + id = "foodtruck_left_window" + }, +/turf/open/floor/plating, +/area/shuttle/hunter/mi13_foodtruck) +"Ff" = ( +/obj/effect/turf_decal/siding/dark_red, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"Fv" = ( +/obj/machinery/light/dim/directional/west, +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"IG" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/hunter/mi13_foodtruck) +"Jv" = ( +/obj/structure/cable/layer1, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 1 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"KV" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cup/glass/mug/tea{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 8 + }, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/reagent_containers/pill/cyanide{ + pixel_y = -9; + pixel_x = -2 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"Lm" = ( +/obj/machinery/vending/dinnerware, +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/turf/open/floor/iron/kitchen/small, +/area/shuttle/hunter/mi13_foodtruck) +"Ml" = ( +/obj/machinery/computer/camera_advanced/syndie{ + dir = 1 + }, +/turf/open/floor/circuit/red, +/area/shuttle/hunter/mi13_foodtruck) +"MZ" = ( +/obj/effect/mob_spawn/ghost_role/human/fugitive/mi13{ + dir = 4 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"NJ" = ( +/obj/effect/turf_decal/siding/dark_red, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"OU" = ( +/obj/machinery/fugitive_locator, +/turf/open/floor/circuit/red, +/area/shuttle/hunter/mi13_foodtruck) +"Pq" = ( +/turf/template_noop, +/area/template_noop) +"PE" = ( +/obj/machinery/fugitive_capture, +/turf/open/floor/circuit/red, +/area/shuttle/hunter/mi13_foodtruck) +"QV" = ( +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"RO" = ( +/obj/machinery/button/door/directional/east{ + id = "foodtruck_shutters"; + name = "External Shutter Switch" + }, +/obj/structure/table/reinforced, +/obj/item/storage/cans/sixsoda, +/turf/open/floor/iron/kitchen/small, +/area/shuttle/hunter/mi13_foodtruck) +"Sw" = ( +/obj/machinery/door/airlock/vault{ + normalspeed = 0; + name = "Secure Door"; + desc = "An imposing looking door. It looks reinforced." + }, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/obj/effect/mapping_helpers/airlock/access/any/syndicate/general, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"SP" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/pinpointer/shuttle, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"UF" = ( +/obj/machinery/door/airlock/external{ + name = "Fire Escape"; + desc = "If you really need to escape in a hurry, try this door."; + id_tag = "foodtruck_firescape" + }, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/any/syndicate/general, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/hunter/mi13_foodtruck) +"Xc" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/obj/structure/railing/corner, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) +"XE" = ( +/obj/machinery/suit_storage_unit/syndicate{ + mod_type = null; + suit_type = /obj/item/clothing/suit/space/syndicate/black; + helmet_type = /obj/item/clothing/head/helmet/space/syndicate/black + }, +/obj/machinery/button/door/directional/east{ + id = "foodtruck_firescape"; + normaldoorcontrol = 1; + specialfunctions = 4; + pixel_y = -10; + name = "Fire Escape Bolt Switch" + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"Yi" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/syringe{ + pixel_y = -3; + pixel_x = -5 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6; + pixel_x = -3 + }, +/obj/item/reagent_containers/cup/beaker/large{ + pixel_y = 6; + pixel_x = 8 + }, +/obj/item/reagent_containers/pill/cyanide{ + pixel_y = -6; + pixel_x = 10 + }, +/turf/open/floor/circuit/red/off, +/area/shuttle/hunter/mi13_foodtruck) +"YW" = ( +/obj/structure/table/reinforced, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/mineral/titanium, +/area/shuttle/hunter/mi13_foodtruck) + +(1,1,1) = {" +Pq +Pq +Pq +Pq +Pq +ku +AF +CF +te +CF +CF +CF +ku +Pq +Pq +"} +(2,1,1) = {" +Pq +Pq +Pq +cm +Am +ku +ao +Xc +al +al +Dp +ua +ku +IG +Pq +"} +(3,1,1) = {" +Pq +Pq +Pq +Pq +wA +ku +iO +xG +oA +AP +pZ +nh +ku +aj +hB +"} +(4,1,1) = {" +cm +Ev +Ev +ku +ku +ku +sN +jc +YW +YW +jc +kv +ku +aj +hB +"} +(5,1,1) = {" +Ev +Ev +jw +MZ +zJ +Sw +bY +bY +bY +bY +bY +bY +ku +cm +Pq +"} +(6,1,1) = {" +Ev +Ak +xg +gs +Jv +ku +CY +ui +dg +Lm +bY +RO +ku +Pq +Pq +"} +(7,1,1) = {" +ku +eP +SP +mT +jb +ku +ku +ku +ku +ku +ah +kf +ku +Pq +Pq +"} +(8,1,1) = {" +An +pQ +xg +gs +we +ku +eA +jA +Fv +fo +QV +gv +ku +Pq +Pq +"} +(9,1,1) = {" +An +An +ag +XE +zJ +ah +lp +NJ +PE +OU +Ay +gc +ku +cm +Pq +"} +(10,1,1) = {" +cm +An +An +ku +UF +ku +dB +Ff +MZ +uq +Ay +tW +ku +aj +hB +"} +(11,1,1) = {" +Pq +Pq +Pq +Pq +wA +ku +dJ +pU +Ml +Bn +pU +ab +ku +aj +hB +"} +(12,1,1) = {" +Pq +Pq +Pq +cm +Am +ku +lX +KV +Yi +dC +kj +af +ku +IG +Pq +"} +(13,1,1) = {" +Pq +Pq +Pq +Pq +Pq +ku +aa +aa +aa +aa +aa +aa +ku +Pq +Pq +"} diff --git a/_maps/shuttles/hunter_psyker.dmm b/_maps/shuttles/hunter_psyker.dmm index e4b8ed5447822..980bb55212260 100644 --- a/_maps/shuttles/hunter_psyker.dmm +++ b/_maps/shuttles/hunter_psyker.dmm @@ -180,7 +180,9 @@ movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); name = "hunter shuttle"; rechargeTime = 1800; - shuttle_id = "huntership" + shuttle_id = "huntership"; + port_direction = 8; + preferred_direction = 8 }, /turf/open/floor/catwalk_floor, /area/shuttle/hunter) @@ -395,7 +397,9 @@ /area/shuttle/hunter) "tT" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/hunter/psyker{ - dir = 4 + dir = 4; + view_range = 12; + y_offset = 12 }, /obj/effect/turf_decal/box/white, /turf/open/floor/iron/dark/textured, diff --git a/_maps/shuttles/hunter_russian.dmm b/_maps/shuttles/hunter_russian.dmm index 214705cfb1719..3f3f24fee5730 100644 --- a/_maps/shuttles/hunter_russian.dmm +++ b/_maps/shuttles/hunter_russian.dmm @@ -686,7 +686,9 @@ movement_force = list("KNOCKDOWN"=0,"THROW"=0); name = "hunter shuttle"; rechargeTime = 1800; - shuttle_id = "huntership" + shuttle_id = "huntership"; + port_direction = 4; + preferred_direction = 4 }, /obj/docking_port/stationary{ dwidth = 11; @@ -724,8 +726,8 @@ "Zu" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/hunter{ dir = 8; - x_offset = 0; - y_offset = 3 + x_offset = -2; + y_offset = 6 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/mineral/plastitanium/red, diff --git a/_maps/shuttles/hunter_space_cop.dmm b/_maps/shuttles/hunter_space_cop.dmm index 50e2093174d08..a215ff7091612 100644 --- a/_maps/shuttles/hunter_space_cop.dmm +++ b/_maps/shuttles/hunter_space_cop.dmm @@ -3,7 +3,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/hunter{ dir = 8; view_range = 7; - x_offset = 6 + x_offset = 5 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/hunter) @@ -125,7 +125,9 @@ dir = 4; name = "hunter shuttle"; rechargeTime = 1800; - shuttle_id = "huntership" + shuttle_id = "huntership"; + port_direction = 2; + preferred_direction = 4 }, /obj/machinery/door/poddoor/shutters{ id = "Interpolship" diff --git a/_maps/shuttles/labour_box.dmm b/_maps/shuttles/labour_box.dmm index f1eeb8e5b04d9..4adb12a5321b2 100644 --- a/_maps/shuttles/labour_box.dmm +++ b/_maps/shuttles/labour_box.dmm @@ -104,9 +104,7 @@ /area/shuttle/labor) "r" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/plating/airless, /area/shuttle/labor) "s" = ( diff --git a/_maps/shuttles/labour_delta.dmm b/_maps/shuttles/labour_delta.dmm index 62b590b8c82fc..aa4e90090d985 100644 --- a/_maps/shuttles/labour_delta.dmm +++ b/_maps/shuttles/labour_delta.dmm @@ -242,9 +242,7 @@ /area/shuttle/labor) "x" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/shuttle/labor) diff --git a/_maps/shuttles/labour_generic.dmm b/_maps/shuttles/labour_generic.dmm index 82b20d6f5ed28..fe7c0b4b12ebc 100644 --- a/_maps/shuttles/labour_generic.dmm +++ b/_maps/shuttles/labour_generic.dmm @@ -99,9 +99,7 @@ /area/shuttle/labor) "r" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/plating/airless, /area/shuttle/labor) "s" = ( diff --git a/_maps/shuttles/mining_box.dmm b/_maps/shuttles/mining_box.dmm index c9771c932e5a2..98607ead77fc3 100644 --- a/_maps/shuttles/mining_box.dmm +++ b/_maps/shuttles/mining_box.dmm @@ -45,9 +45,7 @@ /area/shuttle/mining) "j" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, diff --git a/_maps/shuttles/mining_common_meta.dmm b/_maps/shuttles/mining_common_meta.dmm index 0acf76371b881..f8aee42a870a7 100644 --- a/_maps/shuttles/mining_common_meta.dmm +++ b/_maps/shuttles/mining_common_meta.dmm @@ -45,9 +45,7 @@ /area/shuttle/mining) "j" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, diff --git a/_maps/shuttles/mining_delta.dmm b/_maps/shuttles/mining_delta.dmm index 8b731c6f024d2..7ee1e5662e812 100644 --- a/_maps/shuttles/mining_delta.dmm +++ b/_maps/shuttles/mining_delta.dmm @@ -224,9 +224,7 @@ /area/shuttle/mining) "t" = ( /obj/machinery/power/shuttle_engine/propulsion/burst, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/shuttle/mining) diff --git a/_maps/shuttles/mining_freight.dmm b/_maps/shuttles/mining_freight.dmm index 70605f222e7fd..ead08ff80ac31 100644 --- a/_maps/shuttles/mining_freight.dmm +++ b/_maps/shuttles/mining_freight.dmm @@ -106,7 +106,7 @@ /obj/effect/spawner/structure/window/reinforced/shuttle, /obj/machinery/power/shuttle_engine/heater, /turf/open/floor/plating, -/area/template_noop) +/area/shuttle/mining) "q" = ( /obj/structure/ore_box, /obj/effect/turf_decal/delivery, diff --git a/_maps/shuttles/mining_large.dmm b/_maps/shuttles/mining_large.dmm index 56cf2ef7d3333..f1c0d3a4cf2e6 100644 --- a/_maps/shuttles/mining_large.dmm +++ b/_maps/shuttles/mining_large.dmm @@ -322,9 +322,7 @@ /area/shuttle/mining/large) "G" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/plating/airless, /area/shuttle/mining/large) "H" = ( diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate_default.dmm index 6acff639725ff..f17528fe4d4e3 100644 --- a/_maps/shuttles/pirate_default.dmm +++ b/_maps/shuttles/pirate_default.dmm @@ -463,23 +463,6 @@ /obj/structure/sign/warning/vacuum/external/directional/east, /turf/open/floor/plating, /area/shuttle/pirate) -"br" = ( -/obj/structure/table/wood, -/obj/item/storage/box/matches, -/obj/item/reagent_containers/cup/glass/bottle/rum{ - name = "Captain Pete's Private Reserve Cuban Spaced Rum"; - pixel_x = -6; - pixel_y = 8 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = 6; - pixel_y = 12 - }, -/obj/item/clothing/mask/cigarette/cigar, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/wood, -/area/shuttle/pirate) "bt" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -795,6 +778,21 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/shuttle/pirate) +"lk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack{ + dir = 8 + }, +/obj/item/storage/box/lethalshot, +/obj/item/gun/ballistic/shotgun/automatic/combat{ + pixel_x = -2; + pixel_y = 2 + }, +/turf/open/floor/pod/light, +/area/shuttle/pirate) "mD" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/closet/secure_closet/personal, @@ -831,22 +829,6 @@ }, /turf/open/floor/iron/dark, /area/shuttle/pirate) -"vB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/storage/box/lethalshot, -/obj/item/gun/ballistic/shotgun/automatic/combat{ - pixel_x = -2; - pixel_y = 2 - }, -/turf/open/floor/pod/light, -/area/shuttle/pirate) "wf" = ( /obj/machinery/door/airlock{ name = "Unisex Restrooms" @@ -903,6 +885,23 @@ }, /turf/open/floor/plating, /area/shuttle/pirate) +"Ic" = ( +/obj/structure/table/wood, +/obj/item/storage/box/matches, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + name = "Captain Pete's Private Reserve Cuban Spaced Rum"; + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/item/cigarette/cigar, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/wood, +/area/shuttle/pirate) "JT" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -1056,7 +1055,7 @@ Oe OL zw dy -br +Ic ep er af @@ -1179,7 +1178,7 @@ sP aj ek bA -vB +lk aj np aO diff --git a/_maps/shuttles/pirate_dutchman.dmm b/_maps/shuttles/pirate_dutchman.dmm index fb36638173ed1..30ac4b4317d78 100644 --- a/_maps/shuttles/pirate_dutchman.dmm +++ b/_maps/shuttles/pirate_dutchman.dmm @@ -387,6 +387,15 @@ }, /turf/open/floor/wood/airless, /area/shuttle/pirate/flying_dutchman) +"rR" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ + dir = 1; + x_offset = 7; + y_offset = -3; + view_range = 10 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) "sa" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -484,14 +493,6 @@ }, /turf/open/floor/wood/airless, /area/shuttle/pirate/flying_dutchman) -"xA" = ( -/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ - dir = 1; - x_offset = -4; - y_offset = -8 - }, -/turf/open/floor/carpet/royalblack/airless, -/area/shuttle/pirate/flying_dutchman) "xY" = ( /obj/structure/railing/corner{ color = "#4C3117"; @@ -610,27 +611,6 @@ /obj/machinery/light/floor, /turf/open/floor/wood/airless, /area/shuttle/pirate/flying_dutchman) -"Dr" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/bottle/rum{ - desc = "Rum with ghostly properties that can help the drinker enter the spirit realm. It has fermented under the sea of space for ages."; - name = "Ghost Pirate Rum"; - pixel_x = -4; - pixel_y = 12 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 4 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -7; - pixel_y = 5 - }, -/obj/item/lighter{ - pixel_x = 8; - pixel_y = 11 - }, -/turf/open/floor/carpet/royalblack/airless, -/area/shuttle/pirate/flying_dutchman) "Ew" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -808,6 +788,27 @@ }, /turf/open/floor/wood/airless, /area/shuttle/pirate/flying_dutchman) +"Qe" = ( +/obj/structure/table, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + desc = "Rum with ghostly properties that can help the drinker enter the spirit realm. It has fermented under the sea of space for ages."; + name = "Ghost Pirate Rum"; + pixel_x = -4; + pixel_y = 12 + }, +/obj/item/cigarette/cigar{ + pixel_x = 4 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/item/lighter{ + pixel_x = 8; + pixel_y = 11 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) "QM" = ( /obj/structure/festivus{ anchored = 1; @@ -1274,7 +1275,7 @@ gS WR tH kz -Dr +Qe WR "} (13,1,1) = {" @@ -1301,7 +1302,7 @@ WR WR Ms WQ -xA +rR WR "} (14,1,1) = {" diff --git a/_maps/shuttles/pirate_ex_interdyne.dmm b/_maps/shuttles/pirate_ex_interdyne.dmm index e5e576e3d65f9..dce984f19c993 100644 --- a/_maps/shuttles/pirate_ex_interdyne.dmm +++ b/_maps/shuttles/pirate_ex_interdyne.dmm @@ -169,7 +169,7 @@ "aF" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ dir = 4; - x_offset = -3; + x_offset = 0; y_offset = 7 }, /turf/open/floor/iron/dark, diff --git a/_maps/shuttles/pirate_geode.dmm b/_maps/shuttles/pirate_geode.dmm index afb582e432203..2f6a573aae050 100644 --- a/_maps/shuttles/pirate_geode.dmm +++ b/_maps/shuttles/pirate_geode.dmm @@ -430,8 +430,7 @@ "vY" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ dir = 8; - x_offset = 10; - y_offset = 5 + x_offset = -8 }, /obj/effect/turf_decal/weather/dirt{ dir = 3 @@ -487,7 +486,7 @@ /obj/effect/turf_decal/stripes/white/line{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/pirate) "yz" = ( /obj/structure/flora/lunar_plant/style_3, @@ -838,7 +837,7 @@ /obj/machinery/power/shuttle_engine/propulsion{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/pirate) "Pr" = ( /obj/structure/table/wood, diff --git a/_maps/shuttles/pirate_grey.dmm b/_maps/shuttles/pirate_grey.dmm index 23bc06b5dc922..22356be732c36 100644 --- a/_maps/shuttles/pirate_grey.dmm +++ b/_maps/shuttles/pirate_grey.dmm @@ -353,8 +353,9 @@ /obj/machinery/light/small/directional/west, /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ dir = 4; - x_offset = -3; - y_offset = 7 + x_offset = -5; + y_offset = 12; + view_range = 10 }, /obj/effect/decal/cleanable/dirt, /obj/machinery/firealarm/directional/south, @@ -854,7 +855,7 @@ }, /obj/effect/mapping_helpers/airlock/cutaiwire, /obj/docking_port/mobile/pirate{ - dir = 4 + dir = 8 }, /obj/structure/fans/tiny, /turf/open/floor/pod/light, @@ -1231,7 +1232,7 @@ /area/shuttle/pirate) "Pn" = ( /turf/closed/wall, -/area/template_noop) +/area/shuttle/pirate) "PM" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/grille_or_waste, diff --git a/_maps/shuttles/pirate_irs.dmm b/_maps/shuttles/pirate_irs.dmm index e01639a9a9fe6..4fd5a8c357342 100644 --- a/_maps/shuttles/pirate_irs.dmm +++ b/_maps/shuttles/pirate_irs.dmm @@ -1027,9 +1027,7 @@ /obj/structure/railing{ dir = 10 }, -/obj/machinery/shower/directional/south{ - layer = 4 - }, +/obj/machinery/shower/directional/south, /obj/effect/turf_decal/box, /obj/structure/fluff/shower_drain, /turf/open/floor/iron/dark, @@ -1420,7 +1418,11 @@ }, /area/shuttle/pirate) "LV" = ( -/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate, +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ + y_offset = 11; + x_offset = -4; + view_range = 10 + }, /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 5 }, diff --git a/_maps/shuttles/pirate_silverscale.dmm b/_maps/shuttles/pirate_silverscale.dmm index f32e70b1e451d..6d9c7537bde18 100644 --- a/_maps/shuttles/pirate_silverscale.dmm +++ b/_maps/shuttles/pirate_silverscale.dmm @@ -11,8 +11,11 @@ /turf/open/floor/pod/light, /area/shuttle/pirate) "aZ" = ( -/obj/machinery/suit_storage_unit/pirate, /obj/effect/turf_decal/bot_red, +/obj/machinery/suit_storage_unit/pirate{ + helmet_type = /obj/item/clothing/head/helmet/space/pirate/tophat; + suit_type = /obj/item/clothing/suit/space/pirate/silverscale + }, /turf/open/floor/pod/dark, /area/shuttle/pirate) "bp" = ( @@ -30,9 +33,6 @@ /turf/open/floor/pod/light, /area/shuttle/pirate) "de" = ( -/obj/machinery/door/airlock/external/glass/ruin{ - id_tag = "pirateportexternal" - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 4 }, @@ -40,6 +40,9 @@ dir = 8 }, /obj/effect/mapping_helpers/airlock/cutaiwire, +/obj/machinery/door/airlock/external/glass/ruin{ + id_tag = "pirateportexternal" + }, /turf/open/floor/pod/light, /area/shuttle/pirate) "dI" = ( @@ -51,20 +54,18 @@ anchored = 1 }, /obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/all_access, /obj/effect/turf_decal/bot, /turf/open/floor/pod/dark, /area/shuttle/pirate) "dT" = ( -/obj/item/ammo_box/strilka310{ - pixel_y = 2 +/obj/structure/table, +/obj/item/grenade/c4, +/obj/item/grenade/c4{ + pixel_x = 9 }, -/obj/item/ammo_box/strilka310, /obj/item/grenade/c4{ - pixel_x = -13 + pixel_x = -9 }, -/obj/structure/table, /turf/open/floor/iron/dark, /area/shuttle/pirate) "ei" = ( @@ -79,10 +80,6 @@ /obj/effect/turf_decal/trimline/yellow/warning, /turf/open/floor/plating/airless, /area/shuttle/pirate) -"eK" = ( -/obj/machinery/power/shuttle_engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) "eU" = ( /obj/structure/chair/comfy/shuttle, /turf/open/floor/carpet/royalblack, @@ -123,6 +120,14 @@ }, /turf/open/floor/iron/dark, /area/shuttle/pirate) +"gw" = ( +/mob/living/basic/bot/medbot/nukie{ + name = "Mortimer"; + faction = list("pirate"); + desc = "A lowly medibot serving as the Silverscales' live-in manservant/butler/coat rack. They recently discovered it can heal people as well." + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) "ht" = ( /obj/machinery/door/airlock/silver, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, @@ -247,13 +252,13 @@ /turf/open/floor/plating/airless, /area/shuttle/pirate) "nY" = ( -/obj/machinery/door/airlock/external/glass/ruin{ - id_tag = "pirateportexternal" - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, /obj/effect/mapping_helpers/airlock/cutaiwire, +/obj/machinery/door/airlock/external/glass/ruin{ + id_tag = "pirateportexternal" + }, /turf/open/floor/pod/light, /area/shuttle/pirate) "pk" = ( @@ -337,10 +342,13 @@ dir = 6 }, /turf/open/floor/plating/airless, -/area/template_noop) +/area/shuttle/pirate) "xj" = ( /obj/structure/table/glass, /obj/item/storage/medkit/brute, +/obj/item/storage/medkit/fire{ + pixel_y = 5 + }, /turf/open/floor/carpet/royalblack, /area/shuttle/pirate) "xs" = ( @@ -355,8 +363,7 @@ /area/shuttle/pirate) "xR" = ( /obj/structure/rack{ - dir = 8; - layer = 2.9 + dir = 8 }, /obj/item/melee/energy/sword/saber/purple{ pixel_y = 12 @@ -402,9 +409,6 @@ /turf/open/floor/pod/dark, /area/shuttle/pirate) "zQ" = ( -/obj/machinery/door/airlock/external/glass/ruin{ - id_tag = "piratestarboardexternal" - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 4 }, @@ -412,6 +416,9 @@ dir = 8 }, /obj/effect/mapping_helpers/airlock/cutaiwire, +/obj/machinery/door/airlock/external/glass/ruin{ + id_tag = "piratestarboardexternal" + }, /turf/open/floor/pod/light, /area/shuttle/pirate) "Ae" = ( @@ -450,9 +457,6 @@ /turf/open/floor/pod/dark, /area/shuttle/pirate) "Bl" = ( -/obj/machinery/door/airlock/external/glass/ruin{ - id_tag = "piratestarboardexternal" - }, /obj/docking_port/stationary{ dir = 4; dwidth = 13; @@ -462,7 +466,7 @@ width = 26 }, /obj/docking_port/mobile/pirate{ - dir = 4; + dir = 8; launch_status = 0; movement_force = list("KNOCKDOWN"=0,"THROW"=0); name = "Silverscale Cruiser"; @@ -472,6 +476,9 @@ dir = 4 }, /obj/effect/mapping_helpers/airlock/cutaiwire, +/obj/machinery/door/airlock/external/glass/ruin{ + id_tag = "piratestarboardexternal" + }, /turf/open/floor/pod/light, /area/shuttle/pirate) "Ch" = ( @@ -500,8 +507,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 4 }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/all_access, +/obj/machinery/button/door/directional/north{ + specialfunctions = 4; + normaldoorcontrol = 1; + name = "External Bolt Control"; + id = "piratestarboardexternal" + }, /turf/open/floor/pod/dark, /area/shuttle/pirate) "Fl" = ( @@ -544,6 +555,14 @@ }, /turf/open/floor/plating, /area/shuttle/pirate) +"Id" = ( +/obj/structure/guncase, +/obj/item/gun/energy/laser/luxurypaywall{ + projectile_damage_multiplier = 1.30; + desc = "A laser gun modified to cost 20 credits to fire. Someone on the station should have an ID that works with this thing." + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) "Ig" = ( /obj/structure/table/glass, /obj/machinery/chem_dispenser/drinks{ @@ -652,8 +671,9 @@ "Mo" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ dir = 8; - x_offset = 10; - y_offset = 5 + x_offset = 12; + y_offset = 5; + view_range = 10 }, /turf/open/floor/iron/dark/side{ dir = 8 @@ -695,12 +715,10 @@ pixel_y = 10 }, /obj/item/reagent_containers/cup/glass/bottle/hcider{ - layer = 3.1; pixel_x = -6; pixel_y = 8 }, /obj/item/reagent_containers/cup/glass/bottle/rum{ - layer = 3.2; pixel_x = -15; pixel_y = 4 }, @@ -713,7 +731,6 @@ pixel_y = 15 }, /obj/item/reagent_containers/cup/glass/bottle/wine{ - layer = 3.1; pixel_x = 3; pixel_y = 5 }, @@ -784,18 +801,27 @@ /area/shuttle/pirate) "RO" = ( /obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310{ - pixel_y = 3 + dir = 8 }, /obj/effect/turf_decal/bot, -/obj/item/gun/ballistic/rifle/boltaction/prime, +/obj/item/ammo_box/strilka310/phasic{ + pixel_y = -5; + pixel_x = 5 + }, +/obj/item/ammo_box/strilka310/phasic{ + pixel_x = 5 + }, +/obj/item/ammo_box/strilka310/phasic{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/ammo_box/strilka310/phasic{ + pixel_x = -5 + }, /obj/item/gun/ballistic/rifle/boltaction/prime{ pixel_y = 4 }, +/obj/item/gun/ballistic/rifle/boltaction/prime, /turf/open/floor/pod/dark, /area/shuttle/pirate) "RU" = ( @@ -887,6 +913,8 @@ /area/shuttle/pirate) "UV" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/all_access, /turf/open/floor/pod/dark, /area/shuttle/pirate) "Vw" = ( @@ -894,6 +922,18 @@ /obj/machinery/recharger, /turf/open/floor/iron/dark, /area/shuttle/pirate) +"Wd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/machinery/button/door/directional/south{ + id = "pirateportexternal"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) "Ww" = ( /obj/machinery/power/shuttle_engine/heater{ dir = 8 @@ -942,8 +982,7 @@ /area/shuttle/pirate) "Yj" = ( /obj/structure/rack{ - dir = 8; - layer = 2.9 + dir = 8 }, /obj/item/storage/box/lethalshot, /obj/item/storage/box/lethalshot, @@ -1022,7 +1061,7 @@ rB Ww Ww Ww -eK +Ww Ww Ww Ww @@ -1055,7 +1094,7 @@ TV rB rB dQ -Si +Wd rB aZ aZ @@ -1101,7 +1140,7 @@ fR Ox Qm wa -Qm +Id rB UV wa @@ -1193,7 +1232,7 @@ xs Ai am am -am +gw am am Ai diff --git a/_maps/shuttles/ruin_cyborg_mothership.dmm b/_maps/shuttles/ruin_cyborg_mothership.dmm index 8ee4eb11a6a32..4e0fff656e83d 100644 --- a/_maps/shuttles/ruin_cyborg_mothership.dmm +++ b/_maps/shuttles/ruin_cyborg_mothership.dmm @@ -43,9 +43,7 @@ /area/shuttle/ruin/cyborg_mothership) "dI" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /turf/template_noop, /area/shuttle/ruin/cyborg_mothership) "dO" = ( @@ -232,9 +230,7 @@ /turf/open/floor/plating/airless, /area/shuttle/ruin/cyborg_mothership) "nM" = ( -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/closet/crate/preopen, /obj/effect/turf_decal/stripes/asteroid/line{ dir = 8 @@ -733,9 +729,7 @@ /area/shuttle/ruin/cyborg_mothership) "OY" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/west, /turf/template_noop, /area/shuttle/ruin/cyborg_mothership) @@ -796,9 +790,7 @@ /area/shuttle/ruin/cyborg_mothership) "SV" = ( /obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/east, /turf/template_noop, /area/shuttle/ruin/cyborg_mothership) @@ -809,9 +801,7 @@ /area/shuttle/ruin/cyborg_mothership) "TH" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/stripes/asteroid/line{ dir = 4 }, diff --git a/_maps/shuttles/starfury_corvette.dmm b/_maps/shuttles/starfury_corvette.dmm index 498f8198cb421..877375fa4e785 100644 --- a/_maps/shuttles/starfury_corvette.dmm +++ b/_maps/shuttles/starfury_corvette.dmm @@ -58,7 +58,9 @@ /area/shuttle/sbc_corvette) "ai" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/corvette{ - dir = 8 + dir = 8; + y_offset = 0; + x_offset = -3 }, /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -70,7 +72,10 @@ id_tag = "SBC_corvette_bolt"; name = "Syndicate Corvette Airlock" }, -/obj/docking_port/mobile/syndicate_corvette, +/obj/docking_port/mobile/syndicate_corvette{ + preferred_direction = 1; + port_direction = 4 + }, /obj/structure/fans/tiny, /obj/effect/mapping_helpers/airlock/access/all/syndicate/general, /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -290,8 +295,7 @@ /area/shuttle/sbc_corvette) "aO" = ( /obj/machinery/door/poddoor/preopen{ - id = "SBC_corvette_blast"; - layer = 3 + id = "SBC_corvette_blast" }, /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, /turf/open/floor/plating, diff --git a/_maps/shuttles/whiteship_birdshot.dmm b/_maps/shuttles/whiteship_birdshot.dmm index 593b84827bf3f..6d1854a7e9a8f 100644 --- a/_maps/shuttles/whiteship_birdshot.dmm +++ b/_maps/shuttles/whiteship_birdshot.dmm @@ -26,9 +26,6 @@ /obj/machinery/meter, /turf/open/floor/catwalk_floor, /area/shuttle/abandoned/engine) -"bp" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned/engine) "bq" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -119,6 +116,33 @@ }, /turf/open/floor/iron/smooth_large, /area/shuttle/abandoned/cargo) +"eB" = ( +/obj/structure/closet/secure_closet/freezer/fridge/open, +/obj/item/reagent_containers/condiment/enzyme, +/obj/item/food/meat/slab/synthmeat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/food/meat/slab/synthmeat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/food/meat/slab/synthmeat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/condiment/milk, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/cafeteria, +/area/shuttle/abandoned/bar) "eC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -177,19 +201,6 @@ }, /turf/open/floor/iron, /area/shuttle/abandoned/bar) -"fW" = ( -/obj/machinery/porta_turret/centcom_shuttle/weak{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned/crew) -"gj" = ( -/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/small, -/area/shuttle/abandoned/bridge) "gs" = ( /obj/machinery/power/terminal{ dir = 4 @@ -233,6 +244,12 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/shuttle/abandoned/crew) +"hG" = ( +/obj/machinery/porta_turret/centcom_shuttle/weak{ + dir = 4 + }, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned/crew) "hT" = ( /obj/effect/spawner/structure/window/reinforced/shuttle, /obj/machinery/door/firedoor, @@ -285,6 +302,12 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark/small, /area/shuttle/abandoned/bridge) +"jC" = ( +/obj/machinery/porta_turret/centcom_shuttle/weak{ + dir = 4 + }, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned/bridge) "jY" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/suit_storage_unit/standard_unit, @@ -339,9 +362,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/iron/smooth_large, /area/shuttle/abandoned/cargo) -"ma" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned/cargo) "mU" = ( /obj/structure/toilet{ pixel_y = 8 @@ -364,35 +384,6 @@ /obj/structure/cable, /turf/open/floor/catwalk_floor, /area/shuttle/abandoned/crew) -"nz" = ( -/obj/structure/closet/secure_closet/freezer/fridge/open, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, -/obj/item/food/meat/slab/synthmeat{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/food/meat/slab/synthmeat{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/food/meat/slab/synthmeat{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/condiment/flour{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/condiment/flour{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/condiment/milk, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/cafeteria, -/area/shuttle/abandoned/bar) "nL" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -537,9 +528,6 @@ }, /turf/open/floor/iron/small, /area/shuttle/abandoned/medbay) -"ry" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned/bar) "rO" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -598,9 +586,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/catwalk_floor, /area/shuttle/abandoned/engine) -"uk" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned/pod) "ur" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -1057,6 +1042,14 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/freezer, /area/shuttle/abandoned/medbay) +"Ib" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ + dir = 1; + x_offset = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/small, +/area/shuttle/abandoned/bridge) "Is" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -1166,12 +1159,6 @@ }, /turf/open/floor/iron, /area/shuttle/abandoned/bar) -"Lj" = ( -/obj/machinery/porta_turret/centcom_shuttle/weak{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned/pod) "Ll" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -1256,6 +1243,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/iron/smooth, /area/shuttle/abandoned/crew) +"OO" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned/bar) "PC" = ( /obj/effect/spawner/structure/window/reinforced/shuttle, /obj/machinery/door/poddoor{ @@ -1273,12 +1263,6 @@ }, /turf/open/floor/iron/grimy, /area/shuttle/abandoned/crew) -"Qf" = ( -/obj/machinery/porta_turret/centcom_shuttle/weak{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned/bridge) "Ql" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/random/directional/north, @@ -1344,6 +1328,12 @@ }, /turf/open/floor/iron/small, /area/shuttle/abandoned/cargo) +"RA" = ( +/obj/machinery/porta_turret/centcom_shuttle/weak{ + dir = 4 + }, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned/pod) "RH" = ( /obj/structure/chair{ dir = 4 @@ -1448,9 +1438,6 @@ /obj/machinery/light/built/directional/west, /turf/open/floor/carpet/green, /area/shuttle/abandoned/bar) -"WG" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned/bridge) "WW" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 @@ -1538,9 +1525,9 @@ (1,1,1) = {" lt lt -bp +Gi BH -bp +Gi lt lt lt @@ -1552,15 +1539,15 @@ lt lt lt lt -bp +Gi BH -bp +Gi lt lt "} (2,1,1) = {" lt -bp +Gi Om oe Gi @@ -1578,7 +1565,7 @@ BH Gi oe Om -bp +Gi lt "} (3,1,1) = {" @@ -1588,7 +1575,7 @@ Wu RH Gi oe -bp +Gi lt lt lt @@ -1596,7 +1583,7 @@ lt lt lt lt -bp +Gi oe Gi qn @@ -1674,7 +1661,7 @@ Gi lt "} (7,1,1) = {" -ma +Tg kQ DK er @@ -1694,7 +1681,7 @@ uF uF BR kQ -ma +Tg "} (8,1,1) = {" kQ @@ -1835,7 +1822,7 @@ wd Tg "} (14,1,1) = {" -fW +hG NK NK NK @@ -1855,7 +1842,7 @@ Zy NK NK NK -fW +hG "} (15,1,1) = {" lt @@ -1928,7 +1915,7 @@ lt "} (18,1,1) = {" lt -uk +PN pv pv pv @@ -1946,7 +1933,7 @@ KR JP JP JP -WG +XB lt "} (19,1,1) = {" @@ -1963,7 +1950,7 @@ fU Gg GS wY -nz +eB JP Kf jv @@ -2013,7 +2000,7 @@ JP JP UK Uu -gj +Ib XB lt lt @@ -2021,23 +2008,23 @@ lt (22,1,1) = {" lt lt -uk +PN pv xr qO pv -ry +OO lt lt lt lt lt -WG +XB JP Hk Bs JP -WG +XB lt lt "} @@ -2045,10 +2032,10 @@ lt lt lt lt -uk +PN BZ BZ -Lj +RA lt lt lt @@ -2056,10 +2043,10 @@ lt lt lt lt -Qf +jC YJ YJ -WG +XB lt lt lt diff --git a/_maps/shuttles/whiteship_cere.dmm b/_maps/shuttles/whiteship_cere.dmm index aac0c4d7ada83..df697dc1739c1 100644 --- a/_maps/shuttles/whiteship_cere.dmm +++ b/_maps/shuttles/whiteship_cere.dmm @@ -685,7 +685,9 @@ "Hw" = ( /obj/machinery/light/small/directional/east, /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ - dir = 1 + dir = 1; + x_offset = 0; + y_offset = 10 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, diff --git a/_maps/shuttles/whiteship_donut.dmm b/_maps/shuttles/whiteship_donut.dmm index eff7c2bfaadb7..2bb707ef9d73b 100644 --- a/_maps/shuttles/whiteship_donut.dmm +++ b/_maps/shuttles/whiteship_donut.dmm @@ -34,13 +34,6 @@ /obj/structure/window/reinforced/spawner/directional/south, /turf/open/floor/plating/airless, /area/shuttle/abandoned) -"aX" = ( -/obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) "be" = ( /obj/machinery/power/shuttle_engine/propulsion/left, /turf/open/floor/plating/airless, @@ -58,6 +51,11 @@ /obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/airless, /area/shuttle/abandoned) +"cq" = ( +/obj/machinery/power/shuttle_engine/heater, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/plating/airless, +/area/shuttle/abandoned) "da" = ( /obj/machinery/light/small/directional/west, /obj/structure/table, @@ -443,6 +441,17 @@ /obj/structure/window/reinforced/tinted/spawner/directional/north, /turf/open/floor/iron/showroomfloor/airless, /area/shuttle/abandoned) +"VL" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ + dir = 1; + x_offset = 0; + y_offset = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/disk/holodisk/donutstation/whiteship, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron/airless, +/area/shuttle/abandoned) "Wf" = ( /obj/machinery/computer/mech_bay_power_console{ dir = 8 @@ -466,15 +475,6 @@ }, /turf/open/floor/iron/airless, /area/shuttle/abandoned) -"XY" = ( -/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/disk/holodisk/donutstation/whiteship, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron/airless, -/area/shuttle/abandoned) "YO" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/south, @@ -543,7 +543,7 @@ pM nu YO ab -aX +cq be aa aa @@ -563,7 +563,7 @@ ac KL Te ab -aX +cq bf aa aa @@ -645,7 +645,7 @@ ui PT gf Xd -XY +VL bq "} (9,1,1) = {" @@ -763,7 +763,7 @@ MT hP eu ab -aX +cq be aa aa @@ -783,7 +783,7 @@ qy BM kI ab -aX +cq bf aa aa diff --git a/_maps/shuttles/whiteship_kilo.dmm b/_maps/shuttles/whiteship_kilo.dmm index 8034d78126d68..3dda9d34da2a1 100644 --- a/_maps/shuttles/whiteship_kilo.dmm +++ b/_maps/shuttles/whiteship_kilo.dmm @@ -207,7 +207,7 @@ /obj/machinery/power/shuttle_engine/propulsion/left{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "jM" = ( /obj/structure/table, @@ -249,8 +249,8 @@ launch_status = 0; movement_force = list("KNOCKDOWN"=0,"THROW"=0); name = "Mining Shuttle"; - port_direction = 4; - preferred_direction = 8 + port_direction = 8; + preferred_direction = 4 }, /turf/open/floor/plating, /area/shuttle/abandoned/cargo) @@ -327,7 +327,7 @@ /obj/machinery/power/shuttle_engine/propulsion{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "nt" = ( /obj/effect/turf_decal/stripes/line{ @@ -355,7 +355,7 @@ /obj/machinery/power/shuttle_engine/propulsion/right{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/bar) "pI" = ( /obj/effect/turf_decal/delivery, @@ -416,7 +416,7 @@ /obj/machinery/power/shuttle_engine/propulsion/right{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "rX" = ( /obj/effect/decal/cleanable/dirt, @@ -868,7 +868,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "Nh" = ( /turf/closed/wall/mineral/plastitanium, @@ -909,7 +909,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/bar) "Pe" = ( /obj/machinery/button/door/directional/north{ @@ -931,7 +931,7 @@ /obj/machinery/power/shuttle_engine/propulsion/left{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/bar) "PR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ @@ -1031,7 +1031,9 @@ }, /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ dir = 4; - view_range = 14 + view_range = 14; + y_offset = 5; + x_offset = 0 }, /obj/effect/turf_decal/stripes/corner{ dir = 8 diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 9939b4b55ff87..1557622647809 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -1361,7 +1361,6 @@ pixel_y = 14 }, /obj/item/reagent_containers/condiment/enzyme{ - layer = 5; pixel_x = -5; pixel_y = 6 }, diff --git a/_maps/shuttles/whiteship_obelisk.dmm b/_maps/shuttles/whiteship_obelisk.dmm index 4b8eb9ee91b84..0f1e07b1a213e 100644 --- a/_maps/shuttles/whiteship_obelisk.dmm +++ b/_maps/shuttles/whiteship_obelisk.dmm @@ -206,7 +206,7 @@ /obj/machinery/power/shuttle_engine/propulsion/left{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "mQ" = ( /obj/structure/cable, @@ -271,14 +271,14 @@ dir = 4 }, /obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "ot" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ dir = 4; view_range = 14; - x_offset = -3; - y_offset = -3 + x_offset = -2; + y_offset = -7 }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/dark_blue/anticorner{ @@ -438,7 +438,7 @@ /obj/effect/turf_decal/stripes{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "zj" = ( /obj/structure/cable, @@ -699,7 +699,7 @@ /obj/machinery/power/shuttle_engine/propulsion/right{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "PR" = ( /obj/structure/table/wood, diff --git a/_maps/shuttles/whiteship_personalshuttle.dmm b/_maps/shuttles/whiteship_personalshuttle.dmm index 8e041082bc6d9..7666f6c63add1 100644 --- a/_maps/shuttles/whiteship_personalshuttle.dmm +++ b/_maps/shuttles/whiteship_personalshuttle.dmm @@ -90,7 +90,7 @@ /obj/machinery/power/shuttle_engine/propulsion/right{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "cM" = ( /turf/template_noop, @@ -100,7 +100,7 @@ dir = 1 }, /obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "cY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -372,9 +372,8 @@ "DT" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ dir = 1; - view_range = 14; - x_offset = -3; - y_offset = -3 + x_offset = 0; + y_offset = -5 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/mineral/plastitanium, @@ -523,7 +522,7 @@ /obj/machinery/power/shuttle_engine/propulsion/left{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/shuttle/abandoned/engine) "WL" = ( /obj/machinery/light/cold/no_nightlight/directional/west, diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship_pubby.dmm index 56f85fcd80218..fd16482390e25 100644 --- a/_maps/shuttles/whiteship_pubby.dmm +++ b/_maps/shuttles/whiteship_pubby.dmm @@ -268,15 +268,6 @@ /obj/machinery/recharger, /turf/open/floor/pod/light, /area/shuttle/abandoned) -"lV" = ( -/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ - y_offset = 2; - x_offset = -7 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/shuttle/abandoned) "mh" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 8 @@ -403,6 +394,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/shuttle/abandoned) +"qy" = ( +/obj/machinery/power/shuttle_engine/heater, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/plating/airless, +/area/shuttle/abandoned) "qS" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -536,24 +532,6 @@ /obj/machinery/light/small/built/directional/west, /turf/open/floor/iron/dark, /area/shuttle/abandoned) -"vB" = ( -/obj/machinery/door/airlock/external/ruin, -/obj/effect/turf_decal/loading_area/white{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/docking_port/mobile{ - dir = 8; - shuttle_id = "whiteship"; - launch_status = 0; - name = "White Ship"; - port_direction = 2 - }, -/turf/open/floor/plating, -/area/shuttle/abandoned) "vJ" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/effect/decal/cleanable/dirt, @@ -593,13 +571,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/shuttle/abandoned) -"zw" = ( -/obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) "zY" = ( /turf/template_noop, /area/template_noop) @@ -993,6 +964,24 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/shuttle/abandoned) +"Oe" = ( +/obj/machinery/door/airlock/external/ruin, +/obj/effect/turf_decal/loading_area/white{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/docking_port/mobile{ + dir = 8; + shuttle_id = "whiteship"; + launch_status = 0; + name = "White Ship"; + port_direction = 4 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) "Pu" = ( /obj/machinery/light/small/built/directional/west, /obj/effect/turf_decal/siding/purple{ @@ -1002,6 +991,15 @@ /obj/item/rack_parts, /turf/open/floor/iron/white/diagonal, /area/shuttle/abandoned) +"QZ" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ + y_offset = 2; + x_offset = -8 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/abandoned) "Ra" = ( /obj/effect/turf_decal/trimline/purple/filled/end{ dir = 8 @@ -1346,7 +1344,7 @@ Sc Sc ED xl -zw +qy UX "} (7,1,1) = {" @@ -1366,7 +1364,7 @@ cE Sc ot cx -zw +qy UX "} (8,1,1) = {" @@ -1411,7 +1409,7 @@ Sc "} (10,1,1) = {" Fw -lV +QZ Np nQ jT @@ -1446,7 +1444,7 @@ Ky Sc Rr vJ -zw +qy UX "} (12,1,1) = {" @@ -1466,7 +1464,7 @@ Sc Sc UC AA -zw +qy UX "} (13,1,1) = {" @@ -1560,7 +1558,7 @@ zY zY Sc jT -vB +Oe jT Sc zY diff --git a/_maps/shuttles/whiteship_tram.dmm b/_maps/shuttles/whiteship_tram.dmm index 84f438accfd1d..7666e2c70ac85 100644 --- a/_maps/shuttles/whiteship_tram.dmm +++ b/_maps/shuttles/whiteship_tram.dmm @@ -1164,7 +1164,9 @@ /area/shuttle/abandoned/cargo) "Ft" = ( /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ - dir = 8 + dir = 8; + x_offset = 0; + y_offset = 13 }, /obj/effect/turf_decal/stripes/white/corner{ dir = 1 diff --git a/_maps/templates/battlecruiser_starfury.dmm b/_maps/templates/battlecruiser_starfury.dmm index ca9ff3858872e..6d8923461f297 100644 --- a/_maps/templates/battlecruiser_starfury.dmm +++ b/_maps/templates/battlecruiser_starfury.dmm @@ -19,15 +19,6 @@ "ac" = ( /turf/closed/wall/mineral/plastitanium, /area/shuttle/sbc_starfury) -"ad" = ( -/obj/machinery/door/poddoor/preopen{ - id = "syndie_battlecruier_bridge_blast"; - layer = 3 - }, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/shuttle/sbc_starfury) "ae" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/sbc_starfury) @@ -407,15 +398,6 @@ }, /turf/open/floor/iron/dark, /area/shuttle/sbc_starfury) -"bx" = ( -/obj/machinery/door/poddoor/preopen{ - id = "syndie_battlecruier_bridge_blast"; - layer = 3 - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/cable, -/turf/open/floor/plating, -/area/shuttle/sbc_starfury) "by" = ( /obj/structure/sign/warning/secure_area, /turf/closed/wall/mineral/plastitanium/nodiagonal, @@ -616,6 +598,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/textured, /area/shuttle/sbc_starfury) +"cp" = ( +/obj/structure/table/wood, +/obj/item/folder/syndicate/red{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/cigarette/cigar{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/storage/box/matches, +/obj/item/pen{ + pixel_x = -5 + }, +/obj/machinery/airalarm/directional/east, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/turf/open/floor/carpet/red, +/area/shuttle/sbc_starfury) "cs" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/structure/cable, @@ -993,21 +993,10 @@ /obj/effect/turf_decal/stripes/red/line, /turf/open/floor/iron/dark, /area/shuttle/sbc_starfury) -"dO" = ( +"dR" = ( /obj/structure/sign/warning/secure_area/directional/east{ desc = "A warning sign which reads 'KEEP CLEAR: SHUTTLE BAY'"; icon_state = "space"; - layer = 4; - name = "KEEP CLEAR: SHUTTLE BAY" - }, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/iron/dark, -/area/shuttle/sbc_starfury) -"dS" = ( -/obj/structure/sign/warning/secure_area/directional/west{ - desc = "A warning sign which reads 'KEEP CLEAR: SHUTTLE BAY'"; - icon_state = "space"; - layer = 4; name = "KEEP CLEAR: SHUTTLE BAY" }, /obj/effect/turf_decal/stripes/red/line, @@ -1622,6 +1611,25 @@ }, /turf/open/floor/iron/dark, /area/shuttle/sbc_starfury) +"ga" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/mod/control/pre_equipped/elite{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/clothing/mask/gas/syndicate{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/mod/control/pre_equipped/elite{ + pixel_x = -4 + }, +/obj/item/clothing/mask/gas/syndicate, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/pod/light, +/area/shuttle/sbc_starfury) "gc" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/mop_bucket, @@ -1637,18 +1645,6 @@ }, /turf/open/floor/iron/dark, /area/shuttle/sbc_starfury) -"gp" = ( -/obj/structure/sign/warning/secure_area/directional/east{ - desc = "A warning sign which reads 'KEEP CLEAR: SHUTTLE BAY'"; - icon_state = "space"; - layer = 4; - name = "KEEP CLEAR: SHUTTLE BAY" - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/shuttle/sbc_starfury) "gx" = ( /obj/effect/mob_spawn/ghost_role/human/syndicate/battlecruiser{ dir = 8 @@ -1678,21 +1674,6 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/shuttle/sbc_starfury) -"gC" = ( -/obj/structure/sign/warning/secure_area/directional/west{ - desc = "A warning sign which reads 'KEEP CLEAR: SHUTTLE BAY'"; - icon_state = "space"; - layer = 4; - name = "KEEP CLEAR: SHUTTLE BAY" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/shuttle/sbc_starfury) "gD" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -2194,38 +2175,6 @@ /obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/iron/dark, /area/shuttle/sbc_starfury) -"hZ" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/gun/ballistic/automatic/m90{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/ballistic/automatic/m90, -/obj/item/gun/ballistic/automatic/m90{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/pod/light, -/area/shuttle/sbc_starfury) -"ia" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/gun/ballistic/shotgun/bulldog{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/ballistic/shotgun/bulldog, -/obj/item/gun/ballistic/shotgun/bulldog{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/pod/light, -/area/shuttle/sbc_starfury) "ib" = ( /obj/structure/closet/secure_closet{ anchored = 1; @@ -2258,21 +2207,6 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/pod/light, /area/shuttle/sbc_starfury) -"ic" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -31 - }, -/obj/item/book/manual/wiki/barman_recipes, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = 10 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/effect/turf_decal/tile/bar, -/turf/open/floor/iron/dark, -/area/shuttle/sbc_starfury) "id" = ( /obj/item/toy/cards/deck/syndicate{ pixel_x = -6; @@ -2387,21 +2321,6 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron/dark, /area/shuttle/sbc_starfury) -"io" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/gun/ballistic/revolver/syndicate{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/item/gun/ballistic/revolver/syndicate{ - pixel_x = -1; - pixel_y = 2 - }, -/turf/open/floor/pod/light, -/area/shuttle/sbc_starfury) "iq" = ( /obj/machinery/microwave, /obj/structure/table/wood, @@ -2468,16 +2387,6 @@ /obj/effect/mapping_helpers/airalarm/syndicate_access, /turf/open/floor/iron, /area/shuttle/sbc_starfury) -"ix" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/storage/belt/military, -/obj/item/ammo_box/magazine/m7mm, -/obj/item/gun/ballistic/automatic/l6_saw, -/turf/open/floor/pod/light, -/area/shuttle/sbc_starfury) "iy" = ( /obj/item/storage/box/donkpockets{ pixel_x = 2 @@ -2531,24 +2440,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet/red, /area/shuttle/sbc_starfury) -"iG" = ( -/obj/structure/table/wood, -/obj/item/folder/syndicate/red{ - pixel_x = -5; - pixel_y = 2 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 5; - pixel_y = 7 - }, -/obj/item/storage/box/matches, -/obj/item/pen{ - pixel_x = -5 - }, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/red, -/area/shuttle/sbc_starfury) "iI" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -2576,26 +2467,6 @@ }, /turf/open/floor/plating, /area/shuttle/sbc_starfury) -"iN" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/mod/control/pre_equipped/elite{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/clothing/mask/gas/syndicate{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/mod/control/pre_equipped/elite{ - pixel_x = -4 - }, -/obj/item/clothing/mask/gas/syndicate, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/pod/light, -/area/shuttle/sbc_starfury) "iO" = ( /obj/structure/table, /obj/item/shield/energy{ @@ -3191,19 +3062,6 @@ /obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/plating, /area/shuttle/sbc_starfury) -"kN" = ( -/obj/structure/sign/warning/secure_area/directional/north{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/plating, -/area/shuttle/sbc_starfury) "kO" = ( /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/yellow{ @@ -3263,19 +3121,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/shuttle/sbc_starfury) -"lf" = ( -/obj/structure/sign/warning/secure_area/directional/north{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/plating, -/area/shuttle/sbc_starfury) "lg" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, @@ -3814,6 +3659,17 @@ /obj/effect/turf_decal/siding/dark_red, /turf/open/floor/iron/dark/textured_large, /area/shuttle/sbc_starfury) +"pO" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/machinery/airalarm/directional/east, +/obj/item/storage/belt/military, +/obj/item/ammo_box/magazine/sniper_rounds, +/obj/item/gun/ballistic/rifle/sniper_rifle/syndicate, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/turf/open/floor/pod/light, +/area/shuttle/sbc_starfury) "pQ" = ( /obj/machinery/door/airlock/maintenance{ name = "Starfury Engineering Maintenance" @@ -4199,6 +4055,17 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/pod/dark, /area/shuttle/sbc_starfury) +"wG" = ( +/obj/structure/sign/warning/secure_area/directional/east{ + desc = "A warning sign which reads 'KEEP CLEAR: SHUTTLE BAY'"; + icon_state = "space"; + name = "KEEP CLEAR: SHUTTLE BAY" + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/shuttle/sbc_starfury) "wN" = ( /obj/machinery/porta_turret/syndicate/energy{ dir = 9 @@ -4329,6 +4196,15 @@ /obj/machinery/portable_atmospherics/pump, /turf/open/floor/plating, /area/shuttle/sbc_starfury) +"yH" = ( +/obj/structure/sign/warning/secure_area/directional/west{ + desc = "A warning sign which reads 'KEEP CLEAR: SHUTTLE BAY'"; + icon_state = "space"; + name = "KEEP CLEAR: SHUTTLE BAY" + }, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/dark, +/area/shuttle/sbc_starfury) "yM" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -4584,6 +4460,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/textured_large, /area/shuttle/sbc_starfury) +"DH" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/gun/ballistic/shotgun/bulldog{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/ballistic/shotgun/bulldog, +/obj/item/gun/ballistic/shotgun/bulldog{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/pod/light, +/area/shuttle/sbc_starfury) "DS" = ( /obj/structure/rack, /obj/item/stack/sheet/mineral/uranium{ @@ -4854,6 +4745,19 @@ /obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/plating, /area/shuttle/sbc_starfury) +"In" = ( +/obj/item/book/manual/wiki/barman_recipes, +/obj/item/reagent_containers/cup/glass/shaker{ + pixel_x = 10 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/tile/bar, +/obj/machinery/computer/security/telescreen/entertainment/directional/west, +/turf/open/floor/iron/dark, +/area/shuttle/sbc_starfury) "ID" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4889,6 +4793,15 @@ }, /turf/open/floor/plating, /area/shuttle/sbc_starfury) +"Ja" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/storage/belt/military, +/obj/item/ammo_box/magazine/m7mm, +/obj/item/gun/ballistic/automatic/l6_saw, +/turf/open/floor/pod/light, +/area/shuttle/sbc_starfury) "Je" = ( /obj/effect/turf_decal/tile/bar/diagonal_centre, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4900,18 +4813,6 @@ /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, /turf/open/floor/plating, /area/shuttle/sbc_starfury) -"Jl" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/machinery/airalarm/directional/east, -/obj/item/storage/belt/military, -/obj/item/ammo_box/magazine/sniper_rounds, -/obj/item/gun/ballistic/rifle/sniper_rifle/syndicate, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/pod/light, -/area/shuttle/sbc_starfury) "Jm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4941,31 +4842,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/shuttle/sbc_starfury) -"JL" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/card/emag{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/card/emag, -/obj/item/card/emag{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/clothing/glasses/thermal{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/glasses/thermal, -/obj/item/clothing/glasses/thermal{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/pod/light, -/area/shuttle/sbc_starfury) "JP" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -5305,6 +5181,18 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/shuttle/sbc_starfury) +"QH" = ( +/obj/structure/sign/warning/secure_area/directional/north{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + name = "EXTERNAL AIRLOCK" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/small/red/directional/north, +/turf/open/floor/plating, +/area/shuttle/sbc_starfury) "QR" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -5464,6 +5352,20 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron/dark, /area/shuttle/sbc_starfury) +"Ud" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/gun/ballistic/revolver/syndicate{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/item/gun/ballistic/revolver/syndicate{ + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/pod/light, +/area/shuttle/sbc_starfury) "Ue" = ( /obj/machinery/power/turbine/inlet_compressor, /obj/effect/turf_decal/stripes/red/end{ @@ -5471,6 +5373,14 @@ }, /turf/open/floor/plating/airless, /area/shuttle/sbc_starfury) +"Uf" = ( +/obj/machinery/door/poddoor/preopen{ + id = "syndie_battlecruier_bridge_blast" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating, +/area/shuttle/sbc_starfury) "Uy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -5500,6 +5410,20 @@ }, /turf/open/floor/iron, /area/shuttle/sbc_starfury) +"UQ" = ( +/obj/structure/sign/warning/secure_area/directional/west{ + desc = "A warning sign which reads 'KEEP CLEAR: SHUTTLE BAY'"; + icon_state = "space"; + name = "KEEP CLEAR: SHUTTLE BAY" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/shuttle/sbc_starfury) "UU" = ( /obj/structure/table/reinforced, /obj/item/storage/medkit/regular{ @@ -5563,6 +5487,14 @@ dir = 9 }, /area/shuttle/sbc_starfury) +"VM" = ( +/obj/machinery/door/poddoor/preopen{ + id = "syndie_battlecruier_bridge_blast" + }, +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/sbc_starfury) "VS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/yellow/half/contrasted, @@ -5631,6 +5563,30 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/side, /area/shuttle/sbc_starfury) +"WS" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/card/emag{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/card/emag, +/obj/item/card/emag{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/clothing/glasses/thermal{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/glasses/thermal, +/obj/item/clothing/glasses/thermal{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/pod/light, +/area/shuttle/sbc_starfury) "WV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -5750,6 +5706,21 @@ }, /turf/open/floor/pod/dark, /area/shuttle/sbc_starfury) +"Yl" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/gun/ballistic/automatic/m90{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/ballistic/automatic/m90, +/obj/item/gun/ballistic/automatic/m90{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/pod/light, +/area/shuttle/sbc_starfury) "Yt" = ( /obj/machinery/space_heater, /obj/effect/turf_decal/bot_red, @@ -5808,6 +5779,18 @@ }, /turf/open/floor/engine, /area/shuttle/sbc_starfury) +"ZS" = ( +/obj/structure/sign/warning/secure_area/directional/north{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + name = "EXTERNAL AIRLOCK" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small/red/directional/north, +/turf/open/floor/plating, +/area/shuttle/sbc_starfury) "ZZ" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -6066,7 +6049,7 @@ ce ae hd hD -ic +In iq iy ae @@ -6095,7 +6078,7 @@ aa aa aa ac -bx +VM ae ah cH @@ -6281,7 +6264,7 @@ aa aa aa ae -kN +ZS ae MP aH @@ -6367,7 +6350,7 @@ aa aa aa ae -bx +VM ae xr aH @@ -6447,7 +6430,7 @@ ri ay ay XI -dO +dR dV eR cO @@ -6507,7 +6490,7 @@ Ou Ou Ou vT -bx +VM dq vk ay @@ -6575,7 +6558,7 @@ aa aa Ou vT -bx +VM ne IM ae @@ -6638,10 +6621,10 @@ aa aa aa aa -ad -ad -ad -ad +Uf +Uf +Uf +Uf ae by Sb @@ -6705,8 +6688,8 @@ aa (14,1,1) = {" aa aa -ad -ad +Uf +Uf aU bj eJ @@ -6741,7 +6724,7 @@ hB ST ec dV -gp +wG oA ay hm @@ -6773,7 +6756,7 @@ aa (15,1,1) = {" aa aa -ad +Uf ct aV aJ @@ -6841,7 +6824,7 @@ ac (16,1,1) = {" aa aa -ad +Uf al Dd xi @@ -6908,8 +6891,8 @@ mO "} (17,1,1) = {" aa -ad -ad +Uf +Uf UU az aK @@ -6976,7 +6959,7 @@ ir "} (18,1,1) = {" aa -ad +Uf pm an aA @@ -7020,7 +7003,7 @@ hq hP ae iu -iG +cp nz ae Qf @@ -7044,7 +7027,7 @@ ir "} (19,1,1) = {" aa -ad +Uf wo ao aB @@ -7112,7 +7095,7 @@ ae "} (20,1,1) = {" aa -ad +Uf bo ap aC @@ -7180,8 +7163,8 @@ mO "} (21,1,1) = {" aa -ad -ad +Uf +Uf aq aD aO @@ -7249,7 +7232,7 @@ ir (22,1,1) = {" aa aa -ad +Uf ar vr xO @@ -7317,7 +7300,7 @@ ir (23,1,1) = {" aa aa -ad +Uf bC aE aP @@ -7385,8 +7368,8 @@ ac (24,1,1) = {" aa aa -ad -ad +Uf +Uf be bt FC @@ -7421,7 +7404,7 @@ hB ST ec fF -gC +UQ hs gO hv @@ -7454,10 +7437,10 @@ aa aa aa aa -ad -ad -ad -ad +Uf +Uf +Uf +Uf ae by po @@ -7527,7 +7510,7 @@ aa aa aa vT -bx +VM ck Zm ae @@ -7595,7 +7578,7 @@ Ou Ou Ou vT -bx +VM bV Wv ay @@ -7671,7 +7654,7 @@ xD ay ay PF -dS +yH AJ dd ik @@ -7727,7 +7710,7 @@ aa aa aa ae -bx +VM ae xr aH @@ -7765,8 +7748,8 @@ ae ae ae Yi -hZ -hZ +Yl +Yl ec mQ ae @@ -7836,7 +7819,7 @@ sB ec ec ec -JL +WS ae XN qf @@ -7901,10 +7884,10 @@ gF gR Ay sB -ia -io +DH +Ud ec -iN +ga ae nR jB @@ -7913,7 +7896,7 @@ aa aa aa ae -lf +QH ae fB aH @@ -7940,7 +7923,7 @@ ae ae Jm da -bx +VM aa aa aa @@ -7999,7 +7982,7 @@ aa aa aa ac -bx +VM ae BN vk @@ -8038,8 +8021,8 @@ UH ae hC ib -Jl -ix +pO +Ja fj ae ae diff --git a/_maps/templates/holodeck_basketball.dmm b/_maps/templates/holodeck_basketball.dmm index 7af2c536439bb..3260193010956 100644 --- a/_maps/templates/holodeck_basketball.dmm +++ b/_maps/templates/holodeck_basketball.dmm @@ -9,8 +9,7 @@ /area/template_noop) "b" = ( /obj/structure/hoop{ - dir = 1; - layer = 4.1 + dir = 1 }, /obj/effect/turf_decal/tile/green/half/contrasted, /turf/open/floor/holofloor, @@ -44,9 +43,7 @@ /turf/open/floor/holofloor, /area/template_noop) "k" = ( -/obj/structure/hoop{ - layer = 3.9 - }, +/obj/structure/hoop, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, diff --git a/_maps/templates/holodeck_kobayashi.dmm b/_maps/templates/holodeck_kobayashi.dmm index babaeaac2a0d1..bb8c5c297acf1 100644 --- a/_maps/templates/holodeck_kobayashi.dmm +++ b/_maps/templates/holodeck_kobayashi.dmm @@ -5,14 +5,12 @@ "c" = ( /obj/machinery/button/massdriver/indestructible{ id = "trektorpedo1"; - layer = 3.9; name = "photon torpedo button"; pixel_x = -16; pixel_y = -5 }, /obj/machinery/button/massdriver/indestructible{ id = "trektorpedo2"; - layer = 3.9; name = "photon torpedo button"; pixel_x = 16; pixel_y = -5 @@ -131,9 +129,7 @@ /obj/structure/rack, /obj/item/clothing/under/trek/engsec, /obj/item/clothing/under/trek/engsec, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, @@ -144,9 +140,7 @@ /turf/open/floor/holofloor/plating, /area/template_noop) "J" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, diff --git a/_maps/templates/holodeck_lounge.dmm b/_maps/templates/holodeck_lounge.dmm index 3807be667cbf9..1582a29bc5b0f 100644 --- a/_maps/templates/holodeck_lounge.dmm +++ b/_maps/templates/holodeck_lounge.dmm @@ -31,19 +31,17 @@ icon_state = "wood" }, /area/template_noop) -"f" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - layer = 3.3 - }, +"e" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/holofloor{ dir = 9; icon_state = "wood" }, /area/template_noop) -"h" = ( +"g" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/pipe, +/obj/item/cigarette/pipe, /obj/effect/holodeck_effect/random_book, /turf/open/floor/holofloor/carpet, /area/template_noop) @@ -55,15 +53,6 @@ icon_state = "wood" }, /area/template_noop) -"j" = ( -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/turf/open/floor/holofloor{ - dir = 9; - icon_state = "wood" - }, -/area/template_noop) "k" = ( /obj/structure/table/wood/poker, /obj/item/storage/box/matches, @@ -72,16 +61,6 @@ icon_state = "wood" }, /area/template_noop) -"l" = ( -/obj/structure/chair/stool/bar/directional/south, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 - }, -/turf/open/floor/holofloor{ - dir = 9; - icon_state = "wood" - }, -/area/template_noop) "m" = ( /obj/structure/chair/wood, /turf/open/floor/holofloor{ @@ -106,6 +85,14 @@ "q" = ( /turf/open/floor/holofloor/carpet, /area/template_noop) +"s" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/holofloor{ + dir = 9; + icon_state = "wood" + }, +/area/template_noop) "t" = ( /obj/structure/table/wood/shuttle_bar, /obj/item/book/manual/wiki/barman_recipes, @@ -123,6 +110,14 @@ icon_state = "wood" }, /area/template_noop) +"v" = ( +/obj/structure/table/wood/poker, +/obj/item/cigarette/pipe, +/turf/open/floor/holofloor{ + dir = 9; + icon_state = "wood" + }, +/area/template_noop) "w" = ( /obj/structure/table/wood, /obj/item/instrument/saxophone, @@ -254,14 +249,6 @@ icon_state = "wood" }, /area/template_noop) -"T" = ( -/obj/structure/table/wood/poker, -/obj/item/clothing/mask/cigarette/pipe, -/turf/open/floor/holofloor{ - dir = 9; - icon_state = "wood" - }, -/area/template_noop) "U" = ( /obj/structure/table/wood/poker, /obj/item/storage/dice, @@ -277,11 +264,16 @@ icon_state = "wood" }, /area/template_noop) -"Y" = ( -/obj/structure/table/wood/shuttle_bar, -/obj/structure/window/reinforced/spawner/directional/east{ - layer = 2.9 +"W" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/holofloor{ + dir = 9; + icon_state = "wood" }, +/area/template_noop) +"X" = ( +/obj/structure/chair/stool/bar/directional/south, +/obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/holofloor{ dir = 9; icon_state = "wood" @@ -305,7 +297,7 @@ H a "} (2,1,1) = {" -f +s z z z @@ -322,9 +314,9 @@ u u z z -j -l -Y +W +X +e c G "} @@ -355,7 +347,7 @@ p (6,1,1) = {" m P -T +v o z F @@ -398,5 +390,5 @@ O q E E -h +g "} diff --git a/_maps/templates/lazy_templates/ninja_den.dmm b/_maps/templates/lazy_templates/ninja_den.dmm index b1506b72efed5..88f4bce19d45a 100644 --- a/_maps/templates/lazy_templates/ninja_den.dmm +++ b/_maps/templates/lazy_templates/ninja_den.dmm @@ -1691,7 +1691,6 @@ pixel_y = 4 }, /obj/item/reagent_containers/condiment/enzyme{ - layer = 5; pixel_x = 10; pixel_y = 2 }, @@ -2040,9 +2039,7 @@ /obj/item/food/grown/cabbage, /obj/item/food/grown/cherries, /obj/item/food/grown/cherries, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, +/obj/item/reagent_containers/condiment/enzyme, /obj/item/food/grown/redbeet, /turf/open/floor/catwalk_floor, /area/centcom/central_command_areas/holding) diff --git a/_maps/templates/lazy_templates/nukie_base.dmm b/_maps/templates/lazy_templates/nukie_base.dmm index febfc926cdc0e..416516483a5e9 100644 --- a/_maps/templates/lazy_templates/nukie_base.dmm +++ b/_maps/templates/lazy_templates/nukie_base.dmm @@ -1475,35 +1475,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer5, /turf/closed/indestructible/syndicate, /area/centcom/syndicate_mothership/control) -"qs" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/closet/secure_closet/freezer/fridge/open, -/obj/item/food/meat/slab/rawcrab, -/obj/item/food/meat/slab/rawcrab, -/obj/item/food/meat/slab/rawcrab, -/obj/item/food/fishmeat, -/obj/item/food/fishmeat, -/obj/item/food/fishmeat, -/obj/item/food/grown/tomato, -/obj/item/food/grown/tomato, -/obj/item/food/grown/tomato, -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, -/obj/item/storage/fancy/egg_box, -/obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/condiment/milk, -/obj/item/reagent_containers/condiment/milk, -/obj/item/reagent_containers/condiment/flour{ - pixel_x = -5; - pixel_y = 9 - }, -/obj/item/reagent_containers/condiment/flour{ - pixel_x = -5; - pixel_y = 9 - }, -/turf/open/floor/plastic, -/area/centcom/syndicate_mothership/expansion_fridgerummage) "qv" = ( /obj/item/kirbyplants/random, /turf/open/floor/mineral/titanium, @@ -2579,32 +2550,6 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/centcom/syndicate_mothership/expansion_bombthreat) -"DY" = ( -/obj/structure/table/wood/poker, -/obj/machinery/light/warm/directional/north, -/obj/item/reagent_containers/cup/glass/bottle/whiskey{ - pixel_x = -4; - pixel_y = 14 - }, -/obj/item/toy/cards/deck{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/clothing/mask/cigarette/robust{ - pixel_x = -4; - pixel_y = 1 - }, -/obj/effect/decal/cleanable/ash{ - pixel_x = 12; - pixel_y = -6 - }, -/obj/effect/spawner/random/entertainment/lighter{ - pixel_x = 9; - pixel_y = -3 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron, -/area/centcom/syndicate_mothership/control) "DZ" = ( /turf/closed/indestructible/syndicate, /area/centcom/syndicate_mothership/control) @@ -2711,6 +2656,32 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) +"FK" = ( +/obj/structure/table/wood/poker, +/obj/machinery/light/warm/directional/north, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_x = -4; + pixel_y = 14 + }, +/obj/item/toy/cards/deck{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/cigarette/robust{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/ash{ + pixel_x = 12; + pixel_y = -6 + }, +/obj/effect/spawner/random/entertainment/lighter{ + pixel_x = 9; + pixel_y = -3 + }, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron, +/area/centcom/syndicate_mothership/control) "FM" = ( /turf/closed/indestructible/opsglass, /area/centcom/syndicate_mothership/expansion_bombthreat) @@ -3007,6 +2978,33 @@ }, /turf/open/misc/asteroid/snow/airless, /area/centcom/syndicate_mothership) +"HX" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/closet/secure_closet/freezer/fridge/open, +/obj/item/food/meat/slab/rawcrab, +/obj/item/food/meat/slab/rawcrab, +/obj/item/food/meat/slab/rawcrab, +/obj/item/food/fishmeat, +/obj/item/food/fishmeat, +/obj/item/food/fishmeat, +/obj/item/food/grown/tomato, +/obj/item/food/grown/tomato, +/obj/item/food/grown/tomato, +/obj/item/reagent_containers/condiment/enzyme, +/obj/item/storage/fancy/egg_box, +/obj/item/storage/fancy/egg_box, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/flour{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_x = -5; + pixel_y = 9 + }, +/turf/open/floor/plastic, +/area/centcom/syndicate_mothership/expansion_fridgerummage) "Ia" = ( /obj/machinery/camera/autoname/directional/north{ network = list("nukie") @@ -6421,7 +6419,7 @@ rJ Cf nU ek -qs +HX ek DZ eK @@ -7043,7 +7041,7 @@ DZ Gr tc mJ -DY +FK lQ Nb VK diff --git a/_maps/templates/lazy_templates/wizard_den.dmm b/_maps/templates/lazy_templates/wizard_den.dmm index 472dde511c475..fb0f9a946d1ef 100644 --- a/_maps/templates/lazy_templates/wizard_den.dmm +++ b/_maps/templates/lazy_templates/wizard_den.dmm @@ -44,18 +44,6 @@ /obj/structure/showcase/machinery/rng, /turf/open/floor/engine/cult, /area/centcom/wizard_station) -"dr" = ( -/obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_y = -9; - pixel_x = -5 - }, -/obj/item/camera/spooky{ - pixel_y = 7; - pixel_x = 2 - }, -/turf/open/floor/engine/cult, -/area/centcom/wizard_station) "dB" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/engine/cult, @@ -184,6 +172,13 @@ /obj/machinery/computer/shuttle, /turf/open/floor/carpet/red, /area/centcom/wizard_station) +"kG" = ( +/obj/structure/railing, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/cult, +/area/centcom/wizard_station) "kZ" = ( /turf/open/floor/engine/cult, /area/centcom/wizard_station) @@ -215,6 +210,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/engine/cult, /area/centcom/wizard_station) +"mJ" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/cult, +/area/centcom/wizard_station) "nc" = ( /obj/structure/table/wood, /turf/open/floor/engine/cult, @@ -327,16 +329,6 @@ /obj/machinery/griddle, /turf/open/floor/iron, /area/centcom/wizard_station) -"qg" = ( -/obj/structure/railing{ - layer = 3.1 - }, -/obj/structure/railing{ - layer = 3.1; - dir = 1 - }, -/turf/open/floor/engine/cult, -/area/centcom/wizard_station) "ql" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ @@ -510,15 +502,6 @@ }, /turf/open/floor/plastic, /area/centcom/wizard_station) -"yX" = ( -/obj/structure/railing{ - layer = 3.1 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/engine/cult, -/area/centcom/wizard_station) "zB" = ( /turf/open/floor/iron, /area/centcom/wizard_station) @@ -665,6 +648,18 @@ }, /turf/open/floor/iron, /area/centcom/wizard_station) +"JU" = ( +/obj/structure/table/wood, +/obj/item/cigarette/cigar{ + pixel_y = -9; + pixel_x = -5 + }, +/obj/item/camera/spooky{ + pixel_y = 7; + pixel_x = 2 + }, +/turf/open/floor/engine/cult, +/area/centcom/wizard_station) "JW" = ( /obj/machinery/door/window/left/directional/east, /turf/open/floor/engine/cult, @@ -1556,7 +1551,7 @@ kZ uy VB TX -yX +kG VB VB op @@ -1602,7 +1597,7 @@ kZ uy VB fX -qg +mJ fX VB VB @@ -1648,7 +1643,7 @@ LU cy VB eI -qg +mJ fX fX dk @@ -1740,7 +1735,7 @@ LU cy VB fX -qg +mJ fX fX dk @@ -1786,7 +1781,7 @@ kZ uy VB fX -qg +mJ fX VB VB @@ -1832,7 +1827,7 @@ kZ uy VB fX -qg +mJ VB VB op @@ -1857,7 +1852,7 @@ op op TG TG -dr +JU HD VB Dq diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index b12848b01daf6..38a742b85fd53 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -62,9 +62,7 @@ /turf/open/floor/pod, /area/misc/survivalpod) "n" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ - layer = 3 - }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, /obj/machinery/door/window/survival_pod/left/directional/north, /turf/open/floor/carpet/black, /area/misc/survivalpod) diff --git a/_maps/virtual_domains/README.md b/_maps/virtual_domains/README.md index 6e9abc6556825..f0a8a1ebfd216 100644 --- a/_maps/virtual_domains/README.md +++ b/_maps/virtual_domains/README.md @@ -1,11 +1,12 @@ # Making new virtual domains ## REQUIRED: -1. One way that the encrypted cache can spawn. This can be from a mob drop, a landmark (place a few, it'll pick one), or a signable landmark if you have a points system. +1. One way that the encrypted cache can spawn. This can be from a mob drop, a landmark (place a few, it'll pick one), or a signal landmark if you have a points system. 2. Place a virtual domain baseturf helper in each area. 3. If you're using modular safehouses, ensure that the map has ONE tile marked with the safehouse modular map loader (and set the KEY). it will need an open 7x6 area. 4. Placing a safehouse area is redundant, but it will ensure there is power in the starting safehouse. 5. Create the dm file that defines the map qualities. You can use the existing ones as a template. +6. Place a virtual domain baseturf helper in each area. ## Converting an existing map 1. Create a new map using the existing map's size - give yourself enough room to enclose it with a binary wall. There's no need for any space outside of it, so ensure that it fits and is enclosed, nothing outside of this. @@ -18,7 +19,7 @@ You shouldn't need to fully enclose your map in 15 tiles of binary filler. Using For areas, ideally just one on the map and one for the safehouse. Vdoms should never last so long as to need individual area power and atmos unless you're specifically going for a gimmick. -Use modular mob segments! Use modular map segments! Add some variety to your maps! Just make sure you've set your map to have "is_modular" afterwards. +Make it modular: Add modular map and mob segments! It adds variety. Just make sure you've set your map to have "is_modular" afterwards. Adding some open tile padding around the safehouse is a good touch. About 7 tiles West/East for the visual effect of a larger map. diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm index 6368168416193..5e1c6f753b8ac 100644 --- a/_maps/virtual_domains/beach_bar.dmm +++ b/_maps/virtual_domains/beach_bar.dmm @@ -491,9 +491,7 @@ /area/virtual_domain/fullbright) "xR" = ( /obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/north{ - layer = 2.9 - }, +/obj/structure/window/reinforced/spawner/directional/north, /obj/structure/chair/stool/directional/south, /obj/item/storage/backpack/duffelbag, /obj/item/clothing/under/shorts/red, @@ -685,9 +683,7 @@ /turf/closed/wall/mineral/sandstone, /area/virtual_domain/fullbright) "Em" = ( -/obj/item/reagent_containers/condiment/enzyme{ - layer = 5 - }, +/obj/item/reagent_containers/condiment/enzyme, /obj/item/reagent_containers/cup/beaker{ pixel_x = 5 }, diff --git a/_maps/virtual_domains/island_brawl.dmm b/_maps/virtual_domains/island_brawl.dmm new file mode 100644 index 0000000000000..2c8a12c6c5793 --- /dev/null +++ b/_maps/virtual_domains/island_brawl.dmm @@ -0,0 +1,12259 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"al" = ( +/obj/structure/flora/coconuts{ + pixel_x = -5; + pixel_y = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"as" = ( +/obj/structure/flora/tree/palm/style_2{ + pixel_y = 6 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"aw" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"aA" = ( +/obj/structure/chair/stool/bamboo{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"aD" = ( +/obj/item/storage/medkit/regular{ + pixel_y = 15; + pixel_x = -2 + }, +/obj/structure/table/glass, +/obj/item/emergency_bed{ + pixel_y = 6 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"aE" = ( +/obj/structure/chair/stool/directional/south, +/turf/open/floor/iron/freezer, +/area/virtual_domain) +"aQ" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/under/costume/sailor, +/turf/open/floor/wood, +/area/virtual_domain) +"aY" = ( +/obj/structure/table/wood, +/obj/item/tape{ + pixel_y = 7; + pixel_x = 11 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/effect/spawner/random/bureaucracy/pen{ + pixel_x = -3; + pixel_y = -2 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"aZ" = ( +/obj/structure/table/wood, +/obj/item/food/grown/watermelon{ + pixel_y = 8; + pixel_x = 6 + }, +/obj/item/food/watermelonslice, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ba" = ( +/obj/effect/landmark/bitrunning/curiosity_spawn, +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain) +"bb" = ( +/obj/item/circular_saw{ + pixel_y = 4 + }, +/obj/item/scalpel{ + pixel_y = 15 + }, +/obj/structure/table/glass, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"bp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/turf_decal/tile/dark/half{ + pixel_y = -1; + pixel_x = 5; + dir = 8 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"bx" = ( +/obj/machinery/defibrillator_mount/directional/west, +/obj/structure/bed/pod{ + desc = "An old medical bed, just waiting for replacement with something up to date."; + dir = 4; + name = "medical bed" + }, +/obj/machinery/iv_drip{ + pixel_y = 21; + pixel_x = -4 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"bD" = ( +/obj/structure/chair/plastic{ + dir = 8 + }, +/obj/item/reagent_containers/cup/soda_cans/melon_soda{ + pixel_y = 13; + pixel_x = -9 + }, +/obj/item/fishing_rod{ + pixel_x = 8; + pixel_y = -6 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"bE" = ( +/turf/open/floor/wood, +/area/virtual_domain) +"bK" = ( +/turf/open/floor/wood/parquet, +/area/virtual_domain/fullbright) +"bT" = ( +/obj/item/cigbutt{ + pixel_y = -4; + pixel_x = 2 + }, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"bX" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"bY" = ( +/turf/open/misc/beach/coast{ + dir = 4 + }, +/area/virtual_domain/fullbright) +"cc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/vending/cigarette/beach, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"ce" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/virtual_domain) +"cg" = ( +/obj/machinery/medical_kiosk, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ch" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/directional/east, +/turf/open/floor/carpet/cyan, +/area/virtual_domain) +"cp" = ( +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind{ + pixel_x = 15 + }, +/obj/structure/fluff/beach_umbrella/science, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"cr" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/button/door/directional/north{ + id = "beach_room_9"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/item/claymore/cutlass{ + desc = "A piratey, foam sword used by kids to train themselves in the business of \"negotiating\" the transfer of treasure."; + force = 0; + name = "foam cutlass"; + throwforce = 0 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"ct" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"cB" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/under/costume/pirate, +/turf/open/floor/wood, +/area/virtual_domain) +"cC" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/virtual_domain) +"cE" = ( +/turf/open/misc/beach/coast, +/area/virtual_domain/fullbright) +"cH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/door/airlock/wood{ + name = "Room 7"; + id_tag = "beach_room_7" + }, +/turf/open/floor/wood, +/area/virtual_domain) +"cK" = ( +/obj/item/reagent_containers/cup/glass/bottle/wine{ + pixel_y = 16; + pixel_x = -5 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_y = 3; + pixel_x = -8 + }, +/obj/structure/table/bronze, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_y = 10; + pixel_x = 6 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"cO" = ( +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"cW" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/carpet/cyan, +/area/virtual_domain) +"db" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 11"; + id_tag = "beach_room_11" + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/virtual_domain) +"de" = ( +/obj/effect/turf_decal/sand, +/mob/living/basic/crab, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"dj" = ( +/obj/machinery/door/airlock/wood/glass{ + name = "Hotel's Facilities" + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"dl" = ( +/obj/structure/table/bronze, +/obj/item/reagent_containers/condiment/bbqsauce{ + pixel_y = 13; + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/hotsauce{ + pixel_y = 9; + pixel_x = -3 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"dp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"du" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/half{ + pixel_y = -1; + pixel_x = 5; + dir = 8 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"dv" = ( +/obj/structure/table, +/obj/item/wrench{ + pixel_y = 4 + }, +/obj/item/storage/toolbox/emergency, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/iron/dark/herringbone, +/area/virtual_domain) +"dA" = ( +/obj/structure/table/bronze, +/obj/item/paper_bin/carbon{ + pixel_y = 8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"dB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/eighties, +/area/virtual_domain) +"dD" = ( +/obj/item/trash/can{ + pixel_y = -9; + pixel_x = 10 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"dG" = ( +/obj/effect/turf_decal/siding/blue, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"dH" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/wood, +/area/virtual_domain) +"dS" = ( +/obj/structure/table/bronze, +/obj/structure/sign/poster/random/directional/east, +/obj/item/table_clock{ + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"dW" = ( +/obj/structure/railing/corner/end/flip{ + dir = 1 + }, +/obj/machinery/door/airlock/wood{ + name = "Balcony"; + id_tag = "beach_room_x" + }, +/turf/open/floor/wood, +/area/virtual_domain) +"dX" = ( +/obj/item/toy/seashell{ + pixel_y = -5 + }, +/turf/open/misc/beach/coast, +/area/virtual_domain/fullbright) +"dY" = ( +/obj/structure/table/wood/poker, +/obj/item/stack/spacecash/c100{ + pixel_y = 5 + }, +/obj/item/toy/cards/deck{ + pixel_y = 13; + pixel_x = -5 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"ee" = ( +/obj/structure/table/reinforced, +/obj/item/defibrillator/loaded{ + pixel_y = 7 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"ef" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"eh" = ( +/obj/structure/table/wood/fancy, +/obj/effect/turf_decal/tile/dark_red/full, +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_x = -13; + pixel_y = 14 + }, +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_x = 7; + pixel_y = 8 + }, +/turf/open/floor/iron/smooth_large, +/area/virtual_domain/fullbright) +"en" = ( +/turf/open/floor/eighties, +/area/virtual_domain) +"ev" = ( +/obj/structure/mineral_door/sandstone{ + name = "Sandcastle" + }, +/obj/effect/turf_decal/sand/plating, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ew" = ( +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/landmark/bitrunning/loot_signal, +/turf/open/indestructible/binary, +/area/virtual_domain/protected_space/fullbright) +"eH" = ( +/turf/open/misc/beach/coast{ + dir = 9 + }, +/area/virtual_domain/fullbright) +"eJ" = ( +/obj/structure/table/bronze, +/obj/item/camera{ + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"eK" = ( +/turf/closed/wall/mineral/wood, +/area/virtual_domain/fullbright) +"eM" = ( +/obj/item/trash/can{ + pixel_y = -5; + pixel_x = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"eO" = ( +/obj/structure/table/bronze, +/obj/item/camera{ + pixel_y = 8; + pixel_x = -3 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"eP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/food_cart, +/turf/open/floor/plating, +/area/virtual_domain) +"fe" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/half{ + pixel_y = -2; + pixel_x = 5; + dir = 8 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"fg" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/wall/mineral/wood, +/area/virtual_domain) +"fv" = ( +/obj/item/toy/seashell{ + pixel_x = 12; + pixel_y = -9 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"fH" = ( +/obj/structure/table/bronze, +/obj/item/camera{ + pixel_y = 8; + pixel_x = 6 + }, +/obj/item/pen/blue{ + pixel_x = -11; + pixel_y = 2 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"fI" = ( +/turf/open/misc/beach/sand, +/area/virtual_domain/protected_space/fullbright) +"fJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/water/beach, +/area/virtual_domain) +"fL" = ( +/obj/machinery/computer/order_console/cook, +/turf/open/floor/wood/large, +/area/virtual_domain) +"fY" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/item/binoculars{ + pixel_y = 20 + }, +/obj/item/megaphone{ + pixel_y = 2; + pixel_x = 1 + }, +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"gc" = ( +/obj/structure/table/bronze, +/obj/item/pai_card{ + desc = "A real Nanotrasen success, these personal AIs provide all of the companionship of an AI without any law related red-tape."; + name = "\improper Nanotrasen-brand personal AI device exhibit"; + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"gf" = ( +/obj/machinery/button/door/directional/south{ + id = "beach_room_5"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"gi" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/item/stack/arcadeticket{ + pixel_y = 12; + pixel_x = -16 + }, +/turf/open/floor/eighties, +/area/virtual_domain) +"gs" = ( +/obj/structure/closet/crate, +/obj/item/clothing/suit/hooded/carp_costume, +/obj/item/clothing/head/hooded/carp_hood, +/obj/item/toy/plush/carpplushie, +/obj/item/toy/plush/shark, +/turf/open/floor/eighties, +/area/virtual_domain) +"gw" = ( +/turf/open/floor/carpet/cyan, +/area/virtual_domain) +"gA" = ( +/obj/effect/turf_decal/sand{ + density = 1 + }, +/obj/effect/decal/fakelattice, +/turf/open/floor/pod/light{ + density = 1 + }, +/area/virtual_domain/fullbright) +"gB" = ( +/obj/effect/landmark/bitrunning/curiosity_spawn, +/turf/open/floor/plastic, +/area/virtual_domain) +"gC" = ( +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/structure/fluff/beach_umbrella/syndi, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"gH" = ( +/obj/structure/tank_holder/extinguisher, +/turf/open/floor/wood/large, +/area/virtual_domain) +"gI" = ( +/obj/item/storage/toolbox/fishing{ + pixel_x = 2; + pixel_y = -13 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"gK" = ( +/obj/structure/bed/double, +/obj/item/bedsheet/hos/double{ + name = "bedsheet"; + desc = "A bedsheet from the beach hotel." + }, +/turf/open/floor/carpet, +/area/virtual_domain) +"gL" = ( +/turf/open/misc/beach/coast/corner, +/area/virtual_domain/fullbright) +"gN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"gP" = ( +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"gV" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 25 + }, +/obj/structure/flora/coconuts{ + pixel_x = -7; + pixel_y = 7 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"hh" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/shovel{ + pixel_y = 15; + pixel_x = -8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ho" = ( +/obj/structure/chair/stool/bar/directional/west, +/turf/open/floor/wood/large, +/area/virtual_domain) +"hu" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/misc/beach/sand, +/area/virtual_domain/protected_space/fullbright) +"hA" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/fullupgrade{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"hB" = ( +/obj/item/reagent_containers/cup/soda_cans/lemon_lime{ + pixel_x = -12 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"hD" = ( +/obj/effect/decal/cleanable/oil, +/obj/machinery/button/door/directional/south{ + id = "BeachGarage" + }, +/turf/open/floor/iron/dark/herringbone, +/area/virtual_domain) +"hM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/button/door/directional/south{ + id = "BeachBoats" + }, +/obj/effect/landmark/bitrunning/curiosity_spawn, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"hT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/power/smes/full, +/turf/open/floor/plating, +/area/virtual_domain) +"hZ" = ( +/obj/structure/table/bronze, +/obj/item/storage/bag/tray, +/turf/open/floor/wood/large, +/area/virtual_domain) +"ii" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ij" = ( +/turf/open/misc/beach/coast{ + dir = 10 + }, +/area/virtual_domain/fullbright) +"ik" = ( +/obj/structure/dresser, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/virtual_domain) +"il" = ( +/obj/structure/chair/plastic, +/obj/item/fishing_rod{ + pixel_x = 11; + pixel_y = -8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"io" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/item/kirbyplants/organic/plant8{ + pixel_y = 9; + pixel_x = 6 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"iy" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/chair/stool/directional/south, +/obj/item/clothing/glasses/sunglasses{ + pixel_y = -2; + pixel_x = 2 + }, +/obj/item/bikehorn/airhorn{ + pixel_y = -15; + pixel_x = -13 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"iF" = ( +/obj/structure/table/bronze, +/obj/structure/desk_bell{ + pixel_x = -11; + pixel_y = 9 + }, +/obj/item/phone{ + pixel_y = 9; + pixel_x = 8 + }, +/turf/open/floor/carpet, +/area/virtual_domain) +"iP" = ( +/obj/structure/chair/plastic, +/obj/item/clothing/head/collectable/paper{ + desc = "What looks like an ordinary paper hat is actually a rare and valuable collector's edition paper hat. Keep away from fire, Curators, and ocean waves."; + pixel_y = -4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"iQ" = ( +/obj/machinery/button/door/directional/north{ + id = "beach_room_3"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"iU" = ( +/obj/structure/chair/plastic{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"iY" = ( +/obj/item/storage/bag/tray, +/obj/item/food/grown/watermelon{ + pixel_y = 4; + pixel_x = -1 + }, +/obj/effect/turf_decal/stripes/red/box, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"jb" = ( +/obj/structure/tank_holder/extinguisher{ + pixel_y = 11 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"jm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/obj/effect/landmark/bitrunning/curiosity_spawn, +/turf/open/floor/plating, +/area/virtual_domain) +"jn" = ( +/obj/item/cigbutt{ + pixel_y = -6; + pixel_x = -12 + }, +/obj/structure/railing/corner/end/flip{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"jp" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/neck/necklace/dope, +/obj/item/clothing/suit/jacket/letterman, +/turf/open/floor/wood, +/area/virtual_domain) +"jq" = ( +/obj/structure/musician/piano, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"jr" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 10; + pixel_x = 7 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"jw" = ( +/obj/machinery/space_heater, +/obj/structure/sign/clock/directional/north, +/turf/open/floor/wood, +/area/virtual_domain) +"jK" = ( +/obj/machinery/reagentgrinder{ + pixel_y = 15; + pixel_x = -1 + }, +/obj/structure/table/bronze, +/obj/structure/desk_bell{ + pixel_x = 12; + pixel_y = 3 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"jL" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"jP" = ( +/turf/open/indestructible/binary, +/area/virtual_domain/protected_space/fullbright) +"jV" = ( +/turf/open/floor/iron/dark/herringbone, +/area/virtual_domain) +"jW" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/floor/wood/large, +/area/virtual_domain) +"ka" = ( +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ke" = ( +/obj/vehicle/ridden/atv{ + dir = 4 + }, +/turf/open/floor/iron/dark/herringbone, +/area/virtual_domain) +"ky" = ( +/obj/machinery/vending/snack, +/obj/effect/turf_decal/sand, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"kD" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/plating, +/area/virtual_domain) +"kI" = ( +/obj/effect/turf_decal/sand, +/turf/closed/wall/mineral/wood, +/area/virtual_domain) +"kJ" = ( +/obj/machinery/shower/directional/south, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain/fullbright) +"kL" = ( +/obj/structure/billboard/space_cola, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"kN" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"lc" = ( +/obj/machinery/space_heater, +/obj/machinery/button/door/directional/north{ + id = "beach_room_2"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"lh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/mechanical/old, +/turf/open/floor/plating, +/area/virtual_domain) +"lk" = ( +/obj/effect/turf_decal/siding/dark_red/corner, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"lx" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/virtual_domain/fullbright) +"lz" = ( +/obj/effect/turf_decal/siding/blue/corner{ + dir = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"lA" = ( +/obj/machinery/shower/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"lF" = ( +/obj/structure/table/reinforced, +/obj/item/storage/medkit/o2{ + pixel_y = 17; + pixel_x = -1 + }, +/obj/item/storage/medkit/brute{ + pixel_y = 23; + pixel_x = -1 + }, +/obj/item/food/lollipop{ + pixel_y = 8; + pixel_x = 12 + }, +/obj/item/food/lollipop{ + pixel_y = 5; + pixel_x = 12 + }, +/obj/item/reagent_containers/cup/bottle/multiver{ + pixel_x = -9; + pixel_y = 9 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"lG" = ( +/obj/item/toy/seashell{ + pixel_y = 11; + pixel_x = -7 + }, +/turf/open/misc/beach/coast, +/area/virtual_domain/fullbright) +"lI" = ( +/obj/structure/table/wood/poker, +/turf/open/floor/wood/large, +/area/virtual_domain) +"lJ" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/beaker/large{ + pixel_y = 7 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"lP" = ( +/obj/structure/chair, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"lS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"lU" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Temporary Holding Cell" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/access/all/security/entrance, +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain) +"lW" = ( +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"mi" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 24 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"mv" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"mx" = ( +/obj/machinery/door/airlock/wood{ + name = "Arcade" + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"mJ" = ( +/obj/structure/flora/tree/palm/style_2{ + pixel_y = 25 + }, +/obj/item/stack/sheet/mineral/sandstone/thirty{ + pixel_y = -10; + pixel_x = -5 + }, +/obj/item/stack/sheet/mineral/sandstone/thirty{ + pixel_y = -2; + pixel_x = 9 + }, +/obj/item/stack/sheet/mineral/sandstone/thirty{ + pixel_y = -4; + pixel_x = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"mL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/door/airlock/wood{ + name = "Tropical Kitchen" + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"mP" = ( +/obj/structure/chair/plastic{ + dir = 8 + }, +/obj/item/reagent_containers/cup/soda_cans/starkist{ + pixel_y = 10; + pixel_x = -17 + }, +/obj/item/fishing_rod{ + pixel_x = -13; + pixel_y = 2 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"mV" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"mW" = ( +/obj/effect/turf_decal/siding/blue/corner{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"nc" = ( +/turf/open/misc/beach/coast/corner{ + dir = 1 + }, +/area/virtual_domain/fullbright) +"nk" = ( +/obj/machinery/door/airlock/wood{ + name = "Balcony"; + id_tag = "beach_room_x" + }, +/obj/structure/railing/corner/end/flip{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"nR" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 6 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"nX" = ( +/obj/structure/table/wood, +/obj/item/melee/baseball_bat{ + pixel_y = 3; + pixel_x = 6 + }, +/obj/item/clothing/glasses/blindfold/white{ + pixel_y = 7; + pixel_x = -5 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"oa" = ( +/turf/open/misc/beach/coast{ + dir = 1 + }, +/area/virtual_domain/fullbright) +"ob" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"og" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/water/beach, +/area/virtual_domain) +"oq" = ( +/obj/structure/table/wood, +/obj/item/food/grown/watermelon{ + pixel_y = 13; + pixel_x = 6 + }, +/obj/item/food/grown/watermelon{ + pixel_y = 8; + pixel_x = -4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"os" = ( +/obj/structure/flora/tree/palm/style_2{ + pixel_y = 12; + pixel_x = -7 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ot" = ( +/turf/template_noop, +/area/template_noop) +"ow" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/wood/large, +/area/virtual_domain) +"oC" = ( +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_x = -8; + pixel_y = 13 + }, +/turf/open/floor/carpet/blue, +/area/virtual_domain/fullbright) +"oE" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/glasses/heat, +/obj/item/clothing/head/cowboy/brown, +/turf/open/floor/wood, +/area/virtual_domain) +"oJ" = ( +/obj/item/flashlight/flare/torch{ + pixel_x = -11; + pixel_y = -6 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"oQ" = ( +/obj/structure/table/bronze, +/obj/item/pai_card{ + desc = "A real Nanotrasen success, these personal AIs provide all of the companionship of an AI without any law related red-tape."; + name = "\improper Nanotrasen-brand personal AI device exhibit"; + pixel_y = 2 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"oX" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/virtual_domain/fullbright) +"oZ" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"pj" = ( +/obj/structure/table/bronze, +/obj/item/camera{ + pixel_y = 12; + pixel_x = -10 + }, +/obj/item/camera{ + pixel_y = 4; + pixel_x = 1 + }, +/obj/item/camera_film{ + pixel_y = -11; + pixel_x = -10 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"pq" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket/letterman_syndie, +/turf/open/floor/wood, +/area/virtual_domain) +"pv" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/wood/large, +/area/virtual_domain) +"py" = ( +/turf/open/floor/iron/stairs, +/area/virtual_domain/fullbright) +"pz" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/under/costume/lobster, +/obj/item/clothing/head/costume/lobsterhat, +/turf/open/floor/wood, +/area/virtual_domain) +"pC" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"pE" = ( +/obj/machinery/door/airlock/wood/glass{ + name = "Rooms" + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"pJ" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket/letterman_red, +/turf/open/floor/wood, +/area/virtual_domain) +"pV" = ( +/obj/item/stack/arcadeticket{ + pixel_y = 5; + pixel_x = 13 + }, +/turf/open/floor/eighties, +/area/virtual_domain) +"pX" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"qa" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"qb" = ( +/obj/machinery/button/door/directional/west{ + id = "beach_room_1"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"qc" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/vending/clothing, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"qB" = ( +/obj/item/toy/seashell{ + pixel_x = 5; + pixel_y = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"qH" = ( +/obj/structure/bed/medical/emergency, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"qR" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/item/cigbutt{ + pixel_y = -6; + pixel_x = -12 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"qZ" = ( +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ra" = ( +/obj/item/stack/sheet/mineral/sandstone{ + pixel_x = 11 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"rj" = ( +/obj/machinery/grill, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"rl" = ( +/obj/structure/rack, +/obj/item/melee/skateboard/hoverboard{ + pixel_x = -7 + }, +/obj/item/melee/skateboard/hoverboard, +/obj/item/melee/skateboard/hoverboard{ + pixel_x = 7 + }, +/turf/open/misc/beach/coast/corner{ + dir = 4 + }, +/area/virtual_domain/fullbright) +"rn" = ( +/obj/machinery/computer/operating{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"ro" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"rw" = ( +/obj/structure/table/bronze, +/obj/machinery/button/door/directional/south{ + id = "beach_room_4"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/item/storage/toolbox/fishing{ + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"rz" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"rB" = ( +/obj/item/toy/seashell{ + pixel_x = -10; + pixel_y = -4 + }, +/obj/structure/fluff/beach_umbrella, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"rD" = ( +/obj/structure/flora/coconuts, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"rE" = ( +/obj/structure/table/bronze, +/obj/machinery/button/door/directional/south{ + id = "beach_room_11"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/item/storage/toolbox/fishing{ + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"rG" = ( +/obj/machinery/telecomms/allinone, +/obj/item/wirecutters{ + pixel_y = 9 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"rI" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 12"; + id_tag = "beach_room_12" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"rK" = ( +/obj/machinery/vending/cigarette/beach, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"rQ" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 7; + pixel_x = 9 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"rR" = ( +/obj/structure/table/bronze, +/turf/open/floor/wood/large, +/area/virtual_domain) +"rW" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"sa" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/door/airlock/wood{ + name = "Bathroom"; + id_tag = "toilet3beach" + }, +/turf/open/floor/iron/white, +/area/virtual_domain) +"sh" = ( +/obj/structure/statue/sandstone/venus{ + pixel_y = 9; + dir = 1; + anchored = 1 + }, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/virtual_domain) +"si" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = 9; + pixel_y = 5 + }, +/obj/item/food/seaweedsheet{ + pixel_y = 6; + pixel_x = -4 + }, +/obj/item/food/seaweedsheet{ + pixel_x = -15; + pixel_y = 2 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"sl" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/reagent_containers/cup/bucket/wooden{ + pixel_y = 17; + pixel_x = -6 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"st" = ( +/obj/structure/table/bronze, +/obj/structure/sign/poster/random/directional/east, +/obj/machinery/button/door/directional/south{ + id = "beach_room_8"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/item/camera{ + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"sz" = ( +/obj/item/toy/seashell, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"sC" = ( +/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"sI" = ( +/obj/structure/table/bronze, +/obj/item/clothing/suit/costume/hawaiian{ + pixel_y = 2; + pixel_x = 5 + }, +/obj/item/clothing/suit/costume/hawaiian{ + pixel_y = 6; + pixel_x = -4 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain/fullbright) +"sO" = ( +/obj/structure/fluff/beach_umbrella/syndi, +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/reagent_containers/cup/soda_cans/thirteenloko{ + pixel_x = 15; + pixel_y = -11 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"sR" = ( +/obj/structure/flora/tree/palm/style_2{ + pixel_y = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"sV" = ( +/obj/structure/table, +/obj/item/storage/belt/utility, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_y = 14; + pixel_x = -8 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"sW" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 5"; + id_tag = "beach_room_5" + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/virtual_domain) +"ta" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"tf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/lights/mixed{ + pixel_x = -4; + pixel_y = 18 + }, +/obj/item/storage/box/lights/mixed{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/structure/table, +/obj/item/reagent_containers/cup/bucket{ + pixel_x = 10; + pixel_y = 4 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"th" = ( +/obj/structure/flora/tree/palm, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"tk" = ( +/turf/open/misc/beach/coast/corner{ + dir = 4 + }, +/area/virtual_domain/fullbright) +"tw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"ty" = ( +/obj/item/trash/boritos/purple{ + pixel_y = -16; + pixel_x = -5 + }, +/turf/open/floor/eighties, +/area/virtual_domain) +"tI" = ( +/obj/structure/sign/departments/custodian/directional/north{ + pixel_x = -32 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"tM" = ( +/obj/structure/table/wood, +/obj/item/book/manual/chef_recipes{ + pixel_x = 2; + pixel_y = 6 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"tQ" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"tW" = ( +/obj/structure/chair/plastic{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"tX" = ( +/obj/structure/table/bronze, +/obj/item/reagent_containers/condiment/ketchup{ + pixel_y = 14; + pixel_x = 1 + }, +/obj/item/reagent_containers/condiment/mayonnaise{ + pixel_y = 8; + pixel_x = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/wood/large, +/area/virtual_domain) +"up" = ( +/obj/item/storage/box/syringes{ + pixel_y = 14; + pixel_x = -5 + }, +/obj/item/clothing/neck/stethoscope{ + pixel_y = 3; + pixel_x = 4 + }, +/obj/structure/table/glass, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"ut" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"uu" = ( +/turf/open/floor/iron/freezer, +/area/virtual_domain) +"uz" = ( +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"uC" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 14 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"uD" = ( +/obj/structure/table/wood, +/obj/item/food/seaweedsheet, +/obj/item/kitchen/rollingpin{ + pixel_x = -12; + pixel_y = 3 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"uH" = ( +/obj/structure/bonfire, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"uI" = ( +/obj/structure/bed, +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain) +"uX" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/item/trash/can{ + pixel_y = -9; + pixel_x = 10 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"uY" = ( +/turf/open/floor/carpet, +/area/virtual_domain) +"vx" = ( +/obj/structure/table/glass, +/obj/item/storage/box/coffeepack{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 10; + pixel_x = 11 + }, +/obj/item/storage/fancy/donut_box{ + pixel_y = 18; + pixel_x = -11 + }, +/obj/item/food/donut/berry{ + pixel_y = 5; + pixel_x = -6 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"vF" = ( +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"vM" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"vU" = ( +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo" + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"wb" = ( +/turf/open/misc/beach/coast{ + dir = 5 + }, +/area/virtual_domain/fullbright) +"wf" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 10 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ww" = ( +/obj/structure/chair/stool/directional/south{ + dir = 8 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"wx" = ( +/obj/structure/closet/crate/bin, +/obj/structure/sign/clock/directional/north, +/turf/open/floor/wood, +/area/virtual_domain) +"wz" = ( +/obj/structure/rack, +/obj/item/mop, +/obj/item/extinguisher, +/turf/open/floor/wood/large, +/area/virtual_domain) +"wC" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/reagent_dispensers/fueltank/large, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"wH" = ( +/obj/structure/table/wood/fancy, +/obj/effect/turf_decal/tile/dark_red/full, +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_x = -5; + pixel_y = 14 + }, +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_y = 13; + pixel_x = 6 + }, +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_y = 10 + }, +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_y = 6; + pixel_x = 11 + }, +/turf/open/floor/iron/smooth_large, +/area/virtual_domain/fullbright) +"wI" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/shower/directional/south, +/turf/open/floor/wood/parquet, +/area/virtual_domain/fullbright) +"wN" = ( +/obj/item/cigbutt{ + pixel_y = 21; + pixel_x = -13 + }, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"wO" = ( +/obj/structure/dresser, +/obj/machinery/light/directional/north, +/turf/open/floor/wood, +/area/virtual_domain) +"wT" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 8 + }, +/turf/open/floor/eighties, +/area/virtual_domain) +"wZ" = ( +/obj/item/clothing/head/soft/green, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"xe" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/door/airlock/wood{ + name = "Bathroom"; + id_tag = "toiletfarbeach" + }, +/turf/open/floor/iron/white, +/area/virtual_domain) +"xg" = ( +/turf/open/misc/beach/sand, +/area/virtual_domain) +"xj" = ( +/obj/item/toy/seashell{ + pixel_x = -8; + pixel_y = 9 + }, +/turf/open/misc/beach/coast/corner{ + dir = 1 + }, +/area/virtual_domain/fullbright) +"xk" = ( +/obj/structure/closet/crate/freezer, +/obj/item/food/meat/slab/rawcrab, +/obj/item/food/meat/slab/rawcrab, +/obj/item/food/meat/slab/rawcrab, +/obj/item/food/meat/slab/chicken, +/obj/item/food/meat/slab/chicken, +/obj/item/food/meat/slab/chicken, +/obj/item/food/meat/slab, +/obj/item/food/meat/slab, +/obj/item/food/meat/slab, +/obj/item/stack/sheet/mineral/coal/ten, +/obj/item/stack/sheet/mineral/coal/ten, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"xw" = ( +/obj/item/kirbyplants/organic/applebush{ + pixel_x = 7 + }, +/obj/item/kirbyplants/organic/plant17{ + pixel_y = 2; + pixel_x = -8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"xx" = ( +/obj/item/stack/arcadeticket{ + pixel_y = 6; + pixel_x = -7 + }, +/obj/effect/landmark/bitrunning/curiosity_spawn, +/turf/open/floor/eighties, +/area/virtual_domain) +"xJ" = ( +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"xO" = ( +/obj/structure/chair/stool/directional/south, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/freezer, +/area/virtual_domain) +"xP" = ( +/obj/structure/chair/plastic{ + dir = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"xR" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/item/kirbyplants/organic/plant8{ + pixel_y = 3; + pixel_x = -2 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"xT" = ( +/obj/machinery/oven/range, +/turf/open/floor/wood/large, +/area/virtual_domain) +"yc" = ( +/obj/structure/closet/gmcloset, +/turf/open/floor/plastic, +/area/virtual_domain) +"yg" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/wood/large, +/area/virtual_domain) +"yy" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/carpet/red, +/area/virtual_domain/fullbright) +"yz" = ( +/obj/structure/table/bronze, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"yB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/turf_decal/tile/dark/half{ + pixel_y = -1; + pixel_x = 5; + dir = 8 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"yG" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/virtual_domain) +"yI" = ( +/obj/structure/dresser, +/obj/structure/sign/calendar/directional/north, +/turf/open/floor/wood, +/area/virtual_domain) +"yJ" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/popsicle_stick, +/obj/item/popsicle_stick, +/obj/item/popsicle_stick, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/rice, +/obj/item/food/grown/banana/bunch, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"yN" = ( +/obj/structure/chair/stool/bamboo{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"yQ" = ( +/obj/structure/table/bronze, +/obj/structure/sign/poster/random/directional/east, +/obj/machinery/button/door/directional/south{ + id = "beach_room_10"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/item/table_clock{ + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"ze" = ( +/obj/effect/turf_decal/tile/dark_red/full, +/turf/open/floor/iron/smooth_large, +/area/virtual_domain/fullbright) +"zg" = ( +/obj/structure/table/bronze, +/obj/item/clothing/suit/costume/hawaiian{ + pixel_y = 6; + pixel_x = 4 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain/fullbright) +"zm" = ( +/obj/structure/table/reinforced, +/obj/item/stack/medical/mesh{ + pixel_y = 1; + pixel_x = 1 + }, +/obj/item/clothing/suit/toggle/labcoat{ + pixel_y = 9; + pixel_x = -8 + }, +/obj/item/storage/box/bodybags{ + pixel_y = 17; + pixel_x = 8 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"zn" = ( +/obj/structure/table/optable, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"zp" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain) +"zq" = ( +/obj/item/stack/sheet/mineral/sandstone{ + pixel_x = -11; + pixel_y = -2 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"zH" = ( +/obj/item/reagent_containers/cup/soda_cans/lemon_lime{ + pixel_x = -12; + pixel_y = 14 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"zK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"zL" = ( +/obj/structure/table/bronze, +/obj/item/paper/paperslip{ + pixel_y = 6; + pixel_x = 10 + }, +/obj/item/pen/fourcolor{ + pixel_y = 7; + pixel_x = 1 + }, +/turf/open/floor/carpet, +/area/virtual_domain) +"zO" = ( +/obj/item/retractor{ + pixel_y = 8; + pixel_x = -2 + }, +/obj/item/cautery{ + pixel_y = 10 + }, +/obj/item/hemostat{ + pixel_y = -11 + }, +/obj/item/bonesetter{ + pixel_y = -12 + }, +/obj/structure/table/glass, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"zS" = ( +/obj/item/kirbyplants/organic/plant8{ + pixel_y = 18; + pixel_x = -8 + }, +/obj/item/cigbutt{ + pixel_y = -4; + pixel_x = 2 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Ac" = ( +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ + dir = 4 + }, +/obj/structure/table/wood, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Ae" = ( +/obj/machinery/space_heater, +/obj/machinery/light/directional/north, +/turf/open/floor/wood, +/area/virtual_domain) +"Ag" = ( +/obj/effect/turf_decal/siding/wood, +/obj/item/kirbyplants/organic/plant8{ + pixel_y = 6 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/eighties, +/area/virtual_domain) +"Ai" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/eighties, +/area/virtual_domain) +"Aj" = ( +/obj/structure/railing/corner/end{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/water/beach, +/area/virtual_domain) +"Al" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Aq" = ( +/obj/structure/table/wood/poker, +/obj/item/storage/dice{ + pixel_y = 3; + pixel_x = 5 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Ay" = ( +/obj/structure/table/reinforced, +/obj/item/storage/medkit/brute{ + pixel_y = 9; + pixel_x = 2 + }, +/obj/item/storage/medkit/o2{ + pixel_y = 15; + pixel_x = 2 + }, +/obj/item/reagent_containers/cup/bottle/multiver{ + pixel_x = -9; + pixel_y = 3 + }, +/obj/item/reagent_containers/syringe{ + pixel_y = -4; + pixel_x = 3 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"AG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/half{ + pixel_x = 5; + dir = 8 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"AK" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/plastic, +/area/virtual_domain) +"AX" = ( +/obj/vehicle/ridden/atv{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"AZ" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/virtual_domain/fullbright) +"Bc" = ( +/obj/item/reagent_containers/cup/bucket/wooden{ + pixel_y = -5; + pixel_x = -11 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Bf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"Bk" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 2"; + id_tag = "beach_room_2" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/sign/poster/random/directional/east, +/turf/open/floor/wood, +/area/virtual_domain) +"Bq" = ( +/turf/closed/wall/mineral/wood, +/area/virtual_domain) +"Bx" = ( +/obj/item/reagent_containers/cup/soda_cans/starkist{ + pixel_x = -12; + pixel_y = -6 + }, +/obj/structure/fluff/beach_umbrella/cap, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Bz" = ( +/obj/structure/closet, +/obj/item/key/atv{ + pixel_x = -4 + }, +/obj/item/key/atv{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/key/atv{ + pixel_x = 1; + pixel_y = 1 + }, +/obj/item/clothing/head/soft/black, +/obj/item/clothing/head/soft/black, +/obj/item/clothing/head/soft/black, +/obj/effect/decal/cleanable/oil, +/obj/item/clothing/glasses/sunglasses, +/obj/item/clothing/glasses/heat, +/turf/open/floor/iron/dark/herringbone, +/area/virtual_domain) +"BB" = ( +/obj/item/toy/plush/moth{ + pixel_y = 5 + }, +/turf/open/floor/carpet/red, +/area/virtual_domain/fullbright) +"BD" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 19; + pixel_x = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"BI" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 5 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"BM" = ( +/obj/structure/closet/crate/bin, +/obj/item/flashlight/glowstick/yellow, +/obj/item/trash/candy, +/turf/open/floor/eighties, +/area/virtual_domain) +"BU" = ( +/obj/item/storage/toolbox/fishing{ + pixel_x = 10 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"BV" = ( +/obj/structure/sign/directions/dorms/directional/north{ + pixel_y = 35 + }, +/obj/structure/sign/directions/medical/directional/north{ + pixel_y = 29 + }, +/obj/machinery/computer/slot_machine, +/turf/open/floor/wood/large, +/area/virtual_domain) +"BW" = ( +/obj/structure/dresser, +/obj/structure/sign/clock/directional/east, +/turf/open/floor/wood, +/area/virtual_domain) +"Co" = ( +/obj/machinery/processor, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Cw" = ( +/obj/structure/sign/poster/official/fruit_bowl/directional/north, +/turf/open/floor/carpet, +/area/virtual_domain) +"CA" = ( +/obj/item/reagent_containers/cup/soda_cans/sol_dry{ + pixel_y = 18; + pixel_x = 9 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"CH" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/wood, +/area/virtual_domain) +"CP" = ( +/obj/structure/table/reinforced, +/obj/item/toy/plush/slimeplushie{ + pixel_y = 8; + pixel_x = 4 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"CQ" = ( +/obj/structure/closet/crate/trashcart/laundry, +/turf/open/floor/plastic, +/area/virtual_domain) +"CR" = ( +/obj/structure/fluff/beach_umbrella/syndi, +/turf/open/misc/beach/coast/corner{ + dir = 8 + }, +/area/virtual_domain/fullbright) +"CS" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 1"; + id_tag = "beach_room_1" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"CU" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/button/door/directional/west{ + id = "beach_room_6"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/item/clothing/suit/jacket/leather/biker, +/turf/open/floor/wood, +/area/virtual_domain) +"CV" = ( +/obj/item/toy/seashell{ + pixel_x = 8; + pixel_y = 14 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Dg" = ( +/obj/item/toy/beach_ball, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Do" = ( +/obj/effect/landmark/bitrunning/curiosity_spawn, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Dq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/water/beach, +/area/virtual_domain) +"Dt" = ( +/obj/machinery/icecream_vat, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Dx" = ( +/obj/structure/chair/stool/bar/directional/east, +/obj/machinery/light/directional/west, +/turf/open/floor/wood/large, +/area/virtual_domain) +"DA" = ( +/obj/item/cigbutt{ + pixel_y = -7; + pixel_x = 14 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"DG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/virtual_domain) +"DL" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 12; + pixel_x = 3 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/clothing/head/soft/mime{ + pixel_y = 3; + pixel_x = 5 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"DP" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/virtual_domain) +"DR" = ( +/turf/open/floor/carpet/blue, +/area/virtual_domain/fullbright) +"DS" = ( +/obj/machinery/door/airlock/wood{ + name = "Changing Room" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/iron/freezer, +/area/virtual_domain) +"DT" = ( +/obj/structure/table/wood, +/obj/item/knife/kitchen{ + pixel_y = 12; + pixel_x = -13 + }, +/obj/item/clothing/head/utility/chefhat, +/turf/open/floor/wood/large, +/area/virtual_domain) +"DU" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 10"; + id_tag = "beach_room_10" + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/virtual_domain) +"Eb" = ( +/obj/item/reagent_containers/cup/soda_cans/cola{ + pixel_x = -8; + pixel_y = -4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Ej" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 19; + pixel_x = 7 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Er" = ( +/obj/effect/turf_decal/sand, +/obj/structure/bedsheetbin{ + pixel_y = 3; + pixel_x = -1 + }, +/obj/structure/table, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Et" = ( +/obj/item/toy/seashell, +/turf/open/misc/beach/coast/corner{ + dir = 8 + }, +/area/virtual_domain/fullbright) +"EA" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/button/door/directional/east{ + id = "toiletfarbeach"; + name = "restroom lock"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/structure/sink/directional/west, +/obj/machinery/light/small/directional/west, +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/floor/iron/white, +/area/virtual_domain) +"EI" = ( +/turf/open/misc/beach/coast{ + dir = 8 + }, +/area/virtual_domain/fullbright) +"EP" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 3"; + id_tag = "beach_room_3" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"EQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/water/beach, +/area/virtual_domain) +"ET" = ( +/obj/item/reagent_containers/cup/glass/bottle/beer/light{ + pixel_x = -14; + pixel_y = 15 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"EY" = ( +/obj/structure/statue/sandstone/venus{ + dir = 4; + pixel_y = 9; + anchored = 1 + }, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/virtual_domain) +"Fk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/mousetraps{ + pixel_x = -5; + pixel_y = 14 + }, +/obj/structure/table, +/obj/item/storage/box/mousetraps{ + pixel_x = 12; + pixel_y = 15 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -1; + pixel_y = 3 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Fp" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Fx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"FB" = ( +/obj/machinery/medical_kiosk, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"FE" = ( +/obj/machinery/washing_machine, +/obj/machinery/light/directional/north, +/turf/open/floor/plastic, +/area/virtual_domain) +"FO" = ( +/obj/structure/chair/plastic, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"FX" = ( +/turf/open/floor/carpet/green, +/area/virtual_domain/fullbright) +"Ga" = ( +/obj/item/stack/arcadeticket{ + pixel_y = -1; + pixel_x = -6 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Gm" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/closed/wall/mineral/wood, +/area/virtual_domain) +"Go" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket/letterman_nanotrasen, +/obj/item/clothing/glasses/salesman, +/turf/open/floor/wood, +/area/virtual_domain) +"Gp" = ( +/obj/structure/no_effect_signpost{ + pixel_y = 6; + desc = "Northwest: Hotel. South: Seaside Bar. East: Dressing Rooms." + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Gq" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/closed/wall/mineral/wood, +/area/virtual_domain) +"Gw" = ( +/turf/open/indestructible/binary, +/area/virtual_domain/fullbright) +"Gx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/structure/closet_empty/crate, +/obj/effect/spawner/random/maintenance/two, +/obj/item/storage/toolbox/fishing{ + pixel_y = 2 + }, +/turf/open/floor/plating, +/area/virtual_domain) +"GD" = ( +/obj/effect/landmark/bitrunning/permanent_exit, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/protected_space/fullbright) +"GI" = ( +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain) +"GK" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/wood/large, +/area/virtual_domain) +"GQ" = ( +/obj/item/toy/seashell{ + pixel_y = 3; + pixel_x = -6 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"GX" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/carpet, +/area/virtual_domain) +"GY" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/shower/directional/south, +/obj/structure/sink/directional/east, +/turf/open/floor/wood/parquet, +/area/virtual_domain/fullbright) +"Hd" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/railing/corner/end{ + dir = 8 + }, +/turf/open/water/beach, +/area/virtual_domain) +"Ho" = ( +/obj/structure/table/wood, +/obj/item/modular_computer/laptop{ + pixel_y = 5 + }, +/obj/item/multitool{ + pixel_x = -8; + pixel_y = -8 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Hp" = ( +/obj/structure/table/wood, +/obj/item/clothing/suit/apron/chef{ + pixel_y = 5; + pixel_x = 2 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"HE" = ( +/obj/machinery/griddle, +/turf/open/floor/wood/large, +/area/virtual_domain) +"HH" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"HI" = ( +/obj/structure/statue/sandstone/venus{ + dir = 4; + pixel_y = 9 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"HK" = ( +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/trash/cigbutt, +/obj/effect/spawner/random/trash/food_packaging, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"HO" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 9"; + id_tag = "beach_room_9" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"HP" = ( +/turf/open/water/beach, +/area/virtual_domain) +"HR" = ( +/obj/structure/sign/poster/official/tactical_game_cards/directional/west, +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/eighties, +/area/virtual_domain) +"HT" = ( +/obj/structure/bed/pod{ + desc = "An old medical bed, just waiting for replacement with something up to date."; + dir = 4; + name = "medical bed" + }, +/obj/machinery/defibrillator_mount/directional/east, +/obj/machinery/iv_drip{ + pixel_y = 21; + pixel_x = -4 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"HV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/virtual_domain) +"Ib" = ( +/obj/structure/tank_holder/extinguisher{ + pixel_y = 11 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"If" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"In" = ( +/obj/item/kirbyplants/organic/plant8{ + pixel_y = 4; + pixel_x = 8 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"It" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Iw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/door/poddoor/shutters{ + id = "BeachBoats" + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"IA" = ( +/obj/machinery/shower/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"IF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"IG" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "BeachGarage" + }, +/turf/open/floor/plating, +/area/virtual_domain/fullbright) +"II" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"IJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/blood_filter{ + pixel_y = 8; + pixel_x = -6 + }, +/obj/item/surgical_drapes{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/item/surgical_drapes{ + pixel_x = 13; + pixel_y = 2 + }, +/obj/structure/table/glass, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"IL" = ( +/obj/effect/turf_decal/siding/dark_red, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"IS" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/large, +/area/virtual_domain) +"IX" = ( +/obj/item/kirbyplants/organic/plant8{ + pixel_y = 18; + pixel_x = -8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Jb" = ( +/obj/structure/table/glass, +/obj/machinery/coffeemaker/impressa{ + pixel_y = 13; + pixel_x = -1 + }, +/obj/item/reagent_containers/cup/glass/mug{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/reagent_containers/cup/glass/mug{ + pixel_x = 11; + pixel_y = -1 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Jc" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"Jd" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"Je" = ( +/obj/structure/table/bronze, +/obj/item/table_clock{ + pixel_y = 13 + }, +/obj/structure/sign/poster/random/directional/east, +/turf/open/floor/wood, +/area/virtual_domain) +"Jp" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"Jv" = ( +/obj/item/reagent_containers/cup/soda_cans/starkist{ + pixel_x = -6 + }, +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Jw" = ( +/obj/item/toy/seashell{ + pixel_x = 12; + pixel_y = 5 + }, +/turf/open/misc/beach/coast{ + dir = 4 + }, +/area/virtual_domain/fullbright) +"JF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"JG" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/wood/large, +/area/virtual_domain) +"JH" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"JJ" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 8"; + id_tag = "beach_room_8" + }, +/turf/open/floor/wood, +/area/virtual_domain) +"JN" = ( +/obj/effect/turf_decal/sand, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"JU" = ( +/obj/item/instrument/guitar{ + pixel_y = 4; + pixel_x = -1 + }, +/turf/open/misc/beach/coast, +/area/virtual_domain/fullbright) +"Ka" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/button/door/directional/west{ + id = "beach_room_7"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/item/clothing/suit/apron/overalls, +/turf/open/floor/wood, +/area/virtual_domain) +"Ko" = ( +/obj/item/toy/beach_ball, +/turf/open/misc/beach/coast/corner{ + dir = 4 + }, +/area/virtual_domain/fullbright) +"Ks" = ( +/obj/structure/table/glass, +/obj/machinery/microwave{ + pixel_y = 15 + }, +/obj/item/cigbutt{ + pixel_y = 2; + pixel_x = -12 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"KH" = ( +/obj/structure/closet/athletic_mixed, +/turf/open/floor/iron/freezer, +/area/virtual_domain) +"KI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/structure/crate, +/turf/open/floor/plating, +/area/virtual_domain) +"KJ" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood/large, +/area/virtual_domain) +"KL" = ( +/obj/structure/closet/secure_closet/freezer/empty, +/obj/item/food/popsicle/creamsicle_berry, +/obj/item/food/popsicle/creamsicle_berry, +/obj/item/food/popsicle/creamsicle_orange, +/obj/item/food/popsicle/creamsicle_orange, +/obj/item/food/popsicle/jumbo, +/obj/item/food/popsicle/pineapple_pop, +/obj/item/food/popsicle/pineapple_pop, +/obj/item/food/fishmeat, +/obj/item/food/fishmeat, +/obj/item/food/fishmeat, +/obj/item/food/fishmeat, +/obj/item/food/fishmeat, +/turf/open/floor/wood/large, +/area/virtual_domain) +"KP" = ( +/obj/item/clothing/head/soft/black{ + pixel_x = -1; + pixel_y = -3 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"KS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"KT" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"KZ" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/landmark/bitrunning/curiosity_spawn, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"La" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/wood, +/area/virtual_domain) +"Ld" = ( +/obj/structure/table/wood, +/obj/item/cigarette/cigar{ + pixel_y = 16; + pixel_x = -2 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/machinery/cell_charger, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Lm" = ( +/obj/machinery/door/airlock/wood{ + name = "Balcony"; + id_tag = "beach_room_x" + }, +/turf/open/floor/wood, +/area/virtual_domain) +"LD" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/door/airlock/wood{ + name = "Bathroom"; + id_tag = "toilet1beach" + }, +/turf/open/floor/iron/white, +/area/virtual_domain) +"LN" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/carpet/blue, +/area/virtual_domain/fullbright) +"LR" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"LV" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"LY" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Ma" = ( +/obj/machinery/vending/games, +/turf/open/floor/eighties, +/area/virtual_domain) +"Mb" = ( +/turf/open/floor/wood/large, +/area/virtual_domain) +"Md" = ( +/obj/structure/fluff/beach_umbrella/syndi, +/obj/item/reagent_containers/cup/soda_cans/wellcheers{ + pixel_y = -10; + pixel_x = -6 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Mj" = ( +/obj/structure/table, +/obj/item/weldingtool{ + pixel_y = -7; + pixel_x = 4 + }, +/obj/item/trash/can{ + pixel_y = 10; + pixel_x = -5 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"Ml" = ( +/obj/machinery/washing_machine, +/turf/open/floor/plastic, +/area/virtual_domain) +"Mo" = ( +/obj/machinery/door/airlock/wood{ + name = "Docks" + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"Mr" = ( +/obj/structure/table/wood, +/obj/item/stack/arcadeticket{ + pixel_y = 6; + pixel_x = -7 + }, +/obj/item/pen{ + pixel_y = 5; + pixel_x = 8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Mx" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger{ + pixel_y = 13; + pixel_x = 21 + }, +/obj/item/clothing/glasses/hud/health{ + pixel_y = 1; + pixel_x = 18 + }, +/obj/item/stack/medical/gauze{ + pixel_x = -15; + pixel_y = 10 + }, +/obj/item/storage/belt/medical{ + pixel_y = 3; + pixel_x = -3 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"MA" = ( +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"MH" = ( +/obj/item/toy/seashell{ + pixel_x = -7; + pixel_y = 5 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"MO" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/obj/item/reagent_containers/cup/glass/mug{ + pixel_x = -12; + pixel_y = 9 + }, +/obj/effect/spawner/random/bureaucracy/stamp{ + pixel_y = 14; + pixel_x = 8 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"MR" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"MT" = ( +/turf/open/misc/beach/coast/corner{ + dir = 8 + }, +/area/virtual_domain/fullbright) +"MV" = ( +/obj/item/radio/off{ + pixel_y = 16; + pixel_x = -5 + }, +/obj/item/storage/box/monkeycubes{ + pixel_y = 10; + pixel_x = 4 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 2 + }, +/obj/structure/table/glass, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"MX" = ( +/obj/effect/turf_decal/stripes/red/box, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"MZ" = ( +/obj/machinery/button/door/directional/north{ + id = "beach_room_12"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"Nc" = ( +/obj/item/tank/internals/anesthetic{ + pixel_y = 4 + }, +/obj/item/stack/medical/bone_gel{ + pixel_y = 16; + pixel_x = -7 + }, +/obj/item/clothing/mask/breath/medical{ + pixel_y = 3; + pixel_x = 3 + }, +/obj/structure/table/bronze, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"Ne" = ( +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Nj" = ( +/obj/structure/fluff/beach_umbrella/cap, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Np" = ( +/obj/structure/chair/stool/bamboo{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"Nt" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/eighties, +/area/virtual_domain) +"NB" = ( +/obj/item/storage/box/fishing_hooks{ + pixel_y = 14 + }, +/obj/item/storage/box/fishing_lines{ + pixel_y = 12; + pixel_x = 18 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"NC" = ( +/mob/living/basic/crab, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"NH" = ( +/obj/structure/closet/crate/bin, +/obj/item/trash/candy, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"NT" = ( +/obj/item/toy/seashell, +/turf/open/misc/beach/coast, +/area/virtual_domain/fullbright) +"NU" = ( +/obj/machinery/vending/medical{ + req_access = "201" + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"NZ" = ( +/obj/effect/turf_decal/sand, +/turf/closed/wall/mineral/wood, +/area/virtual_domain/fullbright) +"Of" = ( +/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind{ + pixel_x = -17; + pixel_y = 17 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Og" = ( +/obj/structure/table/bronze, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_y = 12 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -5; + pixel_y = 9 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Ol" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plating, +/area/virtual_domain) +"Om" = ( +/obj/structure/bed/double, +/obj/item/bedsheet/hop/double{ + desc = "A blue bedsheet. Likely from the beach hotel."; + name = "blue bedsheet" + }, +/turf/open/floor/carpet/cyan, +/area/virtual_domain) +"Or" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Oy" = ( +/mob/living/basic/crab, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"OA" = ( +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"OK" = ( +/obj/item/storage/box/gloves{ + pixel_y = 14; + pixel_x = 7 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"OM" = ( +/turf/open/floor/iron/stairs/old, +/area/virtual_domain/fullbright) +"OO" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 16; + pixel_x = 12 + }, +/obj/structure/flora/coconuts, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"OV" = ( +/mob/living/basic/crab/kreb, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Po" = ( +/obj/structure/sink/kitchen/directional/east, +/turf/open/floor/plastic, +/area/virtual_domain) +"Pq" = ( +/obj/structure/table/bronze, +/obj/item/reagent_containers/cup/rag{ + pixel_y = 5 + }, +/obj/item/reagent_containers/condiment/coconut_milk{ + pixel_y = 14; + pixel_x = 5 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/wood/large, +/area/virtual_domain) +"PD" = ( +/obj/item/kirbyplants/organic/plant8{ + pixel_y = 9; + pixel_x = 6 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"PE" = ( +/obj/machinery/space_heater, +/turf/open/floor/wood, +/area/virtual_domain) +"PG" = ( +/obj/structure/table/bronze, +/obj/item/food/grown/banana/bunch{ + pixel_y = 10; + offset_at_init = 0 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"PH" = ( +/obj/item/toy/seashell{ + pixel_x = 12; + pixel_y = 5 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"PJ" = ( +/obj/item/cigbutt{ + pixel_y = -11; + pixel_x = -15 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"PR" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"PZ" = ( +/obj/structure/table/bronze, +/obj/item/camera{ + pixel_y = 12; + pixel_x = 6 + }, +/obj/item/camera_film{ + pixel_y = 4; + pixel_x = -2 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Qc" = ( +/obj/item/kirbyplants/organic/plant8{ + pixel_y = 5 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Qj" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/iron/freezer, +/area/virtual_domain) +"Qk" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/button/door/directional/east{ + id = "toilet2beach"; + name = "restroom lock"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/structure/sink/directional/west, +/obj/machinery/light/small/directional/west, +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/iron/white, +/area/virtual_domain) +"Qm" = ( +/obj/structure/sink/kitchen/directional/south, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Qq" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Qu" = ( +/obj/structure/tank_holder/extinguisher, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Qv" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Admin" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock_note_placer{ + note_info = "Dear IT: Please fix the fax machine" + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Qx" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 4 + }, +/turf/open/floor/eighties, +/area/virtual_domain) +"QG" = ( +/obj/structure/railing/corner/end/flip{ + dir = 4 + }, +/obj/item/wrench{ + pixel_y = -1; + pixel_x = 6 + }, +/obj/item/storage/toolbox/fishing{ + pixel_y = -8; + pixel_x = -3 + }, +/obj/structure/railing/corner/end/flip{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"QH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/door/airlock/wood{ + name = "Room 6"; + id_tag = "beach_room_6" + }, +/turf/open/floor/wood, +/area/virtual_domain) +"QI" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"QN" = ( +/obj/item/cigbutt{ + pixel_y = -6; + pixel_x = -12 + }, +/obj/item/clothing/head/soft/black, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"QX" = ( +/obj/machinery/vending/boozeomat/all_access{ + desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. May not work for bartenders that don't have Nanotrasen bank accounts." + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"QY" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/table/wood, +/obj/item/storage/medkit/o2{ + pixel_y = 4; + pixel_x = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"Rc" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 31 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Rd" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/carpet, +/area/virtual_domain) +"Re" = ( +/obj/structure/table/wood, +/obj/item/stack/arcadeticket{ + pixel_y = 3; + pixel_x = -5 + }, +/obj/item/reagent_containers/cup/soda_cans/pwr_game{ + pixel_y = 12; + pixel_x = -8 + }, +/obj/item/paper_bin/carbon{ + pixel_y = 6; + pixel_x = 4 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Rf" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Rk" = ( +/obj/structure/table/glass, +/obj/machinery/fax{ + fax_name = "Beach Hotel Fax"; + name = "Beach Hotel's Fax Machine"; + pixel_y = 8; + visible_to_network = 0 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Rs" = ( +/obj/machinery/door/airlock/wood{ + name = "Garage" + }, +/turf/open/floor/iron/dark/herringbone, +/area/virtual_domain) +"Rw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/door/airlock/wood{ + name = "Room 1" + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Ry" = ( +/obj/structure/closet{ + name = "Holding Cell Storage" + }, +/obj/item/taperecorder, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Rz" = ( +/obj/item/kirbyplants/organic/plant21{ + pixel_y = 3; + pixel_x = -6 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"RB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"RF" = ( +/obj/effect/turf_decal/siding/wood, +/turf/closed/wall/mineral/wood, +/area/virtual_domain/fullbright) +"RJ" = ( +/obj/item/reagent_containers/cup/soda_cans/starkist{ + pixel_y = 16; + pixel_x = 10 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"RM" = ( +/obj/effect/baseturf_helper/beach/water, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"RO" = ( +/obj/item/reagent_containers/cup/soda_cans/lemon_lime{ + pixel_x = -12; + pixel_y = -7 + }, +/obj/item/reagent_containers/cup/soda_cans/dr_gibb{ + pixel_x = 13; + pixel_y = -7 + }, +/obj/structure/fluff/beach_umbrella, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"RP" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/engineering_guide{ + pixel_y = 7; + pixel_x = -6 + }, +/obj/item/pen{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/clothing/head/utility/welding{ + pixel_x = -10; + pixel_y = -8 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"RS" = ( +/obj/structure/table/wood, +/obj/item/food/donut/plain{ + pixel_y = -2; + pixel_x = 14 + }, +/obj/item/assembly/signaler{ + pixel_x = -6; + pixel_y = -5 + }, +/obj/effect/spawner/random/bureaucracy/folder{ + pixel_y = 11; + pixel_x = 4 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Sb" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 19; + pixel_x = 10 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Sc" = ( +/obj/structure/table/wood, +/obj/item/storage/box/drinkingglasses{ + pixel_y = 18; + pixel_x = -5 + }, +/obj/item/reagent_containers/cup/glass/shaker{ + pixel_y = 12; + pixel_x = -7 + }, +/obj/item/clothing/head/hats/tophat{ + pixel_y = 2; + pixel_x = 3 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Se" = ( +/obj/structure/table/wood, +/obj/effect/spawner/random/entertainment/lighter, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Sf" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"So" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Sr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/three, +/obj/effect/decal/cleanable/cobweb, +/obj/item/wheelchair, +/turf/open/floor/plating, +/area/virtual_domain) +"Su" = ( +/obj/machinery/door/airlock/wood{ + name = "Room 4"; + id_tag = "beach_room_4" + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/virtual_domain) +"Sx" = ( +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"Sz" = ( +/obj/structure/chair/stool/bamboo{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"SJ" = ( +/obj/structure/rack, +/obj/effect/turf_decal/sand, +/obj/item/clothing/shoes/sandal{ + pixel_y = 4; + pixel_x = 8 + }, +/obj/item/clothing/shoes/sandal{ + pixel_x = 4 + }, +/obj/item/clothing/shoes/sandal{ + pixel_y = -4 + }, +/obj/item/clothing/shoes/sandal{ + pixel_y = -7; + pixel_x = -3 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"SL" = ( +/obj/machinery/door/airlock/wood{ + name = "Trash Disposal" + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"SM" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/obj/structure/chair/plastic{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"SO" = ( +/obj/structure/table/bronze, +/obj/structure/desk_bell{ + pixel_x = 7; + pixel_y = 8 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"SR" = ( +/turf/closed/indestructible/binary, +/area/virtual_domain/fullbright) +"Ta" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/carpet, +/area/virtual_domain) +"Tb" = ( +/obj/effect/landmark/bitrunning/curiosity_spawn, +/turf/open/floor/iron/dark/herringbone, +/area/virtual_domain) +"Tq" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark/herringbone, +/area/virtual_domain) +"Tr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Tt" = ( +/obj/machinery/recharge_station, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Tw" = ( +/obj/effect/turf_decal/stripes/white/full, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Ty" = ( +/turf/open/floor/carpet, +/area/virtual_domain/fullbright) +"TB" = ( +/obj/effect/turf_decal/tile/dark_red/full, +/obj/machinery/vending/cola/red, +/turf/open/floor/iron/smooth_large, +/area/virtual_domain/fullbright) +"TC" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"TK" = ( +/obj/structure/table/bronze, +/obj/item/clothing/suit/costume/hawaiian{ + pixel_y = 1; + pixel_x = 7 + }, +/obj/item/clothing/suit/costume/hawaiian{ + pixel_x = -14 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain/fullbright) +"TM" = ( +/obj/effect/turf_decal/siding/blue/corner, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"TO" = ( +/obj/structure/closet/crate/bin, +/obj/item/reagent_containers/syringe{ + pixel_y = -4; + pixel_x = 3 + }, +/obj/effect/spawner/random/trash/food_packaging, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"TR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/virtual_domain) +"TS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/clothing/mask/breath/medical{ + pixel_y = 7; + pixel_x = -9 + }, +/obj/item/clothing/mask/breath/medical{ + pixel_y = 4; + pixel_x = 3 + }, +/obj/item/clothing/gloves/latex, +/obj/structure/table/glass, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"TW" = ( +/obj/structure/table/bronze, +/obj/item/clothing/suit/costume/hawaiian{ + pixel_y = 7; + pixel_x = -3 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/wood/parquet, +/area/virtual_domain/fullbright) +"TY" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Clinic" + }, +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"TZ" = ( +/obj/structure/fluff/beach_umbrella/science, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Ub" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"Ud" = ( +/obj/effect/turf_decal/siding/wood, +/obj/item/cigbutt{ + pixel_y = -9; + pixel_x = 13 + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"Uf" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/door/airlock/wood{ + name = "Bathroom"; + id_tag = "toilet2beach" + }, +/turf/open/floor/iron/white, +/area/virtual_domain) +"Ug" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"Uk" = ( +/obj/machinery/vending/autodrobe/all_access, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Um" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket/miljacket, +/turf/open/floor/wood, +/area/virtual_domain) +"Uy" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Clinic" + }, +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"UE" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"UI" = ( +/obj/machinery/door/airlock/wood{ + name = "Janitorial" + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"UJ" = ( +/obj/vehicle/ridden/atv{ + dir = 4 + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/iron/dark/herringbone, +/area/virtual_domain) +"UO" = ( +/obj/machinery/vending/cola/pwr_game, +/turf/open/floor/eighties, +/area/virtual_domain) +"US" = ( +/obj/machinery/shower/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"UW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"UZ" = ( +/obj/item/stack/sheet/mineral/sandstone{ + pixel_x = -8 + }, +/obj/item/stack/sheet/mineral/sandstone{ + pixel_x = 5 + }, +/obj/item/stack/sheet/mineral/sandstone{ + pixel_x = 1; + pixel_y = 7 + }, +/obj/item/stack/sheet/mineral/sandstone{ + pixel_x = -12; + pixel_y = 6 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Va" = ( +/obj/machinery/door/airlock/wood{ + name = "Employees' Only" + }, +/turf/open/floor/plastic, +/area/virtual_domain) +"Vs" = ( +/obj/structure/table/wood, +/obj/item/pai_card{ + desc = "A real Nanotrasen success, these personal AIs provide all of the companionship of an AI without any law related red-tape."; + name = "\improper Nanotrasen-brand personal AI device exhibit"; + pixel_y = 3; + pixel_x = 10 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"VD" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"VI" = ( +/obj/machinery/vending/dinnerware, +/turf/open/floor/wood/large, +/area/virtual_domain) +"VK" = ( +/obj/machinery/door/airlock/wood/glass{ + name = "Cabin" + }, +/turf/open/floor/carpet, +/area/virtual_domain) +"VL" = ( +/turf/open/misc/beach/coast{ + dir = 6 + }, +/area/virtual_domain/fullbright) +"We" = ( +/obj/structure/table/bronze, +/obj/item/book/manual/wiki/barman_recipes{ + pixel_x = 9; + pixel_y = 7; + name = "Tropical Mixing for Tropical Bartenders" + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_y = 10; + pixel_x = -12 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Wg" = ( +/obj/structure/closet/crate/trashcart/filled, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"Wm" = ( +/obj/effect/landmark/bitrunning/curiosity_spawn, +/turf/open/floor/iron/white/textured_large, +/area/virtual_domain) +"Ws" = ( +/obj/machinery/vending/cigarette/beach, +/turf/open/floor/wood/large, +/area/virtual_domain) +"WG" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"WX" = ( +/obj/structure/marker_beacon/teal, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"Xe" = ( +/obj/structure/table/bronze, +/obj/structure/sign/poster/random/directional/east, +/obj/item/camera{ + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"Xl" = ( +/obj/structure/flora/tree/palm/style_2{ + pixel_y = 25 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Xt" = ( +/turf/open/floor/plastic, +/area/virtual_domain) +"Xu" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 8 + }, +/obj/structure/chair/plastic{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Xx" = ( +/obj/machinery/door/airlock/wood/glass{ + name = "Beach Access" + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"XJ" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Locker Room" + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"XO" = ( +/obj/structure/flora/tree/palm/style_2{ + pixel_y = 25 + }, +/obj/structure/chair/plastic{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"XP" = ( +/obj/structure/mop_bucket/janitorialcart{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/wood/large, +/area/virtual_domain) +"XT" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/carpet/cyan, +/area/virtual_domain) +"XW" = ( +/obj/structure/fluff/beach_umbrella/syndi, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Yb" = ( +/obj/structure/sign/poster/contraband/pwr_game/directional/west, +/turf/open/floor/eighties, +/area/virtual_domain) +"Yd" = ( +/obj/structure/flora/tree/palm/style_2{ + pixel_y = 3; + pixel_x = -4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Yo" = ( +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/fullbright) +"Yr" = ( +/obj/item/reagent_containers/cup/watering_can{ + pixel_y = 19; + pixel_x = -6 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Yz" = ( +/obj/item/trash/candy{ + pixel_y = 9; + pixel_x = -9 + }, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"YD" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"YI" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/button/door/directional/east{ + id = "toilet1beach"; + name = "restroom lock"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/structure/sink/directional/west, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/white, +/area/virtual_domain) +"YM" = ( +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"YN" = ( +/obj/item/toy/seashell{ + pixel_x = 12; + pixel_y = -5 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"YP" = ( +/obj/structure/table/glass, +/obj/item/paper{ + pixel_y = 7; + pixel_x = 2 + }, +/obj/item/screwdriver{ + pixel_y = 13; + pixel_x = 3 + }, +/obj/item/paper_bin/carbon{ + pixel_y = 4; + pixel_x = -6 + }, +/obj/effect/spawner/random/bureaucracy/pen{ + pixel_x = 7 + }, +/turf/open/floor/iron/dark/diagonal, +/area/virtual_domain) +"YR" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/vending/cola/red, +/turf/open/floor/wood/large, +/area/virtual_domain/fullbright) +"YW" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain) +"YZ" = ( +/obj/structure/railing/corner/end/flip{ + dir = 4 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain) +"Zd" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/wood, +/area/virtual_domain/fullbright) +"Zj" = ( +/obj/structure/flora/tree/palm{ + pixel_y = 16 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Zn" = ( +/obj/item/reagent_containers/cup/soda_cans/dr_gibb{ + pixel_x = -9; + pixel_y = -9 + }, +/obj/structure/fluff/beach_umbrella/engine, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"Zp" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/virtual_domain) +"Zs" = ( +/obj/machinery/door/poddoor/shutters{ + id = "BeachBoats" + }, +/turf/open/water/beach, +/area/virtual_domain/fullbright) +"Zy" = ( +/obj/structure/sign/chalkboard_menu{ + pixel_y = 32 + }, +/turf/open/floor/wood/large, +/area/virtual_domain) +"Zz" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ZB" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/button/door/directional/east{ + id = "toilet3beach"; + name = "restroom lock"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/structure/sink/directional/west, +/obj/item/cigbutt{ + pixel_y = -7; + pixel_x = -13 + }, +/obj/machinery/light/small/directional/west, +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/floor/iron/white, +/area/virtual_domain) +"ZE" = ( +/obj/structure/table/bronze, +/turf/open/floor/carpet, +/area/virtual_domain) +"ZH" = ( +/obj/item/kirbyplants/organic/plant24{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/reagent_containers/cup/watering_can{ + pixel_x = -3; + pixel_y = 15 + }, +/obj/structure/table, +/turf/open/floor/wood/large, +/area/virtual_domain) +"ZI" = ( +/obj/effect/baseturf_helper/beach/sand, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ZV" = ( +/obj/structure/chair/plastic, +/obj/item/pai_card{ + desc = "A real Nanotrasen success, these personal AIs provide all of the companionship of an AI without any law related red-tape."; + name = "\improper Nanotrasen-brand personal AI device exhibit"; + pixel_y = 3; + pixel_x = -1 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"ZX" = ( +/obj/structure/table/bronze, +/obj/item/storage/toolbox/fishing{ + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/virtual_domain) +"ZY" = ( +/obj/effect/turf_decal/siding/blue/corner{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) + +(1,1,1) = {" +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(2,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(3,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(4,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(5,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(6,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(7,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(8,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +LR +Bf +Bf +Bf +qa +cO +LR +Bf +Bf +Bf +HH +Bf +Bf +Bf +qa +cO +LR +Bf +Bf +Bf +qa +cO +cO +cO +cO +cO +cO +cO +cO +SR +SR +SR +SR +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(9,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +Jd +vF +Zd +io +tw +cO +Jd +vF +Zd +io +Jp +vF +Zd +io +tw +cO +Jd +vF +Zd +PD +tw +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(10,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +Lm +AZ +AZ +eK +cO +eK +Lm +AZ +AZ +eK +Lm +AZ +AZ +eK +cO +eK +Lm +AZ +AZ +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(11,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +CH +uY +PE +Bq +eK +Bq +MZ +gw +PE +Bq +bE +uY +oE +Bq +eK +Bq +iQ +gw +jp +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(12,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +cB +Rd +bE +db +Mb +rI +bE +cW +aQ +Bq +jw +Rd +bE +Su +Mb +EP +bE +cW +La +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(13,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +yI +gK +rE +Bq +Mb +Bq +yI +ch +Xe +Bq +wO +gK +rw +Bq +Mb +Bq +Je +Om +Zp +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(14,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +Bq +Bq +Bq +Bq +pv +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Mb +Bq +Bq +Bq +Bq +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +SR +SR +SR +SR +SR +SR +SR +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(15,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +vF +nk +bE +XT +PE +Bq +Mb +Mb +yg +Mb +Mb +Mb +Mb +yg +Mb +Mb +Mb +Mb +yg +gH +Bq +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(16,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +aw +AZ +Go +cW +bE +DU +Mb +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Mb +Bq +Bq +Bq +Bq +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(17,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +xR +AZ +Zp +Om +yQ +Bq +Mb +Bq +cr +uY +dH +Bq +Um +gw +gf +Bq +pv +Bq +lc +uY +pq +eK +cO +eH +EI +EI +EI +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(18,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +Bq +Gm +Bq +Bq +Mb +HO +bE +Rd +La +Bq +Ae +cW +bE +sW +Mb +Bk +bE +Rd +La +eK +eH +tk +qB +ka +MH +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +oX +"} +(19,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +vF +dW +bE +GX +dH +Bq +Mb +Bq +ik +gK +ZX +Bq +yI +Om +dS +Bq +Mb +Bq +ik +gK +ZX +eK +tk +CV +wZ +QI +gI +ka +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(20,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +KZ +AZ +pz +Rd +bE +JJ +Mb +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Mb +Bq +Bq +Bq +Bq +eK +BI +ka +mP +rB +bD +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(21,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +xR +AZ +BW +gK +st +Bq +Mb +Mb +yg +Mb +Bq +xg +Bq +Mb +Mb +Mb +Mb +yg +Mb +Mb +Xx +TC +JN +ka +ka +ka +ka +ka +rD +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(22,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +Bq +Bq +Bq +Bq +Mb +Bq +Bq +cH +Bq +Bq +Bq +QH +Bq +Bq +Mb +Bq +Bq +Bq +Bq +eK +NB +rD +ka +ka +ka +BI +ka +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(23,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +eK +eK +Bq +Fk +Yr +wz +Bq +Mb +Bq +Ka +gw +PE +Bq +CU +uY +bE +Bq +Mb +CS +qb +gw +pJ +eK +ka +ka +eK +Rw +eK +eK +eK +Ej +nc +EI +EI +EI +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(24,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +tf +GK +XP +Bq +pv +Bq +bE +cW +La +Bq +PE +Rd +La +Bq +Mb +Bq +wx +cW +La +eK +Sf +eK +Bq +Mb +Dx +Mb +Bq +eK +Ej +ka +ka +ka +nc +EI +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(25,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +IX +Mb +Mb +Bq +pE +Bq +ik +Om +gc +Bq +yI +gK +ZX +Bq +pE +Bq +Zp +Om +eJ +Bq +eK +Bq +jb +dY +lI +Aq +MR +Bq +eK +th +ka +ka +ka +ka +nc +EI +EI +EI +EI +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(26,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +ow +Bq +UI +Bq +Mb +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Bq +Mb +Bq +Bq +Bq +Bq +Bq +BV +Mb +Mb +ho +ho +ho +Mb +Rz +AZ +ka +sz +ka +ka +yy +ka +ka +ka +ka +ka +nc +EI +ij +cO +cO +cO +cO +eH +EI +EI +EI +EI +EI +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(27,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +LR +Bf +eK +Bq +Bq +tI +Mb +Mb +Mb +Mb +Mb +Mb +JG +Mb +Mb +Mb +Mb +Mb +Mb +JG +Mb +dj +Mb +Mb +IS +gN +Al +Mb +Mb +Mb +xw +AZ +ka +ka +ka +Md +BB +ka +ka +ka +rD +ka +ka +ka +nc +ij +cO +cO +cO +oa +sz +th +ka +ka +ka +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(28,1,1) = {" +SR +cO +cO +cO +cO +cO +LR +lS +wN +xJ +SL +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +Mb +dj +Mb +Mb +So +EY +UW +Mb +Mb +ZH +AZ +AZ +JN +ka +ka +ka +ka +ka +ka +DR +ka +ka +BD +ka +sz +nc +EI +EI +EI +tk +ka +ka +ka +ka +ka +sz +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(29,1,1) = {" +SR +cO +cO +cO +cO +cO +Jd +Yz +xJ +eK +Bq +Bq +yG +yG +Bq +Qv +Bq +Bq +Bq +Bq +Bq +DP +TY +DP +Bq +Bq +Bq +Bq +Bq +Bq +pv +LV +II +Qq +Mb +Mb +AZ +AZ +JN +JN +ka +ka +ka +ka +ka +TZ +oC +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +Oy +ka +Dg +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(30,1,1) = {" +SR +cO +cO +cO +cO +cO +Jd +mV +xJ +eK +Jb +zS +lW +lW +PJ +lW +Qu +Bq +lF +bx +jL +qH +gP +FB +NU +Bq +CQ +CQ +Bq +cK +Mb +dA +Mb +Mb +Mb +Mb +eK +sR +JN +de +JN +ka +ka +ka +rD +ka +ka +ka +ka +eK +AZ +AZ +eK +ka +eK +AZ +AZ +eK +uC +ka +ka +Nj +ka +ka +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(31,1,1) = {" +SR +cO +cO +cO +cO +cO +Ud +bT +Wg +eK +vx +lW +Ug +aY +Ug +lW +YP +Gq +zm +Wm +gP +gP +gP +gP +gP +Va +Xt +Xt +Bq +Cw +uY +zL +uY +uY +uY +uY +VK +Ty +JN +JN +JN +ka +ka +th +ka +ka +ka +ka +eK +Bq +Qx +Qx +Bq +AZ +Bq +BM +gs +Bq +eK +rD +ka +DR +LN +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(32,1,1) = {" +SR +cO +cO +cO +cO +cO +Jc +If +Wg +eK +Ks +lW +Ho +RS +Ld +lW +Rk +Bq +Mx +gP +gP +up +gP +gP +TO +Bq +Ml +Xt +Bq +uY +Rd +ZE +uY +uY +uY +Ta +eK +Ty +Ty +JN +JN +ka +ka +ka +ka +ka +ka +ka +eK +UO +en +ty +Yb +en +HR +gi +Ai +Ga +eK +ka +ka +ka +nR +ka +gL +VL +JH +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(33,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +Jc +IF +eK +HK +lW +qR +MO +pX +PJ +rG +Bq +CP +HT +gP +aD +OK +gP +Ay +Bq +Ml +Xt +Bq +Cw +uY +iF +uY +uY +uY +uY +VK +Ty +Ty +Ty +JN +ka +ka +ka +ka +ka +ka +ka +eK +Bq +Ma +xx +en +pV +Nt +dB +Mr +Mb +AZ +ka +ka +ka +rD +ka +cE +cO +cO +cO +cO +WX +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(34,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +eK +Bq +lW +lW +KT +DA +In +Bq +eK +AZ +Bq +gP +gP +gP +Bq +Bq +Bq +FE +Xt +Bq +PG +Mb +oQ +Mb +Mb +Mb +eK +eK +wf +Ty +Ty +Ty +ka +ka +ka +rD +ka +ka +sz +ka +eK +AZ +Bq +wT +wT +Ag +Mb +Vs +Mb +eK +ka +ka +ka +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(35,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +eK +lW +rW +Ry +MV +Bq +eK +zO +bb +eK +Uy +Bq +ee +Bq +Ml +Po +gB +Xt +Bq +Bq +Mb +IS +gN +Al +Mb +AZ +wf +SJ +JN +Ty +Ty +Ty +ka +ka +ka +ka +ka +ka +th +ka +JN +eK +AZ +AZ +Bq +Mb +Re +fg +eK +as +ka +ka +ka +ka +nc +ij +cO +cO +cO +cO +cO +cO +cO +JH +cO +cO +cO +cO +cO +SR +"} +(36,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +eK +lU +yG +yG +Bq +eK +IJ +xJ +xJ +xJ +xJ +eK +AZ +Bq +Ml +AK +Xt +Xt +Xt +Va +Mb +So +sh +UW +Mb +AZ +AZ +SJ +JN +JN +Ty +Ty +Ty +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +JN +eK +mx +AZ +eK +Ib +JN +ka +ka +ka +Oy +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(37,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +eK +GI +GI +YW +eK +cO +TS +mV +xJ +xJ +xJ +tw +cO +eK +Bq +yc +yc +yc +Bq +Bq +Bq +LV +Ne +Qq +Mb +Qc +AZ +SJ +JN +JN +ka +Ty +Ty +Ty +ka +ka +ka +ka +ka +ka +ka +JN +ka +ka +ta +YD +dp +ct +ka +ka +ka +JN +ka +ka +ka +NT +cO +cO +cO +cO +cO +cO +cO +cO +cO +WX +cO +cO +cO +SR +"} +(38,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +lx +uI +ba +YW +lx +cO +bp +rn +zn +Nc +yB +pC +cO +cO +eK +Bq +Bq +Bq +Bq +Sr +Bq +kD +Bq +Mb +Mb +Tt +AZ +Er +JN +rD +ka +ka +Ty +Ty +Ty +ka +ka +ka +rD +ka +JN +JN +JN +ka +JN +ka +JN +ka +JN +ka +ka +ka +ka +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(39,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +eK +Bq +zp +Bq +eK +cO +Jc +fe +du +AG +pC +cO +cO +cO +eK +hT +lh +TR +jm +TR +TR +TR +Bq +Ws +KJ +fg +eK +JN +ka +ka +ka +ka +ka +Ty +Ty +Ty +ka +ka +ka +JN +JN +JN +ka +JN +ka +JN +JN +ka +ka +ka +JN +ka +ka +FO +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +JH +cO +SR +"} +(40,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +eK +eK +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +eK +TR +TR +HV +TR +TR +eP +KI +Bq +eK +eK +eK +ka +ka +Xl +ka +sz +ka +ka +Gp +Ty +Ty +JN +JN +JN +JN +JN +ka +ka +JN +JN +ka +ka +JN +ka +ka +ka +ka +ka +RO +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(41,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +eK +Ol +TR +TR +DG +Gx +Bq +eK +eK +rD +ka +ka +ka +ka +ka +ka +ka +ka +th +ka +JN +JN +JN +JN +JN +JN +ka +NH +eK +eK +AZ +AZ +eK +eK +ky +ka +JN +ka +ka +FO +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(42,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +eK +eK +Bq +ce +cC +Bq +eK +mJ +ka +ka +ka +Yo +Yo +Yo +ka +ka +ka +ka +ka +rD +JN +JN +JN +ka +ka +JN +JN +yJ +eK +QX +hA +Ac +Sc +eK +YR +ka +ka +ka +ka +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +WX +SR +"} +(43,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +eK +eK +eK +eK +bY +Et +ka +ra +Yo +Yo +bX +Yo +Yo +sz +ka +ka +ka +ka +JN +JN +jr +ka +ka +ka +JN +eK +Bq +Qm +Mb +Mb +Mb +jK +aA +JF +ka +ka +FO +ka +gL +VL +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(44,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +UZ +Yo +bX +hh +bX +Yo +sz +ka +lA +US +IA +JN +JN +ka +ka +ka +ka +JN +mL +Mb +GK +Se +vU +Mb +rR +yN +UE +ka +ka +Bx +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(45,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +zq +Yo +bX +kN +bX +ev +ka +ka +NZ +NZ +eK +JN +JN +ka +ka +ka +ka +Sb +eK +Zy +lJ +tM +Hp +Mb +rR +yN +UE +ka +ka +FO +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +JH +SR +"} +(46,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +Bc +Yo +sl +bX +bX +Yo +sz +ka +NZ +YI +LD +JN +JN +rD +ka +ka +ka +eK +eK +pv +uD +DT +Mb +Mb +We +yN +UE +ka +ka +Eb +ka +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(47,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +Yo +Yo +bX +Yo +Yo +sz +ka +NZ +kI +eK +JN +JN +ka +ka +ka +GQ +eK +VI +Mb +si +Co +Mb +Fp +Pq +Sz +Fx +ka +ka +ka +FO +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(48,1,1) = {" +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +Yo +Yo +Yo +ka +ka +ka +NZ +Qk +Uf +JN +JN +ka +ka +ka +ka +AZ +HE +Mb +jW +Mb +Mb +dl +eK +Fx +ka +ka +ka +th +Zn +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(49,1,1) = {" +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +sz +ka +ka +ka +th +ka +eK +kI +kI +eK +JN +JN +ka +ka +ka +ka +AZ +fL +Mb +Mb +Mb +hZ +rR +UE +ka +ka +ka +ka +ka +FO +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(50,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +rD +ka +ka +ka +ka +ka +NZ +ZB +sa +JN +JN +ka +th +ka +ka +AZ +xT +Mb +Mb +Og +SO +Np +Fx +ka +as +ka +ka +ka +sC +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +WX +SR +"} +(51,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +th +ka +ka +ka +ka +ka +ka +eK +eK +eK +JN +JN +ka +ka +rD +ka +eK +xT +Do +KL +tX +Np +Fx +ka +ka +ka +ka +ka +ka +ka +gL +VL +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(52,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +ka +RM +ka +ka +ka +eK +rK +JN +JN +JN +ka +ka +ka +ka +eK +eK +AZ +AZ +eK +cc +ka +ka +ka +ka +ka +ka +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(53,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +ka +ZI +ka +ka +as +ka +cg +JN +JN +ka +ka +ka +ka +ka +ka +os +ka +eM +ka +rD +ka +ka +ka +ka +ka +rj +ka +gL +VL +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(54,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +tW +ka +ka +th +ka +ka +ka +ka +ka +JN +JN +ka +ka +ka +ka +th +ka +BI +ka +ka +as +ka +ka +ka +ka +ka +ka +xk +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +JH +SR +"} +(55,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +Rc +Of +ka +ka +rD +ka +ka +ka +ka +JN +JN +ka +ka +ka +ka +ka +ka +sz +ka +ka +ka +ka +ka +QY +fY +gA +ka +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(56,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +ka +ka +ka +ka +ka +ka +ka +ka +JN +JN +JN +lk +Or +uX +qZ +ka +ka +ka +rD +ka +ka +ka +iy +ut +OM +ka +ka +ka +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(57,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +XO +ka +ka +ka +ka +ka +ka +ka +as +JN +JN +kL +TB +ze +mv +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +th +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(58,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +ET +tW +ka +XW +CA +ka +ka +ka +JN +JN +IL +wH +ze +mv +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +ka +rD +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +WX +cO +SR +"} +(59,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +bY +CR +ka +zH +LN +DR +ka +ka +ka +JN +JN +IL +eh +ze +mv +ka +rD +ka +ka +th +ka +ka +th +ka +ka +Oy +ka +ka +BU +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(60,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +JH +cO +cO +cO +wb +bY +MT +ka +ka +ka +ka +ka +JN +JN +uz +It +It +MA +ka +ka +ka +ka +ka +ka +tW +tW +tW +tW +ka +ka +ka +il +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(61,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +TZ +RJ +ka +JN +JN +JN +Yd +ka +ka +ka +ka +dD +ka +ka +ka +TM +SM +SM +SM +SM +LY +ZY +ka +cp +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +JH +cO +cO +cO +SR +"} +(62,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +WX +cO +cO +cO +cO +cO +cO +oa +ka +FX +FX +ka +JN +JN +ka +ka +ka +ka +ka +ka +ka +sz +ZV +FO +dG +ka +ka +ka +ka +ka +PR +ka +FO +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(63,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +ka +ka +ka +JN +JN +ka +ka +ka +ka +ka +ka +OO +ka +FO +FO +dG +ka +ka +ka +ka +ka +PR +ka +ka +gL +VL +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(64,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +ka +JN +JN +ka +mi +ka +ka +ka +ka +ka +ka +FO +FO +dG +ka +ka +ka +ka +ka +PR +th +gL +VL +cO +cO +cO +cO +cO +cO +cO +cO +cO +WX +cO +cO +cO +cO +SR +"} +(65,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +JH +cO +cO +cO +cO +cO +cO +cO +oa +rD +ka +ka +JN +JN +ka +ka +ka +ka +rD +ka +JN +ka +ka +ka +dG +ka +Dg +ka +ka +ka +PR +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(66,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +ka +JN +JN +JN +JN +JN +ka +ka +ka +fI +jP +fI +lP +dG +ka +ka +ka +ka +ka +PR +Oy +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(67,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +th +ka +ka +JN +JN +JN +ka +JN +JN +ka +JN +GD +ew +fI +sO +dG +Tw +Tw +Tw +Tw +Tw +PR +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +JH +cO +cO +cO +cO +cO +cO +SR +"} +(68,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +WX +cO +cO +cO +cO +cO +cO +eH +Ko +ka +ka +rD +JN +JN +ka +yz +ka +ka +ka +Gw +fI +jP +hu +lP +dG +ka +ka +ka +ka +ka +PR +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(69,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +eH +tk +ka +ka +Dt +ka +JN +JN +ka +ka +ka +ka +JN +ka +ka +th +ka +ka +dG +ka +ka +ka +ka +ka +PR +ka +cE +cO +cO +cO +cO +cO +cO +WX +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(70,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +JH +cO +cO +eH +EI +rl +ka +ka +ka +ka +ka +JN +JN +JN +ka +ka +ka +ka +ka +ka +rD +FO +FO +dG +ka +ka +ka +ka +ka +PR +al +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(71,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +eH +tk +th +ka +ka +eK +eK +eK +eK +qc +JN +JN +ka +ka +ka +ka +ka +JN +ka +FO +FO +dG +ka +ka +ka +ka +ka +PR +ka +xj +ij +cO +cO +JH +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(72,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +Oy +eK +eK +Bq +ro +ro +fg +eK +oZ +tQ +ka +ka +eO +PZ +ka +ka +ka +FO +FO +dG +ka +ka +ka +ka +ka +PR +ka +ka +nc +ij +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(73,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +eH +tk +ka +eK +Bq +ro +Ub +Sx +Sx +Sx +XJ +bK +ii +tQ +ka +pj +fH +ka +ka +ka +ka +ka +mW +Xu +Xu +Xu +Xu +WG +lz +ka +iP +ka +lG +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(74,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +eH +tk +ka +ka +eK +ro +Sx +Sx +Sx +Sx +Sx +XJ +bK +bK +TC +ka +ka +ka +rD +ka +ka +ka +ka +th +iU +iU +iU +iU +ka +ka +ka +hB +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(75,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +oa +sz +ka +ka +eK +Bq +DS +Bq +Bq +ro +Sx +eK +bK +bK +TC +ka +ka +ka +ka +ka +ka +ka +ka +rD +ka +ka +ka +ka +ka +rD +ka +FO +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(76,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +eH +tk +ka +sz +JN +eK +KH +uu +KH +Bq +ro +Sx +TW +bK +bK +TC +ka +ka +th +ka +ka +ka +ka +ka +ka +ka +ka +ka +th +ka +ka +ka +gC +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(77,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +eK +Rs +Bq +Bq +uu +uu +Bq +Bq +Sx +TK +bK +bK +TC +ka +ka +ka +tW +tW +tW +ka +tW +tW +ka +ka +ka +ka +ka +ka +ka +FO +ka +dX +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(78,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +eK +jV +dv +Bq +KH +uu +Qj +Bq +Sx +sI +bK +bK +TC +ka +ka +ka +tW +tW +tW +ka +tW +tW +ka +ka +ka +ka +ka +sR +ka +Jv +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(79,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +oa +th +ka +eK +Tq +hD +Bq +Bq +xO +uu +Bq +Bq +zg +bK +vM +VD +ka +ka +rD +ka +ka +ka +ka +ka +ka +ka +ka +ka +tW +ka +ka +ka +Oy +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(80,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +eK +Bz +Tb +UJ +Bq +aE +uu +KH +Bq +RF +YD +VD +ka +ka +ka +ka +ka +Rf +Tr +Tr +Tr +Zz +ka +ka +FO +uH +xP +ka +ka +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +"} +(81,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +wb +MT +ka +eK +eK +jV +ke +Bq +aE +uu +KH +eK +GY +ka +ka +ka +ka +th +ka +Rf +zK +OA +OA +OA +RB +Zz +Oy +oJ +iU +ka +ka +ka +YN +gL +VL +cO +cO +cO +cO +cO +cO +cO +SR +SR +SR +SR +SR +SR +SR +"} +(82,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +oa +sz +AX +eK +IG +IG +eK +Bq +KH +Bq +eK +wI +ka +ka +ka +ka +ka +ka +rz +jq +OA +OA +OA +OA +ob +ka +ka +ka +ka +Zj +rD +gL +VL +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +"} +(83,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +ka +ka +ka +ka +ka +eK +eK +eK +kJ +ka +OV +ka +ka +ka +ka +ka +rQ +ww +OA +OA +OA +OA +py +ka +Dg +ka +ka +ka +ka +cE +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +"} +(84,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +ka +ka +ka +ka +ka +ka +sR +ka +ka +ka +ka +ka +ka +ka +KP +eK +eK +eK +eK +eK +eK +eK +Uk +ka +ka +ka +ka +gL +VL +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +"} +(85,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +Oy +ka +ka +ka +ka +ka +ka +tW +tW +ka +tW +tW +Rf +eK +Bq +RP +YM +Ub +Mj +sV +fg +eK +ka +ka +gL +bY +VL +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +"} +(86,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +th +ka +NZ +NZ +eK +ka +ka +ka +ka +ka +ka +ka +rz +Mo +Sx +jn +YZ +YZ +jn +YZ +QG +Bq +eK +bY +VL +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +SR +SR +ot +ot +ot +ot +ot +ot +"} +(87,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +ka +NZ +EA +xe +ka +ka +ef +ef +ef +ef +NC +ta +eK +DL +Dq +Dq +Dq +Dq +Dq +KS +QN +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +"} +(88,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +eK +eK +eK +ka +oq +ka +ka +ka +ka +ka +ka +eK +Bq +Aj +Aj +Aj +Aj +Aj +Hd +hM +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +"} +(89,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +PH +ka +ka +aZ +iY +ka +ka +ka +MX +ka +JU +eK +fJ +og +HP +HP +HP +HP +wC +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +SR +SR +ot +ot +ot +ot +ot +ot +ot +ot +"} +(90,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +oa +ka +ka +Oy +ka +ka +ka +ka +nX +gL +Jw +VL +eK +HI +EQ +HP +HP +HP +HP +Bq +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(91,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +MT +gV +ka +ka +fv +gL +bY +bY +VL +cO +cO +eK +eK +Zs +Iw +Iw +Iw +eK +eK +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(92,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +wb +bY +bY +bY +bY +VL +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +SR +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(93,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(94,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(95,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +SR +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(96,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(97,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +cO +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} +(98,1,1) = {" +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +SR +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +ot +"} diff --git a/_maps/virtual_domains/pirates.dmm b/_maps/virtual_domains/pirates.dmm index 28e64519e5738..5ad9c23595d64 100644 --- a/_maps/virtual_domains/pirates.dmm +++ b/_maps/virtual_domains/pirates.dmm @@ -186,7 +186,7 @@ /obj/item/melee/energy/sword/pirate{ pixel_y = 10 }, -/obj/item/clothing/mask/cigarette/cigar{ +/obj/item/cigarette/cigar{ pixel_x = 4 }, /obj/item/lighter{ diff --git a/_maps/virtual_domains/syndicate_assault.dmm b/_maps/virtual_domains/syndicate_assault.dmm index 3822d2cc1e076..a40945410c11b 100644 --- a/_maps/virtual_domains/syndicate_assault.dmm +++ b/_maps/virtual_domains/syndicate_assault.dmm @@ -296,16 +296,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) -"ki" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen/interrogation{ - name = "Cameras monitor"; - network = list("fsci"); - req_access = list("syndicate"); - screen_loc = "" - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/space/has_grav/powered/virtual_domain) "kI" = ( /obj/machinery/computer/atmos_alert{ dir = 8 @@ -864,6 +854,7 @@ /obj/structure/table/reinforced, /obj/item/paper, /obj/item/pen, +/obj/machinery/computer/security/telescreen/forgotten_ship/sci/directional/south, /turf/open/floor/carpet/royalblack, /area/ruin/space/has_grav/powered/virtual_domain) "IH" = ( @@ -2460,7 +2451,7 @@ ru Lo ru tv -ki +hD nU wb EB diff --git a/code/__DEFINES/_flags.dm b/code/__DEFINES/_flags.dm index a9b42840fdb71..72d28ca6bca9d 100644 --- a/code/__DEFINES/_flags.dm +++ b/code/__DEFINES/_flags.dm @@ -132,6 +132,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define QUIET_LOGS (1<<15) /// This area does not allow virtual entities to enter. #define VIRTUAL_SAFE_AREA (1<<16) +/// This area does not allow the Binary channel +#define BINARY_JAMMING (1<<17) /* These defines are used specifically with the atom/pass_flags bitmask diff --git a/code/__DEFINES/ai/bot_keys.dm b/code/__DEFINES/ai/bot_keys.dm index 05c0b7aff1899..c7285d18acac6 100644 --- a/code/__DEFINES/ai/bot_keys.dm +++ b/code/__DEFINES/ai/bot_keys.dm @@ -109,6 +109,18 @@ DEFINE_BITFIELD(honkbot_flags, list( ///key that holds our honk ability #define BB_HONK_ABILITY "honk_ability" +//firebot keys +///things we can extinguish +#define BB_FIREBOT_CAN_EXTINGUISH "can_extinguish" +///the target we will extinguish +#define BB_FIREBOT_EXTINGUISH_TARGET "extinguish_target" +///lines we say when we detect a fire +#define BB_FIREBOT_FIRE_DETECTED_LINES "fire_detected_lines" +///lines we say when we are idle +#define BB_FIREBOT_IDLE_LINES "idle_lines" +///lines we say when we are emagged +#define BB_FIREBOT_EMAGGED_LINES "emagged_lines" + //vibebots ///key that holds our partying ability #define BB_VIBEBOT_PARTY_ABILITY "party_ability" diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 2cc0465243e6a..04a7471a2a3b7 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -11,7 +11,7 @@ #define NUKE_RESULT_HIJACK_NO_DISK 10 /// Min players requireed for nukes to declare war -#define CHALLENGE_MIN_PLAYERS 25 // MASSMETA EDIT +#define CHALLENGE_MIN_PLAYERS 25 //MASSMETA EDIT CHANGE - ORIGINAL: #define CHALLENGE_MIN_PLAYERS 50 //fugitive end results #define FUGITIVE_RESULT_BADASS_HUNTER 0 @@ -113,6 +113,7 @@ #define CONSTRUCT_JUGGERNAUT "Juggernaut" #define CONSTRUCT_WRAITH "Wraith" #define CONSTRUCT_ARTIFICER "Artificer" +#define CONSTRUCT_HARVESTER "Harvester" /// The Classic Wizard wizard loadout. #define WIZARD_LOADOUT_CLASSIC "loadout_classic" @@ -364,6 +365,7 @@ GLOBAL_LIST_INIT(human_invader_antagonists, list( #define HUNTER_PACK_RUSSIAN "Russian Fugitive Hunters" #define HUNTER_PACK_BOUNTY "Bounty Fugitive Hunters" #define HUNTER_PACK_PSYKER "Psyker Fugitive Hunters" +#define HUNTER_PACK_MI13 "MI13 Fugitive Hunters" /// Changeling abilities with DNA cost = this are innately given to all changelings #define CHANGELING_POWER_INNATE -1 diff --git a/code/__DEFINES/cameranets.dm b/code/__DEFINES/cameranets.dm index 15b4493738e2f..935e015e0cda0 100644 --- a/code/__DEFINES/cameranets.dm +++ b/code/__DEFINES/cameranets.dm @@ -18,12 +18,22 @@ #define CAMERANET_NETWORK_XENOBIOLOGY "xeno" #define CAMERANET_NETWORK_TEST_CHAMBER "test" #define CAMERANET_NETWORK_PRISON "prison" +#define CAMERANET_NETWORK_ISOLATION "isolation" #define CAMERANET_NETWORK_MEDBAY "medbay" #define CAMERANET_NETWORK_ENGINE "engine" +#define CAMERANET_NETWORK_WASTE "waste" #define CAMERANET_NETWORK_TELECOMMS "tcomms" #define CAMERANET_NETWORK_TURBINE "turbine" #define CAMERANET_NETWORK_THUNDERDOME "thunder" #define CAMERANET_NETWORK_BAR "bar" #define CAMERANET_NETWORK_INTERROGATION "interrogation" +#define CAMERA_NETWORK_CARGO "cargo" #define CAMERANET_NETWORK_ABDUCTOR "abductor" #define OPERATIVE_CAMERA_NET "operative" + +// Ruins/Away missiosn/Misc camera nets +#define CAMERANET_NETWORK_MOON19_XENO "mo19x" +#define CAMERANET_NETWORK_MOON19_RESEARCH "mo19r" +#define CAMERANET_NETWORK_UGO45_RESEARCH "uo45r" +#define CAMERANET_NETWORK_FSCI "fsci" +#define CAMERA_NETWORK_BUNKER "bunker1" diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index d1f489f0555ef..72159bde0540e 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -72,6 +72,7 @@ #define COLOR_LIME "#32CD32" #define COLOR_DARK_LIME "#00aa00" #define COLOR_VERY_PALE_LIME_GREEN "#DDFFD3" +#define COLOR_HERETIC_GREEN COLOR_VERY_PALE_LIME_GREEN // i am co-opting this as heretic glow. #define COLOR_VERY_DARK_LIME_GREEN "#003300" #define COLOR_GREEN "#008000" #define COLOR_CHRISTMAS_GREEN "#00873E" @@ -130,6 +131,7 @@ #define COLOR_DARK_ORANGE "#C3630C" #define COLOR_PRISONER_ORANGE "#A54900" #define COLOR_DARK_MODERATE_ORANGE "#8B633B" +#define COLOR_RUSTED_GLASS "#917c65" #define COLOR_BROWN "#BA9F6D" #define COLOR_DARK_BROWN "#997C4F" diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 6246e25e93b56..dc605fd495519 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -163,13 +163,13 @@ DEFINE_BITFIELD(status_flags, list( #define DEFAULT_MESSAGE_RANGE 7 //Shove knockdown lengths (deciseconds) -#define SHOVE_KNOCKDOWN_SOLID 20 -#define SHOVE_KNOCKDOWN_HUMAN 20 -#define SHOVE_KNOCKDOWN_TABLE 20 +#define SHOVE_KNOCKDOWN_SOLID 2 SECONDS +#define SHOVE_KNOCKDOWN_HUMAN 2 SECONDS +#define SHOVE_KNOCKDOWN_TABLE 2 SECONDS #define SHOVE_KNOCKDOWN_COLLATERAL 1 -#define SHOVE_CHAIN_PARALYZE 30 +#define SHOVE_CHAIN_PARALYZE 3 SECONDS //Staggered slowdown, an effect caused by shoving and a few other features, such as tackling -#define STAGGERED_SLOWDOWN_LENGTH 30 +#define STAGGERED_SLOWDOWN_LENGTH 3 SECONDS #define STAGGERED_SLOWDOWN_STRENGTH 0.85 //multiplier //Shove disarming item list GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( @@ -180,38 +180,11 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( #define UNARMED_MISS_CHANCE_MAX 80 //Combat object defines - -//Embedded objects -///Chance for embedded objects to cause pain (damage user) -#define EMBEDDED_PAIN_CHANCE 15 -///Chance for embedded object to fall out (causing pain but removing the object) -#define EMBEDDED_ITEM_FALLOUT 5 -///Chance for an object to embed into somebody when thrown -#define EMBED_CHANCE 45 -///Coefficient of multiplication for the damage the item does while embedded (this*item.w_class) -#define EMBEDDED_PAIN_MULTIPLIER 2 -///Coefficient of multiplication for the damage the item does when it first embeds (this*item.w_class) -#define EMBEDDED_IMPACT_PAIN_MULTIPLIER 4 -///The minimum value of an item's throw_speed for it to embed (Unless it has embedded_ignore_throwspeed_threshold set to 1) +/// The minimum value of an item's throw_speed for it to embed (Unless it has embedded_ignore_throwspeed_threshold set to 1) #define EMBED_THROWSPEED_THRESHOLD 4 -///Coefficient of multiplication for the damage the item does when it falls out or is removed without a surgery (this*item.w_class) -#define EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER 6 -///A Time in ticks, total removal time = (this*item.w_class) -#define EMBEDDED_UNSAFE_REMOVAL_TIME 30 -///Chance for embedded objects to cause pain every time they move (jostle) -#define EMBEDDED_JOSTLE_CHANCE 5 -///Coefficient of multiplication for the damage the item does while -#define EMBEDDED_JOSTLE_PAIN_MULTIPLIER 1 -///This percentage of all pain will be dealt as stam damage rather than brute (0-1) -#define EMBEDDED_PAIN_STAM_PCT 0.0 -///For thrown weapons, every extra speed it's thrown at above its normal throwspeed will add this to the embed chance +/// For thrown embedding weapons, every extra speed it's thrown at above its normal throwspeed will add this to the embed chance #define EMBED_CHANCE_SPEED_BONUS 10 -#define EMBED_HARMLESS list("pain_mult" = 0, "jostle_pain_mult" = 0, "ignore_throwspeed_threshold" = TRUE) -#define EMBED_HARMLESS_SUPERIOR list("pain_mult" = 0, "jostle_pain_mult" = 0, "ignore_throwspeed_threshold" = TRUE, "embed_chance" = 100, "fall_chance" = 0.1) -#define EMBED_POINTY list("ignore_throwspeed_threshold" = TRUE) -#define EMBED_POINTY_SUPERIOR list("embed_chance" = 100, "ignore_throwspeed_threshold" = TRUE) - //Gun weapon weight #define WEAPON_LIGHT 1 #define WEAPON_MEDIUM 2 diff --git a/code/__DEFINES/cult.dm b/code/__DEFINES/cult.dm index 06393d145f8ca..005b0ca27eef8 100644 --- a/code/__DEFINES/cult.dm +++ b/code/__DEFINES/cult.dm @@ -9,6 +9,8 @@ #define RUNE_COLOR_SUMMON COLOR_VIBRANT_LIME //blood magic +/// The maximum number of cult spell slots each cultist is allowed to scribe at once. +#define ENHANCED_BLOODCHARGE 5 #define MAX_BLOODCHARGE 4 #define RUNELESS_MAX_BLOODCHARGE 1 /// percent before rise @@ -28,6 +30,8 @@ #define THEME_CULT "cult" #define THEME_WIZARD "wizard" #define THEME_HOLY "holy" +/// Only used for heretic Harvesters, obtained from sacrificing cultists +#define THEME_HERETIC "heretic" /// Defines for cult item_dispensers. #define PREVIEW_IMAGE "preview" @@ -51,3 +55,8 @@ GLOBAL_LIST(sacrificed) #define CULT_VICTORY 1 #define CULT_LOSS 0 #define CULT_NARSIE_KILLED -1 + +// Used to keep track of items rewarded after a heretic is sacked. +#define CURSED_BLADE_UNLOCKED "Cursed Blade" +#define CRIMSON_FOCUS_UNLOCKED "Crimson Focus" +#define PROTEON_ORB_UNLOCKED "Proteon Orb" diff --git a/code/__DEFINES/dcs/signals/signals_area.dm b/code/__DEFINES/dcs/signals/signals_area.dm index 762431788f258..b136f46467f56 100644 --- a/code/__DEFINES/dcs/signals/signals_area.dm +++ b/code/__DEFINES/dcs/signals/signals_area.dm @@ -35,3 +35,6 @@ #define COMSIG_WEATHER_BEGAN_IN_AREA(event_type) "weather_began_in_area_[event_type]" /// Called when some weather ends in this area #define COMSIG_WEATHER_ENDED_IN_AREA(event_type) "weather_ended_in_area_[event_type]" + +///From base of area/update_beauty() +#define COMSIG_AREA_BEAUTY_UPDATED "area_beauty_updated" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm index 3725c549df4e5..c612d174ac354 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm @@ -134,6 +134,9 @@ ///cancel clean #define COMSIG_ATOM_CANCEL_CLEAN (1<<0) +/// From /obj/item/stack/make_item() +#define COMSIG_ATOM_CONSTRUCTED "atom_constructed" + /// From /obj/effect/particle_effect/sparks/proc/sparks_touched(datum/source, atom/movable/singed) #define COMSIG_ATOM_TOUCHED_SPARKS "atom_touched_sparks" #define COMSIG_ATOM_TOUCHED_HAZARDOUS_SPARKS "atom_touched_hazardous_sparks" diff --git a/code/__DEFINES/dcs/signals/signals_bitrunning.dm b/code/__DEFINES/dcs/signals/signals_bitrunning.dm index 150c26080221c..23461a90a1108 100644 --- a/code/__DEFINES/dcs/signals/signals_bitrunning.dm +++ b/code/__DEFINES/dcs/signals/signals_bitrunning.dm @@ -42,8 +42,14 @@ #define COMSIG_BITRUNNER_STATION_SPAWN "bitrunner_station_spawn" // Ladder + /// from /obj/structure/hololadder/disconnect() #define COMSIG_BITRUNNER_LADDER_SEVER "bitrunner_ladder_sever" /// Sent when a server console is emagged #define COMSIG_BITRUNNER_SERVER_EMAGGED "bitrunner_server_emagged" + +// Spawners + +/// from /obj/effect/mob_spawn/ghost_role/human/virtual_domain/proc/artificial_spawn() : (mob/living/runner) +#define COMSIG_BITRUNNER_SPAWNED "bitrunner_spawned" diff --git a/code/__DEFINES/dcs/signals/signals_closet.dm b/code/__DEFINES/dcs/signals/signals_closet.dm index fb78d69b8a11b..8945e876ccb5f 100644 --- a/code/__DEFINES/dcs/signals/signals_closet.dm +++ b/code/__DEFINES/dcs/signals/signals_closet.dm @@ -1,2 +1,2 @@ /// Called in /obj/structure/closet/PopulateContents() -#define COMSIG_CLOSET_POPULATE_CONTENTS "closet_populate_contents" +#define COMSIG_CLOSET_CONTENTS_INITIALIZED "closet_initialize_contents" diff --git a/code/__DEFINES/dcs/signals/signals_fish.dm b/code/__DEFINES/dcs/signals/signals_fish.dm index c70cdfde1a3f3..5b01bd7d61299 100644 --- a/code/__DEFINES/dcs/signals/signals_fish.dm +++ b/code/__DEFINES/dcs/signals/signals_fish.dm @@ -1,6 +1,12 @@ // Aquarium related signals #define COMSIG_AQUARIUM_SURFACE_CHANGED "aquarium_surface_changed" #define COMSIG_AQUARIUM_FLUID_CHANGED "aquarium_fluid_changed" +///Called on aquarium/attackby: (aquarium) +#define COMSIG_TRY_INSERTING_IN_AQUARIUM "item_try_inserting_in_aquarium" + ///The item will be inserted into the aquarium + #define COMSIG_CAN_INSERT_IN_AQUARIUM (1<<0) + ///The item won't be inserted into the aquarium, but will early return attackby anyway. + #define COMSIG_CANNOT_INSERT_IN_AQUARIUM (1<<1) // Fish signals #define COMSIG_FISH_STATUS_CHANGED "fish_status_changed" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm index 2f011f2e5a326..598ddc5187852 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm @@ -158,7 +158,7 @@ /// Return to skip default nutrition -> blood conversion #define HANDLE_BLOOD_NO_NUTRITION_DRAIN (1<<1) /// Return to skip oxyloss and similar effecst from blood level - #define HANDLE_BLOOD_NO_EFFECTS (1<<2) + #define HANDLE_BLOOD_NO_OXYLOSS (1<<2) /// from /datum/status_effect/limp/proc/check_step(mob/whocares, OldLoc, Dir, forced) iodk where it shuld go #define COMSIG_CARBON_LIMPING "mob_limp_check" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm index 1515c8b7347ff..517048bbd4d1d 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm @@ -178,6 +178,7 @@ #define TREAT_MESSAGE_ARG 1 #define TREAT_TTS_MESSAGE_ARG 2 #define TREAT_TTS_FILTER_ARG 3 + #define TREAT_CAPITALIZE_MESSAGE 4 ///From obj/item/toy/crayon/spraycan #define COMSIG_LIVING_MOB_PAINTED "living_mob_painted" @@ -203,6 +204,10 @@ #define STOP_SACRIFICE (1<<0) /// Don't send a message for sacrificing this thing, we have our own #define SILENCE_SACRIFICE_MESSAGE (1<<1) + /// Don't send a message for sacrificing this thing UNLESS it's the cult target + #define SILENCE_NONTARGET_SACRIFICE_MESSAGE (1<<2) + /// Dusts the target instead of gibbing them (no soulstone) + #define DUST_SACRIFICE (1<<3) /// From /mob/living/befriend() : (mob/living/new_friend) #define COMSIG_LIVING_BEFRIENDED "living_befriended" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm index 8ada1c30be3c3..8be5b1fdb64aa 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm @@ -155,7 +155,7 @@ ///Mob is trying to open the wires of a target [/atom], from /datum/wires/interactable(): (atom/target) #define COMSIG_TRY_WIRES_INTERACT "try_wires_interact" #define COMPONENT_CANT_INTERACT_WIRES (1<<0) -///Mob is trying to emote, from /datum/emote/proc/run_emote(): (key, params, type_override, intentional) +///Mob is trying to emote, from /datum/emote/proc/run_emote(): (key, params, type_override, intentional, emote) #define COMSIG_MOB_PRE_EMOTED "mob_pre_emoted" #define COMPONENT_CANT_EMOTE (1<<0) #define COMSIG_MOB_EMOTED(emote_key) "mob_emoted_[emote_key]" @@ -205,7 +205,7 @@ ///Sent by pilot of mech in /obj/vehicle/sealed/mecha/on_mouseclick when using mech equipment : (/obj/vehicle/sealed/mecha/mech) #define COMSIG_MOB_USED_MECH_EQUIPMENT "mob_used_mech_equipment" ///Sent by pilot of mech in /obj/vehicle/sealed/mecha/on_mouseclick when triggering mech punch : (/obj/vehicle/sealed/mecha/mech) -#define COMSIG_MOB_USED_MECH_MELEE "mob_used_mech_melee" +#define COMSIG_MOB_USED_CLICK_MECH_MELEE "mob_used_click_mech_melee" ///from living/flash_act(), when a mob is successfully flashed. #define COMSIG_MOB_FLASHED "mob_flashed" diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index d92408f2192e7..d34de1e356792 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -340,6 +340,10 @@ #define COMSIG_GUN_CHAMBER_PROCESSED "gun_chamber_processed" ///called in /obj/item/gun/ballistic/process_chamber (casing) #define COMSIG_CASING_EJECTED "casing_ejected" +///called in /obj/item/gun/ballistic/sawoff(mob/user, obj/item/saw, handle_modifications) : (mob/user) +#define COMSIG_GUN_BEING_SAWNOFF "gun_being_sawnoff" + #define COMPONENT_CANCEL_SAWING_OFF (1<<0) +#define COMSIG_GUN_SAWN_OFF "gun_sawn_off" // Jetpack things // Please kill me diff --git a/code/__DEFINES/dcs/signals/signals_xeno_control.dm b/code/__DEFINES/dcs/signals/signals_xeno_control.dm index c67756a64f385..660dc9ce44627 100644 --- a/code/__DEFINES/dcs/signals/signals_xeno_control.dm +++ b/code/__DEFINES/dcs/signals/signals_xeno_control.dm @@ -1,7 +1,5 @@ //Xenobio hotkeys -///from slime AltClickOn(): (/mob) -#define COMSIG_XENO_SLIME_CLICK_ALT "xeno_slime_click_alt" ///from slime ShiftClickOn(): (/mob) #define COMSIG_XENO_SLIME_CLICK_SHIFT "xeno_slime_click_shift" ///from turf ShiftClickOn(): (/mob) diff --git a/code/__DEFINES/economy.dm b/code/__DEFINES/economy.dm index 47e3db38e11c8..5ffa92c05b691 100644 --- a/code/__DEFINES/economy.dm +++ b/code/__DEFINES/economy.dm @@ -64,7 +64,8 @@ #define CIV_JOB_MED 11 #define CIV_JOB_GROW 12 #define CIV_JOB_ATMOS 13 -#define CIV_JOB_RANDOM 14 +#define CIV_JOB_BITRUN 14 +#define CIV_JOB_RANDOM 15 //These defines are to be used to with the payment component, determines which lines will be used during a transaction. If in doubt, go with clinical. #define PAYMENT_CLINICAL "clinical" diff --git a/code/__DEFINES/exosuit_fab.dm b/code/__DEFINES/exosuit_fab.dm index 4cc21f210d61d..4fd921bdeb777 100644 --- a/code/__DEFINES/exosuit_fab.dm +++ b/code/__DEFINES/exosuit_fab.dm @@ -35,10 +35,12 @@ #define EXOSUIT_MODULE_MARAUDER (1<<10) /// Module is compatible with Paddy models #define EXOSUIT_MODULE_PADDY (1<<11) +/// Module is compatible with Justice models +#define EXOSUIT_MODULE_JUSTICE (1<<12) /// Module is compatible with "Working" Exosuit models - Ripley and Clarke #define EXOSUIT_MODULE_WORKING (EXOSUIT_MODULE_RIPLEY | EXOSUIT_MODULE_CLARKE) /// Module is compatible with "Combat" Exosuit models - Gygax, H.O.N.K, Durand and Phazon, or any Exosuit with an empty Concealed Weapon Bay -#define EXOSUIT_MODULE_COMBAT (EXOSUIT_MODULE_GYGAX | EXOSUIT_MODULE_HONK | EXOSUIT_MODULE_DURAND | EXOSUIT_MODULE_PHAZON | EXOSUIT_MODULE_SAVANNAH | EXOSUIT_MODULE_RETICENCE | EXOSUIT_MODULE_MARAUDER | EXOSUIT_MODULE_PADDY | EXOSUIT_MODULE_CONCEALED_WEP_BAY) +#define EXOSUIT_MODULE_COMBAT (EXOSUIT_MODULE_GYGAX | EXOSUIT_MODULE_HONK | EXOSUIT_MODULE_DURAND | EXOSUIT_MODULE_PHAZON | EXOSUIT_MODULE_SAVANNAH | EXOSUIT_MODULE_RETICENCE | EXOSUIT_MODULE_MARAUDER | EXOSUIT_MODULE_PADDY | EXOSUIT_MODULE_JUSTICE | EXOSUIT_MODULE_CONCEALED_WEP_BAY) /// Module is compatible with "Medical" Exosuit modelsm - Odysseus #define EXOSUIT_MODULE_MEDICAL EXOSUIT_MODULE_ODYSSEUS diff --git a/code/__DEFINES/fish.dm b/code/__DEFINES/fish.dm index 8e03c920d248d..36903049e895b 100644 --- a/code/__DEFINES/fish.dm +++ b/code/__DEFINES/fish.dm @@ -152,3 +152,12 @@ #define ELECTROGENESIS_DURATION 40 SECONDS /// a random range the electrogenesis cooldown varies by #define ELECTROGENESIS_VARIANCE (rand(-10 SECONDS, 10 SECONDS)) + +#define FISH_BEAUTY_DISGUSTING -500 +#define FISH_BEAUTY_UGLY -300 +#define FISH_BEAUTY_BAD -200 +#define FISH_BEAUTY_NULL 0 +#define FISH_BEAUTY_GENERIC 250 +#define FISH_BEAUTY_GOOD 450 +#define FISH_BEAUTY_GREAT 600 +#define FISH_BEAUTY_EXCELLENT 700 diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm index 94e9105f4a387..a853fde0c5dee 100644 --- a/code/__DEFINES/icon_smoothing.dm +++ b/code/__DEFINES/icon_smoothing.dm @@ -3,34 +3,33 @@ #define SMOOTH_CORNERS (1<<0) /// Smoothing system in where adjacencies are calculated and used to select a pre-baked icon_state, encoded by bitmasking. #define SMOOTH_BITMASK (1<<1) +/// Limits SMOOTH_BITMASK to only cardinal directions, for use with cardinal smoothing +#define SMOOTH_BITMASK_CARDINALS (1<<2) /// Atom has diagonal corners, with underlays under them. -#define SMOOTH_DIAGONAL_CORNERS (1<<2) +#define SMOOTH_DIAGONAL_CORNERS (1<<3) /// Atom will smooth with the borders of the map. -#define SMOOTH_BORDER (1<<3) +#define SMOOTH_BORDER (1<<4) /// Atom is currently queued to smooth. -#define SMOOTH_QUEUED (1<<4) +#define SMOOTH_QUEUED (1<<5) /// Smooths with objects, and will thus need to scan turfs for contents. -#define SMOOTH_OBJ (1<<5) +#define SMOOTH_OBJ (1<<6) /// Uses directional object smoothing, so we care not only about something being on the right turf, but also its direction /// Changes the meaning of smoothing_junction, instead of representing the directions we are smoothing in /// it represents the sides of our directional border object that have a neighbor /// Is incompatible with SMOOTH_CORNERS because border objects don't have corners -#define SMOOTH_BORDER_OBJECT (1<<6) -/// Has a smooth broken sprite, used to decide whether to apply an offset to the broken overlay or not. For /turf/open only. -#define SMOOTH_BROKEN_TURF (1<<7) -/// Has a smooth burnt sprite, used to decide whether to apply an offset to the burnt overlay or not. For /turf/open only. -#define SMOOTH_BURNT_TURF (1<<8) +#define SMOOTH_BORDER_OBJECT (1<<7) + +#define USES_SMOOTHING (SMOOTH_CORNERS|SMOOTH_BITMASK|SMOOTH_BITMASK_CARDINALS) DEFINE_BITFIELD(smoothing_flags, list( "SMOOTH_CORNERS" = SMOOTH_CORNERS, "SMOOTH_BITMASK" = SMOOTH_BITMASK, + "SMOOTH_BITMASK_CARDINALS" = SMOOTH_BITMASK_CARDINALS, "SMOOTH_DIAGONAL_CORNERS" = SMOOTH_DIAGONAL_CORNERS, "SMOOTH_BORDER" = SMOOTH_BORDER, "SMOOTH_QUEUED" = SMOOTH_QUEUED, "SMOOTH_OBJ" = SMOOTH_OBJ, "SMOOTH_BORDER_OBJECT" = SMOOTH_BORDER_OBJECT, - "SMOOTH_BROKEN_TURF" = SMOOTH_BROKEN_TURF, - "SMOOTH_BURNT_TURF" = SMOOTH_BURNT_TURF, )) /// Components of a smoothing junction @@ -44,6 +43,9 @@ DEFINE_BITFIELD(smoothing_flags, list( #define SOUTHWEST_JUNCTION (1<<6) #define NORTHWEST_JUNCTION (1<<7) +#define CARDINAL_SMOOTHING_JUNCTIONS (NORTH_JUNCTION|SOUTH_JUNCTION|EAST_JUNCTION|WEST_JUNCTION) +#define ALL_SMOOTHING_JUNCTIONS (NORTH_JUNCTION|SOUTH_JUNCTION|EAST_JUNCTION|WEST_JUNCTION|NORTHEAST_JUNCTION|SOUTHEAST_JUNCTION|SOUTHWEST_JUNCTION|NORTHWEST_JUNCTION) + DEFINE_BITFIELD(smoothing_junction, list( "NORTH_JUNCTION" = NORTH_JUNCTION, "SOUTH_JUNCTION" = SOUTH_JUNCTION, @@ -57,7 +59,7 @@ DEFINE_BITFIELD(smoothing_junction, list( /*smoothing macros*/ -#define QUEUE_SMOOTH(thing_to_queue) if(thing_to_queue.smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) {SSicon_smooth.add_to_queue(thing_to_queue)} +#define QUEUE_SMOOTH(thing_to_queue) if(thing_to_queue.smoothing_flags & USES_SMOOTHING) {SSicon_smooth.add_to_queue(thing_to_queue)} #define QUEUE_SMOOTH_NEIGHBORS(thing_to_queue) for(var/atom/atom_neighbor as anything in orange(1, thing_to_queue)) {QUEUE_SMOOTH(atom_neighbor)} diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 3430f97dd7dcd..0d9d28d4d858a 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -49,6 +49,8 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list( #define isspaceturf(A) (istype(A, /turf/open/space)) +#define is_space_or_openspace(A) (isopenspaceturf(A) || isspaceturf(A)) + #define isfloorturf(A) (istype(A, /turf/open/floor)) #define ismiscturf(A) (istype(A, /turf/open/misc)) @@ -231,6 +233,8 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list( #define islandmine(A) (istype(A, /obj/effect/mine)) +#define iscloset(A) (istype(A, /obj/structure/closet)) + #define issupplypod(A) (istype(A, /obj/structure/closet/supplypod)) #define isammocasing(A) (istype(A, /obj/item/ammo_casing)) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 08a771bf7ddf6..999d7886cf466 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -122,23 +122,36 @@ // PLANE_SPACE layer(s) #define SPACE_LAYER 1.8 -//#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define. Most floors (FLOOR_PLANE) and walls (WALL_PLANE) use this. - -//FLOOR_PLANE layers -#define TURF_PLATING_DECAL_LAYER 2.001 -#define TURF_DECAL_LAYER 2.009 //Makes turf decals appear in DM how they will look inworld. -#define CULT_OVERLAY_LAYER 2.01 -#define MID_TURF_LAYER 2.02 -#define HIGH_TURF_LAYER 2.03 -#define LATTICE_LAYER 2.04 -#define DISPOSAL_PIPE_LAYER 2.042 -#define WIRE_LAYER 2.044 -#define GLASS_FLOOR_LAYER 2.046 -#define TRAM_RAIL_LAYER 2.047 -#define ABOVE_OPEN_TURF_LAYER 2.049 +// placed here for documentation. Byond's default turf layer +// We do not use it, as different turfs render on different planes +// #define TURF_LAYER 2 +#define TURF_LAYER 2 #error TURF_LAYER is no longer supported, please be more specific + +// FLOOR_PLANE layer(s) +// We need to force this plane to render as if we were not using sidemap +// this allows larger then bound floors to layer as we'd expect +// ANYTHING on the floor plane needs TOPDOWN_LAYER, and nothing that isn't on the floor plane can have it + +// NOTICE: we break from the pattern of increasing in steps of like 0.01 here +// Because TOPDOWN_LAYER is 10000 and that's enough to floating point our modifications away +#define LOW_FLOOR_LAYER (1 + TOPDOWN_LAYER) +#define TURF_PLATING_DECAL_LAYER (2 + TOPDOWN_LAYER) +#define TURF_DECAL_LAYER (3 + TOPDOWN_LAYER) //Makes turf decals appear in DM how they will look inworld. +#define CULT_OVERLAY_LAYER (4 + TOPDOWN_LAYER) +#define MID_TURF_LAYER (5 + TOPDOWN_LAYER) +#define HIGH_TURF_LAYER (6 + TOPDOWN_LAYER) +#define LATTICE_LAYER (7 + TOPDOWN_LAYER) +#define DISPOSAL_PIPE_LAYER (8 + TOPDOWN_LAYER) +#define WIRE_LAYER (9 + TOPDOWN_LAYER) +#define GLASS_FLOOR_LAYER (10 + TOPDOWN_LAYER) +#define TRAM_RAIL_LAYER (11 + TOPDOWN_LAYER) +///catwalk overlay of /turf/open/floor/plating/catwalk_floor +#define CATWALK_LAYER (12 + TOPDOWN_LAYER) +#define ABOVE_OPEN_TURF_LAYER (13 + TOPDOWN_LAYER) //WALL_PLANE layers -#define CLOSED_TURF_LAYER 2.05 +#define BELOW_CLOSED_TURF_LAYER 2.053 +#define CLOSED_TURF_LAYER 2.058 // GAME_PLANE layers #define BULLET_HOLE_LAYER 2.06 @@ -153,8 +166,6 @@ #define PLUMBING_PIPE_VISIBILE_LAYER 2.495//layer = initial(layer) + ducting_layer / 3333 in atmospherics/handle_layer() to determine order of duct overlap #define BOT_PATH_LAYER 2.497 #define LOW_OBJ_LAYER 2.5 -///catwalk overlay of /turf/open/floor/plating/catwalk_floor -#define CATWALK_LAYER 2.51 #define LOW_SIGIL_LAYER 2.52 #define SIGIL_LAYER 2.53 #define HIGH_PIPE_LAYER 2.54 diff --git a/code/__DEFINES/living.dm b/code/__DEFINES/living.dm index 1f2316e8e1240..63993f4bc620b 100644 --- a/code/__DEFINES/living.dm +++ b/code/__DEFINES/living.dm @@ -1,3 +1,6 @@ // living_flags /// Simple mob trait, indicating it may follow continuous move actions controlled by code instead of by user input. #define MOVES_ON_ITS_OWN (1<<0) +/// Always does *deathgasp when they die +/// If unset mobs will only deathgasp if supplied a death sound or custom death message +#define ALWAYS_DEATHGASP (1<<1) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index f1a48df79faee..4265428e56f9b 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -16,10 +16,11 @@ #define BLOOD_VOLUME_MAXIMUM 2000 #define BLOOD_VOLUME_SLIME_SPLIT 1120 #define BLOOD_VOLUME_NORMAL 560 -#define BLOOD_VOLUME_SAFE 475 -#define BLOOD_VOLUME_OKAY 336 -#define BLOOD_VOLUME_BAD 224 -#define BLOOD_VOLUME_SURVIVE 122 +#define BLOOD_VOLUME_SAFE (BLOOD_VOLUME_NORMAL * (1 - 0.15)) // Latter number is percentage of blood lost, for readability! +#define BLOOD_VOLUME_OKAY (BLOOD_VOLUME_NORMAL * (1 - 0.30)) +#define BLOOD_VOLUME_RISKY (BLOOD_VOLUME_NORMAL * (1 - 0.45)) +#define BLOOD_VOLUME_BAD (BLOOD_VOLUME_NORMAL * (1 - 0.60)) +#define BLOOD_VOLUME_SURVIVE (BLOOD_VOLUME_NORMAL * (1 - 0.80)) /// How efficiently humans regenerate blood. #define BLOOD_REGEN_FACTOR 0.25 @@ -837,8 +838,10 @@ GLOBAL_LIST_INIT(layers_to_offset, list( #define NEED_VENTCRAWL (1<<8) /// Skips adjacency checks #define BYPASS_ADJACENCY (1<<9) +/// Skips reccursive loc checks +#define NOT_INSIDE_TARGET (1<<10) /// Checks for base adjacency, but silences the error -#define SILENT_ADJACENCY (1<<10) +#define SILENT_ADJACENCY (1<<11) /// The default mob sprite size (used for shrinking or enlarging the mob sprite to regular size) #define RESIZE_DEFAULT_SIZE 1 diff --git a/code/__DEFINES/mod.dm b/code/__DEFINES/mod.dm index d5db36e937f48..15c37745d982e 100644 --- a/code/__DEFINES/mod.dm +++ b/code/__DEFINES/mod.dm @@ -5,8 +5,7 @@ #define DEFAULT_CHARGE_DRAIN (0.005 * STANDARD_CELL_CHARGE) // A standard cell lasts 200 seconds with this on active power usage, while a high power one lasts 2,000 seconds. /// Default time for a part to seal -/// MASSMETA EDIT: was 2 seconds instead of 0.4 -#define MOD_ACTIVATION_STEP_TIME (0.4 SECONDS) +#define MOD_ACTIVATION_STEP_TIME (0.5 SECONDS) //MASSMETA EDIT CHANGE - ORIGINAL: #define MOD_ACTIVATION_STEP_TIME (2 SECONDS) /// Passive module, just acts when put in naturally. #define MODULE_PASSIVE 0 diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index c050c73f23133..9f575de9fbc55 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -75,20 +75,18 @@ #define DANGEROUS_OBJECT (1<<10) /// Clothes that use large icons, for applying the proper overlays like blood #define LARGE_WORN_ICON (1<<11) -/// Clothes that block speech (i.e the muzzle). Can be applied to any clothing piece. -#define BLOCKS_SPEECH (1<<12) /// prevents from placing on plasmaman helmet or modsuit hat holder -#define STACKABLE_HELMET_EXEMPT (1<<13) +#define STACKABLE_HELMET_EXEMPT (1<<12) /// Prevents plasmamen from igniting when wearing this -#define PLASMAMAN_PREVENT_IGNITION (1<<14) +#define PLASMAMAN_PREVENT_IGNITION (1<<13) /// Usable as casting clothes by wizards (matters for suits, glasses and headwear) -#define CASTING_CLOTHES (1<<15) +#define CASTING_CLOTHES (1<<14) ///Moths can't eat the clothing that has this flag. -#define INEDIBLE_CLOTHING (1<<16) +#define INEDIBLE_CLOTHING (1<<15) /// Headgear/helmet allows internals -#define HEADINTERNALS (1<<17) +#define HEADINTERNALS (1<<16) /// Prevents masks from getting adjusted from enabling internals -#define INTERNALS_ADJUST_EXEMPT (1<<18) +#define INTERNALS_ADJUST_EXEMPT (1<<17) /// Integrity defines for clothing (not flags but close enough) #define CLOTHING_PRISTINE 0 // We have no damage on the clothing diff --git a/code/__DEFINES/research/research_categories.dm b/code/__DEFINES/research/research_categories.dm index 3f6428eb73178..cd7a216bc9c9d 100644 --- a/code/__DEFINES/research/research_categories.dm +++ b/code/__DEFINES/research/research_categories.dm @@ -134,6 +134,7 @@ #define RND_CATEGORY_MECHFAB_PHAZON "/Phazon" #define RND_CATEGORY_MECHFAB_CLARKE "/Clarke" #define RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV "/Savannah-Ivanov" +#define RND_CATEGORY_MECHFAB_JUSTICE "/Justice" #define RND_SUBCATEGORY_MECHFAB_CHASSIS "/Chassis" #define RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT "/Supported Equipment" #define RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES "/Control Interfaces" diff --git a/code/__DEFINES/research/techweb_nodes.dm b/code/__DEFINES/research/techweb_nodes.dm new file mode 100644 index 0000000000000..6199918bc0183 --- /dev/null +++ b/code/__DEFINES/research/techweb_nodes.dm @@ -0,0 +1,121 @@ +#define TECHWEB_NODE_AI "ai" +#define TECHWEB_NODE_AI_LAWS "ai_laws" +#define TECHWEB_NODE_ALIEN_ENGI "alien_engi" +#define TECHWEB_NODE_ALIEN_SURGERY "alien_surgery" +#define TECHWEB_NODE_ALIENTECH "alientech" +#define TECHWEB_NODE_ANOMALY_RESEARCH "anomaly_research" +#define TECHWEB_NODE_ANOMALY_SHELLS "anomaly_shells" +#define TECHWEB_NODE_APPLIED_BLUESPACE "applied_bluespace" +#define TECHWEB_NODE_ATMOS "atmos" +#define TECHWEB_NODE_AUGMENTATION "augmentation" +#define TECHWEB_NODE_AUS_SECURITY "aus_security" +#define TECHWEB_NODE_BASIC_ARMS "basic_arms" +#define TECHWEB_NODE_BCI "bci" +#define TECHWEB_NODE_BEAM_WEAPONS "beam_weapons" +#define TECHWEB_NODE_BIO_SCAN "bio_scan" +#define TECHWEB_NODE_BITRUNNING "bitrunning" +#define TECHWEB_NODE_BLUESPACE "bluespace" +#define TECHWEB_NODE_BLUESPACE_THEORY "bluespace_theory" +#define TECHWEB_NODE_BLUESPACE_TRAVEL "bluespace_travel" +#define TECHWEB_NODE_BORG_ENGI "borg_engi" +#define TECHWEB_NODE_BORG_MEDICAL "borg_medical" +#define TECHWEB_NODE_BORG_MINING "borg_mining" +#define TECHWEB_NODE_BORG_SERVICES "borg_services" +#define TECHWEB_NODE_BORG_UTILITY "borg_utility" +#define TECHWEB_NODE_BOTANY_EQUIP "botany_equip" +#define TECHWEB_NODE_CAFETERIA_EQUIP "cafeteria_equip" +#define TECHWEB_NODE_CHEM_SYNTHESIS "chem_synthesis" +#define TECHWEB_NODE_CIRCUIT_SHELLS "circuit_shells" +#define TECHWEB_NODE_COMBAT_IMPLANTS "combat_implants" +#define TECHWEB_NODE_CONSOLES "consoles" +#define TECHWEB_NODE_CONSTRUCTION "construction" +#define TECHWEB_NODE_CRYOSTASIS "cryostasis" +#define TECHWEB_NODE_CYBER_IMPLANTS "cyber_implants" +#define TECHWEB_NODE_CYBER_ORGANS "cyber_organs" +#define TECHWEB_NODE_CYBER_ORGANS_ADV "cyber_organs_adv" +#define TECHWEB_NODE_CYBER_ORGANS_UPGRADED "cyber_organs_upgraded" +#define TECHWEB_NODE_CYBERNETICS "cybernetics" +#define TECHWEB_NODE_CYTOLOGY "cytology" +#define TECHWEB_NODE_ELECTRIC_WEAPONS "electric_weapons" +#define TECHWEB_NODE_ENERGY_MANIPULATION "energy_manipulation" +#define TECHWEB_NODE_EXODRONE "exodrone" +#define TECHWEB_NODE_EXOTIC_AMMO "exotic_ammo" +#define TECHWEB_NODE_EXP_TOOLS "exp_tools" +#define TECHWEB_NODE_EXPLOSIVES "explosives" +#define TECHWEB_NODE_EXTREME_OFFICE "extreme_office" +#define TECHWEB_NODE_FISHING_EQUIP "fishing_equip" +#define TECHWEB_NODE_FISHING_EQUIP_ADV "fishing_equip_adv" +#define TECHWEB_NODE_FOOD_PROC "food_proc" +#define TECHWEB_NODE_FUNDIMENTAL_SCI "fundimental_sci" +#define TECHWEB_NODE_FUSION "fusion" +#define TECHWEB_NODE_GAMING "gaming" +#define TECHWEB_NODE_GAS_COMPRESSION "gas_compression" +#define TECHWEB_NODE_GENE_ENGINEERING "gene_engineering" +#define TECHWEB_NODE_HOLOGRAPHICS "holographics" +#define TECHWEB_NODE_HUD "hud" +#define TECHWEB_NODE_HYDROPONICS "hydroponics" +#define TECHWEB_NODE_INTERGRATED_TOOLSETS "intergrated_toolsets" +#define TECHWEB_NODE_INTERROGATION "interrogation" +#define TECHWEB_NODE_LIGHT_APPS "light_apps" +#define TECHWEB_NODE_LOW_PRESSURE_EXCAVATION "low_pressure_excavation" +#define TECHWEB_NODE_MARINE_UTIL "marine_util" +#define TECHWEB_NODE_MATERIAL_PROC "material_proc" +#define TECHWEB_NODE_MECH_ASSAULT "mech_assault" +#define TECHWEB_NODE_MECH_ASSEMBLY "mech_assembly" +#define TECHWEB_NODE_MECH_CLOWN "mech_clown" +#define TECHWEB_NODE_MECH_COMBAT "mech_combat" +#define TECHWEB_NODE_MECH_ENERGY_GUNS "mech_energy_guns" +#define TECHWEB_NODE_MECH_EQUIPMENT "mech_equipment" +#define TECHWEB_NODE_MECH_FIREARMS "mech_firearms" +#define TECHWEB_NODE_MECH_HEAVY "mech_heavy" +#define TECHWEB_NODE_MECH_HEAVY_ARMS "mech_heavy_arms" +#define TECHWEB_NODE_MECH_INFILTRATOR "mech_infiltrator" +#define TECHWEB_NODE_MECH_LIGHT "mech_light" +#define TECHWEB_NODE_MECH_MEDICAL "mech_medical" +#define TECHWEB_NODE_MECH_MINING "mech_mining" +#define TECHWEB_NODE_MEDBAY_EQUIP "medbay_equip" +#define TECHWEB_NODE_MEDBAY_EQUIP_ADV "medbay_equip_adv" +#define TECHWEB_NODE_MINING "mining" +#define TECHWEB_NODE_MINING_ADV "mining_adv" +#define TECHWEB_NODE_MOD_ANOMALY "mod_anomaly" +#define TECHWEB_NODE_MOD_ENGI "mod_engi" +#define TECHWEB_NODE_MOD_ENGI_ADV "mod_engi_adv" +#define TECHWEB_NODE_MOD_ENTERTAINMENT "mod_entertainment" +#define TECHWEB_NODE_MOD_EQUIP "mod_equip" +#define TECHWEB_NODE_MOD_EXPERIMENTAL "mod_experimental" +#define TECHWEB_NODE_MOD_MEDICAL "mod_medical" +#define TECHWEB_NODE_MOD_MEDICAL_ADV "mod_medical_adv" +#define TECHWEB_NODE_MOD_SECURITY "mod_security" +#define TECHWEB_NODE_MOD_SUIT "mod_suit" +#define TECHWEB_NODE_NIGHT_VISION "night_vision" +#define TECHWEB_NODE_OFFICE_EQUIP "office_equip" +#define TECHWEB_NODE_OLDSTATION_SURGERY "oldstation_surgery" +#define TECHWEB_NODE_PARTS "parts" +#define TECHWEB_NODE_PARTS_ADV "parts_adv" +#define TECHWEB_NODE_PARTS_BLUESPACE "parts_bluespace" +#define TECHWEB_NODE_PARTS_UPG "parts_upg" +#define TECHWEB_NODE_PASSIVE_IMPLANTS "passive_implants" +#define TECHWEB_NODE_PLASMA_CONTROL "plasma_control" +#define TECHWEB_NODE_PLASMA_MINING "plasma_mining" +#define TECHWEB_NODE_PLUMBING "plumbing" +#define TECHWEB_NODE_POSITRONIC_SPHERE "positronic_sphere" +#define TECHWEB_NODE_PROGRAMMED_ROBOT "programmed_robot" +#define TECHWEB_NODE_PROGRAMMED_SERVER "programmed_server" +#define TECHWEB_NODE_PROGRAMMING "programming" +#define TECHWEB_NODE_RCD_UPGRADE "rcd_upgrade" +#define TECHWEB_NODE_RIOT_SUPRESSION "riot_supression" +#define TECHWEB_NODE_ROBOTICS "robotics" +#define TECHWEB_NODE_SANITATION "sanitation" +#define TECHWEB_NODE_SEC_EQUIP "sec_equip" +#define TECHWEB_NODE_SELECTION "selection" +#define TECHWEB_NODE_SPEC_ENG "spec_eng" +#define TECHWEB_NODE_STICKY_ADVANCED "sticky_advanced" +#define TECHWEB_NODE_SURGERY "surgery" +#define TECHWEB_NODE_SURGERY_ADV "surgery_adv" +#define TECHWEB_NODE_SURGERY_EXP "surgery_exp" +#define TECHWEB_NODE_SURGERY_TOOLS "surgery_tools" +#define TECHWEB_NODE_SYNDICATE_BASIC "syndicate_basic" +#define TECHWEB_NODE_TACKLE_ADVANCED "tackle_advanced" +#define TECHWEB_NODE_TELECOMS "telecoms" +#define TECHWEB_NODE_UNREGULATED_BLUESPACE "unregulated_bluespace" +#define TECHWEB_NODE_XENOBIOLOGY "xenobiology" diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index bcca92e606091..393e0f7b5f7d3 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -244,6 +244,21 @@ DEFINE_BITFIELD(medical_mode_flags, list( "MEDBOT_TIPPED_MODE" = MEDBOT_TIPPED_MODE, )) +///Whether we are stationary or not +#define FIREBOT_STATIONARY_MODE (1<<0) +///If we will extinguish people +#define FIREBOT_EXTINGUISH_PEOPLE (1<<1) +///if we will extinguish turfs on flames +#define FIREBOT_EXTINGUISH_FLAMES (1<<2) + +DEFINE_BITFIELD(firebot_mode_flags, list( + "FIREBOT_STATIONARY_MODE" = FIREBOT_STATIONARY_MODE, + "FIREBOT_EXTINGUISH_PEOPLE" = FIREBOT_EXTINGUISH_PEOPLE, + "FIREBOT_EXTINGUISH_FLAMES" = FIREBOT_EXTINGUISH_FLAMES, +)) + + + //cleanBOT defines on what to clean #define CLEANBOT_CLEAN_BLOOD (1<<0) #define CLEANBOT_CLEAN_TRASH (1<<1) @@ -284,6 +299,9 @@ DEFINE_BITFIELD(janitor_mode_flags, list( #define FIREBOT_VOICED_ONLY_YOU "Only you can prevent station fires." #define FIREBOT_VOICED_TEMPERATURE_NOMINAL "Temperature nominal." #define FIREBOT_VOICED_KEEP_COOL "Keep it cool." +#define FIREBOT_VOICED_CANDLE_TIP "Keep candles near curtains for cozy night lights!" +#define FIREBOT_VOICED_ELECTRIC_FIRE "Keep full buckets of water near outlets in case of an electric fire!" +#define FIREBOT_VOICED_FUEL_TIP "Pouring fuel on fire makes it burn out faster!" #define HYGIENEBOT_VOICED_UNHYGIENIC "Unhygienic client found. Please stand still so I can clean you." #define HYGIENEBOT_VOICED_ENJOY_DAY "Enjoy your clean and tidy day!" diff --git a/code/__DEFINES/text.dm b/code/__DEFINES/text.dm index 602f3317c0685..fba83dd171f7c 100644 --- a/code/__DEFINES/text.dm +++ b/code/__DEFINES/text.dm @@ -53,7 +53,7 @@ #define SANITIZE_FILENAME(text) (GLOB.filename_forbidden_chars.Replace(text, "")) /// Simply removes the < and > characters, and limits the length of the message. -#define STRIP_HTML_SIMPLE(text, limit) (GLOB.angular_brackets.Replace_char(copytext_char(text, 1, limit), "")) //MASSMETA EDIT +#define STRIP_HTML_SIMPLE(text, limit) (GLOB.angular_brackets.Replace_char(copytext_char(text, 1, limit), "")) //MASSMETA EDIT CHANGE - ORIGINAL: (GLOB.angular_brackets.Replace(copytext(text, 1, limit), "")) /// Removes everything enclose in < and > inclusive of the bracket, and limits the length of the message. #define STRIP_HTML_FULL(text, limit) (GLOB.html_tags.Replace(copytext(text, 1, limit), "")) @@ -73,9 +73,11 @@ // JSON text files found in the tgstation/strings folder /// File location for brain damage traumas -#define BRAIN_DAMAGE_FILE "massmeta/traumas.json" //MASSMETA EDIT +#define BRAIN_DAMAGE_FILE "massmeta/traumas.json" //MASSMETA EDIT CHANGE - ORIGINAL: "traumas.json" /// File location for kvass phrases, mmmmm kvass -#define KVASS_PHRASES_FILE "massmeta/kvass.json" //MASSMETA ADDITION (kvass) +#define KVASS_PHRASES_FILE "massmeta/kvass.json" //MASSMETA EDIT ADDITION (kvass) +/// File location for oguzok phrases +#define OGUZOK_PHRASES_FILE "massmeta/oguzok.json" //MASSMETA EDIT ADDITION (oguzok) /// File location for AI ion laws #define ION_FILE "ion_laws.json" /// File location for pirate names @@ -107,7 +109,7 @@ /// File location for eigenstasium lines #define EIGENSTASIUM_FILE "eigenstasium.json" /// File location for hallucination lines -#define HALLUCINATION_FILE "massmeta/hallucination.json" //MASSMETA EDIT +#define HALLUCINATION_FILE "massmeta/hallucination.json" //MASSMETA EDIT CHANGE - ORIGINAL: "hallucination.json" /// File location for ninja lines #define NINJA_FILE "ninja.json" /// File loation for title splashes diff --git a/code/__DEFINES/tools.dm b/code/__DEFINES/tools.dm index 7809610e6abec..2348bd49f194b 100644 --- a/code/__DEFINES/tools.dm +++ b/code/__DEFINES/tools.dm @@ -8,6 +8,7 @@ #define TOOL_ANALYZER "analyzer" #define TOOL_MINING "mining" #define TOOL_SHOVEL "shovel" +#define TOOL_DRAPES "surgicaldrapes" #define TOOL_RETRACTOR "retractor" #define TOOL_HEMOSTAT "hemostat" #define TOOL_CAUTERY "cautery" diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 8d2b54ab72f87..abe3665907e65 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -69,6 +69,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // 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" #define TRAIT_IGNORESLOWDOWN "ignoreslow" #define TRAIT_IGNOREDAMAGESLOWDOWN "ignoredamageslowdown" /// Makes it so the mob can use guns regardless of tool user status @@ -96,6 +98,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #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? @@ -559,6 +563,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///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" + // METABOLISMS // Various jobs on the station have historically had better reactions // to various drinks and foodstuffs. Security liking donuts is a classic @@ -613,6 +620,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #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" @@ -1010,8 +1019,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// things with this trait are treated as having no access in /atom/movable/proc/check_access(obj/item) #define TRAIT_ALWAYS_NO_ACCESS "alwaysnoaccess" -/// This human wants to see the color of their glasses, for some reason -#define TRAIT_SEE_GLASS_COLORS "see_glass_colors" +///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 @@ -1087,6 +1096,11 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// 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" @@ -1149,6 +1163,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// 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" +/// Trait given to anything linked to, not necessarily allied to, the mansus +#define TRAIT_MANSUS_TOUCHED "mansus_touched" + /// Trait given to mobs wearing the clown mask #define TRAIT_PERCEIVED_AS_CLOWN "perceived_as_clown" /// Does this item bypass ranged armor checks? diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm index 278510bd23fbe..759101dc2abd5 100644 --- a/code/__DEFINES/traits/sources.dm +++ b/code/__DEFINES/traits/sources.dm @@ -190,6 +190,8 @@ #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" diff --git a/code/__DEFINES/tts.dm b/code/__DEFINES/tts.dm index fd88016408c74..da80c31463ec9 100644 --- a/code/__DEFINES/tts.dm +++ b/code/__DEFINES/tts.dm @@ -7,4 +7,5 @@ ///TTS filter to activate start/stop radio clicks on speech. #define TTS_FILTER_RADIO "radio" ///TTS filter to activate a silicon effect on speech. -#define TTS_FILTER_SILICON "silicon" +///TTS filter to activate a robotic effect on speech. +#define TTS_FILTER_SILICON "robotic" //MASSMETA EDIT ADDITION (/n/tts) diff --git a/code/__DEFINES/~meta_defines_include.dm b/code/__DEFINES/~meta_defines_include.dm index f76bad5662536..73e817cba85b5 100644 --- a/code/__DEFINES/~meta_defines_include.dm +++ b/code/__DEFINES/~meta_defines_include.dm @@ -1 +1 @@ -#include "..\..\massmeta\~meta_defines\meta_defines_all.dm" +#include "..\..\massmeta\modular_meta_defines.dm" diff --git a/code/__HELPERS/_planes.dm b/code/__HELPERS/_planes.dm index 769c4283ea626..779319114076f 100644 --- a/code/__HELPERS/_planes.dm +++ b/code/__HELPERS/_planes.dm @@ -86,3 +86,19 @@ // This is solvable with lowspec preferences, which would not be hard to implement // Player popups will now render their effects, like overlay lights. this is fixable, but I've not gotten to it // I think overlay lights can render on the wrong z layer. s fucked + +/// Whitelist of planes allowed to use TOPDOWN_LAYER +GLOBAL_LIST_INIT(topdown_planes, list( + "[FLOOR_PLANE]" = TRUE, + )) + +/// Checks if a passed in MA or atom is allowed to have its current plane/layer matchup +/proc/check_topdown_validity(mutable_appearance/thing_to_check) + if(istype(thing_to_check, /atom/movable/screen/plane_master)) + return + var/topdown_plane = GLOB.topdown_planes["[PLANE_TO_TRUE(thing_to_check.plane)]"] + if(topdown_plane) + if(thing_to_check.layer - TOPDOWN_LAYER < 0 || thing_to_check.layer >= BACKGROUND_LAYER) + stack_trace("[thing_to_check] ([thing_to_check.type]) was expected to have a TOPDOWN_LAYER layer due to its plane, but it DID NOT! layer: ([thing_to_check.layer]) plane: ([thing_to_check.plane])") + else if(thing_to_check.layer - TOPDOWN_LAYER >= 0 && thing_to_check.layer < BACKGROUND_LAYER) + stack_trace("[thing_to_check] ([thing_to_check.type] is NOT ALLOWED to have a TOPDOWN_LAYER layer due to its plane, but it did! layer: ([thing_to_check.layer]) plane: ([thing_to_check.plane])") diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index dc2f66c2ed0dd..f81464013e01c 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -148,7 +148,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list( * A list of all machinery tied to an area along with the area itself. key=area name,value=list(area,list of machinery) * we use this to keep track of what areas are affected by the blueprints & what machinery of these areas needs to be reconfigured accordingly */ - var/area/affected_areas = list() + var/list/area/affected_areas = list() for(var/turf/the_turf as anything in turfs) var/area/old_area = the_turf.loc diff --git a/code/__HELPERS/atoms.dm b/code/__HELPERS/atoms.dm index cb1e2a87f767e..406ea75143c66 100644 --- a/code/__HELPERS/atoms.dm +++ b/code/__HELPERS/atoms.dm @@ -325,14 +325,3 @@ rough example of the "cone" made by the 3 dirs checked "x" = icon_width > world.icon_size && pixel_x != 0 ? (icon_width - world.icon_size) * 0.5 : 0, "y" = icon_height > world.icon_size && pixel_y != 0 ? (icon_height - world.icon_size) * 0.5 : 0, ) - -/** - * Called before an item is put into this atom's storage datum via the item clicking on this atom - * - * This can be used to add item-atom interactions that you want handled before inserting something into storage - * (But it's also fairly snowflakey) - * - * Returning FALSE will block that item from being put into our storage - */ -/atom/proc/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - return TRUE diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm index 5c5ff5a059a30..88ca3dbe11c8c 100644 --- a/code/__HELPERS/icon_smoothing.dm +++ b/code/__HELPERS/icon_smoothing.dm @@ -177,7 +177,7 @@ xxx xxx xxx corners_diagonal_smooth(calculate_adjacencies()) else corners_cardinal_smooth(calculate_adjacencies()) - else if(smoothing_flags & SMOOTH_BITMASK) + else if(smoothing_flags & (SMOOTH_BITMASK|SMOOTH_BITMASK_CARDINALS)) bitmask_smooth() else CRASH("smooth_icon called for [src] with smoothing_flags == [smoothing_flags]") @@ -430,7 +430,7 @@ xxx xxx xxx SET_ADJ_IN_DIR(WEST, WEST) // If there's nothing going on already - if(!(new_junction & (NORTH|SOUTH)) || !(new_junction & (EAST|WEST))) + if(smoothing_flags & SMOOTH_BITMASK_CARDINALS || !(new_junction & (NORTH|SOUTH)) || !(new_junction & (EAST|WEST))) set_smoothed_icon_state(new_junction) return @@ -493,7 +493,7 @@ xxx xxx xxx var/junction_dir = reverse_ndir(smoothing_junction) var/turned_adjacency = REVERSE_DIR(junction_dir) var/turf/neighbor_turf = get_step(src, turned_adjacency & (NORTH|SOUTH)) - var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER, offset_spokesman = src, plane = FLOOR_PLANE) + var/mutable_appearance/underlay_appearance = mutable_appearance(layer = LOW_FLOOR_LAYER, offset_spokesman = src, plane = FLOOR_PLANE) if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) neighbor_turf = get_step(src, turned_adjacency & (EAST|WEST)) @@ -518,13 +518,13 @@ xxx xxx xxx /proc/smooth_zlevel(zlevel, now = FALSE) var/list/away_turfs = Z_TURFS(zlevel) for(var/turf/turf_to_smooth as anything in away_turfs) - if(turf_to_smooth.smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(turf_to_smooth.smoothing_flags & USES_SMOOTHING) if(now) turf_to_smooth.smooth_icon() else QUEUE_SMOOTH(turf_to_smooth) for(var/atom/movable/movable_to_smooth as anything in turf_to_smooth) - if(movable_to_smooth.smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(movable_to_smooth.smoothing_flags & USES_SMOOTHING) if(now) movable_to_smooth.smooth_icon() else @@ -655,15 +655,6 @@ xxx xxx xxx smoothing_groups = null canSmoothWith = null -#undef NORTH_JUNCTION -#undef SOUTH_JUNCTION -#undef EAST_JUNCTION -#undef WEST_JUNCTION -#undef NORTHEAST_JUNCTION -#undef NORTHWEST_JUNCTION -#undef SOUTHEAST_JUNCTION -#undef SOUTHWEST_JUNCTION - #undef NO_ADJ_FOUND #undef ADJ_FOUND #undef NULLTURF_BORDER diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index a67c78a12cc28..d5b3ecb16aff2 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -420,6 +420,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]) { \ @@ -431,9 +435,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) @@ -474,10 +479,15 @@ world if(!base_icon_dir) base_icon_dir = curdir + // Expand our canvas to fit if we're too big + if(render_icon) + var/icon/active_icon = icon(curicon) + if(active_icon.Width() != 32 || active_icon.Height() != 32) + flat.Scale(active_icon.Width(), active_icon.Height()) + 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/mobs.dm b/code/__HELPERS/mobs.dm index 06f81e742adfe..67faf3f32b72c 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -28,6 +28,20 @@ else return COLOR_BLACK +/proc/random_hair_color() + var/static/list/natural_hair_colors = list( + "#111111", "#362925", "#3B3831", "#41250C", "#412922", + "#544C49", "#583322", "#593029", "#703b30", "#714721", + "#744729", "#74482a", "#7b746e", "#855832", "#863019", + "#8c4734", "#9F550E", "#A29A96", "#A4381C", "#B17B41", + "#C0BAB7", "#EFE5E4", "#F7F3F1", "#FFF2D6", "#a15537", + "#a17e61", "#b38b67", "#ba673c", "#c89f73", "#d9b380", + "#dbc9b8", "#e1621d", "#e17d17", "#e1af93", "#f1cc8f", + "#fbe7a1", + ) + + return pick(natural_hair_colors) + /proc/random_underwear(gender) if(length(SSaccessories.underwear_list) == 0) CRASH("No underwear to choose from!") diff --git a/code/__HELPERS/paths/jps.dm b/code/__HELPERS/paths/jps.dm index 2dc46dea1b7cf..fbdccdef12c56 100644 --- a/code/__HELPERS/paths/jps.dm +++ b/code/__HELPERS/paths/jps.dm @@ -34,7 +34,7 @@ previous_node = incoming_previous_node number_tiles = previous_node.number_tiles + jumps node_goal = previous_node.node_goal - heuristic = get_dist(tile, node_goal) + heuristic = get_dist_euclidean(tile, node_goal) 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 @@ -47,7 +47,7 @@ node_goal = previous_node.node_goal jumps = get_dist(tile, previous_node.tile) number_tiles = previous_node.number_tiles + jumps - heuristic = get_dist(tile, node_goal) + heuristic = get_dist_euclidean(tile, node_goal) f_value = number_tiles + heuristic /proc/HeapPathWeightCompare(datum/jps_node/a, datum/jps_node/b) diff --git a/code/__HELPERS/paths/path.dm b/code/__HELPERS/paths/path.dm index 61e50601e7848..189120b76c3bc 100644 --- a/code/__HELPERS/paths/path.dm +++ b/code/__HELPERS/paths/path.dm @@ -370,7 +370,7 @@ GLOBAL_LIST_INIT(can_pass_info_vars, GLOBAL_PROC_REF(can_pass_check_vars)) /datum/can_pass_info/proc/compare_against(datum/can_pass_info/check_against) for(var/comparable_var in GLOB.can_pass_info_vars) - if(!(vars[comparable_var] ~= check_against[comparable_var])) + if(!(vars[comparable_var] ~= check_against.vars[comparable_var])) return FALSE if(!pulling_info != !check_against.pulling_info) return FALSE diff --git a/code/__HELPERS/records.dm b/code/__HELPERS/records.dm deleted file mode 100644 index 288ef5284d21f..0000000000000 --- a/code/__HELPERS/records.dm +++ /dev/null @@ -1,6 +0,0 @@ - -/proc/overwrite_field_if_available(datum/record/base, datum/record/other, field_name) - if(other[field_name]) - base[field_name] = other[field_name] - - diff --git a/code/__HELPERS/screen_objs.dm b/code/__HELPERS/screen_objs.dm index 7debecf816f3c..cb8520225ab8c 100644 --- a/code/__HELPERS/screen_objs.dm +++ b/code/__HELPERS/screen_objs.dm @@ -101,3 +101,15 @@ /proc/cut_relative_direction(fragment) var/static/regex/regex = regex(@"([A-Z])\w+", "g") return regex.Replace(fragment, "") + +/// Returns a screen_loc format for a tiling screen objects from start and end positions. Start should be bottom left corner, and end top right corner. +/proc/spanning_screen_loc(start_px, start_py, end_px, end_py) + var/starting_tile_x = round(start_px / 32) + start_px -= starting_tile_x * 32 + var/starting_tile_y = round(start_py/ 32) + start_py -= starting_tile_y * 32 + var/ending_tile_x = round(end_px / 32) + end_px -= ending_tile_x * 32 + var/ending_tile_y = round(end_py / 32) + end_py -= ending_tile_y * 32 + return "[starting_tile_x]:[start_px],[starting_tile_y]:[start_py] to [ending_tile_x]:[end_px],[ending_tile_y]:[end_py]" diff --git a/code/__HELPERS/spatial_info.dm b/code/__HELPERS/spatial_info.dm index c23e3a408a53c..529532f50cf4d 100644 --- a/code/__HELPERS/spatial_info.dm +++ b/code/__HELPERS/spatial_info.dm @@ -283,7 +283,7 @@ return atoms ///Returns the distance between two atoms -/proc/get_dist_euclidian(atom/first_location as turf|mob|obj, atom/second_location as turf|mob|obj) +/proc/get_dist_euclidean(atom/first_location, atom/second_location) var/dx = first_location.x - second_location.x var/dy = first_location.y - second_location.y diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index c50067d299a8f..bbc0feb95c245 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -36,7 +36,7 @@ /// Runs byond's html encoding sanitization proc, after replacing new-lines and tabs for the # character. /proc/sanitize(text) var/static/regex/regex = regex(@"[\n\t]", "g") - return html_encode(regex.Replace_char(text, "#")) //MASSMETA EDIT + return html_encode(regex.Replace_char(text, "#")) //MASSMETA EDIT CHANGE - ORIGINAL: return html_encode(regex.Replace(text, "#")) /// Runs STRIP_HTML_SIMPLE and sanitize. @@ -66,14 +66,14 @@ */ /proc/htmlrendertext(t) // Trim "whitespace" by lazily capturing word characters in the middle - var/static/regex/matchMiddle = new(@"^\s*([\W\wа-яё]*?)\s*$", "i") //MASSMETA EDIT - if(matchMiddle.Find_char(t) == 0) //MASSMETA EDIT + var/static/regex/matchMiddle = new(@"^\s*([\W\wа-яё]*?)\s*$", "i") //MASSMETA EDIT CHANGE (cyrillic) - ORIGINAL: = new(@"^\s*([\W\w]*?)\s*$") + if(matchMiddle.Find_char(t) == 0) //MASSMETA EDIT CHANGE - ORIGINAL: if(matchMiddle.Find(t) == 0) return t t = matchMiddle.group[1] // Replace any non-space whitespace characters with spaces, and also multiple occurences with just one space var/static/regex/matchSpacing = new(@"\s+", "g") - t = replacetext_char(t, matchSpacing, " ") //MASSMETA EDIT + t = replacetext_char(t, matchSpacing, " ") //MASSMETA EDIT CHANGE (cyrillic) - ORIGINAL: if(matchMiddle.Find(t) == 0) return t @@ -92,7 +92,7 @@ if(ascii_only) if(length(text) > max_length) return null - var/static/regex/non_ascii = regex(@"[^\x20-\x7E\t\n\u0400-\u04FF]") // MASSMETA EDIT: Allow cyrillic symbols + var/static/regex/non_ascii = regex(@"[^\x20-\x7E\t\n\u0400-\u04FF]") //MASSMETA EDIT CHANGE (cyrillic) - ORIGINAL: = regex(@"[^\x20-\x7E\t\n]") if(non_ascii.Find(text)) return null else if(length_char(text) > max_length) @@ -121,7 +121,7 @@ if(isnull(user_input)) // User pressed cancel return if(no_trim) - return copytext_char(html_encode(user_input), 1, max_length) //MASSMETA EDIT + return copytext_char(html_encode(user_input), 1, max_length) //MASSMETA EDIT CHANGE - ORIGINAL: return copytext(html_encode(user_input), 1, max_length) else return trim(html_encode(user_input), max_length) //trim is "outside" because html_encode can expand single symbols into multiple symbols (such as turning < into <) @@ -241,12 +241,7 @@ if(last_char_group == SPACES_DETECTED) t_out = copytext_char(t_out, 1, -1) //removes the last character (in this case a space) - for(var/bad_name in list("space","floor","wall","r-wall","monkey","unknown","inactive ai")) //prevents these common metagamey names - if(cmptext(t_out,bad_name)) - return //(not case sensitive) - - // Protects against names containing IC chat prohibited words. - if(is_ic_filtered(t_out) || is_soft_ic_filtered(t_out)) + if(!filter_name_ic(t_out)) return return t_out @@ -257,6 +252,39 @@ #undef LETTERS_DETECTED +/// Much more permissive version of reject_bad_name(). +/// Returns a trimmed string or null if the name is invalid. +/// Allows most characters except for IC chat prohibited words. +/proc/permissive_sanitize_name(value) + if(!istext(value)) // Not a string + return + + var/name_length = length(value) + if(name_length < 3) // Too short + return + + if(name_length > 3 * MAX_NAME_LEN) // Bad input + return + + var/trimmed = trim(value, MAX_NAME_LEN) + if(!filter_name_ic(trimmed)) // Contains IC chat prohibited words + return + + return trim_reduced(trimmed) + + +/// Helper proc to check if a name is valid for the IC filter +/proc/filter_name_ic(name) + for(var/bad_name in list("space", "floor", "wall", "r-wall", "monkey", "unknown", "inactive ai")) //prevents these common metagamey names + if(cmptext(name, bad_name)) + return FALSE //(not case sensitive) + + // Protects against names containing IC chat prohibited words. + if(is_ic_filtered(name) || is_soft_ic_filtered(name)) + return FALSE + + return TRUE + //html_encode helper proc that returns the smallest non null of two numbers //or 0 if they're both null (needed because of findtext returning 0 when a value is not present) @@ -297,16 +325,20 @@ //Returns a string with reserved characters and spaces before the first letter removed /proc/trim_left(text) - for (var/i = 1 to length_char(text)) //MASSMETA EDIT - if (text2ascii_char(text, i) > 32) //MASSMETA EDIT - return copytext_char(text, i) //MASSMETA EDIT + //MASSMETA EDIT CHANGE BEGIN + for (var/i = 1 to length_char(text)) //ORIGINAL: for (var/i = 1 to length(text)) + if (text2ascii_char(text, i) > 32) //ORIGINAL: if (text2ascii(text, i) > 32) + return copytext_char(text, i) //ORIGINAL: return copytext(text, i) + //MASSMETA EDIT CHANGE END return "" //Returns a string with reserved characters and spaces after the last letter removed /proc/trim_right(text) - for (var/i = length_char(text), i > 0, i--) //MASSMETA EDIT - if (text2ascii_char(text, i) > 32) //MASSMETA EDIT - return copytext_char(text, 1, i + 1) //MASSMETA EDIT + //MASSMETA EDIT CHANGE BEGIN + for (var/i = length_char(text), i > 0, i--) //ORIGINAL: for (var/i = length(text), i > 0, i--) + if (text2ascii_char(text, i) > 32) //ORIGINAL: if (text2ascii(text, i) > 32) + return copytext_char(text, 1, i + 1) //ORIGINAL: return copytext(text, 1, i + 1) + //MASSMETA EDIT CHANGE END return "" //Returns a string with reserved characters and spaces after the first and last letters removed @@ -339,8 +371,10 @@ * * max_length - integer length to truncate at */ /proc/truncate(text, max_length) - if(length_char(text) > max_length) //MASSMETA EDIT - return copytext_char(text, 1, max_length) //MASSMETA EDIT + //MASSMETA EDIT CHANGE BEGIN + if(length_char(text) > max_length) //ORIGINAL: if(length(text) > max_length) + return copytext_char(text, 1, max_length) //ORIGINAL: return copytext(text, 1, max_length) + //MASSMETA EDIT CHANGE END return text //Returns a string with reserved characters and spaces before the first word and after the last word removed. @@ -354,7 +388,7 @@ . = t if(t) . = t[1] - return uppertext(.) + copytext_char(t, 1 + length_char(.)) //MASSMETA EDIT + return uppertext(.) + copytext_char(t, 1 + length_char(.)) //MASSMETA EDIT CHANGE - ORIGINAL: return uppertext(.) + copytext(t, 1 + length(.)) ///Returns a string with the first letter of each word capitialized /proc/full_capitalize(input) diff --git a/code/__HELPERS/turfs.dm b/code/__HELPERS/turfs.dm index c44845a5854b7..88509b88ce802 100644 --- a/code/__HELPERS/turfs.dm +++ b/code/__HELPERS/turfs.dm @@ -400,8 +400,8 @@ Turf and target are separate in case you want to teleport some distance from a t /** * Checks whether or not a particular typepath or subtype of it is present on a turf * - * Returns TRUE if an instance of the desired type or a subtype of it is found - * Returns FALSE if the type is not found, or if no turf is supplied + * Returns the first instance located if an instance of the desired type or a subtype of it is found + * Returns null if the type is not found, or if no turf is supplied * * Arguments: * * location - The turf to be checked for the desired type @@ -409,10 +409,9 @@ Turf and target are separate in case you want to teleport some distance from a t */ /proc/is_type_on_turf(turf/location, type_to_find) if(!location) - return FALSE - if(locate(type_to_find) in location) - return TRUE - return FALSE + return + var/found_type = locate(type_to_find) in location + return found_type /** * get_blueprint_data diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 4a5f3b82681ea..350fd180a80d0 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -116,7 +116,7 @@ #endif #ifndef PRELOAD_RSC //set to: -#define PRELOAD_RSC 0 // 0 to allow using external resources or on-demand behaviour; MASSMETA EDIT - Original: 1 +#define PRELOAD_RSC 0 // 0 to allow using external resources or on-demand behaviour; MASSMETA EDIT CHANGE - Original: 1 #endif // 1 to use the default behaviour; // 2 for preloading absolutely everything; diff --git a/code/_globalvars/admin.dm b/code/_globalvars/admin.dm index 363b84b923d32..96f07e3cca870 100644 --- a/code/_globalvars/admin.dm +++ b/code/_globalvars/admin.dm @@ -28,3 +28,123 @@ GLOBAL_LIST_INIT(vv_special_lists, init_special_list_names()) if(isnull(locate(REF(value)))) output += varname return output + +///A giant associative list of span names, and the associated key to create the text span. Used for narrate verbs. +GLOBAL_LIST_INIT(spanname_to_formatting, list( + "Abductor" = "abductor", + "Admin" = "admin", + "Adminhelp" = "adminhelp", + "Admin Notice" = "adminnotice", + "Admin Observer OOC" = "adminobserverooc", + "Admin OOC" = "adminooc", + "Adminsay" = "adminsay", + "AI Private Radio" = "aiprivradio", + "Alert" = "alert", + "Alien Alert" = "alertalien", + "Syndie Alert" = "alertsyndie", + "Alert Warning" = "alertwarning", + "Alien" = "alien", + "Average" = "average", + "Bad" = "bad", + "Big" = "big", + "Binary Say" = "binarysay", + "Blob" = "blob", + "Blob Announce" = "blobannounce", + "Blue" = "blue", + "Blue Team Radio" = "blueteamradio", + "Bold" = "bold", + "Bold Announce" = "boldannounce", + "Bold Danger" = "bolddanger", + "Bold Italic" = "bolditalic", + "Bold Nice Green" = "boldnicegreen", + "Bold Notice" = "boldnotice", + "Bold Warning" = "boldwarning", + "Big Bold" = "big bold", + "Centcom Radio" = "centcomradio", + "Changeling" = "changeling", + "Clown" = "clown", + "Colossus" = "colossus", + "Command Headset" = "command_headset", + "Cult" = "cult", + "Cult Bold" = "cult_bold", + "Cult Bold Italic" = "cult_bold_italic", + "Cult Italic" = "cult_italic", + "Cult Large" = "cult_large", + "Danger" = "danger", + "Deadchat" = "deadsay", + "Deconversion Message" = "deconversion_message", + "Drone Radio" = "drone", + "Engineering Radio" = "engradio", + "Extremely Big" = "extremelybig", + "Game Say" = "game say", + "Ghost Alert" = "ghostalert", + "Green" = "green", + "Green Announce" = "greenannounce", + "Green Team Radio" = "greenteamradio", + "Greentext" = "greentext", + "Grey" = "grey", + "Hierophant" = "hierophant", + "Hierophant Warning" = "hierophant_warning", + "Highlight" = "highlight", + "His Grace" = "his_grace", + "Holoparasite" = "holoparasite", + "Holoparasite Bold" = "holoparasite bold", + "Hypnosis" = "hypnophrase", + "Icon" = "icon", + "Info" = "info", + "Info Plain" = "infoplain", + "Interface" = "interface", + "Looc" = "looc", + "Medal" = "medal", + "Medradio" = "medradio", + "Message" = "message", + "Mind Control" = "mind_control", + "Monkey" = "monkey", + "Narsie" = "narsie", + "Narsie Small" = "narsiesmall", + "Nice Green" = "nicegreen", + "Notice" = "notice", + "Notice Alien" = "noticealien", + "OOC" = "ooc", + "Papyrus" = "papyrus", + "Phobia" = "phobia", + "Prefix" = "prefix", + "Purple" = "purple", + "Radio" = "radio", + "Really Big" = "reallybig", + "Red" = "red", + "Red Team Radio" = "redteamradio", + "Red Text" = "redtext", + "Golem Resonate" = "resonate", + "Revenant Big Notice" = "revenbignotice", + "Revenant Bold Notice" = "revenboldnotice", + "Revenant Danger" = "revendanger", + "Revenant Minor" = "revenminor", + "Revenant Notice" = "revennotice", + "Revenant Warning" = "revenwarning", + "Robot" = "robot", + "Rose" = "rose", + "Comic Sans" = "sans", + "Science Radio" = "sciradio", + "Security Radio" = "secradio", + "Service Radio" = "servradio", + "Singing" = "singing", + "Slime" = "slime", + "Small" = "small", + "Small Notice" = "smallnotice", + "Small Notice Italic" = "smallnoticeital", + "Spider Broodmother" = "spiderbroodmother", + "Spider Scout" = "spiderscout", + "Spider Breacher" = "spiderbreacher", + "Suicide" = "suicide", + "Supply Radio" = "suppradio", + "Syndicate Radio" = "syndradio", + "Tape Recorder" = "tape_recorder", + "Tiny Notice" = "tinynotice", + "Tiny Notice Italic" = "tinynoticeital", + "Unconcious" = "unconscious", + "User Danger" = "userdanger", + "Warning" = "warning", + "Yelling" = "yell", + "Yellow Team Radio" = "yellowteamradio", + )) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index f98178d537fa3..ea1b16d71cef8 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -83,7 +83,6 @@ DEFINE_BITFIELD(car_traits, list( DEFINE_BITFIELD(clothing_flags, list( "ANTI_TINFOIL_MANEUVER" = ANTI_TINFOIL_MANEUVER, - "BLOCKS_SPEECH" = BLOCKS_SPEECH, "BLOCK_GAS_SMOKE_EFFECT" = BLOCK_GAS_SMOKE_EFFECT, "CASTING_CLOTHES" = CASTING_CLOTHES, "GAS_FILTERING" = GAS_FILTERING, diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index e43d803fc4f29..5bece07319c78 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -11,10 +11,6 @@ GLOBAL_VAR_INIT(hub_visibility, FALSE) GLOBAL_VAR_INIT(ooc_allowed, TRUE) // used with admin verbs to disable ooc - not a config option apparently GLOBAL_VAR_INIT(dooc_allowed, TRUE) -GLOBAL_VAR_INIT(enter_allowed, TRUE) -GLOBAL_VAR_INIT(shuttle_frozen, FALSE) -GLOBAL_VAR_INIT(shuttle_left, FALSE) -GLOBAL_VAR_INIT(tinted_weldhelh, TRUE) // Debug is used exactly once (in living.dm) but is commented out in a lot of places. It is not set anywhere and only checked. diff --git a/code/_globalvars/game_modes.dm b/code/_globalvars/game_modes.dm index 8a1493e383dbc..10d923343717e 100644 --- a/code/_globalvars/game_modes.dm +++ b/code/_globalvars/game_modes.dm @@ -1,8 +1,6 @@ GLOBAL_VAR(common_report) //Contains common part of roundend report GLOBAL_VAR(survivor_report) //Contains shared survivor report for roundend report (part of personal report) - -GLOBAL_VAR_INIT(wavesecret, 0) // meteor mode, delays wave progression, terrible name GLOBAL_DATUM(start_state, /datum/station_state) // Used in round-end report /// We want reality_smash_tracker to exist only once and be accessible from anywhere. diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index e7c6368d4d5fd..faaabd77ba134 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -149,6 +149,7 @@ GLOBAL_LIST_INIT(scarySounds, list( 'sound/weapons/armbomb.ogg', 'sound/weapons/taser.ogg', 'sound/weapons/thudswoosh.ogg', + 'sound/weapons/shove.ogg', )) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 8c3db411172e0..88b79c14bcbcb 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -379,7 +379,7 @@ GLOBAL_LIST_INIT(oddity_loot, list(//oddity: strange or crazy items /obj/item/instrument/trumpet/spectral = 1, ) = 1, /obj/item/toy/cards/deck/tarot/haunted = 1, - /obj/item/organ/internal/butt/atomic = 1, //massmeta edit + /obj/item/organ/internal/butt/atomic = 1, //MASSMETA ADDITION (butts) )) //Maintenance loot spawner pools diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index 45f59fb447514..a7c7584d23aad 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -132,9 +132,6 @@ GLOBAL_LIST_EMPTY(bar_areas) /// List of all the maps that have been cached for /proc/load_map GLOBAL_LIST_EMPTY(cached_maps) -/// Away missions -GLOBAL_LIST_EMPTY(vr_spawnpoints) - /// Just a list of all the area objects in the game /// Note, areas can have duplicate types GLOBAL_LIST_EMPTY(areas) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 942c8cbf6b121..d91eec6e1bc87 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -43,7 +43,6 @@ GLOBAL_LIST_INIT(abstract_mob_types, list( GLOBAL_LIST_EMPTY(player_list) //all mobs **with clients attached**. GLOBAL_LIST_EMPTY(keyloop_list) //as above but can be limited to boost performance GLOBAL_LIST_EMPTY(mob_list) //all mobs, including clientless -GLOBAL_LIST_EMPTY(mob_directory) //mob_id -> mob GLOBAL_LIST_EMPTY(alive_mob_list) //all alive mobs, including clientless. Excludes /mob/dead/new_player GLOBAL_LIST_EMPTY(suicided_mob_list) //contains a list of all mobs that suicided, including their associated ghosts. GLOBAL_LIST_EMPTY(drones_list) @@ -56,7 +55,6 @@ GLOBAL_LIST_EMPTY(mob_living_list) //all instances of /mob/living and subtypes GLOBAL_LIST_EMPTY(carbon_list) //all instances of /mob/living/carbon and subtypes, notably does not contain brains or simple animals GLOBAL_LIST_EMPTY(human_list) //all instances of /mob/living/carbon/human and subtypes GLOBAL_LIST_EMPTY(ai_list) -GLOBAL_LIST_EMPTY(pai_list) GLOBAL_LIST_EMPTY(available_ai_shells) GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list())) // One for each AI_* status define GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs @@ -133,8 +131,6 @@ GLOBAL_LIST_INIT_TYPED(species_prototypes, /datum/species, init_species_prototyp species_list[species_type] = new species_type() return species_list -GLOBAL_LIST_EMPTY(sentient_disease_instances) - GLOBAL_LIST_EMPTY(latejoin_ai_cores) GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup) diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm index 882e556a801f6..22ef830ea773d 100644 --- a/code/_globalvars/lists/quirks.dm +++ b/code/_globalvars/lists/quirks.dm @@ -11,7 +11,7 @@ GLOBAL_LIST_INIT(nearsighted_glasses, list( )) ///Options for the prosthetic limb quirk to choose from -GLOBAL_LIST_INIT(limb_choice, list( +GLOBAL_LIST_INIT(prosthetic_limb_choice, list( "Left Arm" = /obj/item/bodypart/arm/left/robot/surplus, "Right Arm" = /obj/item/bodypart/arm/right/robot/surplus, "Left Leg" = /obj/item/bodypart/leg/left/robot/surplus, diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm index ea1d939351ddb..131e530ce82ac 100644 --- a/code/_globalvars/phobias.dm +++ b/code/_globalvars/phobias.dm @@ -245,7 +245,7 @@ GLOBAL_LIST_INIT(phobia_objs, list( /obj/item/clothing/suit/hooded/carp_costume, /obj/item/clothing/head/fedora/carpskin, /obj/item/clothing/mask/gas/carp, - /obj/item/clothing/mask/cigarette/carp, + /obj/item/cigarette/carp, /obj/item/clothing/under/suit/carpskin, /obj/item/food/cubancarp, /obj/item/food/fishmeat/carp, @@ -492,7 +492,6 @@ GLOBAL_LIST_INIT(phobia_objs, list( /obj/item/clothing/suit/wizrobe, /obj/item/clothing/under/rank/civilian/chaplain, /obj/item/codex_cicatrix, - /obj/item/cult_bastard, /obj/item/gun/magic, /obj/item/melee/cultblade, /obj/item/melee/rune_carver, diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index afe4db8a83d9e..a7783d688bc61 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -56,6 +56,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NO_MISSING_ITEM_ERROR" = TRAIT_NO_MISSING_ITEM_ERROR, "TRAIT_NO_THROW_HITPUSH" = TRAIT_NO_THROW_HITPUSH, "TRAIT_NOT_ENGRAVABLE" = TRAIT_NOT_ENGRAVABLE, + "TRAIT_SPELLS_TRANSFER_TO_LOC" = TRAIT_SPELLS_TRANSFER_TO_LOC, "TRAIT_ODD_CUSTOMIZABLE_FOOD_INGREDIENT" = TRAIT_ODD_CUSTOMIZABLE_FOOD_INGREDIENT, "TRAIT_RUNECHAT_HIDDEN" = TRAIT_RUNECHAT_HIDDEN, "TRAIT_SECLUDED_LOCATION" = TRAIT_SECLUDED_LOCATION, @@ -112,9 +113,11 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_WALLMOUNTED" = TRAIT_WALLMOUNTED, ), /mob = list( - "TRAIT_LOUD_ASS" = TRAIT_LOUD_ASS, //massmeta edit - "TRAIT_UNSTABLE_ASS" = TRAIT_UNSTABLE_ASS, //massmeta edit - "TRAIT_STABLE_ASS" = TRAIT_STABLE_ASS, //massmeta edit + //MASSMETA EDIT ADDITION BEGIN (butts) + "TRAIT_LOUD_ASS" = TRAIT_LOUD_ASS, + "TRAIT_UNSTABLE_ASS" = TRAIT_UNSTABLE_ASS, + "TRAIT_STABLE_ASS" = TRAIT_STABLE_ASS, + //MASSMETA EDIT ADDITION END "TRAIT_ABDUCTOR_SCIENTIST_TRAINING" = TRAIT_ABDUCTOR_SCIENTIST_TRAINING, "TRAIT_ABDUCTOR_TRAINING" = TRAIT_ABDUCTOR_TRAINING, "TRAIT_ADAMANTINE_EXTRACT_ARMOR" = TRAIT_ADAMANTINE_EXTRACT_ARMOR, @@ -152,6 +155,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BOMBIMMUNE" = TRAIT_BOMBIMMUNE, "TRAIT_BONSAI" = TRAIT_BONSAI, "TRAIT_BOOZE_SLIDER" = TRAIT_BOOZE_SLIDER, + "TRAIT_BOXING_READY" = TRAIT_BOXING_READY, "TRAIT_BORN_MONKEY" = TRAIT_BORN_MONKEY, "TRAIT_BOXING_READY" = TRAIT_BOXING_READY, "TRAIT_BRAINWASHING" = TRAIT_BRAINWASHING, @@ -185,6 +189,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DEATHCOMA" = TRAIT_DEATHCOMA, "TRAIT_DEFIB_BLACKLISTED" = TRAIT_DEFIB_BLACKLISTED, "TRAIT_DEPRESSION" = TRAIT_DEPRESSION, + "TRAIT_DETECTIVES_TASTE" = TRAIT_DETECTIVES_TASTE, "TRAIT_DETECT_STORM" = TRAIT_DETECT_STORM, "TRAIT_DIAGNOSTIC_HUD" = TRAIT_DIAGNOSTIC_HUD, "TRAIT_DISCOORDINATED_TOOL_USER" = TRAIT_DISCOORDINATED_TOOL_USER, @@ -299,6 +304,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_MAGICALLY_GIFTED" = TRAIT_MAGICALLY_GIFTED, "TRAIT_MAGICALLY_PHASED" = TRAIT_MAGICALLY_PHASED, "TRAIT_MARTIAL_ARTS_IMMUNE" = TRAIT_MARTIAL_ARTS_IMMUNE, + "TRAIT_MANSUS_TOUCHED" = TRAIT_MANSUS_TOUCHED, "TRAIT_MEDIBOTCOMINGTHROUGH" = TRAIT_MEDIBOTCOMINGTHROUGH, "TRAIT_MEDICAL_HUD" = TRAIT_MEDICAL_HUD, "TRAIT_MESON_VISION" = TRAIT_MESON_VISION, @@ -366,6 +372,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NO_TWOHANDING" = TRAIT_NO_TWOHANDING, "TRAIT_NO_UNDERWEAR" = TRAIT_NO_UNDERWEAR, "TRAIT_NO_ZOMBIFY" = TRAIT_NO_ZOMBIFY, + "TRAIT_HIPPOCRATIC_OATH" = TRAIT_HIPPOCRATIC_OATH, "TRAIT_NUKEIMMUNE" = TRAIT_NUKEIMMUNE, "TRAIT_OFF_BALANCE_TACKLER" = TRAIT_OFF_BALANCE_TACKLER, "TRAIT_OIL_FRIED" = TRAIT_OIL_FRIED, @@ -427,7 +434,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_ROUGHRIDER" = TRAIT_ROUGHRIDER, "TRAIT_SABRAGE_PRO" = TRAIT_SABRAGE_PRO, "TRAIT_SECURITY_HUD" = TRAIT_SECURITY_HUD, - "TRAIT_SEE_GLASS_COLORS" = TRAIT_SEE_GLASS_COLORS, + "TRAIT_SEE_WORN_COLOURS" = TRAIT_SEE_WORN_COLOURS, "TRAIT_SELF_AWARE" = TRAIT_SELF_AWARE, "TRAIT_SETTLER" = TRAIT_SETTLER, "TRAIT_SHAVED" = TRAIT_SHAVED, @@ -460,6 +467,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_STRONG_STOMACH" = TRAIT_STRONG_STOMACH, "TRAIT_STUBBY_BODY" = TRAIT_STUBBY_BODY, "TRAIT_STUNIMMUNE" = TRAIT_STUNIMMUNE, + "TRAIT_STUN_ON_NEXT_SHOVE" = TRAIT_STUN_ON_NEXT_SHOVE, "TRAIT_STURDY_FRAME" = TRAIT_STURDY_FRAME, "TRAIT_SUCCUMB_OVERRIDE" = TRAIT_SUCCUMB_OVERRIDE, "TRAIT_SUICIDED" = TRAIT_SUICIDED, @@ -537,6 +545,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NO_BARCODES" = TRAIT_NO_BARCODES, "TRAIT_NO_STORAGE_INSERT" = TRAIT_NO_STORAGE_INSERT, "TRAIT_NO_TELEPORT" = TRAIT_NO_TELEPORT, + "TRAIT_NO_SIDE_KICK" = TRAIT_NO_SIDE_KICK, "TRAIT_NODROP" = TRAIT_NODROP, "TRAIT_OMNI_BAIT" = TRAIT_OMNI_BAIT, "TRAIT_PLANT_WILDMUTATE" = TRAIT_PLANT_WILDMUTATE, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index d709113d2b175..e29a140bfe03a 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -163,6 +163,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_OIL_FRIED" = TRAIT_OIL_FRIED, "TRAIT_OVERWATCH_IMMUNE" = TRAIT_OVERWATCH_IMMUNE, "TRAIT_PACIFISM" = TRAIT_PACIFISM, + "TRAIT_HIPPOCRATIC_OATH" = TRAIT_HIPPOCRATIC_OATH, "TRAIT_PAPER_MASTER" = TRAIT_PAPER_MASTER, "TRAIT_PARALYSIS_L_ARM" = TRAIT_PARALYSIS_L_ARM, "TRAIT_PARALYSIS_L_LEG" = TRAIT_PARALYSIS_L_LEG, diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 4dde5a7f04aeb..1d7e07f7b9912 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -93,9 +93,9 @@ return if(LAZYACCESS(modifiers, ALT_CLICK)) // alt and alt-gr (rightalt) if(LAZYACCESS(modifiers, RIGHT_CLICK)) - base_click_alt_secondary(A) + AltClickSecondaryOn(A) else - base_click_alt(A) + AltClickOn(A) return if(LAZYACCESS(modifiers, CTRL_CLICK)) CtrlClickOn(A) @@ -197,7 +197,7 @@ * A backwards depth-limited breadth-first-search to see if the target is * logically "in" anything adjacent to us. */ -/atom/movable/proc/CanReach(atom/ultimate_target, obj/item/tool, view_only = FALSE) +/atom/proc/CanReach(atom/ultimate_target, obj/item/tool, view_only = FALSE) var/list/direct_access = DirectAccess() var/depth = 1 + (view_only ? STORAGE_VIEW_DEPTH : INVENTORY_DEPTH) @@ -225,9 +225,13 @@ next += target.loc checking = next + + if(SEND_SIGNAL(src, COMSIG_ATOM_CANREACH, ultimate_target) & COMPONENT_ALLOW_REACH) + return TRUE + return FALSE -/atom/movable/proc/DirectAccess() +/atom/proc/DirectAccess() return list(src, loc) /mob/DirectAccess(atom/target) diff --git a/code/_onclick/click_alt.dm b/code/_onclick/click_alt.dm index 51c58408e2557..28801b9816d36 100644 --- a/code/_onclick/click_alt.dm +++ b/code/_onclick/click_alt.dm @@ -1,5 +1,9 @@ +///Main proc for primary alt click +/mob/proc/AltClickOn(atom/target) + base_click_alt(target) + /** - * ### Base proc for alt click interaction left click. + * ### Base proc for alt click interaction left click. Returns if the click was intercepted & handled * * If you wish to add custom `click_alt` behavior for a single type, use that proc. */ @@ -8,43 +12,36 @@ // Check if they've hooked in to prevent src from alt clicking anything if(SEND_SIGNAL(src, COMSIG_MOB_ALTCLICKON, target) & COMSIG_MOB_CANCEL_CLICKON) - return - - // Is it visible (and we're not wearing it (our clothes are invisible))? - if(!CAN_I_SEE(target)) - return + return TRUE - if(is_blind() && !IN_GIVEN_RANGE(src, target, 1)) - return + // If it has a signal handler that returns a click action, done. + if(SEND_SIGNAL(target, COMSIG_CLICK_ALT, src) & CLICK_ACTION_ANY) + return TRUE - var/turf/tile = get_turf(target) + // If it has a custom click_alt that returns success/block, done. + if(can_perform_action(target, (target.interaction_flags_click | SILENT_ADJACENCY))) + return target.click_alt(src) & CLICK_ACTION_ANY - // Ghosties just see loot - if(isobserver(src) || isrevenant(src)) - client.loot_panel.open(tile) - return + return FALSE - if(can_perform_action(target, (target.interaction_flags_click | SILENT_ADJACENCY))) - // If it has a signal handler that returns a click action, done. - if(SEND_SIGNAL(target, COMSIG_CLICK_ALT, src) & CLICK_ACTION_ANY) - return +/mob/living/base_click_alt(atom/target) + SHOULD_NOT_OVERRIDE(TRUE) - // If it has a custom click_alt that returns success/block, done. - if(target.click_alt(src) & CLICK_ACTION_ANY) - return + . = ..() + if(. || !CAN_I_SEE(target) || (is_blind() && !IN_GIVEN_RANGE(src, target, 1))) + return // No alt clicking to view turf from beneath if(HAS_TRAIT(src, TRAIT_MOVE_VENTCRAWLING)) return /// No loot panel if it's on our person - if(isobj(target) && isliving(src)) - var/mob/living/user = src - if(target in user.get_all_gear()) - to_chat(user, span_warning("You can't search for this item, it's already in your inventory! Take it off first.")) - return + if(isobj(target) && (target in get_all_gear())) + to_chat(src, span_warning("You can't search for this item, it's already in your inventory! Take it off first.")) + return - client.loot_panel.open(tile) + client.loot_panel.open(get_turf(target)) + return TRUE /** * ## Custom alt click interaction @@ -78,6 +75,10 @@ return NONE +///Main proc for secondary alt click +/mob/proc/AltClickSecondaryOn(atom/target) + base_click_alt_secondary(target) + /** * ### Base proc for alt click interaction right click. * @@ -90,17 +91,13 @@ if(SEND_SIGNAL(src, COMSIG_MOB_ALTCLICKON_SECONDARY, target) & COMSIG_MOB_CANCEL_CLICKON) return - if(!can_perform_action(target, target.interaction_flags_click | SILENT_ADJACENCY)) - return - //Hook on the atom to intercept the click if(SEND_SIGNAL(target, COMSIG_CLICK_ALT_SECONDARY, src) & COMPONENT_CANCEL_CLICK_ALT_SECONDARY) return - if(isobserver(src) && client && check_rights_for(client, R_DEBUG)) - client.toggle_tag_datum(src) - return - target.click_alt_secondary(src) + // If it has a custom click_alt_secondary then do that + if(can_perform_action(target, target.interaction_flags_click | SILENT_ADJACENCY)) + target.click_alt_secondary(src) /** * ## Custom alt click secondary interaction diff --git a/code/_onclick/click_ctrl.dm b/code/_onclick/click_ctrl.dm index 2e80f01781603..ebb22b9eafd11 100644 --- a/code/_onclick/click_ctrl.dm +++ b/code/_onclick/click_ctrl.dm @@ -20,12 +20,11 @@ if(SEND_SIGNAL(target, COMSIG_CLICK_CTRL, src) & CLICK_ACTION_ANY) return TRUE - // This means the action has been processed even though nothing happened - if(!can_perform_action(target, target.interaction_flags_click | SILENT_ADJACENCY)) - return TRUE - // If it has a custom click_alt that returns success/block, done. - return target.click_ctrl(src) & CLICK_ACTION_ANY + if(can_perform_action(target, target.interaction_flags_click | SILENT_ADJACENCY)) + return target.click_ctrl(src) & CLICK_ACTION_ANY + + return FALSE /** * Ctrl click @@ -35,7 +34,7 @@ SHOULD_NOT_OVERRIDE(TRUE) . = ..() - if(. || world.time < next_move || !CanReach(target)) + if(. || world.time < next_move || !can_perform_action(target, NOT_INSIDE_TARGET | SILENT_ADJACENCY | ALLOW_RESTING | FORBID_TELEKINESIS_REACH)) return . = TRUE diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index 1bbc20d49133f..aa23d5a57eaa0 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -37,17 +37,13 @@ // only if both dragged object & receiver agree to do checks do we proceed var/combined_atom_flags = interaction_flags_atom | over.interaction_flags_atom if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_CHECKS)) - if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_ADJACENT)) - if(!Adjacent(user) || !over.Adjacent(user)) - return // should stop you from dragging through windows + //Check for adjacency + if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_ADJACENT) && (!CanReach(user) || !over.CanReach(user))) + return // should stop you from dragging through windows if(!(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_USABILITY)) - var/combined_flags = interaction_flags_mouse_drop | over.interaction_flags_mouse_drop - if(combined_atom_flags & INTERACT_ATOM_MOUSEDROP_IGNORE_ADJACENT) - combined_flags |= BYPASS_ADJACENCY - else - combined_flags |= SILENT_ADJACENCY - if(!user.can_perform_action(src, combined_flags)) + //Bypass adjacency cause we already checked for it above + if(!user.can_perform_action(src, interaction_flags_mouse_drop | over.interaction_flags_mouse_drop | BYPASS_ADJACENCY)) return // is the mob not able to drag the object with both sides conditions applied mouse_drop_dragged(over, user, src_location, over_location, params) diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index b3d2de3683b67..71d8a81b397c3 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -130,6 +130,9 @@ our_hud.position_action_relative(src, button) save_position() return + + . = ..() + our_hud.position_action(src, screen_loc) save_position() diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 2cfa8147c490f..f8f79f442940b 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -525,7 +525,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." alerttooltipstyle = "cult" var/static/image/narnar var/angle = 0 - var/mob/living/basic/construct/Cviewer + var/mob/living/basic/construct/construct_owner /atom/movable/screen/alert/bloodsense/Initialize(mapload, datum/hud/hud_owner) . = ..() @@ -533,7 +533,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." START_PROCESSING(SSprocessing, src) /atom/movable/screen/alert/bloodsense/Destroy() - Cviewer = null + construct_owner = null STOP_PROCESSING(SSprocessing, src) return ..() @@ -543,45 +543,53 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." if(!owner.mind) return + if(isconstruct(owner)) + construct_owner = owner + else + construct_owner = null + + // construct track + if(construct_owner?.seeking && construct_owner.master) + blood_target = construct_owner.master + desc = "Your blood sense is leading you to [construct_owner.master]" + + // cult track var/datum/antagonist/cult/antag = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!antag) - return - var/datum/objective/sacrifice/sac_objective = locate() in antag.cult_team.objectives + if(antag) + var/datum/objective/sacrifice/sac_objective = locate() in antag.cult_team.objectives + if(antag.cult_team.blood_target) + if(!get_turf(antag.cult_team.blood_target)) + antag.cult_team.unset_blood_target() + else + blood_target = antag.cult_team.blood_target + if(!blood_target) + if(sac_objective && !sac_objective.check_completion()) + if(icon_state == "runed_sense0") + return + animate(src, transform = null, time = 1, loop = 0) + angle = 0 + cut_overlays() + icon_state = "runed_sense0" + desc = "Nar'Sie demands that [sac_objective.target] be sacrificed before the summoning ritual can begin." + add_overlay(sac_objective.sac_image) + else + var/datum/objective/eldergod/summon_objective = locate() in antag.cult_team.objectives + if(!summon_objective) + return + var/list/location_list = list() + for(var/area/area_to_check in summon_objective.summon_spots) + location_list += area_to_check.get_original_area_name() + desc = "The sacrifice is complete, summon Nar'Sie! The summoning can only take place in [english_list(location_list)]!" + if(icon_state == "runed_sense1") + return + animate(src, transform = null, time = 1, loop = 0) + angle = 0 + cut_overlays() + icon_state = "runed_sense1" + add_overlay(narnar) + return - if(antag.cult_team.blood_target) - if(!get_turf(antag.cult_team.blood_target)) - antag.cult_team.unset_blood_target() - else - blood_target = antag.cult_team.blood_target - if(Cviewer?.seeking && Cviewer.master) - blood_target = Cviewer.master - desc = "Your blood sense is leading you to [Cviewer.master]" - if(!blood_target) - if(sac_objective && !sac_objective.check_completion()) - if(icon_state == "runed_sense0") - return - animate(src, transform = null, time = 1, loop = 0) - angle = 0 - cut_overlays() - icon_state = "runed_sense0" - desc = "Nar'Sie demands that [sac_objective.target] be sacrificed before the summoning ritual can begin." - add_overlay(sac_objective.sac_image) - else - var/datum/objective/eldergod/summon_objective = locate() in antag.cult_team.objectives - if(!summon_objective) - return - var/list/location_list = list() - for(var/area/area_to_check in summon_objective.summon_spots) - location_list += area_to_check.get_original_area_name() - desc = "The sacrifice is complete, summon Nar'Sie! The summoning can only take place in [english_list(location_list)]!" - if(icon_state == "runed_sense1") - return - animate(src, transform = null, time = 1, loop = 0) - angle = 0 - cut_overlays() - icon_state = "runed_sense1" - add_overlay(narnar) - return + // actual tracking var/turf/P = get_turf(blood_target) var/turf/Q = get_turf(owner) if(!P || !Q || (P.z != Q.z)) //The target is on a different Z level, we cannot sense that far. @@ -593,6 +601,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." desc = "You are currently tracking [real_target.real_name] in [get_area_name(blood_target)]." else desc = "You are currently tracking [blood_target] in [get_area_name(blood_target)]." + var/target_angle = get_angle(Q, P) var/target_dist = get_dist(P, Q) cut_overlays() diff --git a/code/_onclick/hud/new_player.dm b/code/_onclick/hud/new_player.dm index 5fa44b7f0542b..f21426de34a74 100644 --- a/code/_onclick/hud/new_player.dm +++ b/code/_onclick/hud/new_player.dm @@ -97,21 +97,31 @@ var/highlighted = FALSE /// The ref of the mob that owns this button. Only the owner can click on it. var/owner + var/requires_discord = TRUE //MASSMETA EDIT ADDITION (discord verification) /atom/movable/screen/lobby/button/Click(location, control, params) - if(owner != REF(usr)) - return + //MASSMETA EDIT CHANGE START (discord verification) + var/force_verification = CONFIG_GET(number/force_verification) + var/discord = SSdiscord.lookup_id(usr.ckey) + if (force_verification && !discord && requires_discord) + if(tgui_alert(usr, "Для игры на сервере МассМета нужен привязанный аккаунт дискорда(OOC → Verify Discord). Желаете ли Вы открыть ссылку в браузере?",, list("Да","Нет"))!="Да") + return + DIRECT_OUTPUT(usr, link("https://discord.gg/WRJ8bns7X7")) //прямая ссылка в канал верификации + else + if(owner != REF(usr)) + return - if(!usr.client || usr.client.interviewee) - return + if(!usr.client || usr.client.interviewee) + return - . = ..() + . = ..() - if(!enabled) - return - flick("[base_icon_state]_pressed", src) - update_appearance(UPDATE_ICON) - return TRUE + if(!enabled) + return + flick("[base_icon_state]_pressed", src) + update_appearance(UPDATE_ICON) + return TRUE + //MASSMETA EDIT CHANGE END /atom/movable/screen/lobby/button/MouseEntered(location,control,params) if(owner != REF(usr)) @@ -329,6 +339,7 @@ icon_state = "settings" base_icon_state = "settings" screen_loc = "TOP:-122,CENTER:+29" + requires_discord = FALSE //MASSMETA EDIT ADDITION (discord verification) /atom/movable/screen/lobby/button/bottom/settings/Click(location, control, params) . = ..() @@ -345,6 +356,7 @@ icon_state = "changelog" base_icon_state = "changelog" screen_loc ="TOP:-122,CENTER:+57" + requires_discord = FALSE //MASSMETA EDIT ADDITION (discord verification) /atom/movable/screen/lobby/button/bottom/changelog_button/Click(location, control, params) . = ..() @@ -452,6 +464,7 @@ layer = LOBBY_BELOW_MENU_LAYER screen_loc = "TOP:-82,CENTER:-54" always_shown = TRUE + requires_discord = FALSE //MASSMETA EDIT ADDITION (discord verification) var/blip_enabled = TRUE diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm index f3bb3713225c9..b6ac49446fc80 100644 --- a/code/_onclick/hud/picture_in_picture.dm +++ b/code/_onclick/hud/picture_in_picture.dm @@ -1,6 +1,7 @@ /atom/movable/screen/movable/pic_in_pic name = "Picture-in-picture" screen_loc = "CENTER" + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE var/atom/center var/width = 0 diff --git a/code/_onclick/hud/rendering/plane_master_group.dm b/code/_onclick/hud/rendering/plane_master_group.dm index 63c202b64fba8..894190984e652 100644 --- a/code/_onclick/hud/rendering/plane_master_group.dm +++ b/code/_onclick/hud/rendering/plane_master_group.dm @@ -34,6 +34,14 @@ stack_trace("Hey brother, our key [key] is already in use by a plane master group on the passed in hud, belonging to [viewing_hud.mymob]. Ya fucked up, why are there dupes") return +#if MIN_COMPILER_VERSION > 516 + #warn Fully change default relay_loc to "1,1", rather than changing it based on client version +#endif + + if(viewing_hud.mymob?.client?.byond_version > 515) + relay_loc = "1,1" + rebuild_plane_masters() + our_hud = viewing_hud our_hud.master_groups[key] = src show_hud() diff --git a/code/_onclick/hud/rendering/render_plate.dm b/code/_onclick/hud/rendering/render_plate.dm index d33162a5b5fa6..aa7f9fe30c516 100644 --- a/code/_onclick/hud/rendering/render_plate.dm +++ b/code/_onclick/hud/rendering/render_plate.dm @@ -382,7 +382,7 @@ render_relay_planes = list(RENDER_PLANE_MASTER) /** - * Plane master proc called in Initialize() that creates relay objects, and sets them uo as needed + * Plane master proc called in Initialize() that creates relay objects, and sets them up as needed * Sets: * * layer from plane to avoid z-fighting * * planes to relay the render to @@ -392,6 +392,9 @@ * Other vars such as alpha will automatically be applied with the render source */ /atom/movable/screen/plane_master/proc/generate_render_relays() +#if MIN_COMPILER_VERSION > 516 + #warn Fully change default relay_loc to "1,1" +#endif var/relay_loc = home?.relay_loc || "CENTER" // If we're using a submap (say for a popup window) make sure we draw onto it if(home?.map) @@ -426,7 +429,7 @@ if(!length(relays) && !initial(render_target)) render_target = OFFSET_RENDER_TARGET(get_plane_master_render_base(name), offset) if(!relay_loc) - relay_loc = "CENTER" + relay_loc = (show_to?.byond_version > 515) ? "1,1" : "CENTER" // If we're using a submap (say for a popup window) make sure we draw onto it if(home?.map) relay_loc = "[home.map]:[relay_loc]" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 2fc1fe644eec1..8cc29740870ca 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -294,7 +294,8 @@ /atom/movable/screen/close name = "close" plane = ABOVE_HUD_PLANE - icon_state = "backpack_close" + icon = 'icons/hud/screen_midnight.dmi' + icon_state = "storage_close" /atom/movable/screen/close/Initialize(mapload, datum/hud/hud_owner, new_master) . = ..() @@ -439,8 +440,8 @@ /atom/movable/screen/storage name = "storage" - icon_state = "block" - screen_loc = "7,7 to 10,8" + icon = 'icons/hud/screen_midnight.dmi' + icon_state = "storage_cell" plane = HUD_PLANE /atom/movable/screen/storage/Initialize(mapload, datum/hud/hud_owner, new_master) @@ -465,6 +466,27 @@ return TRUE +/atom/movable/screen/storage/corner + name = "storage" + icon_state = "storage_corner_topleft" + +/atom/movable/screen/storage/corner/top_right + icon_state = "storage_corner_topright" + +/atom/movable/screen/storage/corner/bottom_left + icon_state = "storage_corner_bottomleft" + +/atom/movable/screen/storage/corner/bottom_right + icon_state = "storage_corner_bottomright" + +/atom/movable/screen/storage/rowjoin + name = "storage" + icon_state = "storage_rowjoin_left" + alpha = 0 + +/atom/movable/screen/storage/rowjoin/right + icon_state = "storage_rowjoin_right" + /atom/movable/screen/throw_catch name = "throw/catch" icon = 'icons/hud/screen_midnight.dmi' diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index beeb1599f2038..a5c2035b9394d 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -8,6 +8,11 @@ * * [/obj/item/proc/afterattack]. The return value does not matter. */ /obj/item/proc/melee_attack_chain(mob/user, atom/target, params) + //Proxy replaces src cause it returns an atom that will attack the target on our behalf + var/obj/item/source_atom = get_proxy_attacker_for(target, user) + if(source_atom != src) //if we are someone else then call that attack chain else we can proceed with the usual stuff + return source_atom.melee_attack_chain(user, target, params) + var/list/modifiers = params2list(params) var/is_right_clicking = LAZYACCESS(modifiers, RIGHT_CLICK) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index c5a18651e002a..89370b8a0a5a5 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -478,7 +478,7 @@ Example config: if (isnull(banned_words) || banned_words.len == 0) return null - var/static/regex/should_join_on_word_bounds = regex(@"^[\wа-яё]+$", "i") //MASSMETA EDIT + var/static/regex/should_join_on_word_bounds = regex(@"^[\wа-яё]+$", "i") //MASSMETA EDIT CHANGE - ORIGINAL: = regex(@"^\w+$") // Stuff like emoticons needs another split, since there's no way to get ":)" on a word bound. // Furthermore, normal words need to be on word bounds, so "(adminhelp)" gets filtered. @@ -493,7 +493,7 @@ Example config: // We don't want a whitespace_split part if there's no stuff that requires it var/whitespace_split = to_join_on_whitespace_splits.len > 0 ? @"(?:(?:^|\s+)(" + jointext(to_join_on_whitespace_splits, "|") + @")(?:$|\s+))" : "" - var/word_bounds = @"((" + jointext(to_join_on_word_bounds, "|") + @"))" //MASSMETA EDIT + var/word_bounds = @"((" + jointext(to_join_on_word_bounds, "|") + @"))" //MASSMETA EDIT CHANGE - ORIGINAL: = @"(\b(" + jointext(to_join_on_word_bounds, "|") + @")\b)" var/regex_filter = whitespace_split != "" ? "([whitespace_split]|[word_bounds])" : word_bounds return regex(regex_filter, "i") diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 068f857c8cb31..8297085dbcf01 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -464,3 +464,12 @@ /datum/config_entry/number/max_positive_quirks default = 6 min_val = -1 + +/** + * A config that skews with the random spawners weights + * If the value is lower than 1, it'll tend to even out the odds + * If higher than 1, it'll lean toward common spawns even more. + */ +/datum/config_entry/number/random_loot_weight_modifier + default = 1 + min_val = 0.05 diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 964459aea68d4..8a2b1ab3fb69d 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -447,6 +447,12 @@ /datum/config_entry/flag/irc_first_connection_alert // do we notify the irc channel when somebody is connecting for the first time? +//MASSMETA EDIT ADDITION BEGIN (discord verification) - FORCED DISCORD VERIFICATION +/datum/config_entry/number/force_verification + default = null + min_val = 0 +//MASSMETA EDIT ADDITION END + /datum/config_entry/string/ipintel_base default = "check.getipintel.net" diff --git a/code/controllers/subsystem/ambience.dm b/code/controllers/subsystem/ambience.dm index e138c2d6048c5..cae5d85246d80 100644 --- a/code/controllers/subsystem/ambience.dm +++ b/code/controllers/subsystem/ambience.dm @@ -27,6 +27,9 @@ SUBSYSTEM_DEF(ambience) client_old_areas -= client_iterator continue + if(!client_mob.can_hear()) //WHAT? I CAN'T HEAR YOU + continue + //Check to see if the client-mob is in a valid area var/area/current_area = get_area(client_mob) if(!current_area) //Something's gone horribly wrong @@ -83,3 +86,52 @@ SUBSYSTEM_DEF(ambience) if(!M.has_light_nearby() && prob(0.5)) return ..(M, pick(minecraft_cave_noises)) return ..() + +/** + * Ambience buzz handling called by either area/Enter() or refresh_looping_ambience() + */ + +/mob/proc/update_ambience_area(area/new_area) + + var/old_tracked_area = ambience_tracked_area + if(old_tracked_area) + UnregisterSignal(old_tracked_area, COMSIG_AREA_POWER_CHANGE) + ambience_tracked_area = null + if(!client) + return + if(new_area) + ambience_tracked_area = new_area + RegisterSignal(ambience_tracked_area, COMSIG_AREA_POWER_CHANGE, PROC_REF(refresh_looping_ambience), TRUE) + + refresh_looping_ambience() + +/mob/proc/refresh_looping_ambience() + SIGNAL_HANDLER + + if(!client) // If a tree falls in the woods. + return + + var/area/my_area = get_area(src) + var/sound_to_use = my_area.ambient_buzz + + if(!sound_to_use || !(client.prefs.read_preference(/datum/preference/toggle/sound_ship_ambience))) + SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = CHANNEL_BUZZ)) + client.current_ambient_sound = null + return + + if(!can_hear()) // Can the mob hear? + SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = CHANNEL_BUZZ)) + client.current_ambient_sound = null + return + + //Station ambience is dependant on a functioning and charged APC with enviorment power enabled. + if(!is_mining_level(my_area.z) && ((!my_area.apc || !my_area.apc.operating || !my_area.apc.cell?.charge && my_area.requires_power || !my_area.power_environ))) + SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = CHANNEL_BUZZ)) + client.current_ambient_sound = null + return + else + if(sound_to_use == client.current_ambient_sound) // Don't reset current loops + return + + client.current_ambient_sound = sound_to_use + SEND_SOUND(src, sound(my_area.ambient_buzz, repeat = 1, wait = 0, volume = my_area.ambient_buzz_vol, channel = CHANNEL_BUZZ)) diff --git a/code/controllers/subsystem/bitrunning.dm b/code/controllers/subsystem/bitrunning.dm index 2b303911e42c9..78afb101945b0 100644 --- a/code/controllers/subsystem/bitrunning.dm +++ b/code/controllers/subsystem/bitrunning.dm @@ -24,7 +24,8 @@ SUBSYSTEM_DEF(bitrunning) var/can_view = domain.difficulty < scanner_tier && domain.cost <= points + 5 var/can_view_reward = domain.difficulty < (scanner_tier + 1) && domain.cost <= points + 3 - levels += list(list( + UNTYPED_LIST_ADD(levels, list( + "announce_ghosts"= domain.announce_to_ghosts, "cost" = domain.cost, "desc" = can_view ? domain.desc : "Limited scanning capabilities. Cannot infer domain details.", "difficulty" = domain.difficulty, diff --git a/code/controllers/subsystem/minor_mapping.dm b/code/controllers/subsystem/minor_mapping.dm index 3c4f9e739fe28..961f0831afcff 100644 --- a/code/controllers/subsystem/minor_mapping.dm +++ b/code/controllers/subsystem/minor_mapping.dm @@ -13,7 +13,7 @@ SUBSYSTEM_DEF(minor_mapping) return SS_INIT_NO_NEED #else trigger_migration(CONFIG_GET(number/mice_roundstart)) - place_satchels(satchel_amount = 10) // MASSMETA EDIT 2 -> 10 + place_satchels(satchel_amount = 10) //MASSMETA EDIT CHANGE - ORIGINAL: = 2 return SS_INIT_SUCCESS #endif diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 25284b8b05a9c..5a3ce470b5aef 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -13,7 +13,8 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/item_quirk/clown_enjoyer, /datum/quirk/item_quirk/mime_fan), list(/datum/quirk/bad_touch, /datum/quirk/friendly), list(/datum/quirk/extrovert, /datum/quirk/introvert), - list(/datum/quirk/prosthetic_limb, /datum/quirk/quadruple_amputee, /datum/quirk/transhumanist, /datum/quirk/body_purist), + list(/datum/quirk/prosthetic_limb, /datum/quirk/quadruple_amputee, /datum/quirk/body_purist), + list(/datum/quirk/transhumanist, /datum/quirk/body_purist), list(/datum/quirk/prosthetic_organ, /datum/quirk/tin_man, /datum/quirk/body_purist), list(/datum/quirk/quadruple_amputee, /datum/quirk/paraplegic, /datum/quirk/hemiplegic), list(/datum/quirk/quadruple_amputee, /datum/quirk/frail), @@ -25,14 +26,14 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/photophobia, /datum/quirk/nyctophobia), list(/datum/quirk/item_quirk/settler, /datum/quirk/freerunning), list(/datum/quirk/numb, /datum/quirk/selfaware), - // MASSMETA EDIT ADDITION START + //MASSMETA EDIT ADDITION START (augmented quirk) list(/datum/quirk/augmented, /datum/quirk/quadruple_amputee), list(/datum/quirk/augmented, /datum/quirk/paraplegic), list(/datum/quirk/augmented, /datum/quirk/hemiplegic), list(/datum/quirk/augmented, /datum/quirk/frail), list(/datum/quirk/augmented, /datum/quirk/prosthetic_limb), list(/datum/quirk/augmented, /datum/quirk/body_purist), - // MASSMETA EDIT ADDITION END + //MASSMETA EDIT ADDITION END )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index d52fe83856a45..6a9cc631cf529 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -74,7 +74,7 @@ SUBSYSTEM_DEF(radiation) if(pulse_information.chance < 100) // Prevents log(0) runtime if chance is 100% intensity = -log(1 - pulse_information.chance / 100) * (1 + pulse_information.max_range / 2) ** 2 - perceived_intensity = intensity * INVERSE((1 + get_dist_euclidian(source, target)) ** 2) // Diminishes over range. + perceived_intensity = intensity * INVERSE((1 + get_dist_euclidean(source, target)) ** 2) // Diminishes over range. perceived_intensity *= (current_insulation - pulse_information.threshold) * INVERSE(1 - pulse_information.threshold) // Perceived intensity decreases as objects that absorb radiation block its trajectory. perceived_chance = 100 * (1 - NUM_E ** -perceived_intensity) else diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm index b51e686c6a644..db3f9aa3a0db5 100644 --- a/code/controllers/subsystem/research.dm +++ b/code/controllers/subsystem/research.dm @@ -7,7 +7,7 @@ SUBSYSTEM_DEF(research) //TECHWEB STATIC var/list/techweb_nodes = list() //associative id = node datum var/list/techweb_designs = list() //associative id = node datum - var/list/datum/design/item_to_design = list() //typepath = list of design datums + var/list/list/datum/design/item_to_design = list() //typepath = list of design datums ///List of all techwebs, generating points or not. ///Autolathes, Mechfabs, and others all have shared techwebs, for example. diff --git a/code/controllers/subsystem/spatial_gridmap.dm b/code/controllers/subsystem/spatial_gridmap.dm index 81ae29f6bad4f..76aa484bf92ce 100644 --- a/code/controllers/subsystem/spatial_gridmap.dm +++ b/code/controllers/subsystem/spatial_gridmap.dm @@ -234,7 +234,7 @@ SUBSYSTEM_DEF(spatial_grid) . = list() //technically THIS list only contains lists, but inside those lists are grid cell datums and we can go without a SINGLE var init if we do this - var/list/datum/spatial_grid_cell/grid_level = grids_by_z_level[center_turf.z] + var/list/list/datum/spatial_grid_cell/grid_level = grids_by_z_level[center_turf.z] switch(type) if(SPATIAL_GRID_CONTENTS_TYPE_CLIENTS) diff --git a/code/controllers/subsystem/tts.dm b/code/controllers/subsystem/tts.dm index b9cb85ea78af8..cb672e5c69931 100644 --- a/code/controllers/subsystem/tts.dm +++ b/code/controllers/subsystem/tts.dm @@ -58,14 +58,19 @@ SUBSYSTEM_DEF(tts) var/datum/http_request/request = new() var/list/headers = list() headers["Authorization"] = CONFIG_GET(string/tts_http_token) - request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-voices", "", headers) + request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/speakers", "", headers) //MASSMETA EDIT CHANGE (/n/tts) - ORIGINAL: "[CONFIG_GET(string/tts_http_url)]/tts-voices" request.begin_async() UNTIL(request.is_complete()) var/datum/http_response/response = request.into_response() if(response.errored || response.status_code != 200) stack_trace(response.error) return FALSE - available_speakers = json_decode(response.body) + //available_speakers = json_decode(response.body) //MASSMETA EDIT REMOVAL (/n/tts) + //MASSMETA EDIT ADDITION START (/n/tts) + var/list/temp_speakers = json_decode(response.body)?["voices"] + for(var/speaker in temp_speakers) + available_speakers.Add(speaker["speakers"][1]) + //MASSMETA EDIT ADDITION END tts_enabled = TRUE if(CONFIG_GET(str_list/tts_voice_blacklist)) var/list/blacklisted_voices = CONFIG_GET(str_list/tts_voice_blacklist) @@ -269,13 +274,15 @@ SUBSYSTEM_DEF(tts) if(!fexists("tmp/tts/init.txt")) rustg_file_write("rustg HTTP requests can't write to folders that don't exist, so we need to make it exist.", "tmp/tts/init.txt") - var/static/regex/contains_alphanumeric = regex("\[a-zA-Z0-9]") + //var/static/regex/contains_alphanumeric = regex("\[a-zA-Z0-9]") MASSMETA EDIT REMOVAL (/n/tts) // If there is no alphanumeric char, the output will usually be static, so // don't bother sending - if(contains_alphanumeric.Find(message) == 0) - return + //MASSMETA EDIT REMOVAL BEGIN (/n/tts) + //if(contains_alphanumeric.Find(message) == 0) + //return + //MASSMETA EDIT REMOVAL END - var/shell_scrubbed_input = tts_speech_filter(message) + var/shell_scrubbed_input = message //MASSMETA EDIT CHANGE (/n/tts) - ORIGINAL: = tts_speech_filter(message) shell_scrubbed_input = copytext(shell_scrubbed_input, 1, 300) var/identifier = "[sha1(speaker + filter + num2text(pitch) + special_filters + shell_scrubbed_input)].[world.time]" if(!(speaker in available_speakers)) @@ -288,8 +295,10 @@ SUBSYSTEM_DEF(tts) var/datum/http_request/request_blips = new() var/file_name = "tmp/tts/[identifier].ogg" var/file_name_blips = "tmp/tts/[identifier]_blips.ogg" - request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts?voice=[speaker]&identifier=[identifier]&filter=[url_encode(filter)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name) - request_blips.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-blips?voice=[speaker]&identifier=[identifier]&filter=[url_encode(filter)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name_blips) + //MASSMETA EDIT CHANGE START (/n/tts) + request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/?speaker=[speaker]&effect=[url_encode(special_filters)]&ext=ogg&text=[shell_scrubbed_input]", null, headers, file_name) + request_blips.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/?speaker=[speaker]&effect=[url_encode(special_filters)]&ext=ogg&text=[shell_scrubbed_input]", null, headers, file_name_blips) + //MASSMETA EDIT CHANGE END var/datum/tts_request/current_request = new /datum/tts_request(identifier, request, request_blips, shell_scrubbed_input, target, local, language, message_range, volume_offset, listeners, pitch) var/list/player_queued_tts_messages = queued_tts_messages[target] if(!player_queued_tts_messages) diff --git a/code/datums/actions/items/cult_dagger.dm b/code/datums/actions/items/cult_dagger.dm index 76e92c7b23198..6b188e85e9071 100644 --- a/code/datums/actions/items/cult_dagger.dm +++ b/code/datums/actions/items/cult_dagger.dm @@ -17,10 +17,10 @@ return ..() /datum/action/item_action/cult_dagger/Trigger(trigger_flags) - for(var/obj/item/held_item as anything in owner.held_items) // In case we were already holding a dagger - if(istype(held_item, /obj/item/melee/cultblade/dagger)) - held_item.attack_self(owner) - return + if(target in owner.held_items) + var/obj/item/target_item = target + target_item.attack_self(owner) + return var/obj/item/target_item = target if(owner.can_equip(target_item, ITEM_SLOT_HANDS)) owner.temporarilyRemoveItemFromInventory(target_item) diff --git a/code/datums/actions/items/toggles.dm b/code/datums/actions/items/toggles.dm index 53c9e4f53cc9f..449cf11124abf 100644 --- a/code/datums/actions/items/toggles.dm +++ b/code/datums/actions/items/toggles.dm @@ -116,3 +116,36 @@ /datum/action/item_action/call_link name = "Call MODlink" +/datum/action/item_action/toggle_nv + name = "Toggle Night Vision" + var/stored_cutoffs + var/stored_colour + +/datum/action/item_action/toggle_nv/New(obj/item/clothing/glasses/target) + . = ..() + target.AddElement(/datum/element/update_icon_updates_onmob) + +/datum/action/item_action/toggle_nv/Trigger(trigger_flags) + if(!istype(target, /obj/item/clothing/glasses)) + return ..() + var/obj/item/clothing/glasses/goggles = target + var/mob/holder = goggles.loc + if(!istype(holder) || holder.get_slot_by_item(goggles) != ITEM_SLOT_EYES) + holder = null + if(stored_cutoffs) + goggles.color_cutoffs = stored_cutoffs + goggles.flash_protect = FLASH_PROTECTION_SENSITIVE + stored_cutoffs = null + if(stored_colour) + goggles.change_glass_color(stored_colour) + playsound(goggles, 'sound/items/night_vision_on.ogg', 30, TRUE, -3) + else + stored_cutoffs = goggles.color_cutoffs + stored_colour = goggles.glass_colour_type + goggles.color_cutoffs = list() + goggles.flash_protect = FLASH_PROTECTION_NONE + if(stored_colour) + goggles.change_glass_color(null) + playsound(goggles, 'sound/machines/click.ogg', 30, TRUE, -3) + holder?.update_sight() + goggles.update_appearance() diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm index 7b46a7b06e803..33b63f09a01dc 100644 --- a/code/datums/ai/_ai_controller.dm +++ b/code/datums/ai/_ai_controller.dm @@ -176,7 +176,15 @@ multiple modular subtrees with behaviors if(ai_status == AI_STATUS_OFF) return - if(exited && (get_dist(pawn, (islist(exited) ? exited[1] : exited)) <= interesting_dist)) //is our target in between interesting cells? + var/distance = INFINITY + if(islist(exited)) + var/list/exited_list = exited + distance = get_dist(pawn, exited_list[1]) + else if(isatom(exited)) + var/atom/exited_atom = exited + distance = get_dist(pawn, exited_atom) + + if(distance <= interesting_dist) //is our target in between interesting cells? return if(should_idle()) diff --git a/code/datums/ai/basic_mobs/basic_subtrees/go_for_swim.dm b/code/datums/ai/basic_mobs/basic_subtrees/go_for_swim.dm index 12c77119f3e18..e6427455c4edf 100644 --- a/code/datums/ai/basic_mobs/basic_subtrees/go_for_swim.dm +++ b/code/datums/ai/basic_mobs/basic_subtrees/go_for_swim.dm @@ -35,7 +35,7 @@ var/look_for_land = controller.blackboard[BB_CURRENTLY_SWIMMING] var/list/possible_turfs = list() for(var/turf/possible_turf in oview(search_range, living_pawn)) - if(isclosedturf(possible_turf) || isspaceturf(possible_turf) || isopenspaceturf(possible_turf)) + if(isclosedturf(possible_turf) || is_space_or_openspace(possible_turf)) continue if(possible_turf.is_blocked_turf()) continue diff --git a/code/datums/ai/basic_mobs/targeting_strategies/basic_targeting_strategy.dm b/code/datums/ai/basic_mobs/targeting_strategies/basic_targeting_strategy.dm index 14f0d03207959..07b544bc0a296 100644 --- a/code/datums/ai/basic_mobs/targeting_strategies/basic_targeting_strategy.dm +++ b/code/datums/ai/basic_mobs/targeting_strategies/basic_targeting_strategy.dm @@ -137,3 +137,10 @@ /datum/targeting_strategy/basic/same_faction/faction_check(mob/living/living_mob, mob/living/the_target) return !..() // inverts logic to ONLY target mobs that share a faction + +/datum/targeting_strategy/basic/allow_turfs + +/datum/targeting_strategy/basic/allow_turfs/can_attack(mob/living/living_mob, atom/the_target, vision_range) + if(isturf(the_target)) + return TRUE + return ..() diff --git a/code/datums/ai/objects/mod.dm b/code/datums/ai/objects/mod.dm index edad77aa4c4af..2b4c1f7e2b001 100644 --- a/code/datums/ai/objects/mod.dm +++ b/code/datums/ai/objects/mod.dm @@ -4,6 +4,7 @@ BB_MOD_TARGET, BB_MOD_IMPLANT, ) + can_idle = FALSE max_target_distance = MOD_AI_RANGE //a little spicy but its one specific item that summons it, and it doesn't run otherwise ai_movement = /datum/ai_movement/jps/modsuit ///ID card generated from the suit's required access. Used for pathing. diff --git a/code/datums/ai/oldhostile/hostile_tameable.dm b/code/datums/ai/oldhostile/hostile_tameable.dm index d76ffb8a282d4..1c30cb95487c1 100644 --- a/code/datums/ai/oldhostile/hostile_tameable.dm +++ b/code/datums/ai/oldhostile/hostile_tameable.dm @@ -106,10 +106,11 @@ if(!COOLDOWN_FINISHED(src, command_cooldown)) return - if(!istype(clicker) || blackboard[BB_HOSTILE_FRIEND] != clicker) + if(!istype(clicker) || blackboard[BB_HOSTILE_FRIEND] != clicker || !clicker.can_perform_action(source)) return - . = CLICK_ACTION_BLOCKING + INVOKE_ASYNC(src, PROC_REF(command_radial), clicker) + return CLICK_ACTION_BLOCKING /// Show the command radial menu /datum/ai_controller/hostile_friend/proc/command_radial(mob/living/clicker) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index acf9ceead56ce..b258abed65dda 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -273,17 +273,17 @@ */ /datum/proc/GetExactComponent(datum/component/c_type) RETURN_TYPE(c_type) - if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED || initial(c_type.dupe_mode) == COMPONENT_DUPE_SELECTIVE) + var/initial_type_mode = initial(c_type.dupe_mode) + if(initial_type_mode == COMPONENT_DUPE_ALLOWED || initial_type_mode == COMPONENT_DUPE_SELECTIVE) stack_trace("GetComponent was called to get a component of which multiple copies could be on an object. This can easily break and should be changed. Type: \[[c_type]\]") - var/list/dc = _datum_components - if(!dc) + var/list/all_components = _datum_components + if(!all_components) return null - var/datum/component/C = dc[c_type] - if(C) - if(length(C)) - C = C[1] - if(C.type == c_type) - return C + var/datum/component/potential_component + if(length(all_components)) + potential_component = all_components[c_type] + if(potential_component?.type == c_type) + return potential_component return null /** diff --git a/code/datums/elements/amputating_limbs.dm b/code/datums/components/amputating_limbs.dm similarity index 65% rename from code/datums/elements/amputating_limbs.dm rename to code/datums/components/amputating_limbs.dm index 8684a76f47fc3..bfaf52ca90ca5 100644 --- a/code/datums/elements/amputating_limbs.dm +++ b/code/datums/components/amputating_limbs.dm @@ -1,7 +1,5 @@ /// This component will intercept bare-handed attacks by the owner on sufficiently injured carbons and amputate random limbs instead -/datum/element/amputating_limbs - element_flags = ELEMENT_BESPOKE - argument_hash_start_idx = 2 +/datum/component/amputating_limbs /// How long does it take? var/surgery_time /// What is the means by which we describe the act of amputation? @@ -12,34 +10,38 @@ var/snip_chance /// The types of limb we can remove var/list/target_zones + /// Callback for a proc right before confirming the attack. If it returns FALSE, cancel + var/datum/callback/pre_hit_callback -/datum/element/amputating_limbs/Attach( - datum/target, +/datum/component/amputating_limbs/Initialize( surgery_time = 5 SECONDS, surgery_verb = "prying", minimum_stat = SOFT_CRIT, snip_chance = 100, list/target_zones = list(BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_ARM, BODY_ZONE_R_LEG), + datum/callback/pre_hit_callback, ) . = ..() - if (!isliving(target)) - return ELEMENT_INCOMPATIBLE + if (!isliving(parent)) + return COMPONENT_INCOMPATIBLE if (!length(target_zones)) - CRASH("[src] for [target] was not provided a valid list of body zones to target.") + CRASH("[src] for [parent] was not provided a valid list of body zones to target.") src.surgery_time = surgery_time src.surgery_verb = surgery_verb src.minimum_stat = minimum_stat src.snip_chance = snip_chance src.target_zones = target_zones - RegisterSignals(target, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET), PROC_REF(try_amputate)) + src.pre_hit_callback = pre_hit_callback -/datum/element/amputating_limbs/Detach(datum/source) - UnregisterSignal(source, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)) - return ..() +/datum/component/amputating_limbs/RegisterWithParent() + RegisterSignals(parent, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET), PROC_REF(try_amputate)) + +/datum/component/amputating_limbs/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)) /// Called when you click on literally anything with your hands, see if it is an injured carbon and then try to cut it up -/datum/element/amputating_limbs/proc/try_amputate(mob/living/surgeon, atom/victim, proximity, modifiers) +/datum/component/amputating_limbs/proc/try_amputate(mob/living/surgeon, atom/victim, proximity, modifiers) SIGNAL_HANDLER if (!proximity || !iscarbon(victim) || HAS_TRAIT(victim, TRAIT_NODISMEMBER) || !prob(snip_chance)) return @@ -52,6 +54,9 @@ surgeon.balloon_alert(surgeon, "already busy!") return COMPONENT_CANCEL_ATTACK_CHAIN + if(pre_hit_callback && !pre_hit_callback.Invoke(victim)) + return + var/list/valid_targets = list() for (var/obj/item/bodypart/possible_target as anything in limbed_victim.bodyparts) if (possible_target.bodypart_flags & BODYPART_UNREMOVABLE) @@ -67,8 +72,9 @@ return COMPONENT_CANCEL_ATTACK_CHAIN /// Chop one off -/datum/element/amputating_limbs/proc/amputate(mob/living/surgeon, mob/living/carbon/victim, obj/item/bodypart/to_remove) - surgeon.visible_message(span_warning("[surgeon] [surgery_verb] [to_remove] off of [victim]!")) +/datum/component/amputating_limbs/proc/amputate(mob/living/surgeon, mob/living/carbon/victim, obj/item/bodypart/to_remove) + if(surgery_time > 0 SECONDS) + surgeon.visible_message(span_warning("[surgeon] is [surgery_verb] the [to_remove] off of [victim]!")) if (surgery_time > 0 && !do_after(surgeon, delay = surgery_time, target = victim)) return to_remove.dismember() diff --git a/code/datums/components/aquarium_content.dm b/code/datums/components/aquarium_content.dm index 21e082399a882..21c6c75ca169a 100644 --- a/code/datums/components/aquarium_content.dm +++ b/code/datums/components/aquarium_content.dm @@ -1,3 +1,14 @@ +///Malus to the beauty value if the fish content is dead +#define DEAD_FISH_BEAUTY -500 +///Prevents more impressive fishes from providing a positive beauty even when dead. +#define MAX_DEAD_FISH_BEAUTY -200 +///Some fish are already so ugly, they can't get much worse when dead +#define MIN_DEAD_FISH_BEAUTY -600 + +///Defines that clamp the beauty of the aquarium, to prevent it from making most areas great or horrid all by itself. +#define MIN_AQUARIUM_BEAUTY -3500 +#define MAX_AQUARIUM_BEAUTY 6000 + /// Allows movables to be inserted/displayed in aquariums. /datum/component/aquarium_content /// Keeps track of our current aquarium. @@ -60,13 +71,19 @@ /// Signals of the parent that will trigger animation update var/animation_update_signals + /// The current beauty this component gives to the aquarium it's in + var/beauty -/datum/component/aquarium_content/Initialize(icon, animation_getter, animation_update_signals) + /// The original value of the beauty this component had when initialized + var/original_beauty + +/datum/component/aquarium_content/Initialize(icon, animation_getter, animation_update_signals, beauty) if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE src.animation_getter = animation_getter src.animation_update_signals = animation_update_signals + src.beauty = original_beauty = beauty if(animation_update_signals) RegisterSignals(parent, animation_update_signals, PROC_REF(generate_animation)) @@ -78,6 +95,7 @@ InitializeOther() ADD_TRAIT(parent, TRAIT_FISH_CASE_COMPATIBILE, REF(src)) + RegisterSignal(parent, COMSIG_TRY_INSERTING_IN_AQUARIUM, PROC_REF(is_ready_to_insert)) RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(enter_aquarium)) //If component is added to something already in aquarium at the time initialize it properly. @@ -109,6 +127,18 @@ randomize_position = TRUE + RegisterSignal(fish, COMSIG_FISH_STATUS_CHANGED, PROC_REF(on_fish_status_changed)) + +/datum/component/aquarium_content/proc/on_fish_status_changed(obj/item/fish/source) + SIGNAL_HANDLER + var/old_beauty = beauty + beauty = original_beauty + if(source.status == FISH_DEAD) + beauty = clamp(beauty + DEAD_FISH_BEAUTY, MIN_DEAD_FISH_BEAUTY, MAX_DEAD_FISH_BEAUTY) + if(current_aquarium) + change_aquarium_beauty(beauty - old_beauty) + generate_animation() + /// Sets visuals properties for fish /datum/component/aquarium_content/proc/InitializeFromProp() var/obj/item/aquarium_prop/prop = parent @@ -150,15 +180,16 @@ if(istype(movable_parent.loc, /obj/structure/aquarium)) on_inserted(movable_parent.loc) -/datum/component/aquarium_content/proc/is_ready_to_insert(obj/structure/aquarium/aquarium) +/datum/component/aquarium_content/proc/is_ready_to_insert(datum/source, obj/structure/aquarium/aquarium) + SIGNAL_HANDLER //This is kinda awful but we're unaware of other fish if(unique) for(var/atom/movable/fish_or_prop in aquarium) if(fish_or_prop == parent) continue if(fish_or_prop.type == parent.type) - return FALSE - return TRUE + return COMSIG_CANNOT_INSERT_IN_AQUARIUM + return COMSIG_CAN_INSERT_IN_AQUARIUM /datum/component/aquarium_content/proc/on_inserted(atom/aquarium) current_aquarium = aquarium @@ -180,6 +211,22 @@ //Finally add it to to objects vis_contents current_aquarium.vis_contents |= vc_obj + change_aquarium_beauty(beauty) + +///Modifies the beauty of the aquarium when content is added or removed, or when fishes die or live again somehow. +/datum/component/aquarium_content/proc/change_aquarium_beauty(change) + if(QDELETED(current_aquarium) || !change) + return + var/old_clamped_beauty = clamp(current_aquarium.current_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY) + current_aquarium.current_beauty += change + var/new_clamped_beauty = clamp(current_aquarium.current_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY) + if(new_clamped_beauty == old_clamped_beauty) + return + if(current_aquarium.current_beauty) + current_aquarium.RemoveElement(/datum/element/beauty, current_aquarium.current_beauty) + if(current_aquarium.current_beauty) + current_aquarium.AddElement(/datum/element/beauty, current_aquarium.current_beauty) + /// Aquarium surface changed in some way, we need to recalculate base position and aninmation /datum/component/aquarium_content/proc/on_surface_changed() SIGNAL_HANDLER @@ -293,13 +340,20 @@ vc_obj.pixel_x = base_px vc_obj.pixel_y = base_py -/datum/component/aquarium_content/proc/on_removed(datum/source, atom/movable/gone, direction) +/datum/component/aquarium_content/proc/on_removed(obj/structure/aquarium/source, atom/movable/gone, direction) SIGNAL_HANDLER if(parent != gone) return remove_from_aquarium() /datum/component/aquarium_content/proc/remove_from_aquarium() + change_aquarium_beauty(-beauty) UnregisterSignal(current_aquarium, list(COMSIG_AQUARIUM_SURFACE_CHANGED, COMSIG_AQUARIUM_FLUID_CHANGED, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_EXITED)) remove_visual_from_aquarium() current_aquarium = null + +#undef DEAD_FISH_BEAUTY +#undef MIN_DEAD_FISH_BEAUTY +#undef MAX_DEAD_FISH_BEAUTY +#undef MIN_AQUARIUM_BEAUTY +#undef MAX_AQUARIUM_BEAUTY diff --git a/code/datums/components/bayonet_attachable.dm b/code/datums/components/bayonet_attachable.dm new file mode 100644 index 0000000000000..4b2442bea50bd --- /dev/null +++ b/code/datums/components/bayonet_attachable.dm @@ -0,0 +1,212 @@ +/** + * Component which allows you to attach a bayonet to an item, + * be it a piece of clothing or a tool. + */ +/datum/component/bayonet_attachable + /// Whenever we can remove the bayonet with a screwdriver + var/removable = TRUE + /// If passed, we wil simply update our item's icon_state when a bayonet is attached. + /// Formatted as parent_base_state-[bayonet_icon_state-state] + var/bayonet_icon_state + /// If passed, we will use a specific overlay instead of using the knife itself + /// The state to take from the bayonet overlay icon if supplied. + var/bayonet_overlay + /// This is the icon file it grabs the overlay from. + var/bayonet_overlay_icon + /// Offsets for the bayonet overlay + var/offset_x = 0 + var/offset_y = 0 + /// If this component allows sawing off the parent gun/should be deleted when the parent gun is sawn off + var/allow_sawnoff = FALSE + + // Internal vars + /// Currently attached bayonet + var/obj/item/bayonet + /// Static typecache of all knives that can become bayonets + var/static/list/valid_bayonets = typecacheof(list(/obj/item/knife/combat)) + +/datum/component/bayonet_attachable/Initialize( + obj/item/starting_bayonet, + offset_x = 0, + offset_y = 0, + removable = TRUE, + bayonet_icon_state = null, + bayonet_overlay = "bayonet", + bayonet_overlay_icon = 'icons/obj/weapons/guns/bayonets.dmi', + allow_sawnoff = FALSE +) + + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + src.removable = removable + src.bayonet_icon_state = bayonet_icon_state + src.bayonet_overlay = bayonet_overlay + src.bayonet_overlay_icon = bayonet_overlay_icon + src.offset_x = offset_x + src.offset_y = offset_y + src.allow_sawnoff = allow_sawnoff + + if (istype(starting_bayonet)) + add_bayonet(starting_bayonet) + +/datum/component/bayonet_attachable/Destroy(force) + if(bayonet) + remove_bayonet() + return ..() + +/datum/component/bayonet_attachable/RegisterWithParent() + RegisterSignal(parent, COMSIG_OBJ_DECONSTRUCT, PROC_REF(on_parent_deconstructed)) + RegisterSignal(parent, COMSIG_ATOM_EXITED, PROC_REF(on_item_exit)) + RegisterSignal(parent, COMSIG_ATOM_TOOL_ACT(TOOL_SCREWDRIVER), PROC_REF(on_screwdriver)) + RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON_STATE, PROC_REF(on_update_icon_state)) + RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_update_overlays)) + RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) + RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(on_parent_deleted)) + RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, PROC_REF(on_pre_attack)) + RegisterSignal(parent, COMSIG_GUN_BEING_SAWNOFF, PROC_REF(on_being_sawnoff)) + RegisterSignal(parent, COMSIG_GUN_SAWN_OFF, PROC_REF(on_sawn_off)) + +/datum/component/bayonet_attachable/UnregisterFromParent() + UnregisterSignal(parent, list( + COMSIG_OBJ_DECONSTRUCT, + COMSIG_ATOM_EXITED, + COMSIG_ATOM_TOOL_ACT(TOOL_SCREWDRIVER), + COMSIG_ATOM_UPDATE_ICON_STATE, + COMSIG_ATOM_UPDATE_OVERLAYS, + COMSIG_ATOM_ATTACKBY, + COMSIG_ATOM_EXAMINE, + COMSIG_QDELETING, + COMSIG_ITEM_PRE_ATTACK, + COMSIG_GUN_BEING_SAWNOFF, + COMSIG_GUN_SAWN_OFF, + )) + +/datum/component/bayonet_attachable/proc/on_examine(obj/item/source, mob/examiner, list/examine_list) + SIGNAL_HANDLER + + if(isnull(bayonet)) + examine_list += "It has a bayonet lug on it." + return + + examine_list += "It has \a [bayonet] [removable ? "" : "permanently "]affixed to it." + if(removable) + examine_list += span_info("[bayonet] looks like it can be unscrewed from [bayonet].") + +/datum/component/bayonet_attachable/proc/on_pre_attack(obj/item/source, atom/target, mob/living/user, params) + SIGNAL_HANDLER + + if (isnull(bayonet) || !user.combat_mode) + return NONE + + INVOKE_ASYNC(bayonet, TYPE_PROC_REF(/obj/item, melee_attack_chain), user, target, params) + return COMPONENT_CANCEL_ATTACK_CHAIN + +/datum/component/bayonet_attachable/proc/on_attackby(obj/item/source, obj/item/attacking_item, mob/attacker, params) + SIGNAL_HANDLER + + if(!is_type_in_typecache(attacking_item, valid_bayonets)) + return + + if(bayonet) + source.balloon_alert(attacker, "already has \a [bayonet]!") + return + + if(!attacker.transferItemToLoc(attacking_item, source)) + return + + add_bayonet(attacking_item, attacker) + source.balloon_alert(attacker, "attached") + return COMPONENT_NO_AFTERATTACK + +/datum/component/bayonet_attachable/proc/add_bayonet(obj/item/new_bayonet, mob/attacher) + if(bayonet) + CRASH("[type] tried to add a new bayonet when it already had one.") + + bayonet = new_bayonet + if(bayonet.loc != parent) + bayonet.forceMove(parent) + var/obj/item/item_parent = parent + item_parent.update_appearance() + +/datum/component/bayonet_attachable/proc/remove_bayonet() + bayonet = null + var/obj/item/item_parent = parent + item_parent.update_appearance() + +/datum/component/bayonet_attachable/proc/on_item_exit(obj/item/source, atom/movable/gone, direction) + SIGNAL_HANDLER + + if(gone == bayonet) + remove_bayonet() + +/datum/component/bayonet_attachable/proc/on_parent_deconstructed(obj/item/source, disassembled) + SIGNAL_HANDLER + + if(QDELETED(bayonet) || !removable) + remove_bayonet() + return + + bayonet.forceMove(source.drop_location()) + +/datum/component/bayonet_attachable/proc/on_screwdriver(obj/item/source, mob/user, obj/item/tool) + SIGNAL_HANDLER + + if(!bayonet || !removable) + return + + INVOKE_ASYNC(src, PROC_REF(unscrew_bayonet), source, user, tool) + return ITEM_INTERACT_BLOCKING + +/datum/component/bayonet_attachable/proc/unscrew_bayonet(obj/item/source, mob/user, obj/item/tool) + tool?.play_tool_sound(source) + source.balloon_alert(user, "unscrewed [bayonet]") + + var/obj/item/to_remove = bayonet + to_remove.forceMove(source.drop_location()) + if(source.Adjacent(user) && !issilicon(user)) + user.put_in_hands(to_remove) + +/datum/component/bayonet_attachable/proc/on_update_overlays(obj/item/source, list/overlays) + SIGNAL_HANDLER + + if(!bayonet_overlay || !bayonet_overlay_icon) + return + + if(!bayonet) + return + + var/mutable_appearance/bayonet_appearance = mutable_appearance(bayonet_overlay_icon, bayonet_overlay) + bayonet_appearance.pixel_x = offset_x + bayonet_appearance.pixel_y = offset_y + overlays += bayonet_appearance + +/datum/component/bayonet_attachable/proc/on_update_icon_state(obj/item/source) + SIGNAL_HANDLER + + if(!bayonet_icon_state) + return + + var/base_state = source.base_icon_state || initial(source.icon_state) + if(bayonet) + source.icon_state = "[base_state]-[bayonet_icon_state]" + else if(source.icon_state != base_state) + source.icon_state = base_state + +/datum/component/bayonet_attachable/proc/on_parent_deleted(obj/item/source) + SIGNAL_HANDLER + QDEL_NULL(bayonet) + +/datum/component/bayonet_attachable/proc/on_being_sawnoff(obj/item/source, mob/user) + SIGNAL_HANDLER + + if (!bayonet || allow_sawnoff) + return + source.balloon_alert(user, "bayonet must be removed!") + return COMPONENT_CANCEL_SAWING_OFF + +/datum/component/bayonet_attachable/proc/on_sawn_off(obj/item/source, mob/user) + SIGNAL_HANDLER + if (!allow_sawnoff) + qdel(src) diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm index ef882a5f96f28..d9032967e263c 100644 --- a/code/datums/components/bloodysoles.dm +++ b/code/datums/components/bloodysoles.dm @@ -1,3 +1,5 @@ +/// The percentage of blood we lose on each step +#define BLOOD_PERCENT_LOSS_ON_STEP 0.33 /** * Component for clothing items that can pick up blood from decals and spread it around everywhere when walking, such as shoes or suits with integrated shoes. @@ -172,10 +174,11 @@ if(wielder.body_position == LYING_DOWN || !wielder.has_gravity(wielder.loc)) return - var/half_our_blood = bloody_shoes[last_blood_state] / 2 + var/blood_lost = bloody_shoes[last_blood_state] * BLOOD_PERCENT_LOSS_ON_STEP + var/theoretical_new_blood = bloody_shoes[last_blood_state] - blood_lost var/footprint_sprite = wielder.get_footprint_sprite() // Add footprints in old loc if we have enough cream - if(half_our_blood >= BLOOD_FOOTPRINTS_MIN) + if(theoretical_new_blood >= BLOOD_FOOTPRINTS_MIN) var/turf/oldLocTurf = get_turf(OldLoc) var/obj/effect/decal/cleanable/blood/footprints/oldLocFP = find_pool_by_blood_state(oldLocTurf, /obj/effect/decal/cleanable/blood/footprints, footprint_sprite) if(oldLocFP) @@ -186,7 +189,7 @@ oldLocFP.update_appearance() else if(find_pool_by_blood_state(oldLocTurf, footprint_sprite = footprint_sprite)) // No footprints in the tile we left, but there was some other blood pool there. Add exit footprints on it - adjust_bloody_shoes(last_blood_state, half_our_blood) + adjust_bloody_shoes(last_blood_state, blood_lost) update_icon() oldLocFP = new(oldLocTurf, footprint_sprite) @@ -194,19 +197,20 @@ oldLocFP.blood_state = last_blood_state oldLocFP.exited_dirs |= wielder.dir add_parent_to_footprint(oldLocFP) - oldLocFP.bloodiness = half_our_blood + oldLocFP.bloodiness = blood_lost oldLocFP.add_blood_DNA(GET_ATOM_BLOOD_DNA(parent_atom)) oldLocFP.update_appearance() - half_our_blood = bloody_shoes[last_blood_state] / 2 + blood_lost = bloody_shoes[last_blood_state] * BLOOD_PERCENT_LOSS_ON_STEP + theoretical_new_blood = theoretical_new_blood - blood_lost // If we picked up the blood on this tick in on_step_blood, don't make footprints at the same place if(last_pickup && last_pickup == world.time) return // Create new footprints - if(half_our_blood >= BLOOD_FOOTPRINTS_MIN) - adjust_bloody_shoes(last_blood_state, half_our_blood) + if(theoretical_new_blood >= BLOOD_FOOTPRINTS_MIN) + adjust_bloody_shoes(last_blood_state, blood_lost) update_icon() var/obj/effect/decal/cleanable/blood/footprints/FP = new(get_turf(parent_atom), footprint_sprite) @@ -214,7 +218,7 @@ FP.blood_state = last_blood_state FP.entered_dirs |= wielder.dir add_parent_to_footprint(FP) - FP.bloodiness = half_our_blood + FP.bloodiness = blood_lost FP.add_blood_DNA(GET_ATOM_BLOOD_DNA(parent_atom)) FP.update_appearance() @@ -234,7 +238,7 @@ // The pool we stepped in was actually footprints with the same type var/obj/effect/decal/cleanable/blood/footprints/pool_FP = pool add_parent_to_footprint(pool_FP) - if((bloody_shoes[last_blood_state] / 2) >= BLOOD_FOOTPRINTS_MIN && !(pool_FP.entered_dirs & wielder.dir)) + if((bloody_shoes[last_blood_state] - (bloody_shoes[last_blood_state] * BLOOD_PERCENT_LOSS_ON_STEP)) >= BLOOD_FOOTPRINTS_MIN && !(pool_FP.entered_dirs & wielder.dir)) // If our feet are bloody enough, add an entered dir pool_FP.entered_dirs |= wielder.dir pool_FP.update_appearance() @@ -328,3 +332,5 @@ SIGNAL_HANDLER update_icon() + +#undef BLOOD_PERCENT_LOSS_ON_STEP diff --git a/code/datums/components/combustible_flooder.dm b/code/datums/components/combustible_flooder.dm index a4260a9641a9f..07df03671c16c 100644 --- a/code/datums/components/combustible_flooder.dm +++ b/code/datums/components/combustible_flooder.dm @@ -11,6 +11,9 @@ src.gas_amount = initialize_gas_amount src.temp_amount = initialize_temp_amount +// Any item made of plasma is going to have this component, making it extremely difficult to blacklist fire hazards during create_and_destroy. +// So let's just completely neuter them during unit tests so we don't burn down the testing area and cause spurious runtimes. +#ifndef UNIT_TESTS RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(attackby_react)) RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, PROC_REF(flame_react)) RegisterSignal(parent, COMSIG_ATOM_TOUCHED_SPARKS, PROC_REF(sparks_react)) @@ -18,6 +21,7 @@ RegisterSignal(parent, COMSIG_ATOM_TOOL_ACT(TOOL_WELDER), PROC_REF(welder_react)) if(isturf(parent)) RegisterSignal(parent, COMSIG_TURF_EXPOSE, PROC_REF(hotspots_react)) +#endif /datum/component/combustible_flooder/UnregisterFromParent() UnregisterSignal(parent, COMSIG_ATOM_ATTACKBY) diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index 7a56f89c8e924..a2e710b762ec6 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -75,8 +75,14 @@ if(contents[requirement_path] < R.chem_catalysts[requirement_path]) return FALSE + var/mech_found = FALSE for(var/machinery_path in R.machinery) - if(!machines[machinery_path])//We don't care for volume with machines, just if one is there or not + mech_found = FALSE + for(var/obj/machinery/machine as anything in machines) + if(ispath(machine, machinery_path))//We don't care for volume with machines, just if one is there or not + mech_found = TRUE + break + if(!mech_found) return FALSE for(var/required_structure_path in R.structures) diff --git a/code/datums/components/crafting/entertainment.dm b/code/datums/components/crafting/entertainment.dm index 7bc2222b142f5..f1aa865e0cbc1 100644 --- a/code/datums/components/crafting/entertainment.dm +++ b/code/datums/components/crafting/entertainment.dm @@ -249,3 +249,18 @@ /obj/item/stack/cable_coil = 2, ) category = CAT_EQUIPMENT + +/datum/crafting_recipe/violin + name = "Violin" + result = /obj/item/instrument/violin + reqs = list( + /obj/item/stack/sheet/mineral/wood = 4, + /obj/item/stack/sheet/cloth = 2, + /obj/item/stack/sheet/iron = 1, + ) + tool_paths = list( + /obj/item/hatchet, + ) + time = 30 SECONDS + category = CAT_ENTERTAINMENT + crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm index bd2b8b1d8b60b..eeea4205a4d29 100644 --- a/code/datums/components/crafting/equipment.dm +++ b/code/datums/components/crafting/equipment.dm @@ -260,3 +260,14 @@ ) category = CAT_EQUIPMENT tool_behaviors = list(TOOL_WELDER, TOOL_WIRECUTTER) + +/datum/crafting_recipe/arrow_quiver + name = "Archery Quiver" + result = /obj/item/storage/bag/quiver/lesser + time = 10 + reqs = list( + /obj/item/stack/sheet/leather = 4, + /obj/item/stack/sheet/cardboard = 4 + ) + category = CAT_EQUIPMENT + tool_behaviors = list(TOOL_WELDER, TOOL_WIRECUTTER) diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index dcf42ee47b1a5..1bd0b0b2419ee 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -18,8 +18,8 @@ /obj/item/weaponcrafting/receiver/create_slapcraft_component() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/pipegun) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -34,8 +34,8 @@ /obj/item/weaponcrafting/stock/create_slapcraft_component() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/smoothbore_disabler, /datum/crafting_recipe/laser_musket) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -48,8 +48,8 @@ /obj/item/weaponcrafting/giant_wrench/create_slapcraft_component() // slappycraft var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/giant_wrench) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -94,3 +94,7 @@ /obj/item/weaponcrafting/gunkit/hellgun name = "hellfire laser gun degradation kit (warcrime lethal)" desc = "Take a perfectly functioning laser gun. Butcher the inside of the gun so it runs hot and mean. You now have a hellfire laser. You monster." + +/obj/item/weaponcrafting/gunkit/photon + name = "photon cannon parts kit (nonlethal)" + desc = "A suitcase containing the necessary gun parts to construct a photon cannon around a stabilized flux anomaly. Harness the power of the sun, in the palms of your hands." diff --git a/code/datums/components/crafting/melee_weapon.dm b/code/datums/components/crafting/melee_weapon.dm index 1c4150585fccc..594ff7aefd387 100644 --- a/code/datums/components/crafting/melee_weapon.dm +++ b/code/datums/components/crafting/melee_weapon.dm @@ -171,3 +171,23 @@ ) time = 10 SECONDS category = CAT_WEAPON_MELEE + +/datum/crafting_recipe/singulo_hammer + name = "Singularity Hammer" + result = /obj/item/singularityhammer + reqs = list( + /obj/item/assembly/signaler/anomaly/pyro = 1, + /obj/item/assembly/signaler/anomaly/grav = 1, + /obj/item/assembly/signaler/anomaly/flux = 1, + /obj/item/assembly/signaler/anomaly/bluespace = 1, + /obj/item/assembly/signaler/anomaly/vortex = 1, + /obj/item/assembly/signaler/anomaly/bioscrambler = 1, + /obj/item/assembly/signaler/anomaly/hallucination = 1, + /obj/item/assembly/signaler/anomaly/dimensional = 1, + /obj/item/assembly/signaler/anomaly/ectoplasm = 1, + ) + machinery = list( + /obj/machinery/power/supermatter_crystal = CRAFTING_MACHINERY_CONSUME, + ) + time = 10 SECONDS + category = CAT_WEAPON_MELEE diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm index c49900df07ab4..0e3c7b119169b 100644 --- a/code/datums/components/crafting/ranged_weapon.dm +++ b/code/datums/components/crafting/ranged_weapon.dm @@ -374,3 +374,28 @@ time = 20 SECONDS category = CAT_WEAPON_RANGED crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED + +/datum/crafting_recipe/shortbow + name = "Shortbow" + result = /obj/item/gun/ballistic/bow/shortbow + reqs = list( + /obj/item/stack/sheet/mineral/wood = 4, + /obj/item/stack/sheet/cloth = 2, + /obj/item/stack/sheet/iron = 1, + ) + tool_paths = list( + /obj/item/hatchet, + ) + time = 30 SECONDS + category = CAT_WEAPON_RANGED + crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED + +/datum/crafting_recipe/photoncannon + name = "Photon Cannon" + result = /obj/item/gun/energy/photon + reqs = list( + /obj/item/assembly/signaler/anomaly/flux = 1, + /obj/item/weaponcrafting/gunkit/photon = 1, + ) + time = 10 SECONDS + category = CAT_WEAPON_RANGED diff --git a/code/datums/components/crafting/robot.dm b/code/datums/components/crafting/robot.dm index 2398a8b54fbbe..09c8455a77b39 100644 --- a/code/datums/components/crafting/robot.dm +++ b/code/datums/components/crafting/robot.dm @@ -75,21 +75,7 @@ var/obj/item/storage/medkit/medkit = bot.contents[3] bot.medkit_type = medkit bot.health_analyzer = bot.contents[4] - - ///if you add a new one don't forget to update /obj/item/storage/medkit/attackby() - if (istype(medkit, /obj/item/storage/medkit/fire)) - bot.skin = "ointment" - else if (istype(medkit, /obj/item/storage/medkit/toxin)) - bot.skin = "tox" - else if (istype(medkit, /obj/item/storage/medkit/o2)) - bot.skin = "o2" - else if (istype(medkit, /obj/item/storage/medkit/brute)) - bot.skin = "brute" - else if (istype(medkit, /obj/item/storage/medkit/advanced)) - bot.skin = "advanced" - else if (istype(src, /obj/item/storage/medkit/tactical)) - bot.skin = "bezerk" - + bot.skin = medkit.get_medbot_skin() bot.damage_type_healer = initial(medkit.damagetype_healed) ? initial(medkit.damagetype_healed) : BRUTE bot.update_appearance() @@ -107,7 +93,7 @@ /datum/crafting_recipe/firebot name = "Firebot" - result = /mob/living/simple_animal/bot/firebot + result = /mob/living/basic/bot/firebot reqs = list( /obj/item/extinguisher = 1, /obj/item/bodypart/arm/right/robot = 1, diff --git a/code/datums/components/crafting/tiles.dm b/code/datums/components/crafting/tiles.dm index 5f7c41e012e0c..3125f4c1e85cf 100644 --- a/code/datums/components/crafting/tiles.dm +++ b/code/datums/components/crafting/tiles.dm @@ -7,3 +7,23 @@ result = /obj/item/stack/tile/carpet/black result_amount = 50 category = CAT_TILES + +/datum/crafting_recipe/wired_glass + name = "Wired Glass Tile" + result = /obj/item/stack/tile/light + reqs = list( + /obj/item/stack/sheet/iron = 1, + /obj/item/stack/sheet/glass = 1, + /obj/item/stack/cable_coil = 5, + ) + category = CAT_TILES + +/datum/crafting_recipe/circuit + name = "Circuit Tile" + result = /obj/item/stack/tile/circuit + reqs = list( + /obj/item/stack/sheet/iron = 1, + /obj/item/stack/sheet/glass = 1, + /obj/item/stack/cable_coil = 5, + ) + category = CAT_TILES diff --git a/code/datums/components/crafting/weapon_ammo.dm b/code/datums/components/crafting/weapon_ammo.dm index f68ff58072c67..2ba01802e7cdd 100644 --- a/code/datums/components/crafting/weapon_ammo.dm +++ b/code/datums/components/crafting/weapon_ammo.dm @@ -111,3 +111,46 @@ ) category = CAT_WEAPON_AMMO crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED + +/datum/crafting_recipe/arrow + name = "Arrow" + result = /obj/item/ammo_casing/arrow + reqs = list( + /obj/item/stack/sheet/mineral/wood = 1, + /obj/item/stack/sheet/cloth = 1, + /obj/item/stack/sheet/iron = 1, + ) + tool_paths = list( + /obj/item/hatchet, + ) + time = 5 SECONDS + category = CAT_WEAPON_AMMO + crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED + +/datum/crafting_recipe/plastic_arrow + name = "Plastic Arrow" + result = /obj/item/ammo_casing/arrow/plastic + reqs = list( + /obj/item/stack/sheet/plastic = 1, + ) + tool_paths = list( + /obj/item/hatchet, + ) + time = 5 SECONDS + category = CAT_WEAPON_AMMO + crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED + + +/datum/crafting_recipe/holy_arrow + name = "Holy Arrow" + result = /obj/item/ammo_casing/arrow/holy + reqs = list( + /obj/item/ammo_casing/arrow = 1, + /datum/reagent/water/holywater = 10, + ) + tool_paths = list( + /obj/item/gun/ballistic/bow/divine, + ) + time = 5 SECONDS + category = CAT_WEAPON_AMMO + crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm index 7d9710977cecb..dedd30bda0ef5 100644 --- a/code/datums/components/cult_ritual_item.dm +++ b/code/datums/components/cult_ritual_item.dm @@ -128,6 +128,7 @@ INVOKE_ASYNC(src, PROC_REF(do_destroy_girder), target, cultist) return COMPONENT_NO_AFTERATTACK + if(istype(target, /obj/structure/destructible/cult)) INVOKE_ASYNC(src, PROC_REF(do_unanchor_structure), target, cultist) return COMPONENT_NO_AFTERATTACK diff --git a/code/datums/components/damage_aura.dm b/code/datums/components/damage_aura.dm index 98d323aa6d532..9c4e996113b84 100644 --- a/code/datums/components/damage_aura.dm +++ b/code/datums/components/damage_aura.dm @@ -36,6 +36,12 @@ /// Which factions are immune to the damage aura var/list/immune_factions = null + /// If set, gives a message when damaged + var/damage_message = null + + /// Probability for above. + var/message_probability = 0 + /// Sets a special set of conditions for the owner var/datum/weakref/current_owner = null @@ -54,6 +60,8 @@ organ_damage = null, simple_damage = 0, immune_factions = null, + damage_message = null, + message_probability = 0, mob/living/current_owner = null, ) if (!isatom(parent)) @@ -72,6 +80,8 @@ src.organ_damage = organ_damage src.simple_damage = simple_damage src.immune_factions = immune_factions + src.damage_message = damage_message + src.message_probability = message_probability src.current_owner = WEAKREF(current_owner) /datum/component/damage_aura/Destroy(force) @@ -120,6 +130,9 @@ if (candidate.health < candidate.maxHealth) new /obj/effect/temp_visual/cosmic_gem(get_turf(candidate)) + if(damage_message && prob(message_probability)) + to_chat(candidate, damage_message) + if (iscarbon(candidate) || issilicon(candidate) || isbasicmob(candidate)) candidate.adjustBruteLoss(brute_damage * seconds_per_tick, updating_health = FALSE) candidate.adjustFireLoss(burn_damage * seconds_per_tick, updating_health = FALSE) diff --git a/code/datums/components/dart_insert.dm b/code/datums/components/dart_insert.dm index 19eea67ab3a8d..ad869903051d2 100644 --- a/code/datums/components/dart_insert.dm +++ b/code/datums/components/dart_insert.dm @@ -142,11 +142,8 @@ projectile.wound_bonus += var_modifiers["wound_bonus"] projectile.bare_wound_bonus += var_modifiers["bare_wound_bonus"] projectile.demolition_mod += var_modifiers["demolition_mod"] - if(islist(var_modifiers["embedding"])) - var/list/embed_params = var_modifiers["embedding"] - for(var/embed_param in embed_params - "ignore_throwspeed_threshold") - LAZYADDASSOC(projectile.embedding, embed_param, embed_params[embed_param]) - projectile.updateEmbedding() + if(var_modifiers["embedding"]) + projectile.set_embed(var_modifiers["embedding"]) /datum/component/dart_insert/proc/remove_var_modifiers(obj/projectile/projectile) projectile.damage -= var_modifiers["damage"] @@ -155,9 +152,6 @@ projectile.wound_bonus -= var_modifiers["wound_bonus"] projectile.bare_wound_bonus -= var_modifiers["bare_wound_bonus"] projectile.demolition_mod -= var_modifiers["demolition_mod"] - if(islist(var_modifiers["embedding"])) - var/list/embed_params = var_modifiers["embedding"] - for(var/embed_param in embed_params - "ignore_throwspeed_threshold") - LAZYADDASSOC(projectile.embedding, embed_param, -embed_params[embed_param]) - projectile.updateEmbedding() + if(var_modifiers["embedding"]) + projectile.set_embed(initial(projectile.embed_type)) var_modifiers.Cut() diff --git a/code/datums/components/effect_remover.dm b/code/datums/components/effect_remover.dm index a02be73f5684e..a67962250dbe1 100644 --- a/code/datums/components/effect_remover.dm +++ b/code/datums/components/effect_remover.dm @@ -46,7 +46,7 @@ return ..() /datum/component/effect_remover/RegisterWithParent() - RegisterSignal(parent, COMSIG_ITEM_ATTACK_EFFECT, PROC_REF(try_remove_effect)) + RegisterSignal(parent, COMSIG_ITEM_INTERACTING_WITH_ATOM, PROC_REF(try_remove_effect)) if(tip_text) var/obj/item/item_parent = parent @@ -54,20 +54,21 @@ RegisterSignal(parent, COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET, PROC_REF(add_item_context)) /datum/component/effect_remover/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_ITEM_ATTACK_EFFECT, COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET)) + UnregisterSignal(parent, list(COMSIG_ITEM_INTERACTING_WITH_ATOM, COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET)) /* - * Signal proc for [COMSIG_ITEM_ATTACK_EFFECT]. + * Signal proc for [COMSIG_ITEM_INTERACTING_WITH_ATOM]. */ -/datum/component/effect_remover/proc/try_remove_effect(datum/source, obj/effect/target, mob/living/user, params) + +/datum/component/effect_remover/proc/try_remove_effect(datum/source, mob/living/user, atom/target, params) SIGNAL_HANDLER if(!isliving(user)) - return + return NONE - if(effects_we_clear[target.type]) // Make sure we get all subtypes and everything + if(is_type_in_typecache(target, effects_we_clear)) // Make sure we get all subtypes and everything INVOKE_ASYNC(src, PROC_REF(do_remove_effect), target, user) - return COMPONENT_NO_AFTERATTACK + return ITEM_INTERACT_SUCCESS /* * Actually removes the effect, invoking our on_clear_callback before it's deleted. diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm index 45a3c07298ff0..84bfa8dfad0f0 100644 --- a/code/datums/components/embedded.dm +++ b/code/datums/components/embedded.dm @@ -27,63 +27,28 @@ dupe_mode = COMPONENT_DUPE_ALLOWED var/obj/item/bodypart/limb var/obj/item/weapon - - // all of this stuff is explained in _DEFINES/combat.dm - var/embed_chance // not like we really need it once we're already stuck in but hey - var/fall_chance - var/pain_chance - var/pain_mult - var/impact_pain_mult - var/remove_pain_mult - var/rip_time - var/ignore_throwspeed_threshold - var/jostle_chance - var/jostle_pain_mult - var/pain_stam_pct - ///if both our pain multiplier and jostle pain multiplier are 0, we're harmless and can omit most of the damage related stuff var/harmful -/datum/component/embedded/Initialize(obj/item/I, +/datum/component/embedded/Initialize(obj/item/weapon, datum/thrownthing/throwingdatum, - obj/item/bodypart/part, - embed_chance = EMBED_CHANCE, - fall_chance = EMBEDDED_ITEM_FALLOUT, - pain_chance = EMBEDDED_PAIN_CHANCE, - pain_mult = EMBEDDED_PAIN_MULTIPLIER, - remove_pain_mult = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER, - impact_pain_mult = EMBEDDED_IMPACT_PAIN_MULTIPLIER, - rip_time = EMBEDDED_UNSAFE_REMOVAL_TIME, - ignore_throwspeed_threshold = FALSE, - jostle_chance = EMBEDDED_JOSTLE_CHANCE, - jostle_pain_mult = EMBEDDED_JOSTLE_PAIN_MULTIPLIER, - pain_stam_pct = EMBEDDED_PAIN_STAM_PCT) - - if(!iscarbon(parent) || !isitem(I)) + obj/item/bodypart/part) + + if(!iscarbon(parent) || !isitem(weapon)) return COMPONENT_INCOMPATIBLE + src.weapon = weapon + if(part) limb = part - src.embed_chance = embed_chance - src.fall_chance = fall_chance - src.pain_chance = pain_chance - src.pain_mult = pain_mult - src.remove_pain_mult = remove_pain_mult - src.rip_time = rip_time - src.impact_pain_mult = impact_pain_mult - src.ignore_throwspeed_threshold = ignore_throwspeed_threshold - src.jostle_chance = jostle_chance - src.jostle_pain_mult = jostle_pain_mult - src.pain_stam_pct = pain_stam_pct - src.weapon = I - - if(!weapon.isEmbedHarmless()) + + if(!weapon.is_embed_harmless()) harmful = TRUE weapon.embedded(parent, part) START_PROCESSING(SSdcs, src) var/mob/living/carbon/victim = parent - + var/datum/embed_data/embed_data = weapon.get_embed() limb._embed_object(weapon) // on the inside... on the inside... weapon.forceMove(victim) RegisterSignals(weapon, list(COMSIG_MOVABLE_MOVED, COMSIG_QDELETING), PROC_REF(weaponDeleted)) @@ -95,13 +60,13 @@ playsound(victim,'sound/weapons/bladeslice.ogg', 40) if (limb.can_bleed()) weapon.add_mob_blood(victim)//it embedded itself in you, of course it's bloody! - damage += weapon.w_class * impact_pain_mult + damage += weapon.w_class * embed_data.impact_pain_mult victim.add_mood_event("embedded", /datum/mood_event/embedded) if(damage > 0) - var/armor = victim.run_armor_check(limb.body_zone, MELEE, "Your armor has protected your [limb.plaintext_zone].", "Your armor has softened a hit to your [limb.plaintext_zone].",I.armour_penetration, weak_against_armour = I.weak_against_armour) - limb.receive_damage(brute=(1-pain_stam_pct) * damage, blocked=armor, wound_bonus = I.wound_bonus, bare_wound_bonus = I.bare_wound_bonus, sharpness = I.get_sharpness()) - victim.adjustStaminaLoss(pain_stam_pct * damage) + var/armor = victim.run_armor_check(limb.body_zone, MELEE, "Your armor has protected your [limb.plaintext_zone].", "Your armor has softened a hit to your [limb.plaintext_zone].", weapon.armour_penetration, weak_against_armour = weapon.weak_against_armour) + limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage, blocked = armor, wound_bonus = weapon.wound_bonus, bare_wound_bonus = weapon.bare_wound_bonus, sharpness = weapon.get_sharpness()) + victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) /datum/component/embedded/Destroy() var/mob/living/carbon/victim = parent @@ -135,20 +100,21 @@ if(victim.stat == DEAD) return - var/damage = weapon.w_class * pain_mult - var/pain_chance_current = SPT_PROB_RATE(pain_chance / 100, seconds_per_tick) * 100 - if(pain_stam_pct && HAS_TRAIT_FROM(victim, TRAIT_INCAPACITATED, STAMINA)) //if it's a less-lethal embed, give them a break if they're already stamcritted + var/datum/embed_data/embed_data = weapon.get_embed() + var/damage = weapon.w_class * embed_data.pain_mult + var/pain_chance_current = SPT_PROB_RATE(embed_data.pain_chance / 100, seconds_per_tick) * 100 + if(embed_data.pain_stam_pct && HAS_TRAIT_FROM(victim, TRAIT_INCAPACITATED, STAMINA)) //if it's a less-lethal embed, give them a break if they're already stamcritted pain_chance_current *= 0.2 damage *= 0.5 else if(victim.body_position == LYING_DOWN) pain_chance_current *= 0.2 if(harmful && prob(pain_chance_current)) - limb.receive_damage(brute=(1-pain_stam_pct) * damage, wound_bonus = CANT_WOUND) - victim.adjustStaminaLoss(pain_stam_pct * damage) + limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage, wound_bonus = CANT_WOUND) + victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) to_chat(victim, span_userdanger("[weapon] embedded in your [limb.plaintext_zone] hurts!")) - var/fall_chance_current = SPT_PROB_RATE(fall_chance / 100, seconds_per_tick) * 100 + var/fall_chance_current = SPT_PROB_RATE(embed_data.fall_chance / 100, seconds_per_tick) * 100 if(victim.body_position == LYING_DOWN) fall_chance_current *= 0.2 @@ -165,25 +131,27 @@ SIGNAL_HANDLER var/mob/living/carbon/victim = parent - var/chance = jostle_chance + var/datum/embed_data/embed_data = weapon.get_embed() + var/chance = embed_data.jostle_chance if(victim.move_intent == MOVE_INTENT_WALK || victim.body_position == LYING_DOWN) chance *= 0.5 if(harmful && prob(chance)) - var/damage = weapon.w_class * jostle_pain_mult - limb.receive_damage(brute=(1-pain_stam_pct) * damage, wound_bonus = CANT_WOUND) - victim.adjustStaminaLoss(pain_stam_pct * damage) + var/damage = weapon.w_class * embed_data.jostle_pain_mult + limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage, wound_bonus = CANT_WOUND) + victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) to_chat(victim, span_userdanger("[weapon] embedded in your [limb.plaintext_zone] jostles and stings!")) /// Called when then item randomly falls out of a carbon. This handles the damage and descriptors, then calls safe_remove() /datum/component/embedded/proc/fallOut() var/mob/living/carbon/victim = parent + var/datum/embed_data/embed_data = weapon.get_embed() if(harmful) - var/damage = weapon.w_class * remove_pain_mult - limb.receive_damage(brute=(1-pain_stam_pct) * damage, wound_bonus = CANT_WOUND) - victim.adjustStaminaLoss(pain_stam_pct * damage) + var/damage = weapon.w_class * embed_data.remove_pain_mult + limb.receive_damage(brute= (1 - embed_data.pain_stam_pct) * damage, wound_bonus = CANT_WOUND) + victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) victim.visible_message(span_danger("[weapon] falls [harmful ? "out" : "off"] of [victim.name]'s [limb.plaintext_zone]!"), span_userdanger("[weapon] falls [harmful ? "out" : "off"] of your [limb.plaintext_zone]!")) safeRemove() @@ -195,7 +163,8 @@ if(I != weapon || src.limb != limb) return var/mob/living/carbon/victim = parent - var/time_taken = rip_time * weapon.w_class + var/datum/embed_data/embed_data = weapon.get_embed() + var/time_taken = embed_data.rip_time * weapon.w_class INVOKE_ASYNC(src, PROC_REF(complete_rip_out), victim, I, limb, time_taken) /// everything async that ripOut used to do @@ -214,9 +183,10 @@ /// Proc that actually does the damage associated with ripping something out of yourself. Call this before safeRemove. /datum/component/embedded/proc/damaging_removal(mob/living/carbon/victim, obj/item/removed, obj/item/bodypart/limb, ouch_multiplier = 1) - var/damage = weapon.w_class * remove_pain_mult * ouch_multiplier - limb.receive_damage(brute=(1-pain_stam_pct) * damage, sharpness=SHARP_EDGED) //It hurts to rip it out, get surgery you dingus. unlike the others, this CAN wound + increase slash bloodflow - victim.adjustStaminaLoss(pain_stam_pct * damage) + var/datum/embed_data/embed_data = weapon.get_embed() + var/damage = weapon.w_class * embed_data.remove_pain_mult * ouch_multiplier + limb.receive_damage(brute= (1 - embed_data.pain_stam_pct) * damage, sharpness = SHARP_EDGED) //It hurts to rip it out, get surgery you dingus. unlike the others, this CAN wound + increase slash bloodflow + victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) victim.emote("scream") /// This proc handles the final step and actual removal of an embedded/stuck item from a carbon, whether or not it was actually removed safely. @@ -271,12 +241,13 @@ /// The actual action for pulling out an embedded object with a hemostat /datum/component/embedded/proc/tweezePluck(obj/item/possible_tweezers, mob/user) var/mob/living/carbon/victim = parent + var/datum/embed_data/embed_data = weapon.get_embed() var/self_pluck = (user == victim) // quality of the tool we're using var/tweezer_speed = possible_tweezers.toolspeed // is this an actual piece of medical equipment var/tweezer_safe = (possible_tweezers.tool_behaviour == TOOL_HEMOSTAT) - var/pluck_time = rip_time * (weapon.w_class * 0.3) * (self_pluck ? 1.5 : 1) * tweezer_speed * (tweezer_safe ? 1 : 1.5) + var/pluck_time = embed_data.rip_time * (weapon.w_class * 0.3) * (self_pluck ? 1.5 : 1) * tweezer_speed * (tweezer_safe ? 1 : 1.5) if(self_pluck) user.visible_message(span_danger("[user] begins plucking [weapon] from [user.p_their()] [limb.plaintext_zone] with [possible_tweezers]..."), span_notice("You start plucking [weapon] from your [limb.plaintext_zone] with [possible_tweezers]... (It will take [DisplayTimeText(pluck_time)])"),\ @@ -313,10 +284,12 @@ if(!harmful) victim.visible_message(span_danger("[marked_item] vanishes from [victim.name]'s [limb.plaintext_zone]!"), span_userdanger("[weapon] vanishes from [limb.plaintext_zone]!")) return - var/damage = weapon.w_class * remove_pain_mult - limb.receive_damage(brute=(1-pain_stam_pct) * damage * 1.5, sharpness=SHARP_EDGED) // Performs exit wounds and flings the user to the caster if nearby + + var/datum/embed_data/embed_data = weapon.get_embed() + var/damage = weapon.w_class * embed_data.remove_pain_mult + limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage * 1.5, sharpness = SHARP_EDGED) // Performs exit wounds and flings the user to the caster if nearby victim.cause_wound_of_type_and_severity(WOUND_PIERCE, limb, WOUND_SEVERITY_MODERATE) - victim.adjustStaminaLoss(pain_stam_pct * damage) + victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) playsound(get_turf(victim), 'sound/effects/wounds/blood2.ogg', 50, TRUE) var/dist = get_dist(caster, victim) //Check if the caster is close enough to yank them in diff --git a/code/datums/components/fishing_spot.dm b/code/datums/components/fishing_spot.dm index 414c17b6d15e3..481f965059f52 100644 --- a/code/datums/components/fishing_spot.dm +++ b/code/datums/components/fishing_spot.dm @@ -42,7 +42,7 @@ return var/has_known_fishes = FALSE - for(var/reward in fish_source.fish_counts) + for(var/reward in fish_source.fish_table) if(!ispath(reward, /obj/item/fish)) continue var/obj/item/fish/prototype = reward @@ -60,7 +60,7 @@ return var/list/known_fishes = list() - for(var/reward in fish_source.fish_counts) + for(var/reward in fish_source.fish_table) if(!ispath(reward, /obj/item/fish)) continue var/obj/item/fish/prototype = reward diff --git a/code/datums/components/ghost_direct_control.dm b/code/datums/components/ghost_direct_control.dm index de5bca4fcadde..fb3a2c06e8360 100644 --- a/code/datums/components/ghost_direct_control.dm +++ b/code/datums/components/ghost_direct_control.dm @@ -142,13 +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)) - after_assumed_control?.Invoke(harbinger) + + // Already qdels due to below proc but just in case qdel(src) -/// When someone else assumes control via some other means, get rid of our component -/datum/component/ghost_direct_control/proc/on_login() +/// 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/knockoff.dm b/code/datums/components/knockoff.dm index db72072789c45..3fe007736a1d0 100644 --- a/code/datums/components/knockoff.dm +++ b/code/datums/components/knockoff.dm @@ -23,6 +23,10 @@ /datum/component/knockoff/RegisterWithParent() RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equipped)) RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_dropped)) + var/atom/movable/atom_parent = parent + var/mob/living/as_mob = atom_parent.loc + if(ismob(as_mob)) + on_equipped(atom_parent, as_mob, as_mob.get_slot_by_item(atom_parent)) // lie a little /datum/component/knockoff/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) diff --git a/code/datums/components/lockable_storage.dm b/code/datums/components/lockable_storage.dm index c559c008c7923..482cb134159e0 100644 --- a/code/datums/components/lockable_storage.dm +++ b/code/datums/components/lockable_storage.dm @@ -47,7 +47,6 @@ if(can_hack_open) RegisterSignal(parent, COMSIG_ATOM_TOOL_ACT(TOOL_SCREWDRIVER), PROC_REF(on_screwdriver_act)) RegisterSignal(parent, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(on_multitool_act)) - RegisterSignal(parent, COMSIG_ATOM_STORAGE_ITEM_INTERACT_INSERT, PROC_REF(block_insert)) RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item)) @@ -117,6 +116,7 @@ return NONE panel_open = !panel_open + tool.play_tool_sound(source) source.balloon_alert(user, "panel [panel_open ? "opened" : "closed"]") return ITEM_INTERACT_SUCCESS @@ -137,20 +137,11 @@ ///Does a do_after to hack the storage open, takes a long time cause idk. /datum/component/lockable_storage/proc/hack_open(atom/source, mob/user, obj/item/tool) - if(!tool.use_tool(parent, user, 40 SECONDS)) + if(!tool.use_tool(parent, user, 40 SECONDS, volume = 50)) return source.balloon_alert(user, "hacked") lock_code = null -/// Stops you from shoving your tools into the storage if you're trying to hack it -/datum/component/lockable_storage/proc/block_insert(atom/source, obj/item/inserting, mob/living/user) - SIGNAL_HANDLER - if(!can_hack_open || !source.atom_storage.locked) - return NONE // allow insert - if(inserting.tool_behaviour == TOOL_MULTITOOL || inserting.tool_behaviour == TOOL_SCREWDRIVER) - return BLOCK_STORAGE_INSERT // block insert - return NONE - ///Updates the icon state depending on if we're locked or not. /datum/component/lockable_storage/proc/on_update_icon_state(obj/source) SIGNAL_HANDLER diff --git a/code/datums/components/material/material_container.dm b/code/datums/components/material/material_container.dm index ffcf81feacefd..6ee50f5d78c94 100644 --- a/code/datums/components/material/material_container.dm +++ b/code/datums/components/material/material_container.dm @@ -207,8 +207,9 @@ * - [weapon][obj/item]: the item you are trying to insert * - multiplier: The multiplier for the materials being inserted * - context: the atom performing the operation, this is the last argument sent in COMSIG_MATCONTAINER_ITEM_CONSUMED and is used mostly for silo logging + * * - delete_item: should we delete the item after its materials are consumed. does not apply to stacks if they were split due to lack of space */ -/datum/component/material_container/proc/insert_item(obj/item/weapon, multiplier = 1, atom/context = parent) +/datum/component/material_container/proc/insert_item(obj/item/weapon, multiplier = 1, atom/context = parent, delete_item = TRUE) if(QDELETED(weapon)) return MATERIAL_INSERT_ITEM_NO_MATS multiplier = CEILING(multiplier, 0.01) @@ -232,14 +233,11 @@ material_amount = get_item_material_amount(target) * multiplier material_amount = OPTIMAL_COST(material_amount) - //not enough space, time to bail - if(!has_space(material_amount)) - return MATERIAL_INSERT_ITEM_NO_SPACE - //do the insert var/last_inserted_id = insert_item_materials(target, multiplier, context) if(!isnull(last_inserted_id)) - qdel(target) //item gone + if(delete_item || target != weapon) //we could have split the stack ourself + qdel(target) //item gone return material_amount else if(!isnull(item_stack) && item_stack != target) //insertion failed, merge the split stack back into the original var/obj/item/stack/inserting_stack = target @@ -266,188 +264,180 @@ . = 0 //All items that do not have any contents - var/list/obj/item/child_items = list() - //All items that do have contents but they were already processed by the above list - var/list/obj/item/parent_items = list(held_item) + var/list/obj/item/items = list(held_item) //is this the first item we are ever processing var/first_checks = TRUE + //list of items to delete + var/list/obj/item/to_delete = list() //The status of the last insert attempt var/inserted = 0 //All messages to be displayed to chat var/list/chat_msgs = list() //differs from held_item when using TK - var/active_held = user.get_active_held_item() - //storage items to retrive items from - var/static/list/storage_items - if(isnull(storage_items)) - storage_items = list( - /obj/item/storage/backpack, - /obj/item/storage/bag, - /obj/item/storage/box, - ) - - //1st iteration consumes all items that do not have contents inside - //2nd iteration consumes items who do have contents inside(but they were consumed in the 1st iteration so its empty now) - for(var/i in 1 to 2) + var/obj/item/active_held = user.get_active_held_item() + //omni tools can act as any tool so get its real behaviour + active_held = active_held.get_proxy_attacker_for(held_item) + + while(items.len) //no point inserting more items if(inserted == MATERIAL_INSERT_ITEM_NO_SPACE) break - //transfer all items for processing - if(!parent_items.len) - break - child_items += parent_items - parent_items.Cut() - - while(child_items.len) - //Pop the 1st item out from the list - var/obj/item/target_item = child_items[1] - child_items -= target_item + //Pop the 1st item out from the list + var/obj/item/target_item = items[1] + items -= target_item - //e.g. projectiles inside bullets are not objects - if(!istype(target_item)) - continue - //can't allow abstract, hologram items - if((target_item.item_flags & ABSTRACT) || (target_item.flags_1 & HOLOGRAM_1)) + //e.g. projectiles inside bullets are not objects + if(!istype(target_item)) + continue + //can't allow abstract, hologram items + if((target_item.item_flags & ABSTRACT) || (target_item.flags_1 & HOLOGRAM_1)) + continue + //user defined conditions + if(SEND_SIGNAL(src, COMSIG_MATCONTAINER_PRE_USER_INSERT, target_item, user) & MATCONTAINER_BLOCK_INSERT) + continue + //item is either indestructible, not allowed for redemption or not in the allowed types + if((target_item.resistance_flags & INDESTRUCTIBLE) || (target_item.item_flags & NO_MAT_REDEMPTION) || (allowed_item_typecache && !is_type_in_typecache(target_item, allowed_item_typecache))) + if(!(mat_container_flags & MATCONTAINER_SILENT)) + var/list/status_data = chat_msgs["[MATERIAL_INSERT_ITEM_FAILURE]"] || list() + var/list/item_data = status_data[target_item.name] || list() + item_data["count"] += 1 + status_data[target_item.name] = item_data + chat_msgs["[MATERIAL_INSERT_ITEM_FAILURE]"] = status_data + + if(target_item.resistance_flags & INDESTRUCTIBLE) + if(target_item != active_held) //move it out of any storage medium its in so it doesn't get consumed with its parent, but only if that storage medium is not our hand + target_item.forceMove(get_turf(context)) continue - //user defined conditions - if(SEND_SIGNAL(src, COMSIG_MATCONTAINER_PRE_USER_INSERT, target_item, user) & MATCONTAINER_BLOCK_INSERT) + + //storage items usually come here + //this is so players can insert items from their bags into machines for convinience + if(!target_item.atom_storage || !target_item.contents.len) continue - //item is either indestructible, not allowed for redemption or not in the allowed types - if((target_item.resistance_flags & INDESTRUCTIBLE) || (target_item.item_flags & NO_MAT_REDEMPTION) || (allowed_item_typecache && !is_type_in_typecache(target_item, allowed_item_typecache))) - if(!(mat_container_flags & MATCONTAINER_SILENT) && i == 1) //count only child items the 1st time around - var/list/status_data = chat_msgs["[MATERIAL_INSERT_ITEM_FAILURE]"] || list() - var/list/item_data = status_data[target_item.name] || list() - item_data["count"] += 1 - status_data[target_item.name] = item_data - chat_msgs["[MATERIAL_INSERT_ITEM_FAILURE]"] = status_data - - if(target_item.resistance_flags & INDESTRUCTIBLE) - if(i == 1 && target_item != active_held) //move it out of any storage medium its in so it doesn't get consumed with its parent, but only if that storage medium is not our hand - target_item.forceMove(get_turf(context)) - continue - //storage items usually come here but we make the exception only on the 1st iteration - //this is so players can insert items from their bags into machines for convinience - if(!is_type_in_list(target_item, storage_items)) - continue - else if(!target_item.contents.len || i == 2) - continue - //at this point we can check if we have enough for all items & other stuff - if(first_checks) - //duffle bags needs to be unzipped - if(target_item.atom_storage?.locked) + //at this point we can check if we have enough for all items & other stuff + if(first_checks) + //duffle bags needs to be unzipped + if(target_item.atom_storage?.locked) + if(!(mat_container_flags & MATCONTAINER_SILENT)) + to_chat(user, span_warning("[target_item] has its storage locked")) + return + + //anything that isn't a stack cannot be split so find out if we have enough space, we don't want to consume half the contents of an object & leave it in a broken state + //for duffle bags and other storage items we can check for space 1 item at a time + if(!isstack(target_item) && !target_item.atom_storage) + var/total_amount = 0 + for(var/obj/item/weapon as anything in target_item.get_all_contents_type(/obj/item)) + total_amount += get_item_material_amount(weapon) + if(!has_space(total_amount)) if(!(mat_container_flags & MATCONTAINER_SILENT)) - to_chat(user, span_warning("[target_item] has its storage locked")) + to_chat(user, span_warning("[parent] does not have enough space for [target_item]!")) return - //anything that isn't a stack cannot be split so find out if we have enough space, we don't want to consume half the contents of an object & leave it in a broken state - //for duffle bags and other storage items we can check for space 1 item at a time - if(!isstack(target_item) && !is_type_in_list(target_item, storage_items)) - var/total_amount = 0 - for(var/obj/item/weapon as anything in target_item.get_all_contents_type(/obj/item)) - total_amount += get_item_material_amount(weapon) - if(!has_space(total_amount)) - if(!(mat_container_flags & MATCONTAINER_SILENT)) - to_chat(user, span_warning("[parent] does not have enough space for [target_item]!")) - return - - first_checks = FALSE - - //All hard checks have passed, at this point we can consume the item - //If it has children then we will process them first and then the item in the 2nd round - //This is done so we don't delete the children when the parent is consumed - //We only do this on the 1st iteration so we don't re-iterate through its children again - if(target_item.contents.len && i == 1) - if(target_item.atom_storage?.locked) //can't access contents of locked storage(like duffle bags) - continue - //process children - child_items += target_item.contents - //in the 2nd round only after its children are consumed do we consume this next, FIFO order - parent_items.Insert(1, target_item) - //leave it here till we get to its children - continue + first_checks = FALSE - //if stack, check if we want to read precise amount of sheets to insert - var/obj/item/stack/item_stack = null - if(isstack(target_item) && precise_insertion) - var/atom/current_parent = parent - item_stack = target_item - var/requested_amount = tgui_input_number(user, "How much do you want to insert?", "Inserting [item_stack.singular_name]s", item_stack.amount, item_stack.amount) - if(!requested_amount || QDELETED(target_item) || QDELETED(user) || QDELETED(src)) - continue - if(parent != current_parent || user.get_active_held_item() != active_held) - continue - if(requested_amount != item_stack.amount) //only split if its not the whole amount - target_item = fast_split_stack(item_stack, requested_amount) //split off the requested amount - requested_amount = 0 - - //is this item a stack and was it split by the player? - var/was_stack_split = !isnull(item_stack) && item_stack != target_item - //if it was split then item_stack has the reference to the original stack/item - var/original_item = was_stack_split ? item_stack : target_item - //if this item is not the one the player is holding then don't remove it from their hand - if(original_item != active_held) - original_item = null - if(!isnull(original_item) && !user.temporarilyRemoveItemFromInventory(original_item)) //remove from hand(if split remove the original stack else the target) - return - - //insert the item - var/item_name = target_item.name - var/item_count = 1 - var/is_stack = FALSE - if(isstack(target_item)) - var/obj/item/stack/the_stack = target_item - item_name = the_stack.singular_name - item_count = the_stack.amount - is_stack = TRUE - inserted = insert_item(target_item, 1, context) - if(inserted > 0) - . += inserted - inserted /= SHEET_MATERIAL_AMOUNT // display units inserted as sheets for improved readability - - //stack was either split by the container(!QDELETED(target_item) means the container only consumed a part of it) or by the player, put whats left back of the original stack back in players hand - if((!QDELETED(target_item) || was_stack_split)) - - //stack was split by player and that portion was not fully consumed, merge whats left back with the original stack - if(!QDELETED(target_item) && was_stack_split) - var/obj/item/stack/inserting_stack = target_item - item_stack.add(inserting_stack.amount) - qdel(inserting_stack) - - //was this the original item in the players hand? put what's left back in the player's hand - if(!isnull(original_item)) - user.put_in_active_hand(original_item) - - //collect all messages to print later - var/list/status_data = chat_msgs["[MATERIAL_INSERT_ITEM_SUCCESS]"] || list() - var/list/item_data = status_data[item_name] || list() - item_data["count"] += item_count - item_data["amount"] += inserted - item_data["stack"] = is_stack - status_data[item_name] = item_data - chat_msgs["[MATERIAL_INSERT_ITEM_SUCCESS]"] = status_data - - else - //collect all messages to print later - var/list/status_data = chat_msgs["[inserted]"] || list() - var/list/item_data = status_data[item_name] || list() - item_data["count"] += item_count - status_data[item_name] = item_data - chat_msgs["[inserted]"] = status_data - - //player split the stack by the requested amount but even that split amount could not be salvaged. merge it back with the original - if(!isnull(item_stack) && was_stack_split) + //if stack, check if we want to read precise amount of sheets to insert + var/obj/item/stack/item_stack = null + if(isstack(target_item) && precise_insertion) + var/atom/current_parent = parent + item_stack = target_item + var/requested_amount = tgui_input_number(user, "How much do you want to insert?", "Inserting [item_stack.singular_name]s", item_stack.amount, item_stack.amount) + if(!requested_amount || QDELETED(target_item) || QDELETED(user) || QDELETED(src)) + continue + if(parent != current_parent || user.get_active_held_item() != active_held) + continue + if(requested_amount != item_stack.amount) //only split if its not the whole amount + target_item = fast_split_stack(item_stack, requested_amount) //split off the requested amount + requested_amount = 0 + + //is this item a stack and was it split by the player? + var/was_stack_split = !isnull(item_stack) && item_stack != target_item + //if it was split then item_stack has the reference to the original stack/item + var/obj/item/original_item = was_stack_split ? item_stack : target_item + //if this item is not the one the player is holding then don't remove it from their hand + if(original_item != active_held) + original_item = null + if(!isnull(original_item) && !user.temporarilyRemoveItemFromInventory(original_item)) //remove from hand(if split remove the original stack else the target) + return + + //insert the item + var/item_name = target_item.name + var/item_count = 1 + var/is_stack = FALSE + var/obj/item/stack/the_stack + if(isstack(target_item)) + the_stack = target_item + item_name = the_stack.singular_name + item_count = the_stack.amount + is_stack = TRUE + + //we typically don't want to consume bags, boxes but only their contents. so we skip processing + inserted = !target_item.atom_storage ? insert_item(target_item, 1, context, is_stack) : 0 + if(inserted > 0) + . += inserted + inserted /= SHEET_MATERIAL_AMOUNT // display units inserted as sheets for improved readability + + //collect all messages to print later + var/list/status_data = chat_msgs["[MATERIAL_INSERT_ITEM_SUCCESS]"] || list() + var/list/item_data = status_data[item_name] || list() + item_data["count"] += item_count + item_data["amount"] += inserted + item_data["stack"] = is_stack + status_data[item_name] = item_data + chat_msgs["[MATERIAL_INSERT_ITEM_SUCCESS]"] = status_data + + //delete the item or merge stacks if any left over + if(is_stack) + //player split it & machine further split that due to lack of space? merge with remaining stack + if(!QDELETED(target_item) && was_stack_split) var/obj/item/stack/inserting_stack = target_item item_stack.add(inserting_stack.amount) qdel(inserting_stack) - //was this the original item in the players hand? put it back because we coudn't salvage it - if(!isnull(original_item)) + //was this the original item in the players hand? put what's left back in the player's hand + if(!QDELETED(original_item)) user.put_in_active_hand(original_item) - //we can stop here as remaining items will fail to insert as well - if(inserted == MATERIAL_INSERT_ITEM_NO_SPACE) - break + //skip processing children & other stuff. irrelevant for stacks + continue + + //queue the object for deletion + to_delete += target_item + else + //collect all messages to print later + var/list/status_data = chat_msgs["[inserted]"] || list() + var/list/item_data = status_data[item_name] || list() + item_data["count"] += item_count + status_data[item_name] = item_data + chat_msgs["[inserted]"] = status_data + + //player split the stack by the requested amount but even that split amount could not be salvaged. merge it back with the original + if(was_stack_split) + var/obj/item/stack/inserting_stack = target_item + item_stack.add(inserting_stack.amount) + qdel(inserting_stack) + + //was this the original item in the players hand? put it back because we coudn't salvage it + if(!QDELETED(original_item)) + user.put_in_active_hand(original_item) + + //we can stop here as remaining items will fail to insert as well + if(inserted == MATERIAL_INSERT_ITEM_NO_SPACE) + break + + //we failed to process the item so don't bother going into its contents + //but if we are dealing with storage items like bags, boxes etc then we make a exception + if(!target_item.atom_storage) + continue + + //If any mats were consumed we can proceed to delete the parent + //If it has children then we will process them first in the 2nd round + //This is done so we don't delete the children when the parent is consumed + //We only do this on the 1st iteration so we don't re-iterate through its children again + if(target_item.contents.len) + if(target_item.atom_storage?.locked) //can't access contents of locked storage(like duffle bags) + continue + //process children + items += target_item.contents //we now summarize the chat msgs collected if(!(mat_container_flags & MATCONTAINER_SILENT)) @@ -475,6 +465,11 @@ if(MATERIAL_INSERT_ITEM_FAILURE) //could be because the material type was not accepted or other stuff to_chat(user, span_warning("[item_name][count > 1 ? "s were" : " was"] rejected by [parent]!")) + //finally delete the items + for(var/obj/item/deleting as anything in to_delete) + if(!QDELETED(deleting)) //deleting parents also delete their children so we check + qdel(deleting) + /// Proc that allows players to fill the parent with mats /datum/component/material_container/proc/on_attackby(datum/source, obj/item/weapon, mob/living/user) SIGNAL_HANDLER diff --git a/code/datums/components/material/remote_materials.dm b/code/datums/components/material/remote_materials.dm index 568b018e58b2b..d2804f97df120 100644 --- a/code/datums/components/material/remote_materials.dm +++ b/code/datums/components/material/remote_materials.dm @@ -144,12 +144,10 @@ handles linking back and forth. return COMPONENT_NO_AFTERATTACK -/datum/component/remote_materials/proc/OnMultitool(datum/source, mob/user, obj/item/I) +/datum/component/remote_materials/proc/OnMultitool(datum/source, mob/user, obj/item/multitool/M) SIGNAL_HANDLER - if(!I.multitool_check_buffer(user, I)) - return ITEM_INTERACT_BLOCKING - var/obj/item/multitool/M = I + . = ITEM_INTERACT_BLOCKING if (!QDELETED(M.buffer) && istype(M.buffer, /obj/machinery/ore_silo)) if (silo == M.buffer) to_chat(user, span_warning("[parent] is already connected to [silo]!")) diff --git a/code/datums/components/mind_linker.dm b/code/datums/components/mind_linker.dm index f06e6d8d05568..ba3f0a6841bee 100644 --- a/code/datums/components/mind_linker.dm +++ b/code/datums/components/mind_linker.dm @@ -239,7 +239,6 @@ return ..() && (owner.stat != DEAD) /datum/action/innate/linked_speech/Activate() - var/datum/component/mind_linker/linker = target var/mob/living/linker_parent = linker.parent @@ -257,7 +256,8 @@ var/list/all_who_can_hear = assoc_to_keys(linker.linked_mobs) + linker_parent for(var/mob/living/recipient as anything in all_who_can_hear) - to_chat(recipient, formatted_message) + var/avoid_highlighting = (recipient == owner) || (recipient == linker_parent) + to_chat(recipient, formatted_message, type = MESSAGE_TYPE_RADIO, avoid_highlighting = avoid_highlighting) for(var/mob/recipient as anything in GLOB.dead_mob_list) - to_chat(recipient, "[FOLLOW_LINK(recipient, owner)] [formatted_message]") + to_chat(recipient, "[FOLLOW_LINK(recipient, owner)] [formatted_message]", type = MESSAGE_TYPE_RADIO) diff --git a/code/datums/components/pet_commands/obeys_commands.dm b/code/datums/components/pet_commands/obeys_commands.dm index ec3a04c940a2a..8aaa7e7179294 100644 --- a/code/datums/components/pet_commands/obeys_commands.dm +++ b/code/datums/components/pet_commands/obeys_commands.dm @@ -66,7 +66,7 @@ SIGNAL_HANDLER var/mob/living/living_parent = parent - if (IS_DEAD_OR_INCAP(living_parent)) + if (IS_DEAD_OR_INCAP(living_parent) || !clicker.can_perform_action(living_parent)) return if (!(clicker in living_parent.ai_controller?.blackboard[BB_FRIENDS_LIST])) return // Not our friend, can't boss us around diff --git a/code/datums/components/pet_commands/pet_commands_basic.dm b/code/datums/components/pet_commands/pet_commands_basic.dm index 76e2f266a9fee..80f557d7cf15d 100644 --- a/code/datums/components/pet_commands/pet_commands_basic.dm +++ b/code/datums/components/pet_commands/pet_commands_basic.dm @@ -9,7 +9,7 @@ command_desc = "Command your pet to stay idle in this location." radial_icon = 'icons/obj/bed.dmi' radial_icon_state = "dogbed" - speech_commands = list("sit", "stay", "stop", "сидеть", "лежать", "место", "фу", "стоп", "стой", "стоять") + speech_commands = list("sit", "stay", "stop", "сидеть", "лежать", "место", "фу", "стоп", "стой", "стоять") //MASSMETA EDIT CHANGE (add ru commands) command_feedback = "sits" /datum/pet_command/idle/execute_action(datum/ai_controller/controller) @@ -24,7 +24,7 @@ command_desc = "Allow your pet to resume its natural behaviours." radial_icon = 'icons/mob/actions/actions_spells.dmi' radial_icon_state = "repulse" - speech_commands = list("free", "loose", "гулять", "вон", "свобод", "брысь") + speech_commands = list("free", "loose", "гулять", "вон", "свобод", "брысь") //MASSMETA EDIT CHANGE (add ru commands) command_feedback = "relaxes" /datum/pet_command/free/execute_action(datum/ai_controller/controller) @@ -40,7 +40,7 @@ command_desc = "Command your pet to accompany you." radial_icon = 'icons/testing/turf_analysis.dmi' radial_icon_state = "red_arrow" - speech_commands = list("heel", "follow", "за мной", "след", "охран", "к ноге", "ко мне") + speech_commands = list("heel", "follow", "за мной", "след", "охран", "к ноге", "ко мне") //MASSMETA EDIT CHANGE (add ru commands) ///the behavior we use to follow var/follow_behavior = /datum/ai_behavior/pet_follow_friend @@ -61,7 +61,7 @@ command_desc = "Play a macabre trick." radial_icon = 'icons/mob/simple/pets.dmi' radial_icon_state = "puppy_dead" - speech_commands = list("play dead", "притворись", "мертв", "умри") // Don't get too creative here, people talk about dying pretty often + speech_commands = list("play dead", "притворись", "мертв", "умри") // Don't get too creative here, people talk about dying pretty often //MASSMETA EDIT CHANGE (add ru commands) /datum/pet_command/play_dead/execute_action(datum/ai_controller/controller) controller.queue_behavior(/datum/ai_behavior/play_dead) @@ -124,7 +124,7 @@ radial_icon = 'icons/effects/effects.dmi' radial_icon_state = "bite" - speech_commands = list("attack", "sic", "kill", "апорт", "фас", "бить", "атак") + speech_commands = list("attack", "sic", "kill", "апорт", "фас", "бить", "атак") //MASSMETA EDIT CHANGE (add ru commands) command_feedback = "growl" pointed_reaction = "and growls" /// Balloon alert to display if providing an invalid target @@ -165,7 +165,7 @@ command_desc = "Command your pet to attempt to breed with a partner." radial_icon = 'icons/mob/simple/animal.dmi' radial_icon_state = "heart" - speech_commands = list("breed", "consummate", "размножайся", "ебитес") + speech_commands = list("breed", "consummate", "размножайся", "ебитес") //MASSMETA EDIT CHANGE (add ru commands) var/datum/ai_behavior/reproduce_behavior = /datum/ai_behavior/make_babies /datum/pet_command/point_targeting/breed/set_command_target(mob/living/parent, atom/target) @@ -197,7 +197,7 @@ command_desc = "Command your pet to use one of its special skills on something that you point out to it." radial_icon = 'icons/mob/actions/actions_spells.dmi' radial_icon_state = "projectile" - speech_commands = list("shoot", "blast", "cast", "стреля", "выстрел", "пиу", "паф", "каст") + speech_commands = list("shoot", "blast", "cast", "стреля", "выстрел", "пиу", "паф", "каст") //MASSMETA EDIT CHANGE (add ru commands) command_feedback = "growl" pointed_reaction = "and growls" /// Blackboard key where a reference to some kind of mob ability is stored diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm index 3e5528b1095a3..e2f7b2880c4bd 100644 --- a/code/datums/components/plumbing/_plumbing.dm +++ b/code/datums/components/plumbing/_plumbing.dm @@ -394,10 +394,6 @@ demand_connects = NORTH supply_connects = SOUTH -/datum/component/plumbing/iv_drip - demand_connects = SOUTH - supply_connects = NORTH - /datum/component/plumbing/manifold/change_ducting_layer(obj/caller, obj/changer, new_layer) return diff --git a/code/datums/components/religious_tool.dm b/code/datums/components/religious_tool.dm index 3c421a04aa302..37b62d1aa0e3c 100644 --- a/code/datums/components/religious_tool.dm +++ b/code/datums/components/religious_tool.dm @@ -140,7 +140,10 @@ select_sect(usr, params["path"]) return TRUE //they picked a sect lets update so some weird spammy shit doesn't happen if("perform_rite") - perform_rite(usr, params["path"]) + if(!ispath(text2path(params["path"]), /datum/religion_rites)) + message_admins("[ADMIN_LOOKUPFLW(usr)] has tried to spawn an item when performing a rite.") + return + perform_rite(usr, text2path(params["path"])) /// Select the sect, called from [/datum/component/religious_tool/proc/AttemptActions] /datum/component/religious_tool/proc/select_sect(mob/living/user, path) @@ -154,9 +157,6 @@ /// Perform the rite, called from [/datum/component/religious_tool/proc/AttemptActions] /datum/component/religious_tool/proc/perform_rite(mob/living/user, path) - if(!ispath(text2path(path), /datum/religion_rites)) - message_admins("[ADMIN_LOOKUPFLW(usr)] has tried to spawn an item when performing a rite.") - return if(user.mind.holy_role < HOLY_ROLE_PRIEST) if(user.mind.holy_role == HOLY_ROLE_DEACON) to_chat(user, "You are merely a deacon of [GLOB.deity], and therefore cannot perform rites.") diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index 78158c55e8eb7..50798fce50157 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -119,43 +119,36 @@ ride_benefit = rough_rider.mob_mood.sanity_level switch(ride_benefit) if(SANITY_LEVEL_GREAT) - modified_move_cooldown *= 0.5 - modified_move_delay *= 0.5 - if(SANITY_LEVEL_NEUTRAL) modified_move_cooldown *= 0.8 modified_move_delay *= 0.8 + if(SANITY_LEVEL_NEUTRAL) + modified_move_cooldown *= 0.9 + modified_move_delay *= 0.9 if(SANITY_LEVEL_DISTURBED) modified_move_cooldown *= 1 modified_move_delay *= 1 if(SANITY_LEVEL_CRAZY) + modified_move_cooldown *= 1.1 + modified_move_delay *= 1.1 + if(SANITY_LEVEL_INSANE) modified_move_cooldown *= 1.2 modified_move_delay *= 1.2 - if(SANITY_LEVEL_INSANE) - modified_move_cooldown *= 1.5 - modified_move_delay *= 1.5 COOLDOWN_START(src, vehicle_move_cooldown = modified_move_cooldown, (last_move_diagonal ? 2 : 1) * modified_move_delay) return ..() /// Yeets the rider off, used for animals and cyborgs, redefined for humans who shove their piggyback rider off -/datum/component/riding/creature/proc/force_dismount(mob/living/rider, gentle = FALSE) +/datum/component/riding/creature/proc/force_dismount(mob/living/rider, throw_range = 8, throw_speed = 3, gentle = FALSE) var/atom/movable/movable_parent = parent movable_parent.unbuckle_mob(rider) - + rider.Knockdown(3 SECONDS) + if(throw_range == 0) + return if(!iscyborg(movable_parent) && !isanimal_or_basicmob(movable_parent)) return - var/turf/target = get_edge_target_turf(movable_parent, movable_parent.dir) - var/turf/targetm = get_step(get_turf(movable_parent), movable_parent.dir) - rider.Move(targetm) - rider.Knockdown(3 SECONDS) - if(gentle) - rider.visible_message(span_warning("[rider] is thrown clear of [movable_parent]!"), \ - span_warning("You're thrown clear of [movable_parent]!")) - rider.throw_at(target, 8, 3, movable_parent, gentle = TRUE) - else - rider.visible_message(span_warning("[rider] is thrown violently from [movable_parent]!"), \ - span_warning("You're thrown violently from [movable_parent]!")) - rider.throw_at(target, 14, 5, movable_parent, gentle = FALSE) + rider.visible_message(span_warning("[rider] is thrown clear of [movable_parent]!"), \ + span_warning("You're thrown clear of [movable_parent]!")) + rider.throw_at(target, throw_range, throw_speed, movable_parent, gentle = gentle) /// If we're a cyborg or animal and we spin, we yeet whoever's on us off us /datum/component/riding/creature/proc/check_emote(mob/living/user, datum/emote/emote) @@ -540,7 +533,33 @@ /datum/component/riding/creature/raptor require_minigame = TRUE - ride_check_flags = RIDER_NEEDS_ARM + ride_check_flags = RIDER_NEEDS_ARM | UNBUCKLE_DISABLED_RIDER + +/datum/component/riding/creature/raptor/Initialize(mob/living/riding_mob, force, ride_check_flags, potion_boost) + . = ..() + RegisterSignal(parent, COMSIG_PROJECTILE_PREHIT, PROC_REF(on_bullet_hit)) + RegisterSignal(parent, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(on_attacked)) + +/datum/component/riding/creature/raptor/proc/on_bullet_hit(atom/target, list/bullet_args, obj/projectile/hit_projectile) + SIGNAL_HANDLER + + if(hit_projectile.armor_flag == ENERGY) + freak_out() + +/datum/component/riding/creature/raptor/proc/on_attacked(mob/living/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item) + SIGNAL_HANDLER + + if(damagetype == STAMINA) + freak_out() + +/datum/component/riding/creature/raptor/proc/freak_out() + var/mob/living/living_parent = parent + if(lavaland_equipment_pressure_check(get_turf(living_parent)) || !length(living_parent.buckled_mobs)) + return + living_parent.balloon_alert_to_viewers("freaks out!") + living_parent.spin(spintime = 2 SECONDS, speed = 1) + for(var/mob/living/buckled_mob in living_parent.buckled_mobs) + force_dismount(buckled_mob, throw_range = 2, gentle = TRUE) /datum/component/riding/creature/raptor/handle_specials() . = ..() diff --git a/code/datums/components/riding/riding_vehicle.dm b/code/datums/components/riding/riding_vehicle.dm index 68e44c4acd3fa..561d0c87218d3 100644 --- a/code/datums/components/riding/riding_vehicle.dm +++ b/code/datums/components/riding/riding_vehicle.dm @@ -242,12 +242,12 @@ ///Makes sure that the hoverboard can move in zero-g in (open) space but only there's a ground turf on the z-level below. /datum/component/riding/vehicle/scooter/skateboard/hover/proc/hover_check(is_moving = FALSE) var/atom/movable/movable = parent - if(!isopenspaceturf(movable.loc)) + if(!is_space_or_openspace(movable.loc)) override_allow_spacemove = TRUE return var/turf/open/our_turf = movable.loc var/turf/turf_below = GET_TURF_BELOW(our_turf) - if(our_turf.zPassOut(DOWN) && (isnull(turf_below) || (isopenspaceturf(turf_below) && turf_below.zPassIn(DOWN) && turf_below.zPassOut(DOWN)))) + if(our_turf.zPassOut(DOWN) && (isnull(turf_below) || (is_space_or_openspace(turf_below) && turf_below.zPassIn(DOWN) && turf_below.zPassOut(DOWN)))) override_allow_spacemove = FALSE if(turf_below) our_turf.zFall(movable, falling_from_move = is_moving) diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index f872c6bfd6939..6ff8197e09319 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -55,6 +55,7 @@ /datum/component/simple_rotation/proc/rotate_right(datum/source, mob/user) SIGNAL_HANDLER rotate(user, ROTATION_CLOCKWISE) + return CLICK_ACTION_SUCCESS /datum/component/simple_rotation/proc/rotate_left(datum/source, mob/user) SIGNAL_HANDLER diff --git a/code/datums/components/scope.dm b/code/datums/components/scope.dm index dfc9d1c66c4b8..087eb0c06d24c 100644 --- a/code/datums/components/scope.dm +++ b/code/datums/components/scope.dm @@ -1,3 +1,6 @@ +///Used to allow reaching the maximum offset range without exiting the boundaries of the game screen. +#define MOUSE_POINTER_OFFSET_MULT 1.1 + ///A component that allows players to use the item to zoom out. Mainly intended for firearms, but now works with other items too. /datum/component/scope /// How far we can extend, with modifier of 1, up to our vision edge, higher numbers multiply. @@ -249,6 +252,12 @@ 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)) + var/x_cap = range_modifier * view_list[1]*world.icon_size / 2 + var/y_cap = range_modifier * view_list[2]*world.icon_size / 2 + var/uncapped_x = round(range_modifier * (icon_x - view_list[1]*world.icon_size/2) * MOUSE_POINTER_OFFSET_MULT) + var/uncapped_y = round(range_modifier * (icon_y - view_list[2]*world.icon_size/2) * MOUSE_POINTER_OFFSET_MULT) + given_x = clamp(uncapped_x, -x_cap, x_cap) + given_y = clamp(uncapped_y, -y_cap, y_cap) given_turf = locate(owner.x+round(given_x/world.icon_size, 1),owner.y+round(given_y/world.icon_size, 1),owner.z) + +#undef MOUSE_POINTER_OFFSET_MULT diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm index 29767d11ce6d1..26dbffaef6ff6 100644 --- a/code/datums/components/spawner.dm +++ b/code/datums/components/spawner.dm @@ -11,6 +11,8 @@ var/list/faction /// List of weak references to things we have already created var/list/spawned_things = list() + /// Callback to a proc that is called when a mob is spawned. Primarily used for sentient spawners. + var/datum/callback/spawn_callback /// How many mobs can we spawn maximum each time we try to spawn? (1 - max) var/max_spawn_per_attempt /// Distance from the spawner to spawn mobs @@ -19,7 +21,7 @@ var/spawn_distance_exclude COOLDOWN_DECLARE(spawn_delay) -/datum/component/spawner/Initialize(spawn_types = list(), spawn_time = 30 SECONDS, max_spawned = 5, max_spawn_per_attempt = 1 , faction = list(FACTION_MINING), spawn_text = null, spawn_distance = 1, spawn_distance_exclude = 0) +/datum/component/spawner/Initialize(spawn_types = list(), spawn_time = 30 SECONDS, max_spawned = 5, max_spawn_per_attempt = 1 , faction = list(FACTION_MINING), spawn_text = null, datum/callback/spawn_callback = null, spawn_distance = 1, spawn_distance_exclude = 0, initial_spawn_delay = 0 SECONDS) if (!islist(spawn_types)) CRASH("invalid spawn_types to spawn specified for spawner component!") src.spawn_time = spawn_time @@ -27,9 +29,13 @@ src.faction = faction src.spawn_text = spawn_text src.max_spawned = max_spawned + src.spawn_callback = spawn_callback src.max_spawn_per_attempt = max_spawn_per_attempt src.spawn_distance = spawn_distance src.spawn_distance_exclude = spawn_distance_exclude + // If set, doesn't instantly spawn a creature when the spawner component is applied. + if(initial_spawn_delay) + COOLDOWN_START(src, spawn_delay, spawn_time) RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(stop_spawning)) RegisterSignal(parent, COMSIG_VENT_WAVE_CONCLUDED, PROC_REF(stop_spawning)) @@ -89,6 +95,7 @@ SEND_SIGNAL(src, COMSIG_SPAWNER_SPAWNED, created) RegisterSignal(created, COMSIG_QDELETING, PROC_REF(on_deleted)) + spawn_callback?.Invoke(created) if (spawn_text) diff --git a/code/datums/components/spirit_holding.dm b/code/datums/components/spirit_holding.dm index 578e378b51cb9..a7accc38352ee 100644 --- a/code/datums/components/spirit_holding.dm +++ b/code/datums/components/spirit_holding.dm @@ -6,12 +6,20 @@ /datum/component/spirit_holding ///bool on if this component is currently polling for observers to inhabit the item var/attempting_awakening = FALSE + /// Allows renaming the bound item + var/allow_renaming + /// Allows channeling + var/allow_channeling ///mob contained in the item. var/mob/living/basic/shade/bound_spirit -/datum/component/spirit_holding/Initialize() +/datum/component/spirit_holding/Initialize(datum/mind/soul_to_bind, mob/awakener, allow_renaming = TRUE, allow_channeling = TRUE) if(!ismovable(parent)) //you may apply this to mobs, i take no responsibility for how that works out return COMPONENT_INCOMPATIBLE + src.allow_renaming = allow_renaming + src.allow_channeling = allow_channeling + if(soul_to_bind) + bind_the_soule(soul_to_bind, awakener, soul_to_bind.name) /datum/component/spirit_holding/Destroy(force) . = ..() @@ -30,7 +38,7 @@ /datum/component/spirit_holding/proc/on_examine(datum/source, mob/user, list/examine_list) SIGNAL_HANDLER if(!bound_spirit) - examine_list += span_notice("[parent] sleeps. Use [parent] in your hands to attempt to awaken it.") + examine_list += span_notice("[parent] sleeps.[allow_channeling ? " Use [parent] in your hands to attempt to awaken it." : ""]") return examine_list += span_notice("[parent] is alive.") @@ -48,6 +56,9 @@ thing.balloon_alert(user, "spirits are unwilling!") to_chat(user, span_warning("Anomalous otherworldly energies block you from awakening [parent]!")) return + if(!allow_channeling && bound_spirit) + to_chat(user, span_warning("Try as you might, the spirit within slumbers.")) + return attempting_awakening = TRUE thing.balloon_alert(user, "channeling...") var/mob/chosen_one = SSpolling.poll_ghosts_for_target( @@ -74,28 +85,29 @@ // Immediately unregister to prevent making a new spirit UnregisterSignal(parent, COMSIG_ITEM_ATTACK_SELF) - if(QDELETED(parent)) //if the thing that we're conjuring a spirit in has been destroyed, don't create a spirit to_chat(ghost, span_userdanger("The new vessel for your spirit has been destroyed! You remain an unbound ghost.")) return - bound_spirit = new(parent) - bound_spirit.ckey = ghost.ckey - bound_spirit.fully_replace_character_name(null, "The spirit of [parent]") - bound_spirit.status_flags |= GODMODE - bound_spirit.copy_languages(awakener, LANGUAGE_MASTER) //Make sure the sword can understand and communicate with the awakener. - bound_spirit.get_language_holder().omnitongue = TRUE //Grants omnitongue + bind_the_soule(ghost, awakener) - //Add new signals for parent and stop attempting to awaken - RegisterSignal(parent, COMSIG_ATOM_RELAYMOVE, PROC_REF(block_buckle_message)) - RegisterSignal(parent, COMSIG_BIBLE_SMACKED, PROC_REF(on_bible_smacked)) + attempting_awakening = FALSE + if(!allow_renaming) + return // 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(awakener) if(valid_input_name) bound_spirit.fully_replace_character_name(null, "The spirit of [valid_input_name]") - attempting_awakening = FALSE +/datum/component/spirit_holding/proc/bind_the_soule(datum/mind/chosen_spirit, mob/awakener, name_override) + bound_spirit = new(parent) + chosen_spirit.transfer_to(bound_spirit) + bound_spirit.fully_replace_character_name(null, "The spirit of [name_override ? name_override : parent]") + bound_spirit.get_language_holder().omnitongue = TRUE //Grants omnitongue + + RegisterSignal(parent, COMSIG_ATOM_RELAYMOVE, PROC_REF(block_buckle_message)) + RegisterSignal(parent, COMSIG_BIBLE_SMACKED, PROC_REF(on_bible_smacked)) /** * 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. diff --git a/code/datums/components/style/style_meter.dm b/code/datums/components/style/style_meter.dm index c06fc35aca383..94263700dda21 100644 --- a/code/datums/components/style/style_meter.dm +++ b/code/datums/components/style/style_meter.dm @@ -93,10 +93,10 @@ /obj/item/style_meter/proc/on_click_alt(datum/source, mob/user) SIGNAL_HANDLER - if(!istype(loc, /obj/item/clothing/glasses)) + if(!istype(loc, /obj/item/clothing/glasses) || !user.can_perform_action(source)) return CLICK_ACTION_BLOCKING - clean_up() + clean_up(loc) forceMove(get_turf(src)) return CLICK_ACTION_SUCCESS diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm index 9ff049e21fcbb..81a29b56c6d81 100644 --- a/code/datums/components/supermatter_crystal.dm +++ b/code/datums/components/supermatter_crystal.dm @@ -161,8 +161,8 @@ return if(is_type_in_typecache(item, sm_item_whitelist)) return FALSE - if(istype(item, /obj/item/clothing/mask/cigarette)) - var/obj/item/clothing/mask/cigarette/cig = item + if(istype(item, /obj/item/cigarette)) + var/obj/item/cigarette/cig = item var/clumsy = HAS_TRAIT(user, TRAIT_CLUMSY) if(clumsy) var/which_hand = BODY_ZONE_L_ARM diff --git a/code/datums/components/surgery_initiator.dm b/code/datums/components/surgery_initiator.dm index de3f83739e546..848bfd021eee6 100644 --- a/code/datums/components/surgery_initiator.dm +++ b/code/datums/components/surgery_initiator.dm @@ -134,15 +134,7 @@ if(is_robotic) required_tool_type = TOOL_SCREWDRIVER - if(iscyborg(user)) - var/has_cautery = FALSE - for(var/obj/item/borg/cyborg_omnitool/toolarm in user.held_items) - if(toolarm.selected && istype(toolarm.selected, /obj/item/cautery)) - has_cautery = TRUE - if(!has_cautery) - patient.balloon_alert(user, "need a cautery in an inactive slot to stop the surgery!") - return - else if(!close_tool || close_tool.tool_behaviour != required_tool_type) + if(!close_tool || close_tool.tool_behaviour != required_tool_type) patient.balloon_alert(user, "need a [is_robotic ? "screwdriver": "cautery"] in your inactive hand to stop the surgery!") return @@ -226,7 +218,7 @@ ) /datum/component/surgery_initiator/ui_data(mob/user) - var/mob/living/surgery_target = surgery_target_ref.resolve() + var/mob/living/surgery_target = surgery_target_ref?.resolve() var/list/surgeries = list() if (!isnull(surgery_target)) @@ -253,10 +245,6 @@ return ..() /datum/component/surgery_initiator/ui_status(mob/user, datum/ui_state/state) - var/obj/item/item_parent = parent - if (user != item_parent.loc) - return UI_CLOSE - var/mob/living/surgery_target = surgery_target_ref?.resolve() if (isnull(surgery_target)) return UI_CLOSE @@ -271,7 +259,8 @@ return FALSE // The item was moved somewhere else - if (!(parent in user)) + var/atom/movable/tool = parent + if (tool.loc != user) return FALSE // While we were choosing, another surgery was started at the same location diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index 28fc3be29c2fd..657d555b366ed 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -596,11 +596,9 @@ if(W.type in list(/obj/structure/window, /obj/structure/window/fulltile, /obj/structure/window/unanchored, /obj/structure/window/fulltile/unanchored)) // boring unreinforced windows for(var/i in 1 to speed) var/obj/item/shard/shard = new /obj/item/shard(get_turf(user)) - shard.embedding = list(embed_chance = 100, ignore_throwspeed_threshold = TRUE, impact_pain_mult=3, pain_chance=5) - shard.updateEmbedding() + shard.set_embed(/datum/embed_data/glass_candy) user.hitby(shard, skipcatch = TRUE, hitpush = FALSE) - shard.embedding = null - shard.updateEmbedding() + shard.set_embed(initial(shard.embed_type)) W.atom_destruction() user.adjustStaminaLoss(10 * speed) user.Paralyze(3 SECONDS) diff --git a/code/datums/components/toggle_suit.dm b/code/datums/components/toggle_suit.dm index aee7522745e77..022fc37c07a26 100644 --- a/code/datums/components/toggle_suit.dm +++ b/code/datums/components/toggle_suit.dm @@ -36,24 +36,15 @@ * source - the atom being clicked on * user - the mob doing the click */ -/datum/component/toggle_icon/proc/on_click_alt(atom/source, mob/user) +/datum/component/toggle_icon/proc/on_click_alt(atom/source, mob/living/living_user) SIGNAL_HANDLER - if(!isliving(user)) + if(!isliving(living_user) || !living_user.can_perform_action(source)) return - var/mob/living/living_user = user - - if(!living_user.Adjacent(source)) - return - - if(living_user.incapacitated()) - source.balloon_alert(user, "you're incapacitated!") - return CLICK_ACTION_BLOCKING - if(living_user.usable_hands <= 0) - source.balloon_alert(user, "you don't have hands!") - return CLICK_ACTION_BLOCKING + source.balloon_alert(living_user, "you don't have hands!") + return do_icon_toggle(source, living_user) return CLICK_ACTION_SUCCESS diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 639637af1d7e9..9560820f2f048 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -171,9 +171,9 @@ if(SANITY_LEVEL_UNSTABLE) recovery_prob += 0 if(SANITY_LEVEL_CRAZY) - recovery_prob += -0.1 - if(SANITY_LEVEL_INSANE) recovery_prob += -0.2 + if(SANITY_LEVEL_INSANE) + recovery_prob += -0.4 if((HAS_TRAIT(affected_mob, TRAIT_NOHUNGER) || !(affected_mob.satiety < 0 || affected_mob.nutrition < NUTRITION_LEVEL_STARVING)) && HAS_TRAIT(affected_mob, TRAIT_KNOCKEDOUT)) //resting starved won't help, but resting helps var/turf/rest_turf = get_turf(affected_mob) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 1ad8afdbeae2a..17cdb20e3c492 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -60,9 +60,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) var/datum/species/species = new /datum/species/human /// Assoc list of feature keys to their value /// Note if you set these manually, and do not update [unique_features] afterwards, it will likely be reset. - var/list/features = list("mcolor" = COLOR_WHITE) - ///Stores the hashed values of the person's non-human features var/unique_features ///Stores the real name of the person who originally got this dna datum. Used primarely for changelings, @@ -81,7 +79,10 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) var/stability = 100 ///Did we take something like mutagen? In that case we cant get our genes scanned to instantly cheese all the powers. var/scrambled = FALSE - + /// Weighted list of nonlethal meltdowns + var/static/list/nonfatal_meltdowns = list() + /// Weighted list of lethal meltdowns + var/static/list/fatal_meltdowns = list() /datum/dna/New(mob/living/new_holder) if(istype(new_holder)) @@ -873,81 +874,23 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) var/instability = -dna.stability dna.remove_all_mutations() dna.stability = 100 - if(prob(max(70-instability,0))) - switch(rand(0,11)) //not complete and utter death - if(0) - monkeyize() - if(1) - gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic) - new/obj/vehicle/ridden/wheelchair(get_turf(src)) //don't buckle, because I can't imagine to plethora of things to go through that could otherwise break - to_chat(src, span_warning("My flesh turned into a wheelchair and I can't feel my legs.")) - if(2) - corgize() - if(3) - to_chat(src, span_notice("Oh, I actually feel quite alright!")) - if(4) - to_chat(src, span_notice("Oh, I actually feel quite alright!")) - physiology.damage_resistance -= 20000 //you thought - if(5) - to_chat(src, span_notice("Oh, I actually feel quite alright!")) - reagents.add_reagent(/datum/reagent/aslimetoxin, 10) - if(6) - apply_status_effect(/datum/status_effect/go_away) - if(7) - to_chat(src, span_notice("Oh, I actually feel quite alright!")) - ForceContractDisease(new /datum/disease/decloning) // slow acting, non-viral GBS - if(8) - var/list/elligible_organs = list() - for(var/obj/item/organ/internal/internal_organ in organs) //make sure we dont get an implant or cavity item - elligible_organs += internal_organ - vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 10) - if(elligible_organs.len) - var/obj/item/organ/O = pick(elligible_organs) - O.Remove(src) - visible_message(span_danger("[src] vomits up [p_their()] [O.name]!"), span_danger("You vomit up your [O.name]")) //no "vomit up your heart" - O.forceMove(drop_location()) - if(prob(20)) - O.animate_atom_living() - if(9 to 10) - ForceContractDisease(new/datum/disease/gastrolosis()) - to_chat(src, span_notice("Oh, I actually feel quite alright!")) - if(11) - to_chat(src, span_notice("Your DNA mutates into the ultimate biological form!")) - crabize() - else - switch(rand(0,6)) - if(0) - investigate_log("has been gibbed by DNA instability.", INVESTIGATE_DEATHS) - gib(DROP_ALL_REMAINS) - if(1) - investigate_log("has been dusted by DNA instability.", INVESTIGATE_DEATHS) - dust() - if(2) - investigate_log("has been transformed into a statue by DNA instability.", INVESTIGATE_DEATHS) - death() - petrify(statue_timer = INFINITY, save_brain = FALSE) - ghostize(FALSE) - if(3) - if(prob(95)) - var/obj/item/bodypart/BP = get_bodypart(pick(BODY_ZONE_CHEST,BODY_ZONE_HEAD)) - if(BP) - BP.dismember() - else - investigate_log("has been gibbed by DNA instability.", INVESTIGATE_DEATHS) - gib(DROP_ALL_REMAINS) - else - set_species(/datum/species/dullahan) - if(4) - visible_message(span_warning("[src]'s skin melts off!"), span_boldwarning("Your skin melts off!")) - spawn_gibs() - set_species(/datum/species/skeleton) - if(prob(90)) - addtimer(CALLBACK(src, PROC_REF(death)), 3 SECONDS) - if(5) - to_chat(src, span_phobia("LOOK UP!")) - addtimer(CALLBACK(src, PROC_REF(something_horrible_mindmelt)), 3 SECONDS) - if(6) - slow_psykerize() + + var/nonfatal = prob(max(70-instability, 0)) + + if(!dna.nonfatal_meltdowns.len) + for(var/datum/instability_meltdown/meltdown_type as anything in typecacheof(/datum/instability_meltdown, ignore_root_path = TRUE)) + if(initial(meltdown_type.abstract_type) == meltdown_type) + continue + + if (initial(meltdown_type.fatal)) + dna.fatal_meltdowns[meltdown_type] = initial(meltdown_type.meltdown_weight) + continue + + dna.nonfatal_meltdowns[meltdown_type] = initial(meltdown_type.meltdown_weight) + + var/picked_type = pick_weight(nonfatal ? dna.nonfatal_meltdowns : dna.fatal_meltdowns) + var/datum/instability_meltdown/meltdown = new picked_type + meltdown.meltdown(src) /mob/living/carbon/human/proc/something_horrible_mindmelt() if(!is_blind()) diff --git a/code/datums/elements/caseless.dm b/code/datums/elements/caseless.dm index 587a32f2b304e..9b1c06012079c 100644 --- a/code/datums/elements/caseless.dm +++ b/code/datums/elements/caseless.dm @@ -24,7 +24,6 @@ if(reusable) if(!ispath(proj.shrapnel_type)) proj.shrapnel_type = shell.type - proj.updateEmbedding() proj.AddElement(/datum/element/projectile_drop, shell.type) /datum/element/caseless/proc/on_fired_casing(obj/item/ammo_casing/shell, atom/target, mob/living/user, fired_from, randomspread, spread, zone_override, params, distro, obj/projectile/proj) diff --git a/code/datums/elements/cult_eyes.dm b/code/datums/elements/cult_eyes.dm index 3a46aa42c951a..3e685419836f7 100644 --- a/code/datums/elements/cult_eyes.dm +++ b/code/datums/elements/cult_eyes.dm @@ -1,4 +1,4 @@ -/** +/*** * # Cult eyes element * * Applies and removes the glowing cult eyes @@ -16,8 +16,7 @@ /** * Cult eye setter proc - * - * Changes the eye color, and adds the glowing eye trait to the mob. + * * Changes the eye color, and adds the glowing eye trait to the mob. */ /datum/element/cult_eyes/proc/set_eyes(mob/living/target) SIGNAL_HANDLER diff --git a/code/datums/elements/embed.dm b/code/datums/elements/embed.dm index 78f28d8b81c23..6e83d91c5e76d 100644 --- a/code/datums/elements/embed.dm +++ b/code/datums/elements/embed.dm @@ -10,64 +10,33 @@ */ /datum/element/embed - element_flags = ELEMENT_BESPOKE - argument_hash_start_idx = 2 - var/initialized = FALSE /// whether we can skip assigning all the vars (since these are bespoke elements, we don't have to reset the vars every time we attach to something, we already know what we are!) - - // all of this stuff is explained in _DEFINES/combat.dm - var/embed_chance - var/fall_chance - var/pain_chance - var/pain_mult - var/remove_pain_mult - var/impact_pain_mult - var/rip_time - var/ignore_throwspeed_threshold - var/jostle_chance - var/jostle_pain_mult - var/pain_stam_pct - var/payload_type - -/datum/element/embed/Attach(datum/target, embed_chance, fall_chance, pain_chance, pain_mult, remove_pain_mult, impact_pain_mult, rip_time, ignore_throwspeed_threshold, jostle_chance, jostle_pain_mult, pain_stam_pct, projectile_payload=/obj/item/shard) + +/datum/element/embed/Attach(datum/target) . = ..() if(!isitem(target) && !isprojectile(target)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, COMSIG_ELEMENT_ATTACH, PROC_REF(severancePackage)) - if(isitem(target)) - RegisterSignal(target, COMSIG_MOVABLE_IMPACT_ZONE, PROC_REF(checkEmbed)) - RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(examined)) - RegisterSignal(target, COMSIG_EMBED_TRY_FORCE, PROC_REF(tryForceEmbed)) - RegisterSignal(target, COMSIG_ITEM_DISABLE_EMBED, PROC_REF(detachFromWeapon)) - else - payload_type = projectile_payload - RegisterSignal(target, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(checkEmbedProjectile)) - - if(!initialized) - src.embed_chance = embed_chance - src.fall_chance = fall_chance - src.pain_chance = pain_chance - src.pain_mult = pain_mult - src.remove_pain_mult = remove_pain_mult - src.rip_time = rip_time - src.impact_pain_mult = impact_pain_mult - src.ignore_throwspeed_threshold = ignore_throwspeed_threshold - src.jostle_chance = jostle_chance - src.jostle_pain_mult = jostle_pain_mult - src.pain_stam_pct = pain_stam_pct - initialized = TRUE + RegisterSignal(target, COMSIG_ELEMENT_ATTACH, PROC_REF(sever_element)) + if(isprojectile(target)) + RegisterSignal(target, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(check_embed_projectile)) + return + + RegisterSignal(target, COMSIG_MOVABLE_IMPACT_ZONE, PROC_REF(check_embed)) + RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(examined)) + RegisterSignal(target, COMSIG_EMBED_TRY_FORCE, PROC_REF(try_force_embed)) + RegisterSignal(target, COMSIG_ITEM_DISABLE_EMBED, PROC_REF(detach_from_weapon)) /datum/element/embed/Detach(obj/target) . = ..() - if(isitem(target)) - UnregisterSignal(target, list(COMSIG_MOVABLE_IMPACT_ZONE, COMSIG_ELEMENT_ATTACH, COMSIG_MOVABLE_IMPACT, COMSIG_ATOM_EXAMINE, COMSIG_EMBED_TRY_FORCE, COMSIG_ITEM_DISABLE_EMBED)) - else + if(isprojectile(target)) UnregisterSignal(target, list(COMSIG_PROJECTILE_SELF_ON_HIT, COMSIG_ELEMENT_ATTACH)) + return + UnregisterSignal(target, list(COMSIG_MOVABLE_IMPACT_ZONE, COMSIG_ELEMENT_ATTACH, COMSIG_MOVABLE_IMPACT, COMSIG_ATOM_EXAMINE, COMSIG_EMBED_TRY_FORCE, COMSIG_ITEM_DISABLE_EMBED)) /// Checking to see if we're gonna embed into a human -/datum/element/embed/proc/checkEmbed(obj/item/weapon, mob/living/carbon/victim, hit_zone, blocked, datum/thrownthing/throwingdatum, forced=FALSE) +/datum/element/embed/proc/check_embed(obj/item/weapon, mob/living/carbon/victim, hit_zone, blocked, datum/thrownthing/throwingdatum, forced=FALSE) SIGNAL_HANDLER if(forced) @@ -82,7 +51,7 @@ var/flying_speed = throwingdatum?.speed || weapon.throw_speed - if(flying_speed < EMBED_THROWSPEED_THRESHOLD && !ignore_throwspeed_threshold) + if(flying_speed < EMBED_THROWSPEED_THRESHOLD && !weapon.get_embed().ignore_throwspeed_threshold) return FALSE if(!roll_embed_chance(weapon, victim, hit_zone, throwingdatum)) @@ -97,27 +66,17 @@ victim.AddComponent(/datum/component/embedded,\ weapon,\ throwingdatum,\ - part = limb,\ - embed_chance = embed_chance,\ - fall_chance = fall_chance,\ - pain_chance = pain_chance,\ - pain_mult = pain_mult,\ - remove_pain_mult = remove_pain_mult,\ - rip_time = rip_time,\ - ignore_throwspeed_threshold = ignore_throwspeed_threshold,\ - jostle_chance = jostle_chance,\ - jostle_pain_mult = jostle_pain_mult,\ - pain_stam_pct = pain_stam_pct) + part = limb) ///A different embed element has been attached, so we'll detach and let them handle things -/datum/element/embed/proc/severancePackage(obj/weapon, datum/element/E) +/datum/element/embed/proc/sever_element(obj/weapon, datum/element/E) SIGNAL_HANDLER if(istype(E, /datum/element/embed)) Detach(weapon) ///If we don't want to be embeddable anymore (deactivating an e-dagger for instance) -/datum/element/embed/proc/detachFromWeapon(obj/weapon) +/datum/element/embed/proc/detach_from_weapon(obj/weapon) SIGNAL_HANDLER Detach(weapon) @@ -126,26 +85,26 @@ /datum/element/embed/proc/examined(obj/item/I, mob/user, list/examine_list) SIGNAL_HANDLER - if(I.isEmbedHarmless()) + if(I.is_embed_harmless()) examine_list += "[I] feels sticky, and could probably get stuck to someone if thrown properly!" else examine_list += "[I] has a fine point, and could probably embed in someone if thrown properly!" /** - * checkEmbedProjectile() is what we get when a projectile with a defined shrapnel_type impacts a target. + * check_embed_projectile() is what we get when a projectile with a defined shrapnel_type impacts a target. * * If we hit a valid target, we create the shrapnel_type object and then forcefully try to embed it on its * behalf. DO NOT EVER add an embed element to the payload and let it do the rest. * That's awful, and it'll limit us to drop-deletable shrapnels in the worry of stuff like * arrows and harpoons being embeddable even when not let loose by their weapons. */ -/datum/element/embed/proc/checkEmbedProjectile(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone) +/datum/element/embed/proc/check_embed_projectile(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone, blocked) SIGNAL_HANDLER - if(!source.can_embed_into(hit)) + if(!source.can_embed_into(hit) || blocked) Detach(source) return // we don't care - + var/payload_type = source.shrapnel_type var/obj/item/payload = new payload_type(get_turf(hit)) if(istype(payload, /obj/item/shrapnel/bullet)) payload.name = source.name @@ -155,12 +114,12 @@ if(!limb) limb = C.get_bodypart() - if(!tryForceEmbed(payload, limb)) + if(!try_force_embed(payload, limb)) payload.failedEmbed() Detach(source) /** - * tryForceEmbed() is called here when we fire COMSIG_EMBED_TRY_FORCE from [/obj/item/proc/tryEmbed]. Mostly, this means we're a piece of shrapnel from a projectile that just impacted something, and we're trying to embed in it. + * try_force_embed() is called here when we fire COMSIG_EMBED_TRY_FORCE from [/obj/item/proc/tryEmbed]. Mostly, this means we're a piece of shrapnel from a projectile that just impacted something, and we're trying to embed in it. * * The reason for this extra mucking about is avoiding having to do an extra hitby(), and annoying the target by impacting them once with the projectile, then again with the shrapnel, and possibly * AGAIN if we actually embed. This way, we save on at least one message. @@ -171,7 +130,7 @@ * * hit_zone- if our target is a carbon, try to hit them in this zone, if we don't have one, pick a random one. If our target is a bodypart, we already know where we're hitting. * * forced- if we want this to succeed 100% */ -/datum/element/embed/proc/tryForceEmbed(obj/item/embedding_item, atom/target, hit_zone, forced=FALSE) +/datum/element/embed/proc/try_force_embed(obj/item/embedding_item, atom/target, hit_zone, forced=FALSE) SIGNAL_HANDLER var/obj/item/bodypart/limb @@ -190,16 +149,16 @@ if(!forced && !roll_embed_chance(embedding_item, victim, hit_zone)) return - return checkEmbed(embedding_item, victim, hit_zone, forced=TRUE) // Don't repeat the embed roll, we already did it + return check_embed(embedding_item, victim, hit_zone, forced=TRUE) // Don't repeat the embed roll, we already did it /// Calculates the actual chance to embed based on armour penetration and throwing speed, then returns true if we pass that probability check /datum/element/embed/proc/roll_embed_chance(obj/item/embedding_item, mob/living/victim, hit_zone, datum/thrownthing/throwingdatum) - var/actual_chance = embed_chance + var/actual_chance = embedding_item.get_embed().embed_chance if(throwingdatum?.speed > embedding_item.throw_speed) actual_chance += (throwingdatum.speed - embedding_item.throw_speed) * EMBED_CHANCE_SPEED_BONUS - if(embedding_item.isEmbedHarmless()) // all the armor in the world won't save you from a kick me sign + if(embedding_item.is_embed_harmless()) // all the armor in the world won't save you from a kick me sign return prob(actual_chance) var/armor = max(victim.run_armor_check(hit_zone, BULLET, silent=TRUE), victim.run_armor_check(hit_zone, BOMB, silent=TRUE)) * 0.5 // we'll be nice and take the better of bullet and bomb armor, halved diff --git a/code/datums/elements/eyestab.dm b/code/datums/elements/eyestab.dm index 5686524d793bc..b8c0d78c4ae5c 100644 --- a/code/datums/elements/eyestab.dm +++ b/code/datums/elements/eyestab.dm @@ -94,8 +94,9 @@ eyes.set_organ_damage(eyes.low_threshold) // At over 10 damage, there is a 50% chance they drop all their items - if (prob(50)) - if (target.stat != DEAD && target.drop_all_held_items()) + if (prob(50) && target.stat != DEAD) + var/list/dropped = target.drop_all_held_items() + if(length(dropped)) to_chat(target, span_danger("You drop what you're holding and clutch at your eyes!")) target.adjust_eye_blur_up_to(20 SECONDS, EYESTAB_MAX_BLUR) target.Unconscious(2 SECONDS) diff --git a/code/datums/elements/floorloving.dm b/code/datums/elements/floorloving.dm index 229dea11da874..c14d9d5801e68 100644 --- a/code/datums/elements/floorloving.dm +++ b/code/datums/elements/floorloving.dm @@ -14,7 +14,7 @@ /// Block movement to any non-floor location /datum/element/floor_loving/proc/attempting_move(atom/movable/parent, newloc) SIGNAL_HANDLER - if (!isopenturf(newloc) || isspaceturf(newloc) || isopenspaceturf(newloc)) + if (!isopenturf(newloc) || is_space_or_openspace(newloc)) return COMPONENT_MOVABLE_BLOCK_PRE_MOVE if (isliving(parent)) var/mob/living/living_parent = parent diff --git a/code/datums/elements/leeching_walk.dm b/code/datums/elements/leeching_walk.dm new file mode 100644 index 0000000000000..c0afc52b24583 --- /dev/null +++ b/code/datums/elements/leeching_walk.dm @@ -0,0 +1,57 @@ +/// Buffs and heals the target while standing on rust. +/datum/element/leeching_walk + +/datum/element/leeching_walk/Attach(datum/target) + . = ..() + if (!isliving(target)) + return ELEMENT_INCOMPATIBLE + + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) + RegisterSignal(target, COMSIG_LIVING_LIFE, PROC_REF(on_life)) + +/datum/element/leeching_walk/Detach(datum/source) + . = ..() + UnregisterSignal(source, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_LIFE)) + +/* + * Signal proc for [COMSIG_MOVABLE_MOVED]. + * + * Checks if we should have baton resistance on the new turf. + */ +/datum/element/leeching_walk/proc/on_move(mob/source, atom/old_loc, dir, forced, list/old_locs) + SIGNAL_HANDLER + + var/turf/mover_turf = get_turf(source) + if(HAS_TRAIT(mover_turf, TRAIT_RUSTY)) + ADD_TRAIT(source, TRAIT_BATON_RESISTANCE, type) + return + + REMOVE_TRAIT(source, TRAIT_BATON_RESISTANCE, type) + +/** + * Signal proc for [COMSIG_LIVING_LIFE]. + * + * Gradually heals the heretic ([source]) on rust, + * including baton knockdown and stamina damage. + */ +/datum/element/leeching_walk/proc/on_life(mob/living/source, seconds_per_tick, times_fired) + SIGNAL_HANDLER + + var/turf/our_turf = get_turf(source) + if(!HAS_TRAIT(our_turf, TRAIT_RUSTY)) + return + + // Heals all damage + Stamina + var/need_mob_update = FALSE + need_mob_update += source.adjustBruteLoss(-3, updating_health = FALSE) + need_mob_update += source.adjustFireLoss(-3, updating_health = FALSE) + need_mob_update += source.adjustToxLoss(-3, updating_health = FALSE, forced = TRUE) // Slimes are people to + need_mob_update += source.adjustOxyLoss(-1.5, updating_health = FALSE) + need_mob_update += source.adjustStaminaLoss(-10, updating_stamina = FALSE) + if(need_mob_update) + source.updatehealth() + // Reduces duration of stuns/etc + source.AdjustAllImmobility(-0.5 SECONDS) + // Heals blood loss + if(source.blood_volume < BLOOD_VOLUME_NORMAL) + source.blood_volume += 2.5 * seconds_per_tick diff --git a/code/datums/elements/muffles_speech.dm b/code/datums/elements/muffles_speech.dm new file mode 100644 index 0000000000000..bbf41e3c4deef --- /dev/null +++ b/code/datums/elements/muffles_speech.dm @@ -0,0 +1,48 @@ +/datum/element/muffles_speech + +/datum/element/muffles_speech/Attach(datum/target) + . = ..() + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE + + RegisterSignal(target, COMSIG_ITEM_EQUIPPED, PROC_REF(equipped)) + RegisterSignal(target, COMSIG_ITEM_DROPPED, PROC_REF(dropped)) + +/datum/element/muffles_speech/Detach(datum/source) + . = ..() + UnregisterSignal(source, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) + +/datum/element/muffles_speech/proc/equipped(obj/item/source, mob/user, slot) + SIGNAL_HANDLER + if(source.slot_flags & slot) + RegisterSignal(user, COMSIG_MOB_SAY, PROC_REF(muzzle_talk)) + RegisterSignal(user, COMSIG_MOB_PRE_EMOTED, PROC_REF(emote_override)) + +/datum/element/muffles_speech/proc/dropped(obj/item/source, mob/user) + SIGNAL_HANDLER + UnregisterSignal(user, list(COMSIG_MOB_PRE_EMOTED, COMSIG_MOB_SAY)) + +/datum/element/muffles_speech/proc/emote_override(mob/living/source, key, params, type_override, intentional, datum/emote/emote) + SIGNAL_HANDLER + if(!emote.hands_use_check && (emote.emote_type & EMOTE_AUDIBLE)) + source.audible_message("makes a [pick("strong ", "weak ", "")]noise.", audible_message_flags = EMOTE_MESSAGE|ALWAYS_SHOW_SELF_MESSAGE) + return COMPONENT_CANT_EMOTE + return NONE + +/datum/element/muffles_speech/proc/muzzle_talk(datum/source, list/speech_args) + SIGNAL_HANDLER + + var/spoken_message = speech_args[SPEECH_MESSAGE] + if(spoken_message) + var/list/words = splittext(spoken_message, " ") + var/yell_suffix = copytext(spoken_message, findtext(spoken_message, "!")) + spoken_message = "" + + for(var/ind = 1 to length(words)) + var/new_word = "" + for(var/i = 1 to length(words[ind]) + rand(-1,1)) + new_word += "m" + new_word += "f" + words[ind] = yell_suffix ? uppertext(new_word) : new_word + spoken_message = "[jointext(words, " ")][yell_suffix]" + speech_args[SPEECH_MESSAGE] = spoken_message diff --git a/code/datums/elements/relay_attackers.dm b/code/datums/elements/relay_attackers.dm index 5f5bf7ed5893f..fd87cb3bc2c8e 100644 --- a/code/datums/elements/relay_attackers.dm +++ b/code/datums/elements/relay_attackers.dm @@ -85,7 +85,7 @@ SIGNAL_HANDLER relay_attacker(target, attacker, ATTACKER_DAMAGING_ATTACK) -/datum/element/relay_attackers/proc/on_attack_mech(atom/target, obj/vehicle/sealed/mecha/mecha_attacker, mob/living/pilot) +/datum/element/relay_attackers/proc/on_attack_mech(atom/target, obj/vehicle/sealed/mecha/mecha_attacker, mob/living/pilot, mecha_attack_cooldown) SIGNAL_HANDLER relay_attacker(target, mecha_attacker, ATTACKER_DAMAGING_ATTACK) diff --git a/code/datums/components/crafting/slapcrafting.dm b/code/datums/elements/slapcrafting.dm similarity index 77% rename from code/datums/components/crafting/slapcrafting.dm rename to code/datums/elements/slapcrafting.dm index a15a8a80b17dd..42776bf31f773 100644 --- a/code/datums/components/crafting/slapcrafting.dm +++ b/code/datums/elements/slapcrafting.dm @@ -1,10 +1,11 @@ /// Slapcrafting component! -/datum/component/slapcrafting - dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS +/datum/element/slapcrafting + element_flags = ELEMENT_BESPOKE + argument_hash_start_idx = 2 var/list/slapcraft_recipes = list() /** - * Slapcraft component + * Slapcraft element * * Slap it onto a item to be able to slapcraft with it * @@ -14,35 +15,28 @@ * It will check the area near the user for the rest of the ingredients and tools. * * **/ -/datum/component/slapcrafting/Initialize( - slapcraft_recipes = null, - ) +/datum/element/slapcrafting/Attach(datum/target, slapcraft_recipes = null) + ..() + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE - if(!isitem(parent)) - return COMPONENT_INCOMPATIBLE + var/obj/item/target_item = target - var/obj/item/parent_item = parent + if((target_item.item_flags & ABSTRACT) || (target_item.item_flags & DROPDEL)) + return //Don't do anything, it just shouldn't be used in crafting. - if((parent_item.item_flags & ABSTRACT) || (parent_item.item_flags & DROPDEL)) - return COMPONENT_NOTRANSFER + RegisterSignal(target, COMSIG_ATOM_ATTACKBY, PROC_REF(attempt_slapcraft)) + RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(get_examine_info)) + RegisterSignal(target, COMSIG_ATOM_EXAMINE_MORE, PROC_REF(get_examine_more_info)) + RegisterSignal(target, COMSIG_TOPIC, PROC_REF(topic_handler)) - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(attempt_slapcraft)) - RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(get_examine_info)) - RegisterSignal(parent, COMSIG_ATOM_EXAMINE_MORE, PROC_REF(get_examine_more_info)) - RegisterSignal(parent, COMSIG_TOPIC, PROC_REF(topic_handler)) + src.slapcraft_recipes = slapcraft_recipes - src.slapcraft_recipes += slapcraft_recipes +/datum/element/slapcrafting/Detach(datum/source, ...) + . = ..() + UnregisterSignal(source, list(COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_EXAMINE, COMSIG_ATOM_EXAMINE_MORE)) -/datum/component/slapcrafting/InheritComponent(datum/component/slapcrafting/new_comp, original, slapcraft_recipes) - if(!original) - return - src.slapcraft_recipes += slapcraft_recipes - -/datum/component/slapcrafting/Destroy(force) - UnregisterSignal(parent, list(COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_EXAMINE, COMSIG_ATOM_EXAMINE_MORE)) - return ..() - -/datum/component/slapcrafting/proc/attempt_slapcraft(obj/item/parent_item, obj/item/slapper, mob/user) +/datum/element/slapcrafting/proc/attempt_slapcraft(obj/item/parent_item, obj/item/slapper, mob/user) if(isnull(slapcraft_recipes)) CRASH("NULL SLAPCRAFT RECIPES?") @@ -71,9 +65,9 @@ return // We might use radials so we need to split the proc chain - INVOKE_ASYNC(src, PROC_REF(slapcraft_async), valid_recipes, user, craft_sheet) + INVOKE_ASYNC(src, PROC_REF(slapcraft_async), parent_item, valid_recipes, user, craft_sheet) -/datum/component/slapcrafting/proc/slapcraft_async(list/valid_recipes, mob/user, datum/component/personal_crafting/craft_sheet) +/datum/element/slapcrafting/proc/slapcraft_async(obj/parent_item, list/valid_recipes, mob/user, datum/component/personal_crafting/craft_sheet) var/list/recipe_choices = list() @@ -90,7 +84,7 @@ if(!recipe_choices) CRASH("No recipe choices despite validating in earlier proc") - string_chosen_recipe = show_radial_menu(user, parent, recipe_choices, require_near = TRUE) + string_chosen_recipe = show_radial_menu(user, parent_item, recipe_choices, require_near = TRUE) if(isnull(string_chosen_recipe)) return // they closed the thing @@ -118,7 +112,7 @@ to_chat(user, span_warning("crafting failed" + error_string)) /// Alerts any examiners to the recipe, if they wish to know more. -/datum/component/slapcrafting/proc/get_examine_info(atom/source, mob/user, list/examine_list) +/datum/element/slapcrafting/proc/get_examine_info(atom/source, mob/user, list/examine_list) SIGNAL_HANDLER var/list/string_results = list() @@ -132,17 +126,17 @@ already_used_names += initial(result.name) string_results += list("\a [initial(result.name)]") - examine_list += span_notice("You think [parent] could be used to make [english_list(string_results)]! Examine again to look at the details...") + examine_list += span_notice("You think [source] could be used to make [english_list(string_results)]! Examine again to look at the details...") /// Alerts any examiners to the details of the recipe. -/datum/component/slapcrafting/proc/get_examine_more_info(atom/source, mob/user, list/examine_list) +/datum/element/slapcrafting/proc/get_examine_more_info(atom/source, mob/user, list/examine_list) SIGNAL_HANDLER for(var/datum/crafting_recipe/recipe as anything in slapcraft_recipes) var/atom/result = initial(recipe.result) examine_list += "See Recipe For [initial(result.name)]" -/datum/component/slapcrafting/proc/topic_handler(atom/source, user, href_list) +/datum/element/slapcrafting/proc/topic_handler(atom/source, user, href_list) SIGNAL_HANDLER if(!href_list["check_recipe"]) @@ -176,7 +170,7 @@ var/amount = initial(cur_recipe.reqs[ingredient]) // If we're about to describe the ingredient that the component is based on, lower the described amount by 1 or remove it outright. - if(parent.type == valid_type) + if(source.type == valid_type) if(amount > 1) amount-- else diff --git a/code/datums/elements/turf_transparency.dm b/code/datums/elements/turf_transparency.dm index b050dd0866f0e..c9fb667cff922 100644 --- a/code/datums/elements/turf_transparency.dm +++ b/code/datums/elements/turf_transparency.dm @@ -219,10 +219,10 @@ GLOBAL_LIST_EMPTY(pillars_by_z) // it will make them look significantly nicer, and should let you tie into their logic more easily // Just please don't break behavior yeah? thanks, I love you <3 if(isclosedturf(our_turf)) //Show girders below closed turfs - var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', "girder", layer = TURF_LAYER-0.01) + var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', "girder", layer = BELOW_CLOSED_TURF_LAYER) girder_underlay.appearance_flags = RESET_ALPHA | RESET_COLOR our_turf.underlays += girder_underlay - var/mutable_appearance/plating_underlay = mutable_appearance('icons/turf/floors.dmi', "plating", layer = TURF_LAYER-0.02) + var/mutable_appearance/plating_underlay = mutable_appearance('icons/turf/floors.dmi', "plating", layer = LOW_FLOOR_LAYER, offset_spokesman = our_turf, plane = FLOOR_PLANE) plating_underlay.appearance_flags = RESET_ALPHA | RESET_COLOR our_turf.underlays += plating_underlay return TRUE @@ -240,10 +240,10 @@ GLOBAL_LIST_EMPTY(pillars_by_z) our_turf.underlays -= get_baseturf_underlay(our_turf) if(isclosedturf(our_turf)) //Show girders below closed turfs - var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', "girder", layer = TURF_LAYER-0.01) + var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', "girder", layer = BELOW_CLOSED_TURF_LAYER) girder_underlay.appearance_flags = RESET_ALPHA | RESET_COLOR our_turf.underlays -= girder_underlay - var/mutable_appearance/plating_underlay = mutable_appearance('icons/turf/floors.dmi', "plating", layer = TURF_LAYER-0.02) + var/mutable_appearance/plating_underlay = mutable_appearance('icons/turf/floors.dmi', "plating", layer = LOW_FLOOR_LAYER, offset_spokesman = our_turf, plane = FLOOR_PLANE) plating_underlay.appearance_flags = RESET_ALPHA | RESET_COLOR our_turf.underlays -= plating_underlay @@ -271,7 +271,7 @@ GLOBAL_LIST_EMPTY(pillars_by_z) if(!ispath(path)) warning("Z-level [our_turf.z] has invalid baseturf '[SSmapping.level_trait(our_turf.z, ZTRAIT_BASETURF)]'") path = /turf/open/space - var/mutable_appearance/underlay_appearance = mutable_appearance(initial(path.icon), initial(path.icon_state), layer = TURF_LAYER-0.02, offset_spokesman = our_turf, plane = PLANE_SPACE) + var/mutable_appearance/underlay_appearance = mutable_appearance(initial(path.icon), initial(path.icon_state), layer = SPACE_LAYER + 0.1, offset_spokesman = our_turf, plane = PLANE_SPACE) underlay_appearance.appearance_flags = RESET_ALPHA | RESET_COLOR return underlay_appearance diff --git a/code/datums/elements/undertile.dm b/code/datums/elements/undertile.dm index ecc621a57e42f..ed901b196c1aa 100644 --- a/code/datums/elements/undertile.dm +++ b/code/datums/elements/undertile.dm @@ -44,6 +44,7 @@ if(underfloor_accessibility < UNDERFLOOR_INTERACTABLE) SET_PLANE_IMPLICIT(source, FLOOR_PLANE) // We do this so that turfs that allow you to see what's underneath them don't have to be on the game plane (which causes ambient occlusion weirdness) + source.layer = ABOVE_OPEN_TURF_LAYER ADD_TRAIT(source, TRAIT_UNDERFLOOR, REF(src)) if(tile_overlay) @@ -61,6 +62,7 @@ else SET_PLANE_IMPLICIT(source, initial(source.plane)) + source.layer = initial(source.layer) REMOVE_TRAIT(source, TRAIT_UNDERFLOOR, REF(src)) if(invisibility_trait) diff --git a/code/datums/elements/wall_walker.dm b/code/datums/elements/wall_walker.dm index 92ac3318c1287..abea9db3af8da 100644 --- a/code/datums/elements/wall_walker.dm +++ b/code/datums/elements/wall_walker.dm @@ -4,16 +4,20 @@ argument_hash_start_idx = 2 /// What kind of walls can we pass through? var/wall_type + /// What trait on turfs allows us to pass through? Can be used as OR if wall_type is null, or AND if it's set. + var/or_trait /datum/element/wall_walker/Attach( datum/target, wall_type = /turf/closed/wall, + or_trait, ) . = ..() if (!isliving(target)) return ELEMENT_INCOMPATIBLE src.wall_type = wall_type + src.or_trait = or_trait RegisterSignal(target, COMSIG_LIVING_WALL_BUMP, PROC_REF(try_pass_wall)) RegisterSignal(target, COMSIG_LIVING_WALL_EXITED, PROC_REF(exit_wall)) @@ -23,7 +27,10 @@ /// If the wall is of the proper type, pass into it and keep hold on whatever you're pulling /datum/element/wall_walker/proc/try_pass_wall(mob/living/passing_mob, turf/closed/bumped_wall) - if(!istype(bumped_wall, wall_type)) + if(wall_type && !istype(bumped_wall, wall_type)) + return + + if(or_trait && !HAS_TRAIT(bumped_wall, or_trait)) return var/atom/movable/stored_pulling = passing_mob.pulling diff --git a/code/datums/elements/wearable_client_colour.dm b/code/datums/elements/wearable_client_colour.dm new file mode 100644 index 0000000000000..8757dd1098cd5 --- /dev/null +++ b/code/datums/elements/wearable_client_colour.dm @@ -0,0 +1,121 @@ +/// An element that adds a client colour to the wearer when equipped to the right slot, under the right conditions. +/datum/element/wearable_client_colour + element_flags = ELEMENT_BESPOKE + argument_hash_start_idx = 2 + ///The typepath of the client_colour added when worn in the appropriate slot(s) + var/datum/client_colour/colour_type + ///The slot(s) that enable the client colour + var/equip_slots = NONE + ///For items that want costumizable client colours + var/custom_colour + ///if forced is false, we check that the user has the TRAIT_SEE_WORN_COLOURS before adding the colour. + var/forced = FALSE + ///On examine, it'll tell which you have to press to toggle TRAIT_SEE_WORN_COLOURS. + var/key_info = "Figure it out yourself how" + +/datum/element/wearable_client_colour/Attach(obj/item/target, colour_type, equip_slots, custom_colour, forced = FALSE, comsig_toggle = COMSIG_CLICK_ALT) + . = ..() + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE + + RegisterSignal(target, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equipped)) + RegisterSignal(target, COMSIG_ITEM_DROPPED, PROC_REF(on_dropped)) + + src.colour_type = colour_type + src.equip_slots = equip_slots + src.custom_colour = custom_colour + src.forced = forced + + if(!forced) + switch(comsig_toggle) + if(COMSIG_CLICK_ALT) + key_info = EXAMINE_HINT("Alt-Click") + if(COMSIG_CLICK_ALT_SECONDARY) + key_info = EXAMINE_HINT("Right-Alt-Click") + if(COMSIG_CLICK_CTRL) + key_info = EXAMINE_HINT("Ctrl-Click") + if(COMSIG_CLICK_CTRL_SHIFT) + key_info = EXAMINE_HINT("Ctrl-Shift-Click") + else + stack_trace("Unsupported comsig_toggle arg value ([comsig_toggle]) for [type], defaulting to [COMSIG_CLICK_ALT]") + key_info = EXAMINE_HINT("Alt-Click") + comsig_toggle = COMSIG_CLICK_ALT + RegisterSignal(target, comsig_toggle, PROC_REF(toggle_see_worn_colors)) + RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + + if(ismob(target.loc)) + var/mob/wearer = target.loc + if(wearer.get_slot_by_item(target) & equip_slots) + try_client_colour(wearer) + +/datum/element/wearable_client_colour/Detach(obj/item/source) + var/list/fairly_long_list = list( + COMSIG_ITEM_EQUIPPED, + COMSIG_ITEM_DROPPED, + COMSIG_CLICK_ALT, + COMSIG_CLICK_ALT_SECONDARY, + COMSIG_CLICK_CTRL, + COMSIG_CLICK_CTRL_SHIFT, + COMSIG_ATOM_EXAMINE, + ) + UnregisterSignal(source, fairly_long_list) + if(ismob(source.loc)) + var/mob/wearer = source.loc + if(wearer.get_slot_by_item(source) & equip_slots) + remove_client_colour(wearer) + return ..() + +/datum/element/wearable_client_colour/proc/on_equipped(obj/item/source, mob/equipper, slot) + SIGNAL_HANDLER + if(slot & equip_slots) + try_client_colour(equipper) + +/datum/element/wearable_client_colour/proc/on_dropped(obj/item/source, mob/dropper) + SIGNAL_HANDLER + remove_client_colour(dropper) + +/datum/element/wearable_client_colour/proc/try_client_colour(mob/equipper) + if(!forced) + RegisterSignal(equipper, SIGNAL_ADDTRAIT(TRAIT_SEE_WORN_COLOURS), PROC_REF(on_trait_added)) + RegisterSignal(equipper, SIGNAL_REMOVETRAIT(TRAIT_SEE_WORN_COLOURS), PROC_REF(on_trait_removed)) + if(!HAS_TRAIT(equipper, TRAIT_SEE_WORN_COLOURS)) + return + apply_client_colour(equipper) + +/datum/element/wearable_client_colour/proc/on_trait_added(mob/source, trait) + SIGNAL_HANDLER + apply_client_colour(source) + +/datum/element/wearable_client_colour/proc/apply_client_colour(mob/equipper) + var/datum/client_colour/colour_to_add = colour_type + if(custom_colour) + colour_to_add = new colour_to_add + colour_to_add.colour = custom_colour + equipper.add_client_colour(colour_to_add) + +/datum/element/wearable_client_colour/proc/on_trait_removed(mob/source, trait) + SIGNAL_HANDLER + source.remove_client_colour(colour_type) + +/datum/element/wearable_client_colour/proc/remove_client_colour(mob/dropper) + if(!forced) + UnregisterSignal(dropper, list(SIGNAL_ADDTRAIT(TRAIT_SEE_WORN_COLOURS), SIGNAL_REMOVETRAIT(TRAIT_SEE_WORN_COLOURS))) + if(!HAS_TRAIT(dropper, TRAIT_SEE_WORN_COLOURS)) + return + dropper.remove_client_colour(colour_type) + +/datum/element/wearable_client_colour/proc/toggle_see_worn_colors(obj/item/source, mob/clicker) + SIGNAL_HANDLER + if(source.loc != clicker || HAS_TRAIT(clicker, TRAIT_INCAPACITATED)) + return + if(HAS_TRAIT(clicker, TRAIT_SEE_WORN_COLOURS)) + REMOVE_TRAIT(clicker, TRAIT_SEE_WORN_COLOURS, CLOTHING_TRAIT) + clicker.balloon_alert(clicker, "glasses colors disabled") + else + ADD_TRAIT(clicker, TRAIT_SEE_WORN_COLOURS, CLOTHING_TRAIT) + clicker.balloon_alert(clicker, "glasses colors enabled") + return CLICK_ACTION_SUCCESS + +/datum/element/wearable_client_colour/proc/on_examine(obj/item/source, mob/user, list/examine_texts) + SIGNAL_HANDLER + examine_texts += span_info("While holding or wearing it, [key_info] to toggle on/off the screen color from glasses and such.") diff --git a/code/datums/embed_data.dm b/code/datums/embed_data.dm new file mode 100644 index 0000000000000..ac010d170a8eb --- /dev/null +++ b/code/datums/embed_data.dm @@ -0,0 +1,54 @@ +/// Assosciative list of type -> embed data. +GLOBAL_LIST_INIT(embed_by_type, generate_embed_type_cache()) + +/proc/generate_embed_type_cache() + var/list/embed_cache = list() + for(var/datum/embed_data/embed_type as anything in subtypesof(/datum/embed_data)) + var/datum/embed_data/embed = new embed_type + embed_cache[embed_type] = embed + return embed_cache + +/proc/get_embed_by_type(embed_type) + var/datum/embed_data/embed = GLOB.embed_by_type[embed_type] + if(embed) + return embed + CRASH("Attempted to get an embed type that did not exist! '[embed_type]'") + +/datum/embed_data + /// Chance for an object to embed into somebody when thrown + var/embed_chance = 45 + /// Chance for embedded object to fall out (causing pain but removing the object) + var/fall_chance = 5 + /// Chance for embedded objects to cause pain (damage user) + var/pain_chance = 15 + /// Coefficient of multiplication for the damage the item does while embedded (this*item.w_class) + var/pain_mult = 2 + /// Coefficient of multiplication for the damage the item does when it first embeds (this*item.w_class) + var/impact_pain_mult = 4 + /// Coefficient of multiplication for the damage the item does when it falls out or is removed without a surgery (this*item.w_class) + var/remove_pain_mult = 6 + /// Time in ticks, total removal time = (this*item.w_class) + var/rip_time = 30 + /// If this should ignore throw speed threshold of 4 + var/ignore_throwspeed_threshold = FALSE + /// Chance for embedded objects to cause pain every time they move (jostle) + var/jostle_chance = 5 + /// Coefficient of multiplication for the damage the item does while + var/jostle_pain_mult = 1 + /// This percentage of all pain will be dealt as stam damage rather than brute (0-1) + var/pain_stam_pct = 0 + +/datum/embed_data/proc/generate_with_values(embed_chance, fall_chance, pain_chance, pain_mult, impact_pain_mult, remove_pain_mult, rip_time, ignore_throwspeed_threshold, jostle_chance, jostle_pain_mult, pain_stam_pct) + var/datum/embed_data/data = new() + + data.embed_chance = !isnull(embed_chance) ? embed_chance : src.embed_chance + data.fall_chance = !isnull(fall_chance) ? fall_chance : src.fall_chance + data.pain_chance = !isnull(pain_chance) ? pain_chance : src.pain_chance + data.pain_mult = !isnull(pain_mult) ? pain_mult : src.pain_mult + data.impact_pain_mult = !isnull(impact_pain_mult) ? impact_pain_mult : src.impact_pain_mult + data.remove_pain_mult = !isnull(remove_pain_mult) ? remove_pain_mult : src.remove_pain_mult + data.rip_time = !isnull(rip_time) ? rip_time : src.rip_time + data.ignore_throwspeed_threshold = !isnull(ignore_throwspeed_threshold) ? ignore_throwspeed_threshold : src.ignore_throwspeed_threshold + data.jostle_chance = !isnull(jostle_chance) ? jostle_chance : src.jostle_chance + data.jostle_pain_mult = !isnull(jostle_pain_mult) ? jostle_pain_mult : src.jostle_pain_mult + data.pain_stam_pct = !isnull(pain_stam_pct) ? pain_stam_pct : src.pain_stam_pct diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index 36d405450af15..7006d6d6daa71 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -38,8 +38,6 @@ var/emote_type = EMOTE_VISIBLE /// Checks if the mob can use its hands before performing the emote. var/hands_use_check = FALSE - /// Will only work if the emote is EMOTE_AUDIBLE. - var/muzzle_ignore = FALSE /// Types that are allowed to use that emote. var/list/mob_type_allowed_typecache = /mob /// Types that are NOT allowed to use that emote. @@ -90,7 +88,7 @@ /datum/emote/proc/run_emote(mob/user, params, type_override, intentional = FALSE) if(!can_run_emote(user, TRUE, intentional)) return FALSE - if(SEND_SIGNAL(user, COMSIG_MOB_PRE_EMOTED, key, params, type_override, intentional) & COMPONENT_CANT_EMOTE) + if(SEND_SIGNAL(user, COMSIG_MOB_PRE_EMOTED, key, params, type_override, intentional, src) & COMPONENT_CANT_EMOTE) return TRUE // We don't return FALSE because the error output would be incorrect, provide your own if necessary. var/msg = select_message_type(user, message, intentional) if(params && message_param) @@ -259,8 +257,6 @@ return . var/mob/living/living_user = user - if(!muzzle_ignore && user.is_muzzled() && emote_type & EMOTE_AUDIBLE) - return "makes a [pick("strong ", "weak ", "")]noise." if(HAS_MIND_TRAIT(user, TRAIT_MIMING) && message_mime) . = message_mime if(isalienadult(user) && message_alien) @@ -338,9 +334,7 @@ * Returns a bool about whether or not the user should play a sound when performing the emote. */ /datum/emote/proc/should_play_sound(mob/user, intentional = FALSE) - if(emote_type & EMOTE_AUDIBLE && !muzzle_ignore) - if(user.is_muzzled()) - return FALSE + if(emote_type & EMOTE_AUDIBLE && !hands_use_check) if(HAS_TRAIT(user, TRAIT_MUTE)) return FALSE if(ishuman(user)) diff --git a/code/datums/greyscale/_greyscale_config.dm b/code/datums/greyscale/_greyscale_config.dm index 25d006a44ee8e..60c12c25b9ef1 100644 --- a/code/datums/greyscale/_greyscale_config.dm +++ b/code/datums/greyscale/_greyscale_config.dm @@ -278,8 +278,9 @@ for(var/datum/greyscale_layer/layer as anything in group) var/icon/layer_icon if(islist(layer)) + var/list/layer_list = layer layer_icon = GenerateLayerGroup(colors, layer, render_steps, new_icon || last_external_icon) - layer = layer[1] // When there are multiple layers in a group like this we use the first one's blend mode + layer = layer_list[1] // When there are multiple layers in a group like this we use the first one's blend mode else layer_icon = layer.Generate(colors, render_steps, new_icon || last_external_icon) diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm index 69e78ec74b31e..a3866971aae5f 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm @@ -255,7 +255,7 @@ /datum/greyscale_config/vape name = "Vape" - icon_file = 'icons/obj/clothing/masks.dmi' + icon_file = 'icons/obj/cigarettes.dmi' json_config = 'code/datums/greyscale/json_configs/vape.json' /datum/greyscale_config/vape/worn diff --git a/code/datums/id_trim/ruins.dm b/code/datums/id_trim/ruins.dm index de58590ba8a9f..36284e06b72c4 100644 --- a/code/datums/id_trim/ruins.dm +++ b/code/datums/id_trim/ruins.dm @@ -27,7 +27,7 @@ /// Trim for the oldstation ruin/Charlie station to access APCs and other equipment /datum/id_trim/away/old/equipment - access = list(ACCESS_AWAY_GENERAL, ACCESS_ENGINEERING, ACCESS_ENGINE_EQUIP) + access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_ENGINEERING, ACCESS_ENGINEERING, ACCESS_ENGINE_EQUIP) assignment = "Engine Equipment Access" /// Trim for the oldstation ruin/Charlie station to access robots, and downloading of paper publishing software for experiments diff --git a/code/datums/instability_meltdown.dm b/code/datums/instability_meltdown.dm new file mode 100644 index 0000000000000..d8e6fbd77ac9e --- /dev/null +++ b/code/datums/instability_meltdown.dm @@ -0,0 +1,163 @@ +/// A possible genetic meltdown that occurs when someone exceeds 100 genetic instability +/datum/instability_meltdown + /// How likely a meltdown is to be picked + var/meltdown_weight = 1 + /// If this meltdown is considered "fatal" or not + var/fatal = FALSE + /// Used to ensure that abstract subtypes do not get picked + var/abstract_type = /datum/instability_meltdown + +/// Code that runs when this meltdown is picked +/datum/instability_meltdown/proc/meltdown(mob/living/carbon/human/victim) + return + +// Nonfatal meltdowns + +/// Turns you into a monkey +/datum/instability_meltdown/monkey + +/datum/instability_meltdown/monkey/meltdown(mob/living/carbon/human/victim) + victim.monkeyize() + +/// Gives you brain trauma that makes your legs disfunctional and gifts you a wheelchair +/datum/instability_meltdown/paraplegic + +/datum/instability_meltdown/paraplegic/meltdown(mob/living/carbon/human/victim) + victim.gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic) + new /obj/vehicle/ridden/wheelchair(get_turf(victim)) + to_chat(victim, span_warning("My flesh turned into a wheelchair and I can't feel my legs.")) + +/// Turns you into a corgi +/datum/instability_meltdown/corgi + +/datum/instability_meltdown/corgi/meltdown(mob/living/carbon/human/victim) + victim.corgize() + +/// Does nothing +/datum/instability_meltdown/alright + +/datum/instability_meltdown/alright/meltdown(mob/living/carbon/human/victim) + to_chat(victim, span_notice("Oh, I actually feel quite alright!")) + +/// Gives you the same text as above but now when you're hit you take 200 times more damage +/datum/instability_meltdown/not_alright + +/datum/instability_meltdown/not_alright/meltdown(mob/living/carbon/human/victim) + to_chat(victim, span_notice("Oh, I actually feel quite alright!")) + victim.physiology.damage_resistance -= 20000 //you thought + victim.log_message("has received x200 damage multiplier from [type] genetic meltdown") + +/// Turns you into a slime +/datum/instability_meltdown/slime + +/datum/instability_meltdown/slime/meltdown(mob/living/carbon/human/victim) + to_chat(victim, span_notice("Oh, I actually feel quite alright!")) + victim.reagents.add_reagent(/datum/reagent/aslimetoxin, 10) + +/// Makes you phase through walls into a random direction +/datum/instability_meltdown/yeet + +/datum/instability_meltdown/yeet/meltdown(mob/living/carbon/human/victim) + victim.apply_status_effect(/datum/status_effect/go_away) + +/// Makes you take cell damage and gibs you after some time +/datum/instability_meltdown/decloning + +/datum/instability_meltdown/decloning/meltdown(mob/living/carbon/human/victim) + to_chat(src, span_notice("Oh, I actually feel quite alright!")) + victim.ForceContractDisease(new /datum/disease/decloning) // slow acting, non-viral GBS + +/// Makes you vomit up a random organ +/datum/instability_meltdown/organ_vomit + +/datum/instability_meltdown/organ_vomit/meltdown(mob/living/carbon/human/victim) + var/list/elligible_organs = list() + for(var/obj/item/organ/internal/internal_organ in victim.organs) //make sure we dont get an implant or cavity item + elligible_organs += internal_organ + victim.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 10) + if(!elligible_organs.len) + return + var/obj/item/organ/picked_organ = pick(elligible_organs) + picked_organ.Remove(src) + victim.visible_message(span_danger("[victim] vomits up [p_their()] [picked_organ.name]!"), span_danger("You vomit up your [picked_organ.name]")) //no "vomit up your heart" + picked_organ.forceMove(victim.drop_location()) + if(prob(20)) + picked_organ.animate_atom_living() + +/// Turns you into a snail +/datum/instability_meltdown/snail + meltdown_weight = 2 + +/datum/instability_meltdown/snail/meltdown(mob/living/carbon/human/victim) + to_chat(victim, span_notice("Oh, I actually feel quite alright!")) + victim.ForceContractDisease(new/datum/disease/gastrolosis()) + +/// Turns you into the ultimate lifeform +/datum/instability_meltdown/crab + +/datum/instability_meltdown/crab/meltdown(mob/living/carbon/human/victim) + to_chat(victim, span_notice("Your DNA mutates into the ultimate biological form!")) + victim.crabize() + +// Fatal meltdowns + +/datum/instability_meltdown/fatal + fatal = TRUE + abstract_type = /datum/instability_meltdown/fatal + +/// Instantly gibs you +/datum/instability_meltdown/fatal/gib + +/datum/instability_meltdown/fatal/gib/meltdown(mob/living/carbon/human/victim) + victim.investigate_log("has been gibbed by DNA instability.", INVESTIGATE_DEATHS) + victim.gib(DROP_ALL_REMAINS) + +/// Dusts you +/datum/instability_meltdown/fatal/dust + +/datum/instability_meltdown/fatal/dust/meltdown(mob/living/carbon/human/victim) + victim.investigate_log("has been dusted by DNA instability.", INVESTIGATE_DEATHS) + victim.dust() + +/// Turns you into a statue +/datum/instability_meltdown/fatal/petrify + +/datum/instability_meltdown/fatal/petrify/meltdown(mob/living/carbon/human/victim) + victim.investigate_log("has been transformed into a statue by DNA instability.", INVESTIGATE_DEATHS) + victim.death() + victim.petrify(statue_timer = INFINITY, save_brain = FALSE) + victim.ghostize(FALSE) + +/// Either dismembers you, or if unable to, gibs you +/datum/instability_meltdown/fatal/dismember + +/datum/instability_meltdown/fatal/dismember/meltdown(mob/living/carbon/human/victim) + var/obj/item/bodypart/part = victim.get_bodypart(pick(BODY_ZONE_CHEST,BODY_ZONE_HEAD)) + if(part) + part.dismember() + return + victim.investigate_log("has been gibbed by DNA instability.", INVESTIGATE_DEATHS) + victim.gib(DROP_ALL_REMAINS) + +/// Turns you into a skeleton, with a high chance of killing you soon after +/datum/instability_meltdown/fatal/skeletonize + +/datum/instability_meltdown/fatal/skeletonize/meltdown(mob/living/carbon/human/victim) + victim.visible_message(span_warning("[victim]'s skin melts off!"), span_boldwarning("Your skin melts off!")) + victim.spawn_gibs() + victim.set_species(/datum/species/skeleton) + if(prob(90)) + addtimer(CALLBACK(victim, TYPE_PROC_REF(/mob/living, death)), 3 SECONDS) + +/// Makes you look up and melts out your eyes +/datum/instability_meltdown/fatal/ceiling + +/datum/instability_meltdown/fatal/ceiling/meltdown(mob/living/carbon/human/victim) + to_chat(victim, span_phobia("LOOK UP!")) + addtimer(CALLBACK(victim, TYPE_PROC_REF(/mob/living/carbon/human, something_horrible_mindmelt)), 3 SECONDS) + +/// Slowly turns you into a psyker +/datum/instability_meltdown/fatal/psyker + +/datum/instability_meltdown/fatal/psyker/meltdown(mob/living/carbon/human/victim) + victim.slow_psykerize() diff --git a/code/datums/looping_sounds/breathing.dm b/code/datums/looping_sounds/breathing.dm new file mode 100644 index 0000000000000..f9a81c6856926 --- /dev/null +++ b/code/datums/looping_sounds/breathing.dm @@ -0,0 +1,9 @@ +/datum/looping_sound/breathing + mid_sounds = 'sound/voice/breathing.ogg' + //Calculated this by using the average breathing time of an adult (12 to 20 per minute, which on average is 16 per minute) + mid_length = 3.75 SECONDS + mid_length_vary = 0.2 SECONDS + //spess station- + volume = 13 + pressure_affected = FALSE + direct = TRUE diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm index 2ed95232df19a..2d5e3564e6d09 100644 --- a/code/datums/looping_sounds/machinery_sounds.dm +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -79,6 +79,15 @@ end_sound = 'sound/machines/microwave/microwave-end.ogg' volume = 90 +/datum/looping_sound/lathe_print + mid_sounds = list('sound/machines/lathe/lathe_print.ogg' = 1) + mid_length = 20 + volume = 50 + vary = TRUE + ignore_walls = FALSE + falloff_distance = 1 + mid_length_vary = 10 + /datum/looping_sound/jackpot mid_length = 11 mid_sounds = list('sound/machines/roulettejackpot.ogg' = 1) diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm index 8e20dfbef9cb9..4e6400163a34b 100644 --- a/code/datums/martial/boxing.dm +++ b/code/datums/martial/boxing.dm @@ -93,7 +93,7 @@ attacker.do_attack_animation(defender, ATTACK_EFFECT_PUNCH) - //Determines damage dealt on a punch. Against a boxing defender, we apply our skill bonus. + // Determines damage dealt on a punch. Against a boxing defender, we apply our skill bonus. var/damage = rand(lower_force, upper_force) if(honor_check(defender)) @@ -135,6 +135,9 @@ to_chat(attacker, span_danger("You [current_atk_verbed] [defender]!")) + // Determines the total amount of experience earned per punch + var/experience_earned = round(damage * 0.25, 0.1) + defender.apply_damage(damage, damage_type, affecting, armor_block) log_combat(attacker, defender, "punched (boxing) ") @@ -181,9 +184,11 @@ to_chat(attacker, span_danger("You stagger [defender] with a haymaker!")) log_combat(attacker, defender, "staggered (boxing) ") + experience_earned *= 2 //Double our experience gain on a crit hit + playsound(defender, 'sound/effects/coin2.ogg', 40, TRUE) new /obj/effect/temp_visual/crit(get_turf(defender)) - skill_experience_adjustment(attacker, (damage/lower_force)) //double experience for a successful crit + skill_experience_adjustment(attacker, experience_earned) //double experience for a successful crit return TRUE @@ -203,7 +208,7 @@ var/gravity_modifier = boxer.has_gravity() > STANDARD_GRAVITY ? 1 : 0.5 //You gotta sleep before you get any experience! - boxer.mind?.adjust_experience(/datum/skill/athletics, experience_value * gravity_modifier) + boxer.mind?.adjust_experience(/datum/skill/athletics, round(experience_value * gravity_modifier, 0.1)) boxer.apply_status_effect(/datum/status_effect/exercised) /// Handles our blocking signals, similar to hit_reaction() on items. Only blocks while the boxer is in throw mode. @@ -227,14 +232,22 @@ var/block_text = pick("block", "evade") - if(!prob(block_chance)) - return NONE - var/mob/living/attacker = GET_ASSAILANT(hitby) if(!honor_check(attacker)) return NONE + var/experience_earned = round(damage * 0.25, 0.1) + + if(!damage) + experience_earned = 2 + + // WE reward experience for getting punched while boxing + skill_experience_adjustment(boxer, experience_earned) //just getting hit a bunch doesn't net you much experience however + + if(!prob(block_chance)) + return NONE + if(istype(attacker) && boxer.Adjacent(attacker)) attacker.apply_damage(10, STAMINA) boxer.apply_damage(5, STAMINA) @@ -246,8 +259,6 @@ if(block_text == "evade") playsound(boxer.loc, active_arm.unarmed_miss_sound, 25, TRUE, -1) - skill_experience_adjustment(boxer, 1) //just getting hit a bunch doesn't net you much experience - return SUCCESSFUL_BLOCK /datum/martial_art/boxing/can_use(mob/living/martial_artist) diff --git a/code/datums/mood.dm b/code/datums/mood.dm index 2b2a83fc6964d..8193f9c1c15c9 100644 --- a/code/datums/mood.dm +++ b/code/datums/mood.dm @@ -48,10 +48,15 @@ RegisterSignal(mob_to_make_moody, COMSIG_MOB_HUD_CREATED, PROC_REF(modify_hud)) RegisterSignal(mob_to_make_moody, COMSIG_ENTER_AREA, PROC_REF(check_area_mood)) + RegisterSignal(mob_to_make_moody, COMSIG_EXIT_AREA, PROC_REF(exit_area)) RegisterSignal(mob_to_make_moody, COMSIG_LIVING_REVIVE, PROC_REF(on_revive)) RegisterSignal(mob_to_make_moody, COMSIG_MOB_STATCHANGE, PROC_REF(handle_mob_death)) RegisterSignal(mob_to_make_moody, COMSIG_QDELETING, PROC_REF(clear_parent_ref)) + var/area/our_area = get_area(mob_to_make_moody) + if(our_area) + check_area_mood(mob_to_make_moody, our_area) + mob_to_make_moody.become_area_sensitive(MOOD_DATUM_TRAIT) if(mob_to_make_moody.hud_used) modify_hud() @@ -63,7 +68,10 @@ unmodify_hud() 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)) + UnregisterSignal(mob_parent, list(COMSIG_MOB_HUD_CREATED, COMSIG_ENTER_AREA, COMSIG_EXIT_AREA, COMSIG_LIVING_REVIVE, COMSIG_MOB_STATCHANGE, COMSIG_QDELETING)) + var/area/our_area = get_area(mob_parent) + if(our_area) + UnregisterSignal(our_area, COMSIG_AREA_BEAUTY_UPDATED) mob_parent = null @@ -383,6 +391,8 @@ /datum/mood/proc/check_area_mood(datum/source, area/new_area) SIGNAL_HANDLER + RegisterSignal(new_area, COMSIG_AREA_BEAUTY_UPDATED, PROC_REF(update_beauty)) + update_beauty(new_area) if (new_area.mood_bonus && (!new_area.mood_trait || HAS_TRAIT(source, new_area.mood_trait))) add_mood_event("area", /datum/mood_event/area, new_area.mood_bonus, new_area.mood_message) @@ -391,10 +401,32 @@ /// Updates the mob's given beauty moodie, based on the area /datum/mood/proc/update_beauty(area/area_to_beautify) + SIGNAL_HANDLER if (area_to_beautify.outdoors) // if we're outside, we don't care clear_mood_event(MOOD_CATEGORY_AREA_BEAUTY) return + if(HAS_TRAIT(mob_parent, TRAIT_MORBID)) + if(HAS_TRAIT(mob_parent, TRAIT_SNOB)) + switch(area_to_beautify.beauty) + if(BEAUTY_LEVEL_DECENT to BEAUTY_LEVEL_GOOD) + add_mood_event(MOOD_CATEGORY_AREA_BEAUTY, /datum/mood_event/ehroom) + return + if(BEAUTY_LEVEL_GOOD to BEAUTY_LEVEL_GREAT) + add_mood_event(MOOD_CATEGORY_AREA_BEAUTY, /datum/mood_event/badroom) + return + if(BEAUTY_LEVEL_GREAT to INFINITY) + add_mood_event(MOOD_CATEGORY_AREA_BEAUTY, /datum/mood_event/horridroom) + return + switch(area_to_beautify.beauty) + if(-INFINITY to BEAUTY_LEVEL_HORRID) + add_mood_event(MOOD_CATEGORY_AREA_BEAUTY, /datum/mood_event/greatroom) + if(BEAUTY_LEVEL_HORRID to BEAUTY_LEVEL_BAD) + add_mood_event(MOOD_CATEGORY_AREA_BEAUTY, /datum/mood_event/goodroom) + if(BEAUTY_LEVEL_BAD to BEAUTY_LEVEL_DECENT) + clear_mood_event(MOOD_CATEGORY_AREA_BEAUTY) + return + if(HAS_TRAIT(mob_parent, TRAIT_SNOB)) switch(area_to_beautify.beauty) if(-INFINITY to BEAUTY_LEVEL_HORRID) @@ -413,6 +445,10 @@ if(BEAUTY_LEVEL_GREAT to INFINITY) add_mood_event(MOOD_CATEGORY_AREA_BEAUTY, /datum/mood_event/greatroom) +/datum/mood/proc/exit_area(datum/source, area/old_area) + SIGNAL_HANDLER + UnregisterSignal(old_area, COMSIG_AREA_BEAUTY_UPDATED) + /// Called when parent is ahealed. /datum/mood/proc/on_revive(datum/source, full_heal) SIGNAL_HANDLER diff --git a/code/datums/mood_events/beauty_events.dm b/code/datums/mood_events/beauty_events.dm index 31e199c47e181..ec89a9b41b933 100644 --- a/code/datums/mood_events/beauty_events.dm +++ b/code/datums/mood_events/beauty_events.dm @@ -6,6 +6,10 @@ description = "This room looks really bad." mood_change = -3 +/datum/mood_event/ehroom + description = "This room looks kinda bad." + mood_change = -1 + /datum/mood_event/decentroom description = "This room looks alright." mood_change = 1 diff --git a/code/datums/mood_events/morbid_events.dm b/code/datums/mood_events/morbid_events.dm index b21548c81228d..27c5424ec5cf1 100644 --- a/code/datums/mood_events/morbid_events.dm +++ b/code/datums/mood_events/morbid_events.dm @@ -37,6 +37,11 @@ Intended to push a creepy, mad scientist/doctor vibe, or someone who is downrigh mood_change = 3 timeout = 6 MINUTES +/datum/mood_event/morbid_aquarium_good + description = "Eh eh, all the fish are sleeping..." + mood_change = 3 + timeout = 90 SECONDS + // Negative Events - We helped someone stay alive. /datum/mood_event/morbid_tend_wounds @@ -49,3 +54,7 @@ Intended to push a creepy, mad scientist/doctor vibe, or someone who is downrigh mood_change = -6 timeout = 2 MINUTES +/datum/mood_event/morbid_aquarium_bad + description = "Watching fish in an aquarium is lousy." + mood_change = -3 + timeout = 90 SECONDS diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm index c066b96cea419..db5acbca388b6 100644 --- a/code/datums/mutable_appearance.dm +++ b/code/datums/mutable_appearance.dm @@ -45,4 +45,7 @@ else if(!isnull(offset_spokesman) && !isatom(offset_spokesman)) stack_trace("Why did you pass in offset_spokesman as [offset_spokesman]? We need an atom to properly offset planes") + if(PERFORM_ALL_TESTS(focus_only/topdown_filtering)) + check_topdown_validity(appearance) + return appearance diff --git a/code/datums/mutations/_combined.dm b/code/datums/mutations/_combined.dm index cce25beb2161d..baa7c2c1215b5 100644 --- a/code/datums/mutations/_combined.dm +++ b/code/datums/mutations/_combined.dm @@ -25,6 +25,18 @@ required = "/datum/mutation/human/insulated; /datum/mutation/human/radioactive" result = /datum/mutation/human/shock +/datum/generecipe/cindikinesis + required = "/datum/mutation/human/geladikinesis; /datum/mutation/human/fire_breath" + result = /datum/mutation/human/geladikinesis/ash + +/datum/generecipe/pyrokinesis + required = "/datum/mutation/human/cryokinesis; /datum/mutation/human/fire_breath" + result = /datum/mutation/human/cryokinesis/pyrokinesis + +/datum/generecipe/thermal_adaptation + required = "/datum/mutation/human/adaptation/cold; /datum/mutation/human/adaptation/heat" + result = /datum/mutation/human/adaptation/thermal + /datum/generecipe/antiglow required = "/datum/mutation/human/glow; /datum/mutation/human/void" result = /datum/mutation/human/glow/anti @@ -36,3 +48,7 @@ /datum/generecipe/martyrdom required = "/datum/mutation/human/strong; /datum/mutation/human/stimmed" result = /datum/mutation/human/martyrdom + +/datum/generecipe/heckacious + required = "/datum/mutation/human/wacky; /datum/mutation/human/stoner" + result = /datum/mutation/human/heckacious diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index 95f59ade38c39..ba3c20a0cfe74 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -96,6 +96,8 @@ var/energy_coeff = -1 /// List of strings of valid chromosomes this mutation can accept. var/list/valid_chrom_list = list() + /// List of traits that are added or removed by the mutation with GENETIC_TRAIT source. + var/list/mutation_traits /datum/mutation/human/New(class = MUT_OTHER, timer, datum/mutation/human/copymut) . = ..() @@ -141,6 +143,8 @@ owner.overlays_standing[layer_used] = mut_overlay owner.apply_overlay(layer_used) grant_power() //we do checks here so nothing about hulk getting magic + if(mutation_traits) + owner.add_traits(mutation_traits, GENETIC_MUTATION) if(!modified) addtimer(CALLBACK(src, PROC_REF(modify), 0.5 SECONDS)) //gonna want children calling ..() to run first @@ -165,6 +169,9 @@ owner.overlays_standing[layer_used] = mut_overlay owner.apply_overlay(layer_used) + if(mutation_traits) + owner.remove_traits(mutation_traits, GENETIC_MUTATION) + /mob/living/carbon/proc/update_mutations_overlay() return diff --git a/code/datums/mutations/active.dm b/code/datums/mutations/active.dm new file mode 100644 index 0000000000000..42c11e9c6f804 --- /dev/null +++ b/code/datums/mutations/active.dm @@ -0,0 +1,49 @@ +/datum/mutation/human/adrenaline_rush + name = "Adrenaline Rush" + desc = "Allows the host to trigger their body's adrenaline response at will." + quality = POSITIVE + text_gain_indication = span_notice("You feel pumped up!") + instability = POSITIVE_INSTABILITY_MODERATE + power_path = /datum/action/cooldown/adrenaline + + energy_coeff = 1 + synchronizer_coeff = 1 + power_coeff = 1 + +/datum/mutation/human/adrenaline_rush/modify() + . = ..() + var/datum/action/cooldown/adrenaline/to_modify = . + if(!istype(to_modify)) // null or invalid + return + + to_modify.adrenaline_amount = 10 * GET_MUTATION_POWER(src) + to_modify.comedown_amount = 7 / GET_MUTATION_SYNCHRONIZER(src) + +/datum/action/cooldown/adrenaline + name = "Adrenaline!" + desc = "Energize yourself, pushing your body to its limits!" + button_icon = 'icons/mob/actions/actions_genetic.dmi' + button_icon_state = "adrenaline" + + cooldown_time = 2 MINUTES + check_flags = AB_CHECK_CONSCIOUS + /// How many units of each positive reagent injected during adrenaline. + var/adrenaline_amount = 10 + /// How many units of each negative reagent injected after comedown. + var/comedown_amount = 7 + + +/datum/action/cooldown/adrenaline/Activate(mob/living/carbon/cast_on) + . = ..() + to_chat(cast_on, span_userdanger("You feel pumped up! It's time to GO!")) + cast_on.reagents.add_reagent(/datum/reagent/drug/pumpup, adrenaline_amount) + cast_on.reagents.add_reagent(/datum/reagent/medicine/synaptizine, adrenaline_amount) + cast_on.reagents.add_reagent(/datum/reagent/determination, adrenaline_amount) + addtimer(CALLBACK(src, PROC_REF(get_tired), cast_on), 25 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) + return TRUE + +/datum/action/cooldown/adrenaline/proc/get_tired(mob/living/carbon/cast_on) + to_chat(cast_on, span_danger("Your adrenaline rush makes way for a bout of nausea and a deep feeling of exhaustion in your muscles.")) + cast_on.reagents.add_reagent(/datum/reagent/peaceborg/tire, comedown_amount) + cast_on.reagents.add_reagent(/datum/reagent/peaceborg/confuse, comedown_amount) + cast_on.set_dizzy_if_lower(10 SECONDS) diff --git a/code/datums/mutations/adaptation.dm b/code/datums/mutations/adaptation.dm index 2cac87dd4b4c4..3d0fcf0f8e962 100644 --- a/code/datums/mutations/adaptation.dm +++ b/code/datums/mutations/adaptation.dm @@ -1,53 +1,58 @@ -/datum/mutation/human/temperature_adaptation - name = "Temperature Adaptation" +/datum/mutation/human/adaptation + name = "Adaptation" desc = "A strange mutation that renders the host immune to damage from extreme temperatures. Does not protect from vacuums." quality = POSITIVE difficulty = 16 - text_gain_indication = "Your body feels warm!" - instability = POSITIVE_INSTABILITY_MAJOR - conflicts = list(/datum/mutation/human/pressure_adaptation) - -/datum/mutation/human/temperature_adaptation/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut) + text_gain_indication = span_notice("Your body feels normal!") + instability = NEGATIVE_STABILITY_MAJOR + locked = TRUE // fake parent + conflicts = list(/datum/mutation/human/adaptation) + mutation_traits = list(TRAIT_WADDLING) + /// Icon used for the adaptation overlay + var/adapt_icon = "meow" + +/datum/mutation/human/adaptation/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut) ..() + conflicts = typesof(/datum/mutation/human/adaptation) if(!(type in visual_indicators)) - visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "fire", -MUTATIONS_LAYER)) + visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', adapt_icon, -MUTATIONS_LAYER)) -/datum/mutation/human/temperature_adaptation/get_visual_indicator() +/datum/mutation/human/adaptation/get_visual_indicator() return visual_indicators[type][1] -/datum/mutation/human/temperature_adaptation/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - owner.add_traits(list(TRAIT_RESISTCOLD, TRAIT_RESISTHEAT), GENETIC_MUTATION) - -/datum/mutation/human/temperature_adaptation/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.remove_traits(list(TRAIT_RESISTCOLD, TRAIT_RESISTHEAT), GENETIC_MUTATION) +/datum/mutation/human/adaptation/cold + name = "Cold Adaptation" + desc = "A strange mutation that renders the host immune to damage from low temperature environments. It also prevents the host from slipping on ice." + text_gain_indication = span_notice("Your body feels refreshingly cold.") + instability = POSITIVE_INSTABILITY_MODERATE + mutation_traits = list(TRAIT_RESISTCOLD, TRAIT_NO_SLIP_ICE) + adapt_icon = "cold" + locked = FALSE + +/datum/mutation/human/adaptation/heat + name = "Heat Adaptation" + desc = "A strange mutation that renders the host immune to damage from high temperature, including being set alight, though the flame itself still burns clothing. It also seems to make the host resist ash storms." + text_gain_indication = span_notice("Your body feels invigoratingly warm.") + instability = POSITIVE_INSTABILITY_MODERATE + mutation_traits = list(TRAIT_RESISTHEAT, TRAIT_ASHSTORM_IMMUNE) + adapt_icon = "fire" + locked = FALSE + +/datum/mutation/human/adaptation/thermal + name = "Thermal Adaptation" + desc = "A strange mutation that renders the host immune to damage from both low and high temperature environments. Does not protect from high or low pressure environments." + difficulty = 32 + text_gain_indication = span_notice("Your body feels pleasantly room temperature.") + instability = POSITIVE_INSTABILITY_MAJOR + mutation_traits = list(TRAIT_RESISTHEAT, TRAIT_RESISTCOLD) + adapt_icon = "thermal" + locked = TRUE // recipe -/datum/mutation/human/pressure_adaptation +/datum/mutation/human/adaptation/pressure name = "Pressure Adaptation" desc = "A strange mutation that renders the host immune to damage from both low and high pressure environments. Does not protect from temperature, including the cold of space." - quality = POSITIVE - difficulty = 16 - text_gain_indication = "Your body feels numb!" - instability = POSITIVE_INSTABILITY_MAJOR - conflicts = list(/datum/mutation/human/temperature_adaptation) - -/datum/mutation/human/pressure_adaptation/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut) - ..() - if(!(type in visual_indicators)) - visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "pressure", -MUTATIONS_LAYER)) - -/datum/mutation/human/pressure_adaptation/get_visual_indicator() - return visual_indicators[type][1] - -/datum/mutation/human/pressure_adaptation/on_acquiring(mob/living/carbon/human/owner) - if(..()) - return - owner.add_traits(list(TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTHIGHPRESSURE), GENETIC_MUTATION) - -/datum/mutation/human/pressure_adaptation/on_losing(mob/living/carbon/human/owner) - if(..()) - return - owner.remove_traits(list(TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTHIGHPRESSURE), GENETIC_MUTATION) + text_gain_indication = span_notice("Your body feels impressively pressurized.") + instability = POSITIVE_INSTABILITY_MODERATE + adapt_icon = "pressure" + mutation_traits = list(TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTHIGHPRESSURE) + locked = FALSE diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index f33b90fd7a911..5684b20c454f7 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -2,8 +2,8 @@ name = "Antenna" desc = "The affected person sprouts an antenna. This is known to allow them to access common radio channels passively." quality = POSITIVE - text_gain_indication = "You feel an antenna sprout from your forehead." - text_lose_indication = "Your antenna shrinks back down." + text_gain_indication = span_notice("You feel an antenna sprout from your forehead.") + text_lose_indication = span_notice("Your antenna shrinks back down.") instability = POSITIVE_INSTABILITY_MINOR difficulty = 8 var/datum/weakref/radio_weakref @@ -44,8 +44,8 @@ name = "Mind Reader" desc = "The affected person can look into the recent memories of others." quality = POSITIVE - text_gain_indication = "You hear distant voices at the corners of your mind." - text_lose_indication = "The distant voices fade." + text_gain_indication = span_notice("You hear distant voices at the corners of your mind.") + text_lose_indication = span_notice("The distant voices fade.") power_path = /datum/action/cooldown/spell/pointed/mindread instability = POSITIVE_INSTABILITY_MINOR difficulty = 8 diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 7ddeea502d947..f2db642261633 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -6,7 +6,7 @@ desc = "A genetic defect that sporadically causes seizures." instability = NEGATIVE_STABILITY_MODERATE quality = NEGATIVE - text_gain_indication = "You get a headache." + text_gain_indication = span_danger("You get a headache.") synchronizer_coeff = 1 power_coeff = 1 @@ -53,7 +53,7 @@ desc = "Strange mutation that causes the holder to randomly mutate." instability = NEGATIVE_STABILITY_MAJOR quality = NEGATIVE - text_gain_indication = "You feel strange." + text_gain_indication = span_danger("You feel strange.") locked = TRUE /datum/mutation/human/bad_dna/on_acquiring(mob/living/carbon/human/owner) @@ -83,7 +83,7 @@ desc = "A chronic cough." instability = NEGATIVE_STABILITY_MODERATE quality = MINOR_NEGATIVE - text_gain_indication = "You start coughing." + text_gain_indication = span_danger("You start coughing.") synchronizer_coeff = 1 power_coeff = 1 @@ -101,8 +101,8 @@ desc = "Subject is easily terrified, and may suffer from hallucinations." instability = NEGATIVE_STABILITY_MODERATE quality = NEGATIVE - text_gain_indication = "You feel screams echo through your mind..." - text_lose_indication = "The screaming in your mind fades." + text_gain_indication = span_danger("You feel screams echo through your mind...") + text_lose_indication = span_notice("The screaming in your mind fades.") /datum/mutation/human/paranoia/on_life(seconds_per_tick, times_fired) if(SPT_PROB(2.5, seconds_per_tick) && owner.stat == CONSCIOUS) @@ -198,7 +198,7 @@ desc = "A genome that inhibits certain brain functions, causing the holder to appear clumsy. Honk!" instability = NEGATIVE_STABILITY_MAJOR quality = MINOR_NEGATIVE - text_gain_indication = "You feel lightheaded." + text_gain_indication = span_danger("You feel lightheaded.") /datum/mutation/human/clumsy/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -217,7 +217,7 @@ desc = "A chronic twitch that forces the user to scream bad words." //definitely needs rewriting quality = NEGATIVE instability = 0 - text_gain_indication = "You twitch." + text_gain_indication = span_danger("You twitch.") synchronizer_coeff = 1 /datum/mutation/human/tourettes/on_life(seconds_per_tick, times_fired) @@ -241,7 +241,7 @@ desc = "The holder of this genome is completely deaf." instability = NEGATIVE_STABILITY_MAJOR quality = NEGATIVE - text_gain_indication = "You can't seem to hear anything." + text_gain_indication = span_danger("You can't seem to hear anything.") /datum/mutation/human/deaf/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -286,7 +286,7 @@ name = "Glowy" desc = "You permanently emit a light with a random color and intensity." quality = POSITIVE - text_gain_indication = "Your skin begins to glow softly." + text_gain_indication = span_notice("Your skin begins to glow softly.") instability = POSITIVE_INSTABILITY_MINI power_coeff = 1 conflicts = list(/datum/mutation/human/glow/anti) @@ -323,7 +323,7 @@ /datum/mutation/human/glow/anti name = "Anti-Glow" desc = "Your skin seems to attract and absorb nearby light creating 'darkness' around you." - text_gain_indication = "The light around you seems to disappear." + text_gain_indication = span_notice("The light around you seems to disappear.") conflicts = list(/datum/mutation/human/glow) instability = POSITIVE_INSTABILITY_MINOR locked = TRUE @@ -336,7 +336,7 @@ name = "Strength" desc = "The user's muscles slightly expand. Commonly seen in top-ranking boxers." quality = POSITIVE - text_gain_indication = "You feel strong." + text_gain_indication = span_notice("You feel strong.") instability = POSITIVE_INSTABILITY_MINI difficulty = 16 @@ -358,7 +358,7 @@ desc = "The user's chemical balance is more robust. This mutation is known to slightly improve workout efficiency." quality = POSITIVE instability = POSITIVE_INSTABILITY_MINI - text_gain_indication = "You feel stimmed." + text_gain_indication = span_notice("You feel stimmed.") difficulty = 16 /datum/mutation/human/stimmed/on_acquiring(mob/living/carbon/human/owner) @@ -377,8 +377,8 @@ name = "Insulated" desc = "The affected person does not conduct electricity." quality = POSITIVE - text_gain_indication = "Your fingertips go numb." - text_lose_indication = "Your fingertips regain feeling." + text_gain_indication = span_notice("Your fingertips go numb.") + text_lose_indication = span_notice("Your fingertips regain feeling.") difficulty = 16 instability = POSITIVE_INSTABILITY_MODERATE @@ -396,8 +396,9 @@ name = "Fiery Sweat" desc = "The user's skin will randomly combust, but is generally a lot more resilient to burning." quality = NEGATIVE - text_gain_indication = "You feel hot." - text_lose_indication = "You feel a lot cooler." + text_gain_indication = span_warning("You feel hot.") + text_lose_indication = span_notice("You feel a lot cooler.") + conflicts = list(/datum/mutation/human/adaptation/heat) difficulty = 14 synchronizer_coeff = 1 power_coeff = 1 @@ -421,8 +422,8 @@ name = "Spatial Instability" desc = "The victim of the mutation has a very weak link to spatial reality, and may be displaced. Often causes extreme nausea." quality = NEGATIVE - text_gain_indication = "The space around you twists sickeningly." - text_lose_indication = "The space around you settles back to normal." + text_gain_indication = span_warning("The space around you twists sickeningly.") + text_lose_indication = span_notice("The space around you settles back to normal.") difficulty = 18//high so it's hard to unlock and abuse instability = NEGATIVE_STABILITY_MODERATE synchronizer_coeff = 1 @@ -452,8 +453,8 @@ desc = "Subject has acidic chemicals building up underneath the skin. This is often lethal." instability = NEGATIVE_STABILITY_MAJOR quality = NEGATIVE - text_gain_indication = "A horrible burning sensation envelops you as your flesh turns to acid!" - text_lose_indication = "A feeling of relief fills you as your flesh goes back to normal." + text_gain_indication = span_userdanger("A horrible burning sensation envelops you as your flesh turns to acid!") + text_lose_indication = span_notice("A feeling of relief fills you as your flesh goes back to normal.") difficulty = 18//high so it's hard to unlock and use on others /// The cooldown for the warning message COOLDOWN_DECLARE(msgcooldown) @@ -473,8 +474,8 @@ desc = "Subject suffers from muscle spasms." instability = NEGATIVE_STABILITY_MODERATE quality = NEGATIVE - text_gain_indication = "You flinch." - text_lose_indication = "Your flinching subsides." + text_gain_indication = span_warning("You flinch.") + text_lose_indication = span_notice("Your flinching subsides.") difficulty = 16 /datum/mutation/human/spastic/on_acquiring() @@ -492,8 +493,8 @@ desc = "A mutation that replaces the right foot with another left foot. Symptoms include kissing the floor when taking a step." instability = NEGATIVE_STABILITY_MODERATE quality = NEGATIVE - text_gain_indication = "Your right foot feels... left." - text_lose_indication = "Your right foot feels alright." + text_gain_indication = span_warning("Your right foot feels... left.") + text_lose_indication = span_notice("Your right foot feels alright.") difficulty = 16 /datum/mutation/human/extrastun/on_acquiring() @@ -525,8 +526,8 @@ instability = NEGATIVE_STABILITY_MAJOR // free stability >:) locked = TRUE quality = POSITIVE //not that cloning will be an option a lot but generally lets keep this around i guess? - text_gain_indication = "You get an intense feeling of heartburn." - text_lose_indication = "Your internal organs feel at ease." + text_gain_indication = span_warning("You get an intense feeling of heartburn.") + text_lose_indication = span_notice("Your internal organs feel at ease.") /datum/mutation/human/martyrdom/on_acquiring() . = ..() @@ -573,7 +574,7 @@ instability = NEGATIVE_STABILITY_MAJOR difficulty = 12 //pretty good for traitors quality = NEGATIVE //holy shit no eyes or tongue or ears - text_gain_indication = "Something feels off." + text_gain_indication = span_warning("Something feels off.") /datum/mutation/human/headless/on_acquiring() . = ..() diff --git a/code/datums/mutations/chameleon.dm b/code/datums/mutations/chameleon.dm index e3ce8826a9438..6a42c69cb51d8 100644 --- a/code/datums/mutations/chameleon.dm +++ b/code/datums/mutations/chameleon.dm @@ -4,8 +4,8 @@ desc = "A genome that causes the holder's skin to become transparent over time." quality = POSITIVE difficulty = 16 - text_gain_indication = "You feel one with your surroundings." - text_lose_indication = "You feel oddly exposed." + text_gain_indication = span_notice("You feel one with your surroundings.") + text_lose_indication = span_notice("You feel oddly exposed.") instability = POSITIVE_INSTABILITY_MAJOR power_coeff = 1 diff --git a/code/datums/mutations/cold.dm b/code/datums/mutations/cold.dm index 32e162bf7d3a0..fd060bc8ca5e0 100644 --- a/code/datums/mutations/cold.dm +++ b/code/datums/mutations/cold.dm @@ -2,7 +2,7 @@ name = "Geladikinesis" desc = "Allows the user to concentrate moisture and sub-zero forces into snow." quality = POSITIVE - text_gain_indication = "Your hand feels cold." + text_gain_indication = span_notice("Your hand feels cold.") instability = POSITIVE_INSTABILITY_MINOR difficulty = 10 synchronizer_coeff = 1 @@ -24,7 +24,7 @@ name = "Cryokinesis" desc = "Draws negative energy from the sub-zero void to freeze surrounding temperatures at subject's will." quality = POSITIVE //upsides and downsides - text_gain_indication = "Your hand feels cold." + text_gain_indication = span_notice("Your hand feels cold.") instability = POSITIVE_INSTABILITY_MODERATE difficulty = 12 synchronizer_coeff = 1 diff --git a/code/datums/mutations/fire_breath.dm b/code/datums/mutations/fire_breath.dm index 5836997729456..56915ff0130ea 100644 --- a/code/datums/mutations/fire_breath.dm +++ b/code/datums/mutations/fire_breath.dm @@ -4,8 +4,8 @@ quality = POSITIVE difficulty = 12 locked = TRUE - text_gain_indication = "Your throat is burning!" - text_lose_indication = "Your throat is cooling down." + text_gain_indication = span_notice("Your throat is burning!") + text_lose_indication = span_notice("Your throat is cooling down.") power_path = /datum/action/cooldown/spell/cone/staggered/fire_breath instability = POSITIVE_INSTABILITY_MODERATE energy_coeff = 1 diff --git a/code/datums/mutations/hot.dm b/code/datums/mutations/hot.dm new file mode 100644 index 0000000000000..574bc95d1e404 --- /dev/null +++ b/code/datums/mutations/hot.dm @@ -0,0 +1,31 @@ +/datum/mutation/human/geladikinesis/ash + name = "Cindikinesis" + desc = "Allows the user to concentrate nearby heat into a pile of ash. Wow. Very interesting." + text_gain_indication = span_notice("Your hand feels warm.") + locked = TRUE + power_path = /datum/action/cooldown/spell/conjure_item/snow/ash + +/datum/action/cooldown/spell/conjure_item/snow/ash + name = "Create Ash" + desc = "Concentrates pyrokinetic forces to create ash, useful for basically nothing." + button_icon_state = "ash" + + item_type = /obj/effect/decal/cleanable/ash + +/datum/mutation/human/cryokinesis/pyrokinesis + name = "Pyrokinesis" + desc = "Draws positive energy from the surroundings to heat surrounding temperatures at subject's will." + text_gain_indication = span_notice("Your hand feels hot!") + locked = TRUE + power_path = /datum/action/cooldown/spell/pointed/projectile/cryo/pyro + +/datum/action/cooldown/spell/pointed/projectile/cryo/pyro + name = "Pyrobeam" + desc = "This power fires a heated bolt at a target." + button_icon_state = "firebeam" + base_icon_state = "firebeam" + cooldown_time = 30 SECONDS + + active_msg = "You focus your pyrokinesis!" + deactive_msg = "You cool down." + projectile_type = /obj/projectile/temp/pyro diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 3fdc5de52ce2b..7a09687ea40bc 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -5,14 +5,14 @@ quality = POSITIVE locked = TRUE difficulty = 16 - text_gain_indication = "Your muscles hurt!" + text_gain_indication = span_notice("Your muscles hurt!") species_allowed = list(SPECIES_HUMAN) //no skeleton/lizard hulk health_req = 25 instability = POSITIVE_INSTABILITY_MAJOR var/scream_delay = 50 var/last_scream = 0 /// List of traits to add/remove when someone gets this mutation. - var/list/mutation_traits = list( + mutation_traits = list( TRAIT_CHUNKYFINGERS, TRAIT_HULK, TRAIT_IGNOREDAMAGESLOWDOWN, @@ -24,7 +24,6 @@ /datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.add_traits(mutation_traits, GENETIC_MUTATION) for(var/obj/item/bodypart/part as anything in owner.bodyparts) part.variable_color = COLOR_DARK_LIME owner.update_body_parts() @@ -87,7 +86,6 @@ /datum/mutation/human/hulk/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.remove_traits(mutation_traits, GENETIC_MUTATION) for(var/obj/item/bodypart/part as anything in owner.bodyparts) part.variable_color = null owner.update_body_parts() diff --git a/code/datums/mutations/olfaction.dm b/code/datums/mutations/olfaction.dm index f487702a3c6c8..b3273c8dd9577 100644 --- a/code/datums/mutations/olfaction.dm +++ b/code/datums/mutations/olfaction.dm @@ -3,8 +3,8 @@ desc = "Your sense of smell is comparable to that of a canine." quality = POSITIVE difficulty = 12 - text_gain_indication = "Smells begin to make more sense..." - text_lose_indication = "Your sense of smell goes back to normal." + text_gain_indication = span_notice("Smells begin to make more sense...") + text_lose_indication = span_notice("Your sense of smell goes back to normal.") power_path = /datum/action/cooldown/spell/olfaction instability = POSITIVE_INSTABILITY_MODERATE synchronizer_coeff = 1 diff --git a/code/datums/mutations/passive.dm b/code/datums/mutations/passive.dm index 14135fe426ea4..46859db686968 100644 --- a/code/datums/mutations/passive.dm +++ b/code/datums/mutations/passive.dm @@ -17,8 +17,8 @@ desc = "Causes the subject to feel just a little bit smarter. Most effective in specimens with low levels of intelligence." quality = POSITIVE instability = POSITIVE_INSTABILITY_MODERATE // literally makes you on par with station equipment - text_gain_indication = "You feel a little bit smarter." - text_lose_indication = "Your mind feels a little bit foggy." + text_gain_indication = span_danger("You feel a little bit smarter.") + text_lose_indication = span_danger("Your mind feels a little bit foggy.") /datum/mutation/human/clever/on_acquiring(mob/living/carbon/human/owner) if(..()) diff --git a/code/datums/mutations/radioactive.dm b/code/datums/mutations/radioactive.dm index 8700e405662a6..b2a17b5341275 100644 --- a/code/datums/mutations/radioactive.dm +++ b/code/datums/mutations/radioactive.dm @@ -2,7 +2,7 @@ name = "Radioactivity" desc = "A volatile mutation that causes the host to sent out deadly beta radiation. This affects both the hosts and their surroundings." quality = NEGATIVE - text_gain_indication = "You can feel it in your bones!" + text_gain_indication = span_warning("You can feel it in your bones!") instability = NEGATIVE_STABILITY_MAJOR difficulty = 8 power_coeff = 1 diff --git a/code/datums/mutations/reach.dm b/code/datums/mutations/reach.dm new file mode 100644 index 0000000000000..1c46976e76bee --- /dev/null +++ b/code/datums/mutations/reach.dm @@ -0,0 +1,112 @@ +///Telekinesis lets you interact with objects from range, and gives you a light blue halo around your head. +/datum/mutation/human/telekinesis + name = "Telekinesis" + desc = "A strange mutation that allows the holder to interact with objects through thought." + quality = POSITIVE + difficulty = 18 + text_gain_indication = span_notice("You feel smarter!") + limb_req = BODY_ZONE_HEAD + instability = POSITIVE_INSTABILITY_MAJOR + ///Typecache of atoms that TK shouldn't interact with + var/static/list/blacklisted_atoms = typecacheof(list(/atom/movable/screen)) + +/datum/mutation/human/telekinesis/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut) + ..() + if(!(type in visual_indicators)) + visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "telekinesishead", -MUTATIONS_LAYER)) + +/datum/mutation/human/telekinesis/on_acquiring(mob/living/carbon/human/homan) + . = ..() + if(.) + return + RegisterSignal(homan, COMSIG_MOB_ATTACK_RANGED, PROC_REF(on_ranged_attack)) + +/datum/mutation/human/telekinesis/on_losing(mob/living/carbon/human/homan) + . = ..() + if(.) + return + UnregisterSignal(homan, COMSIG_MOB_ATTACK_RANGED) + +/datum/mutation/human/telekinesis/get_visual_indicator() + return visual_indicators[type][1] + +///Triggers on COMSIG_MOB_ATTACK_RANGED. Usually handles stuff like picking up items at range. +/datum/mutation/human/telekinesis/proc/on_ranged_attack(mob/source, atom/target) + SIGNAL_HANDLER + if(is_type_in_typecache(target, blacklisted_atoms)) + return + if(!tkMaxRangeCheck(source, target) || source.z != target.z) + return + return target.attack_tk(source) + +/datum/mutation/human/elastic_arms + name = "Elastic Arms" + desc = "Subject's arms have become elastic, allowing them to stretch up to a meter away. However, this elasticity makes it difficult to wear gloves, handle complex tasks, or grab large objects." + quality = POSITIVE + instability = POSITIVE_INSTABILITY_MAJOR + text_gain_indication = span_warning("You feel armstrong!") + text_lose_indication = span_warning("Your arms stop feeling so saggy all the time.") + difficulty = 32 + mutation_traits = list(TRAIT_CHUNKYFINGERS, TRAIT_NO_TWOHANDING) + +/datum/mutation/human/elastic_arms/on_acquiring(mob/living/carbon/human/homan) + . = ..() + if(.) + return + RegisterSignal(homan, COMSIG_ATOM_CANREACH, PROC_REF(on_canreach)) + RegisterSignal(homan, COMSIG_LIVING_TRY_PUT_IN_HAND, PROC_REF(on_owner_equipping_item)) + RegisterSignal(homan, COMSIG_LIVING_TRY_PULL, PROC_REF(on_owner_try_pull)) + +/datum/mutation/human/elastic_arms/on_losing(mob/living/carbon/human/homan) + . = ..() + if(.) + return + UnregisterSignal(homan, list(COMSIG_ATOM_CANREACH, COMSIG_LIVING_TRY_PUT_IN_HAND, COMSIG_LIVING_TRY_PULL)) + +/// signal sent when prompting if an item can be equipped +/datum/mutation/human/elastic_arms/proc/on_owner_equipping_item(mob/living/carbon/human/owner, obj/item/pick_item) + SIGNAL_HANDLER + if((pick_item.w_class > WEIGHT_CLASS_BULKY) && !(pick_item.item_flags & ABSTRACT|HAND_ITEM)) // cant decide if i should limit to huge or bulky. + pick_item.balloon_alert(owner, "arms too floppy to wield!") + return COMPONENT_LIVING_CANT_PUT_IN_HAND + +/// signal sent when owner tries to pull +/datum/mutation/human/elastic_arms/proc/on_owner_try_pull(mob/living/carbon/owner, atom/movable/target, force) + SIGNAL_HANDLER + if(isliving(target)) + var/mob/living/living_target = target + if(living_target.mob_size > MOB_SIZE_HUMAN) + living_target.balloon_alert(owner, "arms too floppy to pull this!") + return COMSIG_LIVING_CANCEL_PULL + if(isitem(target)) + var/obj/item/item_target = target + if(item_target.w_class > WEIGHT_CLASS_BULKY) + item_target.balloon_alert(owner, "arms too floppy to pull this!") + return COMSIG_LIVING_CANCEL_PULL + +// probably buggy. let's enlist our players as bug testers +/datum/mutation/human/elastic_arms/proc/on_canreach(mob/source, atom/target) + SIGNAL_HANDLER + + var/distance = get_dist(target, source) + + // We only care about handling the reach distance, anything closer or further is handled normally. + // Also, no z-level shenanigans. Yet. + if((distance != 2) || source.z != target.z) + return + + var/direction = get_dir(source, target) + if(!direction) + return + var/turf/open/adjacent_turf = get_step(source, direction) + + // Make sure it's an open turf we're trying to pass over. + if(!istype(adjacent_turf)) + return + + // Check if there's something dense inbetween, then allow it. + for(var/atom/thing in adjacent_turf) + if(thing.density) + return + + return COMPONENT_ALLOW_REACH diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm index 66e307c247846..3aceb3e7d8ad2 100644 --- a/code/datums/mutations/sight.dm +++ b/code/datums/mutations/sight.dm @@ -4,7 +4,7 @@ desc = "The holder of this mutation has poor eyesight." instability = NEGATIVE_STABILITY_MODERATE quality = MINOR_NEGATIVE - text_gain_indication = "You can't see very well." + text_gain_indication = span_danger("You can't see very well.") /datum/mutation/human/nearsight/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -22,7 +22,7 @@ desc = "Renders the subject completely blind." instability = NEGATIVE_STABILITY_MAJOR quality = NEGATIVE - text_gain_indication = "You can't seem to see anything." + text_gain_indication = span_danger("You can't seem to see anything.") /datum/mutation/human/blind/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -40,8 +40,8 @@ desc = "The user of this genome can visually perceive the unique human thermal signature." quality = POSITIVE difficulty = 18 - text_gain_indication = "You can see the heat rising off of your skin..." - text_lose_indication = "You can no longer see the heat rising off of your skin..." + text_gain_indication = span_notice("You can see the heat rising off of your skin...") + text_lose_indication = span_notice("You can no longer see the heat rising off of your skin...") instability = POSITIVE_INSTABILITY_MAJOR // thermals aren't station equipment synchronizer_coeff = 1 power_coeff = 1 @@ -111,7 +111,7 @@ /datum/mutation/human/xray name = "X Ray Vision" desc = "A strange genome that allows the user to see between the spaces of walls." //actual x-ray would mean you'd constantly be blasting rads, wich might be fun for later //hmb - text_gain_indication = "The walls suddenly disappear!" + text_gain_indication = span_notice("The walls suddenly disappear!") instability = POSITIVE_INSTABILITY_MAJOR locked = TRUE @@ -135,7 +135,7 @@ quality = POSITIVE locked = TRUE difficulty = 16 - text_gain_indication = "You feel pressure building up behind your eyes." + text_gain_indication = span_notice("You feel pressure building up behind your eyes.") layer_used = FRONT_MUTATIONS_LAYER limb_req = BODY_ZONE_HEAD @@ -186,8 +186,8 @@ desc = "Causes a severe case of Aphasia that prevents reading or writing." instability = NEGATIVE_STABILITY_MAJOR quality = NEGATIVE - text_gain_indication = "You feel unable to read or write." - text_lose_indication = "You feel able to read and write again." + text_gain_indication = span_danger("You feel unable to read or write.") + text_lose_indication = span_danger("You feel able to read and write again.") /datum/mutation/human/illiterate/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -198,3 +198,4 @@ if(..()) return REMOVE_TRAIT(owner, TRAIT_ILLITERATE, GENETIC_MUTATION) + diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index 1400503dfc45d..98560bb252679 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -1,12 +1,17 @@ //These are all minor mutations that affect your speech somehow. //Individual ones aren't commented since their functions should be evident at a glance +// no they arent bro + +#define ALPHABET list("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z") +#define VOWELS list("a", "e", "i", "o", "u") +#define CONSONANTS (ALPHABET - VOWELS) /datum/mutation/human/nervousness name = "Nervousness" desc = "Causes the holder to stutter." instability = NEGATIVE_STABILITY_MINI quality = MINOR_NEGATIVE - text_gain_indication = "You feel nervous." + text_gain_indication = span_danger("You feel nervous.") /datum/mutation/human/nervousness/on_life(seconds_per_tick, times_fired) if(SPT_PROB(5, seconds_per_tick)) @@ -17,8 +22,8 @@ desc = "You are not a clown. You are the entire circus." instability = NEGATIVE_STABILITY_MINI quality = MINOR_NEGATIVE - text_gain_indication = "You feel an off sensation in your voicebox." - text_lose_indication = "The off sensation passes." + text_gain_indication = span_sans(span_notice("You feel an off sensation in your voicebox.")) + text_lose_indication = span_notice("The off sensation passes.") /datum/mutation/human/wacky/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -35,13 +40,107 @@ speech_args[SPEECH_SPANS] |= SPAN_SANS +/datum/mutation/human/heckacious + name = "heckacious larincks" + desc = "duge what is WISH your words man..........." + quality = MINOR_NEGATIVE + text_gain_indication = span_sans("aw SHIT man. your throat feels like FUCKASS.") + text_lose_indication = span_notice("The demonic entity possessing your larynx has finally released its grasp.") + locked = TRUE + +/datum/mutation/human/heckacious/on_acquiring(mob/living/carbon/human/owner) + if(..()) + return + RegisterSignal(owner, COMSIG_LIVING_TREAT_MESSAGE, PROC_REF(handle_caps)) + RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech)) + +/datum/mutation/human/heckacious/on_losing(mob/living/carbon/human/owner) + if(..()) + return + UnregisterSignal(owner, list(COMSIG_LIVING_TREAT_MESSAGE, COMSIG_MOB_SAY)) + +/datum/mutation/human/heckacious/proc/handle_caps(atom/movable/source, list/message_args) + SIGNAL_HANDLER + message_args[TREAT_CAPITALIZE_MESSAGE] = FALSE + +/datum/mutation/human/heckacious/proc/handle_speech(datum/source, list/speech_args) + + var/message = speech_args[SPEECH_MESSAGE] + if(!message) + return + // Split for swapping purposes + message = " [message] " + + // Splitting up each word in the text to manually apply our intended changes + var/list/message_words = splittext(message, " ") + // What we use in the end + var/list/edited_message_words + + for(var/editing_word in message_words) + if(editing_word == " " || editing_word == "" ) + continue + // Used to replace the original later + var/og_word = editing_word + // Iterating through each replaceable-string in the .json + var/list/static/super_wacky_words = strings("heckacious.json", "heckacious") + + // If the word doesn't get replaced we might do something with it later + var/word_edited + for(var/key in super_wacky_words) + var/value = super_wacky_words[key] + // If list, pick one value from said list + if(islist(value)) + value = pick(value) + editing_word = replacetextEx(editing_word, "[uppertext(key)]", "[uppertext(value)]") + editing_word = replacetextEx(editing_word, "[capitalize(key)]", "[capitalize(value)]") + editing_word = replacetextEx(editing_word, "[key]", "[value]") + // Enable if we actually found something to change + if(editing_word != og_word) + word_edited = TRUE + + // Random caps + if(prob(10)) + editing_word = prob(85) ? uppertext(editing_word) : LOWER_TEXT(editing_word) + // some times....... we add DOTS... + if(prob(10)) + for(var/dotnum in 1 to rand(2, 8)) + editing_word += "." + // change for bold/italics/underline as well! + if(prob(10)) + var/extra_emphasis = pick("+", "_", "|") + editing_word = extra_emphasis + editing_word + extra_emphasis + + // If no replacement we do it manually + if(!word_edited) + if(prob(65)) + editing_word = replacetext(editing_word, pick(VOWELS), pick(VOWELS)) + // Many more consonants, double it! + for(var/i in 1 to rand(1, 2)) + editing_word = replacetext(editing_word, pick(CONSONANTS), pick(CONSONANTS)) + // rarely, lettter is DOUBBLED... + var/patchword = "" + for(var/letter in 1 to length(editing_word)) + if(prob(92)) + patchword += editing_word[letter] + continue + patchword += replacetext(editing_word[letter], "", editing_word[letter] + editing_word[letter]) + editing_word = patchword + + LAZYADD(edited_message_words, editing_word) + + var/edited_message = jointext(edited_message_words, " ") + + message = trim(edited_message) + + speech_args[SPEECH_MESSAGE] = message + /datum/mutation/human/mute name = "Mute" desc = "Completely inhibits the vocal section of the brain." instability = NEGATIVE_STABILITY_MAJOR quality = NEGATIVE - text_gain_indication = "You feel unable to express yourself at all." - text_lose_indication = "You feel able to speak freely again." + text_gain_indication = span_danger("You feel unable to express yourself at all.") + text_lose_indication = span_danger("You feel able to speak freely again.") /datum/mutation/human/mute/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -58,8 +157,8 @@ desc = "Partially inhibits the vocal center of the brain, severely distorting speech." instability = NEGATIVE_STABILITY_MODERATE quality = NEGATIVE - text_gain_indication = "You can't seem to form any coherent thoughts!" - text_lose_indication = "Your mind feels more clear." + text_gain_indication = span_danger("You can't seem to form any coherent thoughts!") + text_lose_indication = span_danger("Your mind feels more clear.") /datum/mutation/human/unintelligible/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -76,8 +175,8 @@ desc = "A horrible mutation originating from the distant past. Thought to be eradicated after the incident in 2037." instability = NEGATIVE_STABILITY_MINI quality = MINOR_NEGATIVE - text_gain_indication = "You feel Swedish, however that works." - text_lose_indication = "The feeling of Swedishness passes." + text_gain_indication = span_notice("You feel Swedish, however that works.") + text_lose_indication = span_notice("The feeling of Swedishness passes.") /datum/mutation/human/swedish/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -108,8 +207,8 @@ desc = "Unknown" instability = NEGATIVE_STABILITY_MINI quality = MINOR_NEGATIVE - text_gain_indication = "Ye feel like a reet prat like, innit?" - text_lose_indication = "You no longer feel like being rude and sassy." + text_gain_indication = span_notice("Ye feel like a reet prat like, innit?") + text_lose_indication = span_notice("You no longer feel like being rude and sassy.") /datum/mutation/human/chav/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -146,9 +245,8 @@ desc = "A terrifying mutation named after its 'patient-zero'." instability = NEGATIVE_STABILITY_MINI quality = MINOR_NEGATIVE - locked = TRUE - text_gain_indication = "You feel pretty good, honeydoll." - text_lose_indication = "You feel a little less conversation would be great." + text_gain_indication = span_notice("You feel pretty good, honeydoll.") + text_lose_indication = span_notice("You feel a little less conversation would be great.") /datum/mutation/human/elvis/on_life(seconds_per_tick, times_fired) switch(pick(1,2)) @@ -193,9 +291,8 @@ name = "Stoner" desc = "A common mutation that severely decreases intelligence." quality = NEGATIVE - locked = TRUE - text_gain_indication = "You feel...totally chill, man!" - text_lose_indication = "You feel like you have a better sense of time." + text_gain_indication = span_notice("You feel...totally chill, man!") + text_lose_indication = span_notice("You feel like you have a better sense of time.") /datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner) ..() @@ -212,8 +309,8 @@ desc = "A horrible mutation originating from the distant past, thought to have once been a common gene in all of old world Europe." instability = NEGATIVE_STABILITY_MINI quality = MINOR_NEGATIVE - text_gain_indication = "You feel like seeking the holy grail!" - text_lose_indication = "You no longer feel like seeking anything." + text_gain_indication = span_notice("You feel like seeking the holy grail!") + text_lose_indication = span_notice("You no longer feel like seeking anything.") /datum/mutation/human/medieval/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -272,3 +369,7 @@ var/spoken_message = speech_args[SPEECH_MESSAGE] spoken_message = piglatin_sentence(spoken_message) speech_args[SPEECH_MESSAGE] = spoken_message + +#undef ALPHABET +#undef VOWELS +#undef CONSONANTS diff --git a/code/datums/mutations/telekinesis.dm b/code/datums/mutations/telekinesis.dm deleted file mode 100644 index bd6ba13070df3..0000000000000 --- a/code/datums/mutations/telekinesis.dm +++ /dev/null @@ -1,40 +0,0 @@ -///Telekinesis lets you interact with objects from range, and gives you a light blue halo around your head. -/datum/mutation/human/telekinesis - name = "Telekinesis" - desc = "A strange mutation that allows the holder to interact with objects through thought." - quality = POSITIVE - difficulty = 18 - text_gain_indication = "You feel smarter!" - limb_req = BODY_ZONE_HEAD - instability = POSITIVE_INSTABILITY_MAJOR - ///Typecache of atoms that TK shouldn't interact with - var/static/list/blacklisted_atoms = typecacheof(list(/atom/movable/screen)) - -/datum/mutation/human/telekinesis/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut) - ..() - if(!(type in visual_indicators)) - visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "telekinesishead", -MUTATIONS_LAYER)) - -/datum/mutation/human/telekinesis/on_acquiring(mob/living/carbon/human/H) - . = ..() - if(.) - return - RegisterSignal(H, COMSIG_MOB_ATTACK_RANGED, PROC_REF(on_ranged_attack)) - -/datum/mutation/human/telekinesis/on_losing(mob/living/carbon/human/H) - . = ..() - if(.) - return - UnregisterSignal(H, COMSIG_MOB_ATTACK_RANGED) - -/datum/mutation/human/telekinesis/get_visual_indicator() - return visual_indicators[type][1] - -///Triggers on COMSIG_MOB_ATTACK_RANGED. Usually handles stuff like picking up items at range. -/datum/mutation/human/telekinesis/proc/on_ranged_attack(mob/source, atom/target) - SIGNAL_HANDLER - if(is_type_in_typecache(target, blacklisted_atoms)) - return - if(!tkMaxRangeCheck(source, target) || source.z != target.z) - return - return target.attack_tk(source) diff --git a/code/datums/mutations/telepathy.dm b/code/datums/mutations/telepathy.dm index 0e3dffb48b4a4..4fa2a38db140a 100644 --- a/code/datums/mutations/telepathy.dm +++ b/code/datums/mutations/telepathy.dm @@ -2,8 +2,8 @@ name = "Telepathy" desc = "A rare mutation that allows the user to telepathically communicate to others." quality = POSITIVE - text_gain_indication = "You can hear your own voice echoing in your mind!" - text_lose_indication = "You don't hear your mind echo anymore." + text_gain_indication = span_notice("You can hear your own voice echoing in your mind!") + text_lose_indication = span_notice("You don't hear your mind echo anymore.") difficulty = 12 power_path = /datum/action/cooldown/spell/list_target/telepathy instability = POSITIVE_INSTABILITY_MINOR // basically a mediocre PDA messager diff --git a/code/datums/mutations/tongue_spike.dm b/code/datums/mutations/tongue_spike.dm index 9e25ad6f4f296..d5db738213fec 100644 --- a/code/datums/mutations/tongue_spike.dm +++ b/code/datums/mutations/tongue_spike.dm @@ -48,13 +48,7 @@ force = 2 throwforce = 25 throw_speed = 4 - embedding = list( - "impact_pain_mult" = 0, - "embedded_pain_multiplier" = 15, - "embed_chance" = 100, - "embedded_fall_chance" = 0, - "embedded_ignore_throwspeed_threshold" = TRUE, - ) + embed_type = /datum/embed_data/tongue_spike w_class = WEIGHT_CLASS_SMALL sharpness = SHARP_POINTY custom_materials = list(/datum/material/biomass = SMALL_MATERIAL_AMOUNT * 5) @@ -63,6 +57,13 @@ /// if we missed our target var/missed = TRUE +/datum/embed_data/tongue_spike + impact_pain_mult = 0 + pain_mult = 15 + embed_chance = 100 + fall_chance = 0 + ignore_throwspeed_threshold = TRUE + /obj/item/hardened_spike/Initialize(mapload, mob/living/carbon/source) . = ..() src.fired_by_ref = WEAKREF(source) @@ -110,17 +111,14 @@ desc = "Hardened biomass, shaped into... something." icon_state = "tonguespikechem" throwforce = 2 - embedding = list( - "impact_pain_mult" = 0, - "embedded_pain_multiplier" = 0, - "embed_chance" = 100, - "embedded_fall_chance" = 0, - "embedded_pain_chance" = 0, - "embedded_ignore_throwspeed_threshold" = TRUE, //never hurts once it's in you - ) + embed_type = /datum/embed_data/tongue_spike/chem /// Whether the tongue's already embedded in a target once before var/embedded_once_alread = FALSE +/datum/embed_data/tongue_spike/chem + pain_mult = 0 + pain_chance = 0 + /obj/item/hardened_spike/chem/embedded(mob/living/carbon/human/embedded_mob) . = ..() if(embedded_once_alread) diff --git a/code/datums/mutations/touch.dm b/code/datums/mutations/touch.dm index eaa4909703525..98d3d18807fea 100644 --- a/code/datums/mutations/touch.dm +++ b/code/datums/mutations/touch.dm @@ -4,8 +4,8 @@ quality = POSITIVE locked = TRUE difficulty = 16 - text_gain_indication = "You feel power flow through your hands." - text_lose_indication = "The energy in your hands subsides." + text_gain_indication = span_notice("You feel power flow through your hands.") + text_lose_indication = span_notice("The energy in your hands subsides.") power_path = /datum/action/cooldown/spell/touch/shock instability = POSITIVE_INSTABILITY_MODERATE // bad stun baton energy_coeff = 1 @@ -85,3 +85,263 @@ icon = 'icons/obj/weapons/hand.dmi' icon_state = "zapper" inhand_icon_state = "zapper" + +/datum/mutation/human/lay_on_hands + name = "Mending Touch" + desc = "The affected can lay their hands on other people to transfer a small amount of their injuries to themselves." + quality = POSITIVE + locked = FALSE + difficulty = 16 + text_gain_indication = span_notice("Your hand feels blessed!") + text_lose_indication = span_notice("Your hand feels secular once more.") + power_path = /datum/action/cooldown/spell/touch/lay_on_hands + instability = POSITIVE_INSTABILITY_MAJOR + energy_coeff = 1 + power_coeff = 1 + synchronizer_coeff = 1 + +/datum/mutation/human/lay_on_hands/modify() + . = ..() + var/datum/action/cooldown/spell/touch/lay_on_hands/to_modify =. + + if(!istype(to_modify)) // null or invalid + return + + // Transfers more damage if strengthened. (1.5 with power chromosome) + to_modify.power_coefficient = GET_MUTATION_POWER(src) + // Halves transferred damage if synchronized. (0.5 with synchronizer chromosome) + to_modify.synchronizer_coefficient = GET_MUTATION_SYNCHRONIZER(src) + +/datum/action/cooldown/spell/touch/lay_on_hands + name = "Mending Touch" + desc = "You can now lay your hands on other people to transfer a small amount of their physical injuries to yourself." + button_icon = 'icons/mob/actions/actions_genetic.dmi' + button_icon_state = "mending_touch" + sound = 'sound/magic/staff_healing.ogg' + cooldown_time = 12 SECONDS + school = SCHOOL_RESTORATION + invocation_type = INVOCATION_NONE + spell_requirements = NONE + antimagic_flags = NONE + + hand_path = /obj/item/melee/touch_attack/lay_on_hands + draw_message = span_notice("You ready your hand to transfer injuries to yourself.") + drop_message = span_notice("You lower your hand.") + /// Multiplies the amount healed. + var/heal_multiplier = 1 + /// Multiplies the incoming pain from healing. (Halved with synchronizer chromosome) + var/pain_multiplier = 1 + /// Icon used for beaming effect + var/beam_icon = "blood" + /// The mutation's power coefficient. + var/power_coefficient = 1 + /// The mutation's synchronizer coefficient. + var/synchronizer_coefficient = 1 + +/datum/action/cooldown/spell/touch/lay_on_hands/create_hand(mob/living/carbon/cast_on) + . = ..() + if(!.) + return . + var/obj/item/bodypart/transfer_limb = cast_on.get_active_hand() + if(IS_ROBOTIC_LIMB(transfer_limb)) + to_chat(cast_on, span_notice("You fail to channel your mending powers through your inorganic hand.")) + return FALSE + + return TRUE + +/datum/action/cooldown/spell/touch/lay_on_hands/cast_on_hand_hit(obj/item/melee/touch_attack/hand, atom/victim, mob/living/carbon/mendicant) + + var/mob/living/hurtguy = victim + + heal_multiplier = initial(heal_multiplier) * power_coefficient + pain_multiplier = initial(pain_multiplier) * synchronizer_coefficient + + // Message to show on a succesful heal if the healer has a special pacifism interaction with the mutation. + var/peaceful_message = null + + // Heal more, hurt a bit more. + // If you crunch the numbers it sounds crazy good, + // but I think that's a fair reward for combining the efforts of Genetics, Medbay, and Mining to reach a hidden mechanic. + if(HAS_TRAIT_FROM(mendicant, TRAIT_HIPPOCRATIC_OATH, HIPPOCRATIC_OATH_TRAIT)) + heal_multiplier *= 2 + pain_multiplier *= 0.5 + peaceful_message = span_boldnotice("You can feel the magic of the Rod of Aesculapius aiding your efforts!") + beam_icon = "sendbeam" + var/obj/item/rod_of_asclepius/rod = locate() in mendicant.contents + if(rod) + rod.add_filter("cool_glow", 2, list("type" = "outline", "color" = COLOR_VERY_PALE_LIME_GREEN, "size" = 1.25)) + addtimer(CALLBACK(rod, TYPE_PROC_REF(/datum, remove_filter), "cool_glow"), 6 SECONDS) + + // If a normal pacifist, transfer more. + else if(HAS_TRAIT(mendicant, TRAIT_PACIFISM)) + heal_multiplier *= 1.75 + peaceful_message = span_boldnotice("Your peaceful nature helps you guide all the pain to yourself.") + + var/success + if(iscarbon(hurtguy)) + success = do_complicated_heal(mendicant, hurtguy, heal_multiplier, pain_multiplier) + else + success = do_simple_heal(mendicant, hurtguy, heal_multiplier, pain_multiplier) + + // No healies in the end, cancel + if(!success) + return FALSE + + if(peaceful_message) + to_chat(mendicant, peaceful_message) + + // Both types can be ignited (technically at least), so we can just do this here. + if(hurtguy.fire_stacks > 0) + mendicant.set_fire_stacks(hurtguy.fire_stacks * pain_multiplier, remove_wet_stacks = TRUE) + if(hurtguy.on_fire) + mendicant.ignite_mob() + hurtguy.extinguish_mob() + + mendicant.Beam(hurtguy, icon_state = beam_icon, time = 0.5 SECONDS) + beam_icon = initial(beam_icon) + + hurtguy.update_damage_overlays() + mendicant.update_damage_overlays() + + hurtguy.visible_message(span_notice("[mendicant] lays hands on [hurtguy]!")) + to_chat(hurtguy, span_boldnotice("[mendicant] lays hands on you, healing you!")) + new /obj/effect/temp_visual/heal(get_turf(hurtguy), COLOR_VERY_PALE_LIME_GREEN) + return success + +/datum/action/cooldown/spell/touch/lay_on_hands/proc/do_simple_heal(mob/living/carbon/mendicant, mob/living/hurtguy, heal_multiplier, pain_multiplier) + // Did the transfer work? + . = FALSE + + // Damage to heal + var/brute_to_heal = min(hurtguy.getBruteLoss(), 35 * heal_multiplier) + // no double dipping + var/burn_to_heal = min(hurtguy.getFireLoss(), (35 - brute_to_heal) * heal_multiplier) + + // Get at least organic limb to transfer the damage to + var/list/mendicant_organic_limbs = list() + for(var/obj/item/bodypart/possible_limb in mendicant.bodyparts) + if(IS_ORGANIC_LIMB(possible_limb)) + mendicant_organic_limbs += possible_limb + // None? Gtfo + if(!length(mendicant_organic_limbs)) + mendicant.balloon_alert(mendicant, "no organic limbs!") + return . + + // Try to use our active hand, otherwise pick at random + var/obj/item/bodypart/mendicant_transfer_limb = mendicant.get_active_hand() + if(!(mendicant_transfer_limb in mendicant_organic_limbs)) + mendicant_transfer_limb = pick(mendicant_organic_limbs) + mendicant_transfer_limb.receive_damage(brute_to_heal * pain_multiplier, burn_to_heal * pain_multiplier, forced = TRUE, wound_bonus = CANT_WOUND) + + if(brute_to_heal) + hurtguy.adjustBruteLoss(-brute_to_heal) + . = TRUE + + if(burn_to_heal) + hurtguy.adjustFireLoss(-burn_to_heal) + . = TRUE + + if(!.) + hurtguy.balloon_alert(mendicant, "unhurt!") + +/datum/action/cooldown/spell/touch/lay_on_hands/proc/do_complicated_heal(mob/living/carbon/mendicant, mob/living/carbon/hurtguy, heal_multiplier, pain_multiplier) + + // Did the transfer work? + . = FALSE + // Get the hurtguy's limbs and the mendicant's limbs to attempt a 1-1 transfer. + var/list/hurt_limbs = hurtguy.get_damaged_bodyparts(1, 1, BODYTYPE_ORGANIC) + hurtguy.get_wounded_bodyparts(BODYTYPE_ORGANIC) + var/list/mendicant_organic_limbs = list() + for(var/obj/item/bodypart/possible_limb in mendicant.bodyparts) + if(IS_ORGANIC_LIMB(possible_limb)) + mendicant_organic_limbs += possible_limb + + // If we have no organic available limbs just give up. + if(!length(mendicant_organic_limbs)) + mendicant.balloon_alert(mendicant, "no organic limbs!") + return . + if(!length(hurt_limbs)) + hurtguy.balloon_alert(mendicant, "no damaged organic limbs!") + return . + + // Counter to make sure we don't take too much from separate limbs + var/total_damage_healed = 0 + // Transfer damage from one limb to the mendicant's counterpart. + for(var/obj/item/bodypart/affected_limb as anything in hurt_limbs) + var/obj/item/bodypart/mendicant_transfer_limb = mendicant.get_bodypart(affected_limb.body_zone) + // If the compared limb isn't organic, skip it and pick a random one. + if(!(mendicant_transfer_limb in mendicant_organic_limbs)) + mendicant_transfer_limb = pick(mendicant_organic_limbs) + + // Transfer at most 35 damage, by default. + var/brute_damage = min(affected_limb.brute_dam, 35 * heal_multiplier) + // no double dipping + var/burn_damage = min(affected_limb.burn_dam, (35 * heal_multiplier) - brute_damage) + if((brute_damage || burn_damage) && total_damage_healed < (35 * heal_multiplier)) + total_damage_healed += brute_damage + burn_damage + . = TRUE + var/brute_taken = brute_damage * pain_multiplier + var/burn_taken = burn_damage * pain_multiplier + // Heal! + affected_limb.heal_damage(brute_damage, burn_damage, required_bodytype = BODYTYPE_ORGANIC) + // Hurt! + mendicant_transfer_limb.receive_damage(brute_taken, burn_taken, forced = TRUE, wound_bonus = CANT_WOUND) + + // Force light wounds onto you. + for(var/datum/wound/iter_wound as anything in affected_limb.wounds) + switch(iter_wound.severity) + if(WOUND_SEVERITY_SEVERE) // half and half + if(prob(50 * heal_multiplier)) + continue + if(WOUND_SEVERITY_CRITICAL) + if(heal_multiplier < 1.5) // need buffs to transfer crit wounds + continue + . = TRUE + iter_wound.remove_wound() + iter_wound.apply_wound(mendicant_transfer_limb) + + if(HAS_TRAIT(mendicant, TRAIT_NOBLOOD)) + return . + + // 10% base + var/max_blood_transfer = (BLOOD_VOLUME_NORMAL * 0.10) * heal_multiplier + // Too little blood + if(hurtguy.blood_volume < BLOOD_VOLUME_NORMAL) + var/max_blood_to_hurtguy = min(mendicant.blood_volume, BLOOD_VOLUME_NORMAL - hurtguy.blood_volume) + var/blood_to_hurtguy = min(max_blood_transfer, max_blood_to_hurtguy) + if(!blood_to_hurtguy) + return . + // We ignore incompatibility here. + mendicant.transfer_blood_to(hurtguy, blood_to_hurtguy, forced = TRUE, ignore_incompatibility = TRUE) + to_chat(mendicant, span_notice("Your veins (and brain) feel a bit lighter.")) + . = TRUE + // Because we do our own spin on it! + if(hurtguy.get_blood_compatibility(mendicant) == FALSE) + hurtguy.adjustToxLoss((blood_to_hurtguy * 0.1) * pain_multiplier) // 1 dmg per 10 blood + to_chat(hurtguy, span_notice("Your veins feel thicker, but they itch a bit.")) + else + to_chat(hurtguy, span_notice("Your veins feel thicker!")) + + // Too MUCH blood + if(hurtguy.blood_volume > BLOOD_VOLUME_MAXIMUM) + var/max_blood_to_mendicant = BLOOD_VOLUME_EXCESS - hurtguy.blood_volume + var/blood_to_mendicant = min(max_blood_transfer, max_blood_to_mendicant) + // mender always gonna have blood + + // We ignore incompatibility here. + hurtguy.transfer_blood_to(mendicant, hurtguy.blood_volume - BLOOD_VOLUME_EXCESS, forced = TRUE, ignore_incompatibility = TRUE) + to_chat(hurtguy, span_notice("Your veins don't feel quite so swollen anymore.")) + . = TRUE + // Because we do our own spin on it! + if(mendicant.get_blood_compatibility(hurtguy) == FALSE) + mendicant.adjustToxLoss((blood_to_mendicant * 0.1) * pain_multiplier) // 1 dmg per 10 blood + to_chat(mendicant, span_notice("Your veins swell and itch!")) + else + to_chat(mendicant, span_notice("Your veins swell!")) + +/obj/item/melee/touch_attack/lay_on_hands + name = "mending touch" + desc = "Unlike in your favorite tabletop games, you sadly can't cast this on yourself, so you can't use that as a Scapegoat." // mayus is reference. if you get it youre cool + icon = 'icons/obj/weapons/hand.dmi' + icon_state = "greyscale" + color = COLOR_VERY_PALE_LIME_GREEN + inhand_icon_state = "greyscale" diff --git a/code/datums/mutations/webbing.dm b/code/datums/mutations/webbing.dm index 002687d55be0f..e372cb4bf5cdb 100644 --- a/code/datums/mutations/webbing.dm +++ b/code/datums/mutations/webbing.dm @@ -3,7 +3,7 @@ name = "Webbing Production" desc = "Allows the user to lay webbing, and travel through it." quality = POSITIVE - text_gain_indication = "Your skin feels webby." + text_gain_indication = span_notice("Your skin feels webby.") instability = POSITIVE_INSTABILITY_MODERATE // useful until you're lynched power_path = /datum/action/cooldown/mob_cooldown/lay_web/genetic energy_coeff = 1 diff --git a/code/datums/proximity_monitor/field.dm b/code/datums/proximity_monitor/field.dm index 67bbef948ef3d..03e7c054d0908 100644 --- a/code/datums/proximity_monitor/field.dm +++ b/code/datums/proximity_monitor/field.dm @@ -129,7 +129,7 @@ if(current_range > 0) local_field_turfs += RANGE_TURFS(current_range - 1, center) if(current_range > 1) - local_edge_turfs = local_field_turfs - RANGE_TURFS(current_range, center) + local_edge_turfs = RANGE_TURFS(current_range, center) - local_field_turfs return list(FIELD_TURFS_KEY = local_field_turfs, EDGE_TURFS_KEY = local_edge_turfs) //Gets edge direction/corner, only works with square radius/WDH fields! @@ -169,6 +169,7 @@ name = "strange multitool" desc = "Seems to project a colored field!" var/operating = FALSE + var/range_to_use = 5 var/datum/proximity_monitor/advanced/debug/current = null /obj/item/multitool/field_debug/Destroy() @@ -176,7 +177,7 @@ return ..() /obj/item/multitool/field_debug/proc/setup_debug_field() - current = new(src, 5, FALSE) + current = new(src, range_to_use, FALSE) current.set_fieldturf_color = "#aaffff" current.set_edgeturf_color = "#ffaaff" current.recalculate_field(full_recalc = TRUE) diff --git a/code/datums/proximity_monitor/fields/projectile_dampener.dm b/code/datums/proximity_monitor/fields/projectile_dampener.dm index 3e696e5fb132d..fe23fe0be33e5 100644 --- a/code/datums/proximity_monitor/fields/projectile_dampener.dm +++ b/code/datums/proximity_monitor/fields/projectile_dampener.dm @@ -28,6 +28,10 @@ release_projectile(projectile) return ..() +/datum/proximity_monitor/advanced/projectile_dampener/recalculate_field(full_recalc) + full_recalc = TRUE // We always perform a full recalc because we need to update ALL the sprites + return ..() + /datum/proximity_monitor/advanced/projectile_dampener/process() var/list/ranged = list() for(var/obj/projectile/projectile in range(current_range, get_turf(host))) diff --git a/code/datums/quirks/negative_quirks/addict.dm b/code/datums/quirks/negative_quirks/addict.dm index f97dae32c260f..767d9283baef0 100644 --- a/code/datums/quirks/negative_quirks/addict.dm +++ b/code/datums/quirks/negative_quirks/addict.dm @@ -123,7 +123,7 @@ /obj/effect/spawner/random/entertainment/cigarette_pack, /obj/effect/spawner/random/entertainment/cigar, /obj/effect/spawner/random/entertainment/lighter, - /obj/item/clothing/mask/cigarette/pipe, + /obj/item/cigarette/pipe, ) /datum/quirk_constant_data/smoker @@ -162,7 +162,7 @@ . = ..() var/mob/living/carbon/human/human_holder = quirk_holder var/obj/item/mask_item = human_holder.get_item_by_slot(ITEM_SLOT_MASK) - if(istype(mask_item, /obj/item/clothing/mask/cigarette)) + if(istype(mask_item, /obj/item/cigarette)) var/obj/item/storage/fancy/cigarettes/cigarettes = drug_container_type if(istype(mask_item, initial(cigarettes.spawn_type))) quirk_holder.clear_mood_event("wrong_cigs") diff --git a/code/datums/quirks/negative_quirks/prosthetic_limb.dm b/code/datums/quirks/negative_quirks/prosthetic_limb.dm index eda4217b795d1..f8941975ac15e 100644 --- a/code/datums/quirks/negative_quirks/prosthetic_limb.dm +++ b/code/datums/quirks/negative_quirks/prosthetic_limb.dm @@ -16,9 +16,9 @@ customization_options = list(/datum/preference/choiced/prosthetic) /datum/quirk/prosthetic_limb/add_unique(client/client_source) - var/limb_type = GLOB.limb_choice[client_source?.prefs?.read_preference(/datum/preference/choiced/prosthetic)] + var/limb_type = GLOB.prosthetic_limb_choice[client_source?.prefs?.read_preference(/datum/preference/choiced/prosthetic)] if(isnull(limb_type)) //Client gone or they chose a random prosthetic - limb_type = GLOB.limb_choice[pick(GLOB.limb_choice)] + limb_type = GLOB.prosthetic_limb_choice[pick(GLOB.prosthetic_limb_choice)] var/mob/living/carbon/human/human_holder = quirk_holder var/obj/item/bodypart/surplus = new limb_type() diff --git a/code/datums/quirks/neutral_quirks/transhumanist.dm b/code/datums/quirks/neutral_quirks/transhumanist.dm index a898a2d202046..ea6494a6b327b 100644 --- a/code/datums/quirks/neutral_quirks/transhumanist.dm +++ b/code/datums/quirks/neutral_quirks/transhumanist.dm @@ -110,6 +110,14 @@ if(isnull(part_type)) //Client gone or they chose a random part part_type = GLOB.part_choice_transhuman[pick(GLOB.part_choice_transhuman)] + if(quirk_holder.has_quirk(/datum/quirk/prosthetic_limb)) + var/obj/item/bodypart/shit_limb = GLOB.prosthetic_limb_choice[client_source?.prefs?.read_preference(/datum/preference/choiced/prosthetic)] + var/obj/item/bodypart/part_part = part_type + if(ispath(shit_limb, /obj/item/bodypart) && ispath(part_part, /obj/item/bodypart)) + // dumbass already has a part in the same spot so let's just let the shoddy trait do its thing instead + if(initial(shit_limb.body_zone) == initial(part_part.body_zone)) + return + var/mob/living/carbon/human/human_holder = quirk_holder var/obj/item/new_part = new part_type() if(isbodypart(new_part)) diff --git a/code/datums/ruins/icemoon.dm b/code/datums/ruins/icemoon.dm index 73153792ee647..14909ab0861f5 100644 --- a/code/datums/ruins/icemoon.dm +++ b/code/datums/ruins/icemoon.dm @@ -123,7 +123,7 @@ suffix = "icemoon_underground_hermit.dmm" /datum/map_template/ruin/icemoon/underground/lavaland - name = "Ice-Ruin Lavaland Site" + name = "Ice-Ruin Lavaland Incursion" id = "lavalandsite" description = "I guess we never really left you huh?" suffix = "icemoon_underground_lavaland.dmm" diff --git a/code/datums/shuttles/hunter.dm b/code/datums/shuttles/hunter.dm index d8b7f708324e2..ade978c937e07 100644 --- a/code/datums/shuttles/hunter.dm +++ b/code/datums/shuttles/hunter.dm @@ -17,3 +17,7 @@ /datum/map_template/shuttle/hunter/psyker suffix = "psyker" name = "Psyker Fortune-Telling Ship" + +/datum/map_template/shuttle/hunter/mi13_foodtruck + suffix = "mi13_foodtruck" + name = "Perfectly Ordinary Food Truck" diff --git a/code/datums/shuttles/whiteship.dm b/code/datums/shuttles/whiteship.dm index 0b48575e057c2..b8dbcfd4bd76e 100644 --- a/code/datums/shuttles/whiteship.dm +++ b/code/datums/shuttles/whiteship.dm @@ -24,7 +24,7 @@ /datum/map_template/shuttle/whiteship/birdshot suffix = "birdshot" name = "NT Patrol Bee" - description = "A small patrol vessel with a central corridor connecting all rooms. Features 2 small cargo bays and a brig. Spawns with an agressive and deadly Gelatinous Cube" + description = "A small patrol vessel with a central corridor connecting all rooms. Features 2 small cargo bays and a brig. Spawns with an aggressive and deadly Gelatinous Cube" /datum/map_template/shuttle/whiteship/kilo suffix = "kilo" diff --git a/code/datums/sprite_accessories.dm b/code/datums/sprite_accessories.dm index eca44d08890f7..d8eff00408c43 100644 --- a/code/datums/sprite_accessories.dm +++ b/code/datums/sprite_accessories.dm @@ -26,7 +26,7 @@ /// Determines if the accessory will be skipped or included in random hair generations. var/gender = NEUTER /// Something that can be worn by either gender, but looks different on each. - var/gender_specific + var/gender_specific = FALSE /// Determines if the accessory will be skipped by color preferences. var/use_static /** @@ -46,6 +46,9 @@ var/dimension_y = 32 /// Should this sprite block emissives? var/em_block = FALSE + /// Determines if this is considered "sane" for the purpose of [/proc/randomize_human_normie] + /// Basically this is to blacklist the extremely wacky stuff from being picked in random human generation. + var/natural_spawn = TRUE /datum/sprite_accessory/blank name = "None" @@ -74,11 +77,13 @@ /datum/sprite_accessory/hair/afro_large name = "Afro (Large)" icon_state = "hair_bigafro" + natural_spawn = FALSE /datum/sprite_accessory/hair/afro_huge name = "Afro (Huge)" icon_state = "hair_hugeafro" y_offset = 6 + natural_spawn = FALSE /datum/sprite_accessory/hair/allthefuzz name = "All The Fuzz" @@ -119,6 +124,7 @@ /datum/sprite_accessory/hair/bedheadfloorlength name = "Floorlength Bedhead" icon_state = "hair_floorlength_bedhead" + natural_spawn = FALSE /datum/sprite_accessory/hair/badlycut name = "Shorter Long Bedhead" @@ -359,6 +365,7 @@ /datum/sprite_accessory/hair/bigflattop name = "Flat Top (Big)" icon_state = "hair_bigflattop" + natural_spawn = FALSE /datum/sprite_accessory/hair/flow_hair name = "Flow Hair" @@ -419,6 +426,7 @@ /datum/sprite_accessory/hair/joestar name = "Joestar" icon_state = "hair_joestar" + natural_spawn = FALSE /datum/sprite_accessory/hair/keanu name = "Keanu Hair" @@ -475,22 +483,27 @@ /datum/sprite_accessory/hair/mohawk name = "Mohawk" icon_state = "hair_d" + natural_spawn = FALSE // sorry little one /datum/sprite_accessory/hair/nitori name = "Nitori" icon_state = "hair_nitori" + natural_spawn = FALSE /datum/sprite_accessory/hair/reversemohawk name = "Mohawk (Reverse)" icon_state = "hair_reversemohawk" + natural_spawn = FALSE /datum/sprite_accessory/hair/shavedmohawk name = "Mohawk (Shaved)" icon_state = "hair_shavedmohawk" + natural_spawn = FALSE /datum/sprite_accessory/hair/unshavenmohawk name = "Mohawk (Unshaven)" icon_state = "hair_unshaven_mohawk" + natural_spawn = FALSE /datum/sprite_accessory/hair/mulder name = "Mulder" @@ -499,6 +512,7 @@ /datum/sprite_accessory/hair/odango name = "Odango" icon_state = "hair_odango" + natural_spawn = FALSE /datum/sprite_accessory/hair/ombre name = "Ombre" @@ -531,14 +545,17 @@ /datum/sprite_accessory/hair/kagami name = "Pigtails" icon_state = "hair_kagami" + natural_spawn = FALSE /datum/sprite_accessory/hair/pigtail name = "Pigtails 2" icon_state = "hair_pigtails" + natural_spawn = FALSE /datum/sprite_accessory/hair/pigtail2 name = "Pigtails 3" icon_state = "hair_pigtails2" + natural_spawn = FALSE /datum/sprite_accessory/hair/pixie name = "Pixie Cut" @@ -917,6 +934,7 @@ /datum/sprite_accessory/facial_hair/brokenman name = "Beard (Broken Man)" icon_state = "facial_brokenman" + natural_spawn = FALSE /datum/sprite_accessory/facial_hair/chinstrap name = "Beard (Chinstrap)" @@ -961,6 +979,7 @@ /datum/sprite_accessory/facial_hair/martialartist name = "Beard (Martial Artist)" icon_state = "facial_martialartist" + natural_spawn = FALSE /datum/sprite_accessory/facial_hair/chinlessbeard name = "Beard (Chinless Beard)" @@ -1539,11 +1558,14 @@ icon_state = null // please make sure they're sorted alphabetically and categorized -/* MASSMETA EDIT REMOVAL + +//MASSMETA EDIT REMOVAL BEGIN (gay removal) +/* /datum/sprite_accessory/socks/ace_knee name = "Knee-high (Ace)" icon_state = "ace_knee" */ +//MASSMETA EDIT REMOVAL END /datum/sprite_accessory/socks/bee_knee name = "Knee-high (Bee)" icon_state = "bee_knee" @@ -1559,11 +1581,13 @@ /datum/sprite_accessory/socks/usa_knee name = "Knee-High (Freedom)" icon_state = "assblastusa_knee" -/* MASSMETA EDIT REMOVAL +//MASSMETA EDIT REMOVAL BEGIN (gay removal) +/* /datum/sprite_accessory/socks/rainbow_knee name = "Knee-high (Rainbow)" icon_state = "rainbow_knee" */ +//MASSMETA EDIT REMOVAL END /datum/sprite_accessory/socks/striped_knee name = "Knee-high (Striped)" icon_state = "striped_knee" @@ -1571,11 +1595,13 @@ /datum/sprite_accessory/socks/thin_knee name = "Knee-high (Thin)" icon_state = "thin_knee" -/* MASSMETA EDIT REMOVAL +//MASSMETA EDIT REMOVAL BEGIN (gay removal) +/* /datum/sprite_accessory/socks/trans_knee name = "Knee-high (Trans)" icon_state = "trans_knee" */ +//MASSMETA EDIT REMOVAL END /datum/sprite_accessory/socks/uk_knee name = "Knee-High (UK)" icon_state = "uk_knee" @@ -1643,11 +1669,13 @@ /datum/sprite_accessory/socks/stockings_fishnet name = "Stockings (Fishnet)" icon_state = "fishnet_full" -/* MASSMETA EDIT REMOVAL +//MASSMETA EDIT REMOVAL BEGIN (gay removal) +/* /datum/sprite_accessory/socks/ace_thigh name = "Thigh-high (Ace)" icon_state = "ace_thigh" */ +//MASSMETA EDIT REMOVAL END /datum/sprite_accessory/socks/bee_thigh name = "Thigh-high (Bee)" icon_state = "bee_thigh" @@ -1663,11 +1691,13 @@ /datum/sprite_accessory/socks/usa_thigh name = "Thigh-high (Freedom)" icon_state = "assblastusa_thigh" -/* MASSMETA EDIT REMOVAL +//MASSMETA EDIT REMOVAL BEGIN (gay removal) +/* /datum/sprite_accessory/socks/rainbow_thigh name = "Thigh-high (Rainbow)" icon_state = "rainbow_thigh" */ +//MASSMETA EDIT REMOVAL END /datum/sprite_accessory/socks/striped_thigh name = "Thigh-high (Striped)" icon_state = "striped_thigh" @@ -1675,11 +1705,13 @@ /datum/sprite_accessory/socks/thin_thigh name = "Thigh-high (Thin)" icon_state = "thin_thigh" -/* MASSMETA EDIT REMOVAL +//MASSMETA EDIT REMOVAL BEGIN (gay removal) +/* /datum/sprite_accessory/socks/trans_thigh name = "Thigh-high (Trans)" icon_state = "trans_thigh" */ +//MASSMETA EDIT REMOVAL END /datum/sprite_accessory/socks/uk_thigh name = "Thigh-high (UK)" icon_state = "uk_thigh" diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm index 99ed18f6fc734..1af74533775fa 100644 --- a/code/datums/station_traits/positive_traits.dm +++ b/code/datums/station_traits/positive_traits.dm @@ -63,6 +63,55 @@ /datum/station_trait/bountiful_bounties/on_round_start() SSeconomy.bounty_modifier *= 1.2 +///A positive station trait that scatters a bunch of lit glowsticks throughout maintenance +/datum/station_trait/glowsticks + name = "Glowsticks party" + trait_type = STATION_TRAIT_POSITIVE + weight = 2 + show_in_report = TRUE + report_message = "We've glowsticks upon glowsticks to spare, so we scattered some around maintenance (plus a couple floor lights)." + +/datum/station_trait/glowsticks/New() + ..() + RegisterSignal(SSticker, COMSIG_TICKER_ENTER_PREGAME, PROC_REF(on_pregame)) + +/datum/station_trait/glowsticks/proc/on_pregame(datum/source) + SIGNAL_HANDLER + INVOKE_ASYNC(src, PROC_REF(light_up_the_night)) + +/datum/station_trait/glowsticks/proc/light_up_the_night() + var/list/glowsticks = list( + /obj/item/flashlight/glowstick, + /obj/item/flashlight/glowstick/red, + /obj/item/flashlight/glowstick/blue, + /obj/item/flashlight/glowstick/cyan, + /obj/item/flashlight/glowstick/orange, + /obj/item/flashlight/glowstick/yellow, + /obj/item/flashlight/glowstick/pink, + ) + for(var/area/station/maintenance/maint in GLOB.areas) + var/list/turfs = get_area_turfs(maint) + for(var/i in 1 to round(length(turfs) * 0.115)) + CHECK_TICK + var/turf/open/chosen = pick_n_take(turfs) + if(!istype(chosen)) + continue + var/skip_this = FALSE + for(var/atom/movable/mov as anything in chosen) //stop glowing sticks from spawning on windows + if(mov.density && !(mov.pass_flags_self & LETPASSTHROW)) + skip_this = TRUE + break + if(skip_this) + continue + if(prob(3.4)) ///Rare, but this is something that can survive past the lifespawn of glowsticks. + new /obj/machinery/light/floor(chosen) + continue + var/stick_type = pick(glowsticks) + var/obj/item/flashlight/glowstick/stick = new stick_type(chosen) + ///we want a wider range, otherwise they'd all burn out in about 20 minutes. + stick.max_fuel = stick.fuel = rand(10 MINUTES, 45 MINUTES) + stick.turn_on() + /datum/station_trait/strong_supply_lines name = "Strong supply lines" trait_type = STATION_TRAIT_POSITIVE diff --git a/code/datums/status_effects/agent_pinpointer.dm b/code/datums/status_effects/agent_pinpointer.dm index 29dfbd4338782..c22242be400fd 100644 --- a/code/datums/status_effects/agent_pinpointer.dm +++ b/code/datums/status_effects/agent_pinpointer.dm @@ -43,7 +43,7 @@ if(here.z != there.z) linked_alert.icon_state = "pinonnull" return - if(get_dist_euclidian(here,there) <= minimum_range + rand(0, range_fuzz_factor)) + if(get_dist_euclidean(here,there) <= minimum_range + rand(0, range_fuzz_factor)) linked_alert.icon_state = "pinondirect" return linked_alert.setDir(get_dir(here, there)) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index e8c4be7869707..04ab2ee8f1783 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -277,14 +277,14 @@ ) //Makes the user passive, it's in their oath not to harm! - ADD_TRAIT(owner, TRAIT_PACIFISM, HIPPOCRATIC_OATH_TRAIT) + owner.add_traits(list(TRAIT_PACIFISM, TRAIT_HIPPOCRATIC_OATH), HIPPOCRATIC_OATH_TRAIT) var/datum/atom_hud/med_hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] med_hud.show_to(owner) return ..() /datum/status_effect/hippocratic_oath/on_remove() QDEL_NULL(aura_healing) - REMOVE_TRAIT(owner, TRAIT_PACIFISM, HIPPOCRATIC_OATH_TRAIT) + owner.remove_traits(list(TRAIT_PACIFISM, TRAIT_HIPPOCRATIC_OATH), HIPPOCRATIC_OATH_TRAIT) var/datum/atom_hud/med_hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] med_hud.hide_from(owner) diff --git a/code/datums/status_effects/debuffs/staggered.dm b/code/datums/status_effects/debuffs/staggered.dm index 89cf4943c1980..9db72e1fd06ee 100644 --- a/code/datums/status_effects/debuffs/staggered.dm +++ b/code/datums/status_effects/debuffs/staggered.dm @@ -1,3 +1,7 @@ +/// Staggered, Next Shove Stuns, No Side Kick +/// Status effects related to shoving effects and collisions due to shoving + +/// Staggered can occur most often via shoving, but can also occur in other places too. /datum/status_effect/staggered id = "staggered" tick_interval = 0.5 SECONDS @@ -43,3 +47,88 @@ /mob/living/proc/do_stagger_animation() animate(src, pixel_x = 4, time = 0.2 SECONDS, loop = 6, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL) animate(pixel_x = -4, time = 0.2 SECONDS, flags = ANIMATION_RELATIVE) + +/// Status effect specifically for instances where someone is vulnerable to being stunned when shoved. +/datum/status_effect/next_shove_stuns + id = "next shove stuns" + duration = 3 SECONDS + status_type = STATUS_EFFECT_UNIQUE + tick_interval = 0.5 SECONDS + alert_type = null + remove_on_fullheal = TRUE + /// Our visual cue for the vulnerable state this status effect puts us in. + var/mutable_appearance/vulnverability_overlay + +/datum/status_effect/next_shove_stuns/on_apply() + //Let's just clear this if they're dead or we can't stun them on a shove + if(owner.stat == DEAD || HAS_TRAIT(owner, TRAIT_NO_SIDE_KICK) || HAS_TRAIT(owner, TRAIT_IMMOBILIZED)) + return FALSE + RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(clear_stun_vulnverability_on_death)) + RegisterSignals(owner, list( + COMSIG_LIVING_STATUS_PARALYZE, + COMSIG_LIVING_STATUS_STUN, + COMSIG_LIVING_STATUS_IMMOBILIZE), PROC_REF(clear_stun_vulnverability) + ) + ADD_TRAIT(owner, TRAIT_STUN_ON_NEXT_SHOVE, STATUS_EFFECT_TRAIT) + vulnverability_overlay = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "dazed") + owner.add_overlay(vulnverability_overlay) + return TRUE + +/datum/status_effect/next_shove_stuns/on_remove() + UnregisterSignal(owner, list( + COMSIG_LIVING_STATUS_PARALYZE, + COMSIG_LIVING_STATUS_STUN, + COMSIG_LIVING_STATUS_IMMOBILIZE, + COMSIG_LIVING_DEATH, + )) + REMOVE_TRAIT(owner, TRAIT_STUN_ON_NEXT_SHOVE, STATUS_EFFECT_TRAIT) + if(vulnverability_overlay) + clear_stun_vulnverability_overlay() + +/// If our owner is either stunned, paralzyed or immobilized, we remove the status effect. +/// This is both an anti-chainstun measure and a sanity check. +/datum/status_effect/next_shove_stuns/proc/clear_stun_vulnverability(mob/living/source, amount = 0, ignore_canstun = FALSE) + SIGNAL_HANDLER + + if(amount > 0) + // Making absolutely sure we're removing this overlay + clear_stun_vulnverability_overlay() + qdel(src) + +/datum/status_effect/next_shove_stuns/proc/clear_stun_vulnverability_on_death(mob/living/source) + SIGNAL_HANDLER + + clear_stun_vulnverability_overlay() + qdel(src) + +/// Clears our overlay where needed. +/datum/status_effect/next_shove_stuns/proc/clear_stun_vulnverability_overlay() + owner.cut_overlay(vulnverability_overlay) + vulnverability_overlay = null + +/// Status effect to prevent stuns from a shove +/// Only applied by shoving someone to paralyze them +/datum/status_effect/no_side_kick + id = "no side kick" + duration = 3.5 SECONDS + status_type = STATUS_EFFECT_UNIQUE + tick_interval = 0.5 SECONDS + alert_type = null + remove_on_fullheal = TRUE + +/datum/status_effect/no_side_kick/on_apply() + // Once again, clear if dead + if(owner.stat == DEAD) + return FALSE + RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(clear_on_death)) + ADD_TRAIT(owner, TRAIT_NO_SIDE_KICK, STATUS_EFFECT_TRAIT) + return TRUE + +/datum/status_effect/no_side_kick/on_remove() + UnregisterSignal(owner, list(COMSIG_LIVING_DEATH)) + REMOVE_TRAIT(owner, TRAIT_NO_SIDE_KICK, STATUS_EFFECT_TRAIT) + +/datum/status_effect/no_side_kick/proc/clear_on_death(mob/living/source) + SIGNAL_HANDLER + + qdel(src) diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm index 2a5bd2a98fd7a..8c98d7d56bd16 100644 --- a/code/datums/storage/storage.dm +++ b/code/datums/storage/storage.dm @@ -4,6 +4,7 @@ * The parent and real_location variables are both weakrefs, so they must be resolved before they can be used. * If you're looking to create custom storage type behaviors, check ../subtypes */ + /datum/storage /** * A reference to the atom linked to this storage object @@ -22,10 +23,8 @@ /// List of all the mobs currently viewing the contents of this storage. VAR_PRIVATE/list/mob/is_using = list() - /// The storage display screen object. - VAR_PRIVATE/atom/movable/screen/storage/boxes - /// The 'close button' screen object. - VAR_PRIVATE/atom/movable/screen/close/closer + /// Associated list that keeps track of all storage UI datums per person. + VAR_PRIVATE/list/datum/storage_interface/storage_interfaces = null /// Typecache of items that can be inserted into this storage. /// By default, all item types can be inserted (assuming other conditions are met). @@ -131,9 +130,6 @@ qdel(src) return - boxes = new(null, null, src) - closer = new(null, null, src) - set_parent(parent) set_real_location(parent) @@ -141,22 +137,16 @@ src.max_specific_storage = max_specific_storage src.max_total_storage = max_total_storage - orient_to_hud() - /datum/storage/Destroy() - parent = null - real_location = null for(var/mob/person in is_using) - if(person.active_storage == src) - person.active_storage = null - person.client?.screen -= boxes - person.client?.screen -= closer - - QDEL_NULL(boxes) - QDEL_NULL(closer) + hide_contents(person) is_using.Cut() + QDEL_LIST_ASSOC_VAL(storage_interfaces) + + parent = null + real_location = null return ..() @@ -863,69 +853,6 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) return toreturn -/// Updates the storage UI to fit all objects inside storage. -/datum/storage/proc/orient_to_hud() - var/adjusted_contents = real_location.contents.len - - //Numbered contents display - var/list/datum/numbered_display/numbered_contents - if(numerical_stacking) - numbered_contents = process_numerical_display() - adjusted_contents = numbered_contents.len - //if the ammount of contents reaches some multiplier of the final column (and its not the last slot), let the player view an additional row - var/additional_row = (!(adjusted_contents % screen_max_columns) && adjusted_contents < max_slots) - - var/columns = clamp(max_slots, 1, screen_max_columns) - var/rows = clamp(CEILING(adjusted_contents / columns, 1) + additional_row, 1, screen_max_rows) - - orient_item_boxes(rows, columns, numbered_contents) - -/// Generates the actual UI objects, their location, and alignments whenever we open storage up. -/datum/storage/proc/orient_item_boxes(rows, cols, list/obj/item/numerical_display_contents) - boxes.screen_loc = "[screen_start_x]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y] to [screen_start_x+cols-1]:[screen_pixel_x],[screen_start_y+rows-1]:[screen_pixel_y]" - var/current_x = screen_start_x - var/current_y = screen_start_y - var/turf/our_turf = get_turf(real_location) - - if(islist(numerical_display_contents)) - for(var/type in numerical_display_contents) - var/datum/numbered_display/numberdisplay = numerical_display_contents[type] - - var/obj/item/display_sample = numberdisplay.sample_object - display_sample.mouse_opacity = MOUSE_OPACITY_OPAQUE - display_sample.screen_loc = "[current_x]:[screen_pixel_x],[current_y]:[screen_pixel_y]" - display_sample.maptext = MAPTEXT("[(numberdisplay.number > 1)? "[numberdisplay.number]" : ""]") - SET_PLANE(display_sample, ABOVE_HUD_PLANE, our_turf) - - current_x++ - - if(current_x - screen_start_x >= cols) - current_x = screen_start_x - current_y++ - - if(current_y - screen_start_y >= rows) - break - - else - for(var/obj/item in real_location) - item.mouse_opacity = MOUSE_OPACITY_OPAQUE - item.screen_loc = "[current_x]:[screen_pixel_x],[current_y]:[screen_pixel_y]" - item.maptext = "" - item.plane = ABOVE_HUD_PLANE - SET_PLANE(item, ABOVE_HUD_PLANE, our_turf) - - current_x++ - - if(current_x - screen_start_x >= cols) - current_x = screen_start_x - current_y++ - - if(current_y - screen_start_y >= rows) - break - - closer.screen_loc = "[screen_start_x + cols]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y]" - - /// Signal handler for when we get attacked with secondary click by an item. /datum/storage/proc/on_item_interact_secondary(datum/source, mob/user, atom/weapon) SIGNAL_HANDLER @@ -954,8 +881,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) if(!click_alt_open) return - return open_storage_on_signal(source, user) - + return open_storage_on_signal(source, user) ? CLICK_ACTION_SUCCESS : NONE /// Opens the storage to the mob, showing them the contents to their UI. /datum/storage/proc/open_storage(mob/to_show) @@ -963,11 +889,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) show_contents(to_show) return FALSE - if(!to_show.CanReach(parent)) - parent.balloon_alert(to_show, "can't reach!") - return FALSE - - if(!isliving(to_show) || to_show.incapacitated()) + if(!isliving(to_show) || !to_show.can_perform_action(parent, ALLOW_RESTING | FORBID_TELEKINESIS_REACH)) return FALSE if(locked) @@ -1004,10 +926,10 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) /// Async version of putting something into a mobs hand. -/datum/storage/proc/put_in_hands_async(mob/toshow, obj/item/toremove) - if(!toshow.put_in_hands(toremove)) +/datum/storage/proc/put_in_hands_async(mob/to_show, obj/item/toremove) + if(!to_show.put_in_hands(toremove)) if(!silent) - toremove.balloon_alert(toshow, "fumbled!") + toremove.balloon_alert(to_show, "fumbled!") return TRUE /// Signal handler for whenever a mob walks away with us, close if they can't reach us. @@ -1042,48 +964,55 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) * Show our storage to a mob. * * Arguments - * * mob/toshow - the mob to show the storage to + * * mob/to_show - the mob to show the storage to * * Returns * * FALSE if the show failed * * TRUE otherwise */ -/datum/storage/proc/show_contents(mob/toshow) - if(!toshow.client) +/datum/storage/proc/show_contents(mob/to_show) + if(!to_show.client) return FALSE // You can only inspect hidden contents if you're an observer - if(!isobserver(toshow) && !display_contents) + if(!isobserver(to_show) && !display_contents) return FALSE - if(toshow.active_storage != src && (toshow.stat == CONSCIOUS)) + if(to_show.active_storage != src && (to_show.stat == CONSCIOUS)) for(var/obj/item/thing in real_location) - if(thing.on_found(toshow)) - toshow.active_storage.hide_contents(toshow) + if(thing.on_found(to_show)) + to_show.active_storage.hide_contents(to_show) - if(toshow.active_storage) - toshow.active_storage.hide_contents(toshow) + if(to_show.active_storage) + to_show.active_storage.hide_contents(to_show) - toshow.active_storage = src + to_show.active_storage = src if(ismovable(real_location)) var/atom/movable/movable_loc = real_location movable_loc.become_active_storage(src) - orient_to_hud() + LAZYINITLIST(storage_interfaces) + + var/ui_style = ui_style2icon(to_show.client?.prefs?.read_preference(/datum/preference/choiced/ui_style)) + + if (isnull(storage_interfaces[to_show])) + storage_interfaces[to_show] = new /datum/storage_interface(ui_style, src) + + orient_storage() - is_using |= toshow + is_using |= to_show + + to_show.client.screen |= storage_interfaces[to_show].list_ui_elements() + to_show.client.screen |= real_location.contents - toshow.client.screen |= boxes - toshow.client.screen |= closer - toshow.client.screen |= real_location.contents return TRUE /** * Hide our storage from a mob. * * Arguments - * * mob/toshow - the mob to hide the storage from + * * mob/to_hide - the mob to hide the storage from */ /datum/storage/proc/hide_contents(mob/to_hide) if(!to_hide.client) @@ -1095,13 +1024,19 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) var/atom/movable/movable_loc = real_location movable_loc.lose_active_storage(src) + if (isnull(storage_interfaces[to_hide])) + return TRUE + is_using -= to_hide - to_hide.client.screen -= boxes - to_hide.client.screen -= closer + to_hide.client.screen -= storage_interfaces[to_hide].list_ui_elements() to_hide.client.screen -= real_location.contents + QDEL_NULL(storage_interfaces[to_hide]) + storage_interfaces -= to_hide + return TRUE + /datum/storage/proc/action_trigger(datum/source, datum/action/triggered) SIGNAL_HANDLER @@ -1112,10 +1047,54 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) modeswitch_action = null +/// Updates views of all objects in storage and stretches UI to appropriate size +/datum/storage/proc/orient_storage() + var/adjusted_contents = length(real_location.contents) + var/list/datum/numbered_display/numbered_contents + if(numerical_stacking) + numbered_contents = process_numerical_display() + adjusted_contents = length(numbered_contents) + + //if the ammount of contents reaches some multiplier of the final column (and its not the last slot), let the player view an additional row + var/additional_row = (!(adjusted_contents % screen_max_columns) && adjusted_contents < max_slots) + + var/columns = clamp(max_slots, 1, screen_max_columns) + var/rows = clamp(CEILING(adjusted_contents / columns, 1) + additional_row, 1, screen_max_rows) + + for (var/ui_user in storage_interfaces) + storage_interfaces[ui_user].update_position(screen_start_x, screen_pixel_x, screen_start_y, screen_pixel_y, columns, rows) + + var/current_x = screen_start_x + var/current_y = screen_start_y + var/turf/our_turf = get_turf(real_location) + + var/list/obj/storage_contents = list() + if (islist(numbered_contents)) + for(var/content_type in numbered_contents) + var/datum/numbered_display/numberdisplay = numbered_contents[content_type] + storage_contents[numberdisplay.sample_object] = MAPTEXT("[(numberdisplay.number > 1)? "[numberdisplay.number]" : ""]") + else + for(var/obj/item as anything in real_location) + storage_contents[item] = "" + + for(var/obj/item as anything in storage_contents) + item.mouse_opacity = MOUSE_OPACITY_OPAQUE + item.screen_loc = "[current_x]:[screen_pixel_x],[current_y]:[screen_pixel_y]" + item.maptext = storage_contents[item] + SET_PLANE(item, ABOVE_HUD_PLANE, our_turf) + current_x++ + if(current_x - screen_start_x < columns) + continue + current_x = screen_start_x + + current_y++ + if(current_y - screen_start_y >= rows) + break + /** * Toggles the collectmode of our storage. * - * @param mob/toshow the mob toggling us + * @param mob/to_show the mob toggling us */ /datum/storage/proc/toggle_collection_mode(mob/user) collection_mode = (collection_mode + 1) % 3 diff --git a/code/datums/storage/storage_interface.dm b/code/datums/storage/storage_interface.dm new file mode 100644 index 0000000000000..cd28b9eb3f7a1 --- /dev/null +++ b/code/datums/storage/storage_interface.dm @@ -0,0 +1,68 @@ +/// Datum tracker for storage UI +/datum/storage_interface + /// UI elements for this theme + var/atom/movable/screen/close/closer + var/atom/movable/screen/storage/cells + var/atom/movable/screen/storage/corner/corner_top_left + var/atom/movable/screen/storage/corner/top_right/corner_top_right + var/atom/movable/screen/storage/corner/bottom_left/corner_bottom_left + var/atom/movable/screen/storage/corner/bottom_right/corner_bottom_right + var/atom/movable/screen/storage/rowjoin/rowjoin_left + var/atom/movable/screen/storage/rowjoin/right/rowjoin_right + + /// Storage that owns us + var/datum/storage/parent_storage + +/datum/storage_interface/New(ui_style, parent_storage) + ..() + src.parent_storage = parent_storage + closer = new(null, null, parent_storage) + cells = new(null, null, parent_storage) + corner_top_left = new(null, null, parent_storage) + corner_top_right = new(null, null, parent_storage) + corner_bottom_left = new(null, null, parent_storage) + corner_bottom_right = new(null, null, parent_storage) + rowjoin_left = new(null, null, parent_storage) + rowjoin_right = new(null, null, parent_storage) + for (var/atom/movable/screen/ui_elem as anything in list_ui_elements()) + ui_elem.icon = ui_style + +/// Returns all UI elements under this theme +/datum/storage_interface/proc/list_ui_elements() + return list(cells, corner_top_left, corner_top_right, corner_bottom_left, corner_bottom_right, rowjoin_left, rowjoin_right, closer) + +/datum/storage_interface/Destroy(force) + QDEL_NULL(cells) + QDEL_NULL(corner_top_left) + QDEL_NULL(corner_top_right) + QDEL_NULL(corner_bottom_left) + QDEL_NULL(corner_bottom_right) + QDEL_NULL(rowjoin_left) + QDEL_NULL(rowjoin_right) + parent_storage = null + return ..() + +/// Updates position of all UI elements +/datum/storage_interface/proc/update_position(screen_start_x, screen_pixel_x, screen_start_y, screen_pixel_y, columns, rows) + var/start_pixel_x = screen_start_x * 32 + screen_pixel_x + var/start_pixel_y = screen_start_y * 32 + screen_pixel_y + var/end_pixel_x = start_pixel_x + (columns - 1) * 32 + var/end_pixel_y = start_pixel_y + (rows - 1) * 32 + + cells.screen_loc = spanning_screen_loc(start_pixel_x, start_pixel_y, end_pixel_x, end_pixel_y) + var/left_edge_loc = spanning_screen_loc(min(start_pixel_x + 32, end_pixel_x), start_pixel_y, end_pixel_x, end_pixel_y) + var/right_edge_loc = spanning_screen_loc(start_pixel_x, start_pixel_y, max(start_pixel_x, end_pixel_x - 32), end_pixel_y) + corner_top_left.screen_loc = left_edge_loc + corner_bottom_left.screen_loc = left_edge_loc + corner_top_right.screen_loc = right_edge_loc + corner_bottom_right.screen_loc = right_edge_loc + + var/row_left_loc = spanning_screen_loc(start_pixel_x, start_pixel_y + 27, start_pixel_x, start_pixel_y + 27 + max(0, rows - 2) * 32) + rowjoin_left.screen_loc = row_left_loc + rowjoin_left.alpha = (rows > 1) * 255 + + var/row_right_loc = spanning_screen_loc(end_pixel_x, start_pixel_y + 27, end_pixel_x, start_pixel_y + 27 + max(0, rows - 2) * 32) + rowjoin_right.screen_loc = row_right_loc + rowjoin_right.alpha = (rows > 1) * 255 + + closer.screen_loc = "[screen_start_x + columns]:[screen_pixel_x - 5],[screen_start_y]:[screen_pixel_y]" diff --git a/code/datums/storage/subtypes/pockets.dm b/code/datums/storage/subtypes/pockets.dm index d441c6fdc5ff6..edf3816c274ee 100644 --- a/code/datums/storage/subtypes/pockets.dm +++ b/code/datums/storage/subtypes/pockets.dm @@ -108,7 +108,7 @@ /obj/item/ammo_box/magazine/toy/pistol, /obj/item/ammo_casing, /obj/item/lipstick, - /obj/item/clothing/mask/cigarette, + /obj/item/cigarette, /obj/item/lighter, /obj/item/match, /obj/item/holochip, @@ -116,7 +116,7 @@ /obj/item/reagent_containers/cup/glass/flask), list(/obj/item/screwdriver/power, /obj/item/ammo_casing/rocket, - /obj/item/clothing/mask/cigarette/pipe, + /obj/item/cigarette/pipe, /obj/item/toy/crayon/spraycan) ) @@ -134,7 +134,7 @@ /obj/item/ammo_box/magazine/m9mm, /obj/item/ammo_casing, /obj/item/bikehorn, - /obj/item/clothing/mask/cigarette, + /obj/item/cigarette, /obj/item/dnainjector, /obj/item/firing_pin, /obj/item/holochip, @@ -158,7 +158,7 @@ ), cant_hold_list = list( /obj/item/ammo_casing/rocket, - /obj/item/clothing/mask/cigarette/pipe, + /obj/item/cigarette/pipe, /obj/item/screwdriver/power, /obj/item/toy/crayon/spraycan, ), diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index ca9cff19c73a8..16ffb326f8a86 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -56,7 +56,7 @@ /// The list of z-levels that this weather is actively affecting var/impacted_z_levels - /// Since it's above everything else, this is the layer used by default. TURF_LAYER is below mobs and walls if you need to use that. + /// Since it's above everything else, this is the layer used by default. var/overlay_layer = AREA_LAYER /// Plane for the overlay var/overlay_plane = AREA_PLANE diff --git a/code/datums/wires/mecha.dm b/code/datums/wires/mecha.dm index b6e20c8161f45..4e11eda65f7f6 100644 --- a/code/datums/wires/mecha.dm +++ b/code/datums/wires/mecha.dm @@ -3,7 +3,7 @@ proper_name = "Mecha Control" /datum/wires/mecha/New(atom/holder) - wires = list(WIRE_IDSCAN, WIRE_DISARM, WIRE_ZAP, WIRE_OVERCLOCK) + wires = list(WIRE_IDSCAN, WIRE_DISARM, WIRE_ZAP, WIRE_OVERCLOCK, WIRE_LAUNCH) var/obj/vehicle/sealed/mecha/mecha = holder if(mecha.mecha_flags & HAS_LIGHTS) wires += WIRE_LIGHT @@ -27,7 +27,7 @@ status += "The blue light is [mecha.equipment_disabled ? "on" : "off"]." return status -/datum/wires/mecha/on_pulse(wire) +/datum/wires/mecha/on_pulse(wire, user) var/obj/vehicle/sealed/mecha/mecha = holder switch(wire) if(WIRE_IDSCAN) @@ -42,6 +42,8 @@ mecha.set_light_on(!mecha.light_on) if(WIRE_OVERCLOCK) mecha.toggle_overclock() + if(WIRE_LAUNCH) + try_attack(user) /datum/wires/mecha/on_cut(wire, mend, source) var/obj/vehicle/sealed/mecha/mecha = holder @@ -58,11 +60,40 @@ mecha.internal_damage &= ~MECHA_INT_SHORT_CIRCUIT else mecha.internal_damage |= MECHA_INT_SHORT_CIRCUIT + if(isliving(source)) + mecha.shock(source, 50) if(WIRE_LIGHT) mecha.set_light_on(!mend) if(WIRE_OVERCLOCK) if(!mend) mecha.toggle_overclock(FALSE) + if(WIRE_LAUNCH) + if(!mend) + try_attack(source) + +/datum/wires/mecha/proc/try_attack(mob/living/target) + var/obj/vehicle/sealed/mecha/mecha = holder + if(mecha.occupant_amount()) //no powergamers sorry + return + var/list/obj/item/mecha_parts/mecha_equipment/armaments = list() + if(!isnull(mecha.equip_by_category[MECHA_R_ARM])) + armaments += mecha.equip_by_category[MECHA_R_ARM] + if(!isnull(mecha.equip_by_category[MECHA_L_ARM])) + armaments += mecha.equip_by_category[MECHA_L_ARM] + var/obj/item/mecha_parts/mecha_equipment/armament = length(armaments) ? pick(armaments) : null //null makes a melee attack + if(isnull(target)) + target = locate() in view(length(armaments) ? 5 : 1, mecha) + if(isnull(target)) // still no target + return + + var/disabled = mecha.equipment_disabled + if(!isnull(armament) && armament.range & MECHA_RANGED) + mecha.equipment_disabled = FALSE // honestly just avoid this wire + INVOKE_ASYNC(armament, TYPE_PROC_REF(/obj/item/mecha_parts/mecha_equipment, action), mecha, target) + mecha.equipment_disabled = disabled + return + if(mecha.Adjacent(target) && !TIMER_COOLDOWN_RUNNING(mecha, COOLDOWN_MECHA_MELEE_ATTACK) && target.mech_melee_attack(mecha)) + TIMER_COOLDOWN_START(mecha, COOLDOWN_MECHA_MELEE_ATTACK, mecha.melee_cooldown) /datum/wires/mecha/ui_act(action, params) . = ..() diff --git a/code/datums/wounds/cranial_fissure.dm b/code/datums/wounds/cranial_fissure.dm index 9bd9969f428cd..0b7c00dee7e32 100644 --- a/code/datums/wounds/cranial_fissure.dm +++ b/code/datums/wounds/cranial_fissure.dm @@ -12,10 +12,16 @@ viable_zones = list(BODY_ZONE_HEAD) /datum/wound_pregen_data/cranial_fissure/get_weight(obj/item/bodypart/limb, woundtype, damage, attack_direction, damage_source) - if (limb.owner?.stat < HARD_CRIT) - return 0 + if (isnull(limb.owner)) + return ..() - return ..() + if (HAS_TRAIT(limb.owner, TRAIT_CURSED) && (limb.get_mangled_state() & BODYPART_MANGLED_INTERIOR)) + return ..() + + if (limb.owner.stat >= HARD_CRIT) + return ..() + + return 0 /// A wound applied when receiving significant enough damage to the head. /// Will allow other players to take your eyes out of your head, and slipping diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 347dfc480b95f..0c6847e7db348 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -540,26 +540,9 @@ GLOBAL_LIST_EMPTY(teleportlocs) for(var/atom/movable/recipient as anything in arrived.important_recursive_contents[RECURSIVE_CONTENTS_AREA_SENSITIVE]) SEND_SIGNAL(recipient, COMSIG_ENTER_AREA, src) - if(!isliving(arrived)) - return - - var/mob/living/L = arrived - if(!L.ckey) - return - - if(ambient_buzz != old_area.ambient_buzz) - L.refresh_looping_ambience() - -///Tries to play looping ambience to the mobs. -/mob/proc/refresh_looping_ambience() - var/area/my_area = get_area(src) - - if(!(client?.prefs.read_preference(/datum/preference/toggle/sound_ship_ambience)) || !my_area.ambient_buzz) - SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = CHANNEL_BUZZ)) - return - - SEND_SOUND(src, sound(my_area.ambient_buzz, repeat = 1, wait = 0, volume = my_area.ambient_buzz_vol, channel = CHANNEL_BUZZ)) - + if(ismob(arrived)) + var/mob/mob = arrived + mob.update_ambience_area(src) /** * Called when an atom exits an area @@ -584,6 +567,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) beauty = 0 return FALSE //Too big beauty = totalbeauty / areasize + SEND_SIGNAL(src, COMSIG_AREA_BEAUTY_UPDATED) /** * Setup an area (with the given name) diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index e27d330ae250e..504efe0742ad1 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -73,6 +73,11 @@ name = "Russian Cargo Hauler" requires_power = TRUE +/area/shuttle/hunter/mi13_foodtruck + name = "Perfectly Ordinary Food Truck" + requires_power = TRUE + ambience_index = AMBIENCE_DANGER + ////////////////////////////White Ship//////////////////////////// /area/shuttle/abandoned diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm index 9eaec1b48378e..4a398a635a73c 100644 --- a/code/game/atom/_atom.dm +++ b/code/game/atom/_atom.dm @@ -5,7 +5,7 @@ * as much as possible to the components/elements system */ /atom - layer = TURF_LAYER + layer = ABOVE_NORMAL_TURF_LAYER plane = GAME_PLANE appearance_flags = TILE_BOUND|LONG_GLIDE diff --git a/code/game/atom/atom_tool_acts.dm b/code/game/atom/atom_tool_acts.dm index bacdae83b1316..10bed5a407760 100644 --- a/code/game/atom/atom_tool_acts.dm +++ b/code/game/atom/atom_tool_acts.dm @@ -9,6 +9,11 @@ SHOULD_CALL_PARENT(TRUE) PROTECTED_PROC(TRUE) + if(!user.combat_mode) + var/tool_return = tool_act(user, tool, modifiers) + if(tool_return) + return tool_return + var/is_right_clicking = LAZYACCESS(modifiers, RIGHT_CLICK) var/is_left_clicking = !is_right_clicking var/early_sig_return = NONE @@ -45,10 +50,36 @@ if(interact_return) return interact_return + return NONE + +/** + * + * ## Tool Act + * + * Handles using specific tools on this atom directly. + * Only called when combat mode is off. + * + * Handles the tool_acts in particular, such as wrenches and screwdrivers. + * + * This can be overriden to handle unique "tool interactions" + * IE using an item like a tool (when it's not actually one) + * This is particularly useful for things that shouldn't be inserted into storage + * (because tool acting runs before storage checks) + * but otherwise does nothing that [item_interaction] doesn't already do. + * + * In other words, use sparingly. It's harder to use (correctly) than [item_interaction]. + */ +/atom/proc/tool_act(mob/living/user, obj/item/tool, list/modifiers) + SHOULD_CALL_PARENT(TRUE) + PROTECTED_PROC(TRUE) + var/tool_type = tool.tool_behaviour - if(!tool_type) // here on only deals with ... tools + if(!tool_type) return NONE + var/is_right_clicking = LAZYACCESS(modifiers, RIGHT_CLICK) + var/is_left_clicking = !is_right_clicking + var/list/processing_recipes = list() var/signal_result = is_left_clicking \ ? SEND_SIGNAL(src, COMSIG_ATOM_TOOL_ACT(tool_type), user, tool, processing_recipes) \ @@ -57,6 +88,7 @@ return signal_result if(length(processing_recipes)) process_recipes(user, tool, processing_recipes) + return ITEM_INTERACT_SUCCESS if(QDELETED(tool)) return ITEM_INTERACT_SUCCESS // Safe-ish to assume that if we deleted our item something succeeded @@ -244,14 +276,6 @@ /atom/proc/multitool_act_secondary(mob/living/user, obj/item/tool) return -///Check if an item supports a data buffer (is a multitool) -/atom/proc/multitool_check_buffer(user, obj/item/multitool, silent = FALSE) - if(!istype(multitool, /obj/item/multitool)) - if(user && !silent) - to_chat(user, span_warning("[multitool] has no data buffer!")) - return FALSE - return TRUE - /// Called on an object when a tool with screwdriver capabilities is used to left click an object /atom/proc/screwdriver_act(mob/living/user, obj/item/tool) return @@ -291,3 +315,23 @@ /// Called on an object when a tool with analyzer capabilities is used to right click an object /atom/proc/analyzer_act_secondary(mob/living/user, obj/item/tool) return + +/** + * Called before this item is placed into a storage container + * via the item clicking on the target atom + * + * Returning FALSE will prevent the item from being stored. + */ +/obj/item/proc/storage_insert_on_interaction(datum/storage, atom/storage_holder, mob/user) + return TRUE + +/** + * Called before an item is put into this atom's storage datum via the item clicking on this atom + * + * This can be used to add item-atom interactions that you want handled before inserting something into storage + * (But it's also fairly snowflakey) + * + * Returning FALSE will block that item from being put into our storage. + */ +/atom/proc/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) + return TRUE diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index a8ae65ef24cd4..45257841c462d 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -831,10 +831,13 @@ return //Just delete us, no need to call anything else. on_deconstruction(disassembled) + + if(circuit) + spawn_frame(disassembled) + if(!LAZYLEN(component_parts)) dump_contents() //drop everything inside us return //we don't have any parts. - spawn_frame(disassembled) for(var/part in component_parts) if(istype(part, /datum/stock_part)) diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 117577e66eb83..08cd5bdc61a11 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/devices/tool.dmi' icon_state = "ai-slipper0" base_icon_state = "ai-slipper" - layer = PROJECTILE_HIT_THRESHHOLD_LAYER + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE max_integrity = 200 armor_type = /datum/armor/machinery_ai_slipper diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index c1baa172dbfd3..d1025b52b321f 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -29,8 +29,11 @@ var/datum/component/material_container/materials ///direction we output onto (if 0, on top of us) var/drop_direction = 0 + //looping sound for printing items + var/datum/looping_sound/lathe_print/print_sound /obj/machinery/autolathe/Initialize(mapload) + print_sound = new(src, FALSE) materials = AddComponent( \ /datum/component/material_container, \ SSmaterials.materials_by_category[MAT_CATEGORY_ITEM_MATERIAL], \ @@ -48,6 +51,7 @@ register_context() /obj/machinery/autolathe/Destroy() + QDEL_NULL(print_sound) materials = null QDEL_NULL(wires) return ..() @@ -125,7 +129,6 @@ ui = new(user, src, "Autolathe") ui.open() - /** * Converts all the designs supported by this autolathe into UI data * Arguments @@ -187,7 +190,6 @@ return data - /obj/machinery/autolathe/ui_assets(mob/user) return list( get_asset_datum(/datum/asset/spritesheet/sheetmaterials), @@ -292,6 +294,8 @@ busy = TRUE icon_state = "autolathe_n" SStgui.update_uis(src) + // play this after all checks passed individually for each item. + print_sound.start() var/turf/target_location if(drop_direction) target_location = get_step(src, drop_direction) @@ -389,7 +393,7 @@ */ /obj/machinery/autolathe/proc/finalize_build() PROTECTED_PROC(TRUE) - + print_sound.stop() icon_state = initial(icon_state) busy = FALSE SStgui.update_uis(src) diff --git a/code/game/machinery/botlaunchpad.dm b/code/game/machinery/botlaunchpad.dm index c8004af84ba86..fecca2a25489f 100644 --- a/code/game/machinery/botlaunchpad.dm +++ b/code/game/machinery/botlaunchpad.dm @@ -21,17 +21,14 @@ /obj/machinery/botpad/crowbar_act(mob/user, obj/item/tool) return default_deconstruction_crowbar(tool) -/obj/machinery/botpad/multitool_act(mob/living/user, obj/item/tool) +/obj/machinery/botpad/multitool_act(mob/living/user, obj/item/multitool/tool) if(!panel_open) - return - if(!multitool_check_buffer(user, tool)) - return + return NONE var/obj/item/multitool/multitool = tool multitool.set_buffer(src) balloon_alert(user, "saved to multitool buffer") return ITEM_INTERACT_SUCCESS - // Checks the turf for a bot and launches it if it's the only mob on the pad. /obj/machinery/botpad/proc/launch(mob/living/user) var/turf/reverse_turf = get_turf(user) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 2b5cfa14c7c28..97bf368d3e25e 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -205,3 +205,6 @@ . = ..() if(active_apc) disconnect_apc() + +/obj/machinery/computer/apc_control/away + req_access = list(ACCESS_AWAY_ENGINEERING) diff --git a/code/game/machinery/computer/arcade/battle.dm b/code/game/machinery/computer/arcade/battle.dm index b97dac9e15dad..9733759b5caf4 100644 --- a/code/game/machinery/computer/arcade/battle.dm +++ b/code/game/machinery/computer/arcade/battle.dm @@ -505,7 +505,7 @@ return TRUE if(BATTLE_ARCADE_PLAYER_HEAVY_ATTACK) if(player_current_mp < SPELL_MP_COST) - say("You don't have enough MP to counterattack!") + say("You don't have enough MP to heavy attack!") player_turn = TRUE return TRUE player_current_mp -= SPELL_MP_COST diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index 54ff5e0f31369..7c6d1307b76b1 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -58,20 +58,16 @@ to_chat(user, span_warning("You are too primitive to use this computer!")) return -/obj/machinery/computer/launchpad/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_MULTITOOL) - if(!multitool_check_buffer(user, W)) - return - var/obj/item/multitool/M = W - if(M.buffer && istype(M.buffer, /obj/machinery/launchpad)) - if(LAZYLEN(launchpads) < maximum_pads) - launchpads |= M.buffer - M.set_buffer(null) - to_chat(user, span_notice("You upload the data from the [W.name]'s buffer.")) - else - to_chat(user, span_warning("[src] cannot handle any more connections!")) - else - return ..() +/obj/machinery/computer/launchpad/multitool_act(mob/living/user, obj/item/multitool/tool) + . = NONE + if(!istype(tool.buffer, /obj/machinery/launchpad)) + return + + if(LAZYLEN(launchpads) < maximum_pads) + launchpads |= tool.buffer + tool.set_buffer(null) + to_chat(user, span_notice("You upload the data from the [tool] buffer.")) + return ITEM_INTERACT_SUCCESS /obj/machinery/computer/launchpad/proc/pad_exists(number) var/obj/machinery/launchpad/pad = launchpads[number] diff --git a/code/game/machinery/computer/mechlaunchpad.dm b/code/game/machinery/computer/mechlaunchpad.dm index 7b80b6e95c8d6..46c0045fb3568 100644 --- a/code/game/machinery/computer/mechlaunchpad.dm +++ b/code/game/machinery/computer/mechlaunchpad.dm @@ -86,28 +86,32 @@ continue return found_mechpad -/obj/machinery/computer/mechpad/multitool_act(mob/living/user, obj/item/tool) - if(!multitool_check_buffer(user, tool)) +/obj/machinery/computer/mechpad/multitool_act(mob/living/user, obj/item/multitool/multitool) + . = NONE + if(!istype(multitool.buffer, /obj/machinery/mechpad)) return - var/obj/item/multitool/multitool = tool - if(istype(multitool.buffer, /obj/machinery/mechpad)) - var/obj/machinery/mechpad/buffered_pad = multitool.buffer - if(!(mechpads.len < maximum_pads)) - to_chat(user, span_warning("[src] cannot handle any more connections!")) - return TRUE - if(buffered_pad == connected_mechpad) - to_chat(user, span_warning("[src] cannot connect to its own mechpad!")) - else if(!connected_mechpad && buffered_pad == find_pad()) - if(buffered_pad in mechpads) - remove_pad(buffered_pad) - connect_launchpad(buffered_pad) - multitool.set_buffer(null) - to_chat(user, span_notice("You connect the console to the pad with data from the [multitool.name]'s buffer.")) - else - add_pad(buffered_pad) - multitool.set_buffer(null) - to_chat(user, span_notice("You upload the data from the [multitool.name]'s buffer.")) - return TRUE + + var/obj/machinery/mechpad/buffered_pad = multitool.buffer + if(!(mechpads.len < maximum_pads)) + to_chat(user, span_warning("[src] cannot handle any more connections!")) + return ITEM_INTERACT_SUCCESS + + if(buffered_pad == connected_mechpad) + to_chat(user, span_warning("[src] cannot connect to its own mechpad!")) + return ITEM_INTERACT_BLOCKING + + if(!connected_mechpad && buffered_pad == find_pad()) + if(buffered_pad in mechpads) + remove_pad(buffered_pad) + connect_launchpad(buffered_pad) + multitool.set_buffer(null) + to_chat(user, span_notice("You connect the console to the pad with data from the [multitool.name]'s buffer.")) + return ITEM_INTERACT_SUCCESS + + add_pad(buffered_pad) + multitool.set_buffer(null) + to_chat(user, span_notice("You upload the data from the [multitool.name]'s buffer.")) + return ITEM_INTERACT_SUCCESS /obj/machinery/computer/mechpad/proc/add_pad(obj/machinery/mechpad/pad) mechpads += pad diff --git a/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm b/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm index de2f3d82275b2..c8cfa12f9abfe 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm @@ -31,11 +31,11 @@ cost_per_order = 100 /datum/orderable_item/consumables/havana_cigars - item_path = /obj/item/clothing/mask/cigarette/cigar/havana + item_path = /obj/item/cigarette/cigar/havana cost_per_order = 150 /datum/orderable_item/consumables/havana_cigars - item_path = /obj/item/clothing/mask/cigarette/cigar/havana + item_path = /obj/item/cigarette/cigar/havana cost_per_order = 150 /datum/orderable_item/consumables/tracking_implants diff --git a/code/game/machinery/computer/telescreen.dm b/code/game/machinery/computer/telescreen.dm index 2c17e1e088a6b..c421ca0c90308 100644 --- a/code/game/machinery/computer/telescreen.dm +++ b/code/game/machinery/computer/telescreen.dm @@ -148,6 +148,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai ) frame_type = /obj/item/wallframe/telescreen/rd +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/rd, 32) + /obj/item/wallframe/telescreen/rd name = "\improper Research Director's telescreen frame" result_path = /obj/machinery/computer/security/telescreen/rd @@ -162,6 +164,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "research telescreen frame" result_path = /obj/machinery/computer/security/telescreen/research +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/research, 32) + /obj/machinery/computer/security/telescreen/ce name = "\improper Chief Engineer's telescreen" desc = "Used for watching the engine, telecommunications and the minisat." @@ -172,6 +176,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "\improper Chief Engineer's telescreen frame" result_path = /obj/machinery/computer/security/telescreen/ce +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/ce, 32) + /obj/machinery/computer/security/telescreen/cmo name = "\improper Chief Medical Officer's telescreen" desc = "A telescreen with access to the medbay's camera network." @@ -182,6 +188,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "\improper Chief Engineer'stelescreen frame" result_path = /obj/machinery/computer/security/telescreen/cmo +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/cmo, 32) + /obj/machinery/computer/security/telescreen/vault name = "vault monitor" desc = "A telescreen that connects to the vault's camera network." @@ -192,6 +200,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "vault telescreen frame" result_path = /obj/machinery/computer/security/telescreen/vault +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/vault, 32) + /obj/machinery/computer/security/telescreen/ordnance name = "bomb test site monitor" desc = "A telescreen that connects to the bomb test site's camera." @@ -202,6 +212,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "bomb test site telescreen frame" result_path = /obj/machinery/computer/security/telescreen/ordnance +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/ordnance, 32) + /obj/machinery/computer/security/telescreen/engine name = "engine monitor" desc = "A telescreen that connects to the engine's camera network." @@ -212,6 +224,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "engine telescreen frame" result_path = /obj/machinery/computer/security/telescreen/engine +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/engine, 32) + /obj/machinery/computer/security/telescreen/turbine name = "turbine monitor" desc = "A telescreen that connects to the turbine's camera." @@ -222,6 +236,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "turbine telescreen frame" result_path = /obj/machinery/computer/security/telescreen/turbine +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/turbine, 32) + /obj/machinery/computer/security/telescreen/interrogation name = "interrogation room monitor" desc = "A telescreen that connects to the interrogation room's camera." @@ -232,6 +248,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "interrogation telescreen frame" result_path = /obj/machinery/computer/security/telescreen/interrogation +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/interrogation, 32) + /obj/machinery/computer/security/telescreen/prison name = "prison monitor" desc = "A telescreen that connects to the permabrig's camera network." @@ -242,6 +260,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "prison telescreen frame" result_path = /obj/machinery/computer/security/telescreen/prison +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/prison, 32) + /obj/machinery/computer/security/telescreen/auxbase name = "auxiliary base monitor" desc = "A telescreen that connects to the auxiliary base's camera." @@ -252,6 +272,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "auxiliary base telescreen frame" result_path = /obj/machinery/computer/security/telescreen/auxbase +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/auxbase, 32) + /obj/machinery/computer/security/telescreen/minisat name = "minisat monitor" desc = "A telescreen that connects to the minisat's camera network." @@ -262,6 +284,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "minisat telescreen frame" result_path = /obj/machinery/computer/security/telescreen/minisat +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/minisat, 32) + /obj/machinery/computer/security/telescreen/aiupload name = "\improper AI upload monitor" desc = "A telescreen that connects to the AI upload's camera network." @@ -272,6 +296,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "\improper AI upload telescreen frame" result_path = /obj/machinery/computer/security/telescreen/aiupload +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/aiupload, 32) + /obj/machinery/computer/security/telescreen/bar name = "bar monitor" desc = "A telescreen that connects to the bar's camera network. Perfect for checking on customers." @@ -282,6 +308,129 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai name = "bar telescreen frame" result_path = /obj/machinery/computer/security/telescreen/bar +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/bar, 32) + +/obj/machinery/computer/security/telescreen/isolation + name = "isolation cell monitor" + desc = "A telescreen that connects to the isolation cells camera network." + network = list(CAMERANET_NETWORK_ISOLATION) + frame_type = /obj/item/wallframe/telescreen/bar + +/obj/item/wallframe/telescreen/isolation + name = "isolation telescreen frame" + result_path = /obj/machinery/computer/security/telescreen/isolation + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/isolation, 32) + +/obj/machinery/computer/security/telescreen/normal + name = "security camera monitor" + desc = "A telescreen that connects to the stations camera network." + network = list(CAMERANET_NETWORK_SS13) + frame_type = /obj/item/wallframe/telescreen/normal + +/obj/item/wallframe/telescreen/normal + name = "security camera telescreen frame" + result_path = /obj/machinery/computer/security/telescreen/normal + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/normal, 32) + +/obj/machinery/computer/security/telescreen/tcomms + name = "tcomms camera monitor" + desc = "A telescreen that connects to the tcomms camera network." + network = list(CAMERANET_NETWORK_TELECOMMS) + frame_type = /obj/item/wallframe/telescreen/tcomms + +/obj/item/wallframe/telescreen/tcomms + name = "tcomms camera telescreen frame" + result_path = /obj/machinery/computer/security/telescreen/tcomms + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/tcomms, 32) + +/obj/machinery/computer/security/telescreen/test_chamber + name = "xenobiology test chamber camera monitor" + desc = "A telescreen that connects to the xenobiology test chamber camera network." + network = list(CAMERANET_NETWORK_XENOBIOLOGY) + frame_type = /obj/item/wallframe/telescreen/test_chamber + +/obj/item/wallframe/telescreen/test_chamber + name = "xenobiology test chamber camera telescreen frame" + result_path = /obj/machinery/computer/security/telescreen/test_chamber + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/test_chamber, 32) + +/obj/machinery/computer/security/telescreen/engine_waste + name = "\improper Engine Waste Monitor" + desc = "A telescreen that connects to the engine waste camera network." + network = list(CAMERANET_NETWORK_WASTE) + frame_type = /obj/item/wallframe/telescreen/engine_waste + +/obj/item/wallframe/telescreen/engine_waste + name = "\improper Engine Waste telescreen frame" + result_path = /obj/machinery/computer/security/telescreen/engine_waste + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/engine_waste, 32) + +/obj/machinery/computer/security/telescreen/cargo_sec + name = "cargo camera monitor" + desc = "A telescreen that connects to the cargo and main station camera network." + network = list(CAMERANET_NETWORK_SS13, + CAMERA_NETWORK_CARGO, + ) + frame_type = /obj/item/wallframe/telescreen/cargo_sec + +/obj/item/wallframe/telescreen/cargo_sec + name = "cargo telescreen frame" + result_path = /obj/machinery/computer/security/telescreen/cargo_sec + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/cargo_sec, 32) + +// This is used in moonoutpost19.dmm +/obj/machinery/computer/security/telescreen/moon_outpost + +/obj/machinery/computer/security/telescreen/moon_outpost/research + name = "research monitor" + desc = "Used for monitoring the research division and the labs within." + network = list(CAMERANET_NETWORK_MOON19_RESEARCH, + CAMERANET_NETWORK_MOON19_XENO, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/moon_outpost/research, 32) + +/obj/machinery/computer/security/telescreen/moon_outpost/xenobio + name = "xenobiology monitor" + desc = "Used for watching the contents of the xenobiology containment pen." + network = list(CAMERANET_NETWORK_MOON19_XENO) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/moon_outpost/xenobio, 32) + +// This is used in undergroundoutpost45.dmm +/obj/machinery/computer/security/telescreen/underground_outpost + +/obj/machinery/computer/security/telescreen/underground_outpost/research + name = "research monitor" + desc = "Used for monitoring the research division and the labs within." + network = list(CAMERANET_NETWORK_UGO45_RESEARCH) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/underground_outpost/research, 32) + +// This is used in forgottenship.dmm +/obj/machinery/computer/security/telescreen/forgotten_ship + +/obj/machinery/computer/security/telescreen/forgotten_ship/sci + name = "Cameras monitor" + network = list(CAMERANET_NETWORK_FSCI) + req_access = list("syndicate") + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/forgotten_ship/sci, 32) + +// This is used in deepstorage.dmm +/obj/machinery/computer/security/telescreen/deep_storage + +/obj/machinery/computer/security/telescreen/deep_storage/bunker + name = "Bunker Entrance monitor" + network = list(CAMERA_NETWORK_BUNKER) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/deep_storage/bunker, 32) /// A button that adds a camera network to the entertainment monitors /obj/machinery/button/showtime diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 37310e2aceb49..67f069c062c4c 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -611,7 +611,9 @@ . = ..() if(closeOtherId) . += span_warning("This airlock cycles on ID: [sanitize(closeOtherId)].") - else if(!closeOtherId) + else if(cyclelinkedairlock) + . += span_warning("This airlock cycles with: [cyclelinkedairlock.name].") + else . += span_warning("This airlock does not cycle.") if(obj_flags & EMAGGED) . += span_warning("Its access panel is smoking slightly.") diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 34a161acac1b3..26dc09204a70c 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -173,21 +173,21 @@ * * seconds - Return the time in seconds if TRUE, else deciseconds. */ /obj/machinery/status_display/door_timer/proc/time_left(seconds = FALSE) - . = max(0, timer_duration + activation_time - world.time) + . = max(0, timer_duration + (activation_time ? activation_time - world.time : 0)) if(seconds) . /= (1 SECONDS) /** * Set the timer. Does NOT automatically start counting down, but does update the display. * - * returns TRUE if no change occurred + * returns FALSE if no change occurred * * Arguments: * value - time in deciseconds to set the timer for. */ /obj/machinery/status_display/door_timer/proc/set_timer(value) - var/new_time = clamp(value, 0, MAX_TIMER + world.time - activation_time) - . = new_time == timer_duration //return 1 on no change + var/new_time = clamp(value, 0, MAX_TIMER) + . = new_time != timer_duration //return 1 on change timer_duration = new_time update_content() diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index c69c865f6d122..828177f90a81b 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -19,12 +19,16 @@ interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_REQUIRES_SILICON | INTERACT_MACHINE_OPEN set_dir_on_move = FALSE opens_with_door_remote = TRUE + /// Reference to the airlock electronics inside for determining window access. var/obj/item/electronics/airlock/electronics = null + /// If the door is considered reinforced. If TRUE, the door will resist twice as much heat (1600 deg C vs 800 deg C). var/reinf = 0 + /// On deconstruction, how many shards to drop. var/shards = 2 + /// On deconstruction, how many rods to drop. var/rods = 2 + /// On deconstruction, how much cable to drop. var/cable = 1 - var/list/debris = list() /datum/armor/door_window melee = 20 @@ -111,9 +115,9 @@ return autoclose = TRUE if(check_access(null)) - sleep(5 SECONDS) + sleep(8 SECONDS) else //secure doors close faster - sleep(2 SECONDS) + sleep(5 SECONDS) if(!density && autoclose) //did someone change state while we slept? close() @@ -317,6 +321,13 @@ /obj/machinery/door/window/narsie_act() add_atom_colour(NARSIE_WINDOW_COLOUR, FIXED_COLOUR_PRIORITY) +/obj/machinery/door/window/rust_heretic_act() + add_atom_colour(COLOR_RUSTED_GLASS, FIXED_COLOUR_PRIORITY) + AddElement(/datum/element/rust) + set_armor(/datum/armor/none) + take_damage(get_integrity() * 0.5) + modify_max_integrity(max_integrity * 0.5) + /obj/machinery/door/window/should_atmos_process(datum/gas_mixture/air, exposed_temperature) return (exposed_temperature > T0C + (reinf ? 1600 : 800)) @@ -342,6 +353,10 @@ . = ..() if(obj_flags & EMAGGED) . += span_warning("Its access panel is smoking slightly.") + if(!density) + if(panel_open) + . += span_notice("The [span_boldnotice("airlock electronics")] could be [span_boldnotice("levered")] out.") + /obj/machinery/door/window/screwdriver_act(mob/living/user, obj/item/tool) . = ..() diff --git a/code/game/machinery/flatpacker.dm b/code/game/machinery/flatpacker.dm index 03382dce8d81e..182db1edc08d9 100644 --- a/code/game/machinery/flatpacker.dm +++ b/code/game/machinery/flatpacker.dm @@ -1,4 +1,6 @@ +///Incremets an an value assosiated by an key in the list creating that value if nessassary #define CREATE_AND_INCREMENT(L, I, increment) if(!(I in L)) { L[I] = 0; } L[I] += increment; + /obj/machinery/flatpacker name = "flatpacker" desc = "It produces items using iron, glass, plastic and maybe some more." @@ -27,6 +29,8 @@ var/flatpack_time = 4.5 SECONDS /obj/machinery/flatpacker/Initialize(mapload) + register_context() + materials = AddComponent( \ /datum/component/material_container, \ SSmaterials.materials_by_category[MAT_CATEGORY_SILO], \ @@ -34,10 +38,64 @@ MATCONTAINER_EXAMINE, \ container_signals = list(COMSIG_MATCONTAINER_ITEM_CONSUMED = TYPE_PROC_REF(/obj/machinery/flatpacker, AfterMaterialInsert)) \ ) + return ..() +/obj/machinery/flatpacker/Destroy() + materials = null + QDEL_NULL(inserted_board) + . = ..() + +/obj/machinery/flatpacker/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = NONE + if(!QDELETED(inserted_board)) + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Eject board" + . = CONTEXTUAL_SCREENTIP_SET + + if(!isnull(held_item)) + if(istype(held_item, /obj/item/circuitboard/machine)) + context[SCREENTIP_CONTEXT_LMB] = "Insert board" + return CONTEXTUAL_SCREENTIP_SET + else if(held_item.tool_behaviour == TOOL_SCREWDRIVER) + context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] panel" + return CONTEXTUAL_SCREENTIP_SET + else if(held_item.tool_behaviour == TOOL_CROWBAR && panel_open) + context[SCREENTIP_CONTEXT_LMB] = "Deconstruct" + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/flatpacker/examine(mob/user) + . += ..() + if(!in_range(user, src) && !isobserver(user)) + return + + . += span_notice("The status display reads:") + . += span_notice("Capable of packing up to Tier [max_part_tier].") + . += span_notice("Storing up to [materials.max_amount] material units.") + . += span_notice("Material consumption at [creation_efficiency * 100]%") + + . += span_notice("Its maintainence panel can be [EXAMINE_HINT("screwed")] [panel_open ? "close" : "open"]") + if(panel_open) + . += span_notice("It can be [EXAMINE_HINT("pried")] apart") + if(!QDELETED(inserted_board)) + . += span_notice("The board can be ejected via [EXAMINE_HINT("Ctrl Click")]") + +/obj/machinery/flatpacker/update_overlays() + . = ..() + + if(!QDELETED(inserted_board)) + . += mutable_appearance(icon, "[base_icon_state]_c") + +/obj/machinery/flatpacker/Exited(atom/movable/gone, direction) + . = ..() + if(gone == inserted_board) + inserted_board = null + needed_mats.Cut() + print_tier = 1 + update_appearance(UPDATE_OVERLAYS) + /obj/machinery/flatpacker/RefreshParts() . = ..() + var/mat_capacity = 0 for(var/datum/stock_part/matter_bin/new_matter_bin in component_parts) mat_capacity += new_matter_bin.tier * 25 * SHEET_MATERIAL_AMOUNT @@ -51,220 +109,250 @@ efficiency -= laser.tier * 0.2 creation_efficiency = max(1.2, efficiency) -/obj/machinery/flatpacker/examine(mob/user) - . += ..() - if(in_range(user, src) || isobserver(user)) - . += span_notice("The status display reads:") - . += span_notice("Capable of packing up to Tier [max_part_tier].") - . += span_notice("Storing up to [materials.max_amount] material units.") - . += span_notice("Material consumption at [creation_efficiency*100]%") - /obj/machinery/flatpacker/proc/AfterMaterialInsert(container, obj/item/item_inserted, last_inserted_id, mats_consumed, amount_inserted, atom/context) SIGNAL_HANDLER - flick_overlay_view("[base_icon_state]_[item_inserted.has_material_type(/datum/material/glass) ? "glass" : "metal"]", 1.4 SECONDS) + //we use initial(active_power_usage) because higher tier parts will have higher active usage but we have no benifit from it + if(directly_use_energy(ROUND_UP((amount_inserted / (MAX_STACK_SIZE * SHEET_MATERIAL_AMOUNT)) * 0.4 * initial(active_power_usage)))) + flick_overlay_view(mutable_appearance('icons/obj/machines/lathes.dmi', "flatpacker_bar"), 1 SECONDS) - directly_use_energy(min(active_power_usage * 0.25, amount_inserted / 100)) + var/datum/material/highest_mat_ref + var/highest_mat = 0 + for(var/datum/material/mat as anything in mats_consumed) + var/present_mat = mats_consumed[mat] + if(present_mat > highest_mat) + highest_mat = present_mat + highest_mat_ref = mat -/obj/machinery/flatpacker/update_overlays() - . = ..() + flick_overlay_view(material_insertion_animation(highest_mat_ref.greyscale_colors), 1 SECONDS) - if(!isnull(inserted_board)) - . += mutable_appearance(icon, "[base_icon_state]_c") - -/obj/machinery/flatpacker/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "Flatpacker") - ui.open() +/** + * Attempts to find the total material cost of a typepath (including our creation efficiency), modifying a list + * The list is modified as an assoc list: Material datum typepath = Cost + * If the type is found on a techweb, uses material costs from there + * Otherwise, the typepath is created in nullspace and fetches materials from the initialized one, then deleted. + * + * Args: + * part_type - Typepath of the item we are trying to find the costs of + * costs - Assoc list we modify and return + */ +/obj/machinery/flatpacker/proc/analyze_cost(part_type, costs) + PRIVATE_PROC(TRUE) -/obj/machinery/flatpacker/ui_static_data(mob/user) - return materials.ui_static_data() + var/comp_type = part_type + if(ispath(part_type, /datum/stock_part)) + var/datum/stock_part/as_part = part_type + comp_type = initial(as_part.physical_object_type) + if(as_part.tier > print_tier) + print_tier = as_part.tier -/obj/machinery/flatpacker/ui_data(mob/user) - var/list/data = list() - - var/atom/build = initial(inserted_board.build_path) - data["materials"] = materials.ui_data() - data["boardInserted"] = !isnull(inserted_board) - data["busy"] = busy - var/list/cost_mats = list() - for(var/datum/material/mat_type as anything in needed_mats) - var/list/new_entry = list() - new_entry["name"] = initial(mat_type.name) - new_entry["amount"] = needed_mats[mat_type] - cost_mats += list(new_entry) + var/list/mat_list + var/obj/item/null_comp + if(!isnull(SSresearch.item_to_design[comp_type])) + mat_list = SSresearch.item_to_design[comp_type][1].materials + else + var/datum/stock_part/part = GLOB.stock_part_datums_per_object[comp_type] + if(part) + mat_list = part.physical_object_reference.custom_materials + else + null_comp = new comp_type + mat_list = null_comp.custom_materials - var/list/design - if(data["boardInserted"]) - var/disableReason = "" - var/has_materials = materials.has_materials(needed_mats, creation_efficiency) - if(!has_materials) - disableReason += "Not enough materials. " - if(print_tier > max_part_tier) - disableReason += "This design is too advanced for this machine. " - design = list( - "name" = initial(build.name), - "requiredMaterials" = cost_mats, - "icon" = icon2base64(icon(initial(build.icon), initial(build.icon_state), frame = 1)), - "canPrint" = has_materials && print_tier <= max_part_tier, - "disableReason" = disableReason - ) - data["design"] = design - return data + for(var/atom/mat as anything in mat_list) + CREATE_AND_INCREMENT(costs, mat.type, mat_list[mat] * inserted_board.req_components[part_type]) -/obj/machinery/flatpacker/ui_assets(mob/user) - return list( - get_asset_datum(/datum/asset/spritesheet/sheetmaterials), - get_asset_datum(/datum/asset/spritesheet/research_designs), - ) + if(null_comp) + qdel(null_comp) + return costs /obj/machinery/flatpacker/item_interaction(mob/living/user, obj/item/attacking_item, params) + . = NONE + if(user.combat_mode || attacking_item.flags_1 & HOLOGRAM_1 || attacking_item.item_flags & ABSTRACT) + return ITEM_INTERACT_SKIP_TO_ATTACK + if(istype(attacking_item, /obj/item/circuitboard/machine)) if(busy) balloon_alert(user, "busy!") return ITEM_INTERACT_BLOCKING if (!user.transferItemToLoc(attacking_item, src)) return ITEM_INTERACT_BLOCKING + // If insertion was successful and there's already a diskette in the console, eject the old one. if(inserted_board) inserted_board.forceMove(drop_location()) - inserted_board = attacking_item - // 5 sheets of iron and 5 of cable coil - needed_mats = list() + + //compute the needed mats from its stock parts for(var/type as anything in inserted_board.req_components) needed_mats = analyze_cost(type, needed_mats) + // 5 sheets of iron and 5 of cable coil CREATE_AND_INCREMENT(needed_mats, /datum/material/iron, (SHEET_MATERIAL_AMOUNT * 5 + (SHEET_MATERIAL_AMOUNT / 20))) CREATE_AND_INCREMENT(needed_mats, /datum/material/glass, (SHEET_MATERIAL_AMOUNT / 20)) - update_appearance() + update_appearance(UPDATE_OVERLAYS) return ITEM_INTERACT_SUCCESS - return NONE +/obj/machinery/flatpacker/screwdriver_act(mob/living/user, obj/item/tool) + . = ITEM_INTERACT_BLOCKING + if(default_deconstruction_screwdriver(user, "[base_icon_state]_o", base_icon_state, tool)) + return ITEM_INTERACT_SUCCESS -/** - * Attempts to find the total material cost of a typepath (including our creation efficiency), modifying a list - * The list is modified as an assoc list: Material datum typepath = Cost - * If the type is found on a techweb, uses material costs from there - * Otherwise, the typepath is created in nullspace and fetches materials from the initialized one, then deleted. - * - * Args: - * type - Typepath of the item we are trying to find the costs of - * costs - Assoc list we modify and return - */ -/obj/machinery/flatpacker/proc/analyze_cost(type, costs) - var/comp_type = type - if(ispath(type, /datum/stock_part)) - var/datum/stock_part/as_part = type - comp_type = initial(as_part.physical_object_type) - if(as_part.tier > print_tier) - print_tier = as_part.tier +/obj/machinery/flatpacker/crowbar_act(mob/living/user, obj/item/tool) + . = ITEM_INTERACT_BLOCKING + if(default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS - var/by_techweb = !isnull(SSresearch.item_to_design[comp_type]) - var/obj/item/null_comp = by_techweb ? null : new comp_type - var/list/mat_list = by_techweb ? SSresearch.item_to_design[comp_type][1].materials : null_comp.custom_materials - for(var/atom/mat as anything in mat_list) - var/mat_type = mat.type +/obj/machinery/flatpacker/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Flatpacker") + ui.open() - CREATE_AND_INCREMENT(costs, mat_type, mat_list[mat] * inserted_board.req_components[type]) +/obj/machinery/flatpacker/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/sheetmaterials), + get_asset_datum(/datum/asset/spritesheet/research_designs), + ) - qdel(null_comp) - return costs +/obj/machinery/flatpacker/ui_static_data(mob/user) + return materials.ui_static_data() -/// Start building the currently inserted board, if possible -/obj/machinery/flatpacker/proc/start_build() - . = FALSE - if(!inserted_board) - return - if(!materials.has_materials(needed_mats, creation_efficiency)) - say("Not enough materials to begin production.") - return - if(print_tier > max_part_tier) - say("Design too complex.") - return - materials.use_materials(needed_mats, creation_efficiency) - playsound(src, 'sound/items/rped.ogg', 50, TRUE) - busy = TRUE +/obj/machinery/flatpacker/ui_data(mob/user) + . = list() - addtimer(CALLBACK(src, PROC_REF(finish_build), inserted_board), flatpack_time) - return TRUE + .["materials"] = materials.ui_data() + .["busy"] = busy -/// turns the supplied board into a flatpack, and sets the machine as not busy -/obj/machinery/flatpacker/proc/finish_build(board) - busy = FALSE - new /obj/item/flatpack(drop_location(), board) + var/list/design + if(!QDELETED(inserted_board)) + var/list/cost_mats = list() + for(var/datum/material/mat_type as anything in needed_mats) + var/list/new_entry = list() + new_entry["name"] = initial(mat_type.name) + new_entry["amount"] = OPTIMAL_COST(needed_mats[mat_type] * creation_efficiency) + cost_mats += list(new_entry) -/obj/machinery/flatpacker/Exited(atom/movable/gone, direction) - . = ..() - if(gone == inserted_board) - inserted_board = null - needed_mats = null - print_tier = 1 - update_appearance() + var/atom/build = initial(inserted_board.build_path) -/obj/machinery/flatpacker/ui_act(action, list/params) - . = ..() + var/disableReason = "" + var/has_materials = materials.has_materials(needed_mats, creation_efficiency) + if(!has_materials) + disableReason += "Not enough materials. " + if(print_tier > max_part_tier) + disableReason += "This design is too advanced for this machine. " + design = list( + "name" = initial(build.name), + "requiredMaterials" = cost_mats, + "icon" = icon2base64(icon(initial(build.icon), initial(build.icon_state), frame = 1)), + "canPrint" = has_materials && print_tier <= max_part_tier, + "disableReason" = disableReason + ) + .["design"] = design +/obj/machinery/flatpacker/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() if(.) return - switch(action) if("build") if(busy) - return FALSE - start_build() + return + + if(QDELETED(inserted_board)) + return + if(print_tier > max_part_tier) + say("Design too complex.") + return + if(!materials.has_materials(needed_mats, creation_efficiency)) + say("Not enough materials to begin production.") + return + playsound(src, 'sound/items/rped.ogg', 50, TRUE) + + busy = TRUE + flick_overlay_view(mutable_appearance('icons/obj/machines/lathes.dmi', "flatpacker_bar"), flatpack_time) + addtimer(CALLBACK(src, PROC_REF(finish_build), inserted_board), flatpack_time) return TRUE if("ejectBoard") - inserted_board.forceMove(drop_location()) + try_put_in_hand(inserted_board, ui.user) return TRUE if("eject") - var/datum/material/ejecting = locate(params["ref"]) - var/amount = text2num(params["amount"]) - if(!isnum(amount) || !istype(ejecting)) - return FALSE + var/datum/material/material = locate(params["ref"]) + if(!istype(material)) + return - materials.retrieve_sheets(amount, ejecting, drop_location()) + var/amount = params["amount"] + if(isnull(amount)) + return + + amount = text2num(amount) + if(isnull(amount)) + return + + //we use initial(active_power_usage) because higher tier parts will have higher active usage but we have no benifit from it + if(!directly_use_energy(ROUND_UP((amount / MAX_STACK_SIZE) * 0.4 * initial(active_power_usage)))) + say("No power to dispense sheets") + return + + materials.retrieve_sheets(amount, material) return TRUE -/obj/machinery/flatpacker/screwdriver_act(mob/living/user, obj/item/tool) - . = ITEM_INTERACT_BLOCKING - if(default_deconstruction_screwdriver(user, icon_state, icon_state, tool)) - return ITEM_INTERACT_SUCCESS +/** + * Turns the supplied board into a flatpack, and sets the machine as not busy + * Arguments + * + * * board - the board to put inside the flatpack + */ +/obj/machinery/flatpacker/proc/finish_build(board) + PRIVATE_PROC(TRUE) -/obj/machinery/flatpacker/Destroy() - QDEL_NULL(inserted_board) - . = ..() + busy = FALSE + + materials.use_materials(needed_mats, creation_efficiency) + new /obj/item/flatpack(drop_location(), board) + + SStgui.update_uis(src) + +/obj/machinery/flatpacker/click_ctrl(mob/user) + if(QDELETED(inserted_board) || busy) + return CLICK_ACTION_BLOCKING + + try_put_in_hand(inserted_board, user) + + return CLICK_ACTION_SUCCESS + +#undef CREATE_AND_INCREMENT /obj/item/flatpack name = "flatpack" desc = "A box containing a compactly packed machine. Use multitool to deploy." icon = 'icons/obj/devices/circuitry_n_data.dmi' icon_state = "flatpack" + density = TRUE w_class = WEIGHT_CLASS_HUGE //cart time throw_range = 2 item_flags = SLOWS_WHILE_IN_HAND | IMMUTABLE_SLOW slowdown = 2.5 drag_slowdown = 3.5 //use the cart stupid + /// The board we deploy var/obj/item/circuitboard/machine/board /obj/item/flatpack/Initialize(mapload, obj/item/circuitboard/machine/new_board) + if(isnull(board) && isnull(new_board)) + return INITIALIZE_HINT_QDEL //how + . = ..() - var/static/list/tool_behaviors - if(!tool_behaviors) - tool_behaviors = string_assoc_nested_list(list( + + var/static/list/tool_behaviors = list( TOOL_MULTITOOL = list( SCREENTIP_CONTEXT_LMB = "Deploy", ), - )) + ) AddElement(/datum/element/contextual_screentip_tools, tool_behaviors) - if(isnull(board) && isnull(new_board)) - return INITIALIZE_HINT_QDEL //how board = !isnull(new_board) ? new_board : new board(src) // i got board if(board.loc != src) @@ -272,34 +360,55 @@ var/obj/machinery/build = initial(board.build_path) name += " ([initial(build.name)])" - /obj/item/flatpack/Destroy() QDEL_NULL(board) . = ..() +/obj/item/flatpack/examine(mob/user) + . = ..() + if(!in_range(user, src) && !isobserver(user)) + return + + if(loc == user) + . += span_warning("You can't deploy while holding it in your hand.") + else if(isturf(loc)) + var/turf/location = loc + if(!isopenturf(location)) + . += span_warning("Can't deploy in this location") + else if(location.is_blocked_turf(source_atom = src)) + . += span_warning("No space for deployment") + /obj/item/flatpack/multitool_act(mob/living/user, obj/item/tool) . = NONE + if(isnull(board)) return ITEM_INTERACT_BLOCKING - if(!isopenturf(loc)) - user.balloon_alert(user, "cant deploy here!") + if(loc == user) + balloon_alert(user, "can't deploy in hand") return ITEM_INTERACT_BLOCKING + else if(isturf(loc)) + var/turf/location = loc + if(!isopenturf(location)) + balloon_alert(user, "can't deploy here") + return ITEM_INTERACT_BLOCKING + else if(location.is_blocked_turf(source_atom = src)) + balloon_alert(user, "no space for deployment") + return ITEM_INTERACT_BLOCKING balloon_alert_to_viewers("deploying!") if(!do_after(user, 1 SECONDS, target = src)) return ITEM_INTERACT_BLOCKING + new /obj/effect/temp_visual/mook_dust(loc) var/obj/machinery/new_machine = new board.build_path(loc) loc.visible_message(span_warning("[src] deploys!")) playsound(src, 'sound/machines/terminal_eject.ogg', 70, TRUE) - new_machine.RefreshParts() new_machine.on_construction(user) - - for(var/mob/living/victim in loc) - step(victim, pick(GLOB.cardinals)) - qdel(src) return ITEM_INTERACT_SUCCESS +///Maximum number of flatpacks in a cart +#define MAX_FLAT_PACKS 3 + /obj/structure/flatpack_cart name = "flatpack cart" desc = "A cart specifically made to hold flatpacks from a flatpacker, evenly distributing weight. Convenient!" @@ -307,20 +416,32 @@ icon_state = "flatcart" density = TRUE opacity = FALSE - /// max flatpacks - var/max_flatpacks = 3 /obj/structure/flatpack_cart/Initialize(mapload) . = ..() + + register_context() + AddElement(/datum/element/noisy_movement, volume = 45) // i hate noise -/obj/structure/flatpack_cart/atom_destruction(damage_flag) +/obj/structure/flatpack_cart/atom_deconstruct(disassembled) for(var/atom/movable/content as anything in contents) content.forceMove(drop_location()) - return ..() + +/obj/structure/flatpack_cart/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = NONE + if(isnull(held_item)) + return + + if(istype(held_item, /obj/item/flatpack)) + context[SCREENTIP_CONTEXT_LMB] = "Load pack" + return CONTEXTUAL_SCREENTIP_SET /obj/structure/flatpack_cart/examine(mob/user) . = ..() + if(!in_range(user, src) && !isobserver(user)) + return + . += "From bottom to top, this cart contains:" for(var/obj/item/flatpack as anything in contents) . += flatpack.name @@ -343,9 +464,10 @@ update_appearance(UPDATE_OVERLAYS) /obj/structure/flatpack_cart/item_interaction(mob/living/user, obj/item/attacking_item, params) - if(!istype(attacking_item, /obj/item/flatpack)) - return NONE - if (length(contents) >= max_flatpacks) + if(!istype(attacking_item, /obj/item/flatpack) || user.combat_mode || attacking_item.flags_1 & HOLOGRAM_1 || attacking_item.item_flags & ABSTRACT) + return ITEM_INTERACT_SKIP_TO_ATTACK + + if (length(contents) >= MAX_FLAT_PACKS) balloon_alert(user, "full!") return ITEM_INTERACT_BLOCKING if (!user.transferItemToLoc(attacking_item, src)) @@ -353,4 +475,4 @@ update_appearance(UPDATE_OVERLAYS) return ITEM_INTERACT_SUCCESS -#undef CREATE_AND_INCREMENT +#undef MAX_FLAT_PACKS diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 172607451bda7..cbb7eede250b9 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -39,9 +39,9 @@ Possible to do for anyone motivated enough: icon = 'icons/obj/machines/floor.dmi' icon_state = "holopad0" base_icon_state = "holopad" - layer = LOW_OBJ_LAYER /// The plane is set such that it shows up without being covered by pipes/wires in a map editor, we change this on initialize. - plane = GAME_PLANE + layer = MAP_SWITCH(ABOVE_OPEN_TURF_LAYER, LOW_OBJ_LAYER) + plane = MAP_SWITCH(FLOOR_PLANE, GAME_PLANE) req_access = list(ACCESS_KEYCARD_AUTH) //Used to allow for forced connecting to other (not secure) holopads. Anyone can make a call, though. max_integrity = 300 armor_type = /datum/armor/machinery_holopad @@ -101,9 +101,6 @@ Possible to do for anyone motivated enough: /obj/machinery/holopad/Initialize(mapload) . = ..() - /// We set the plane on mapload such that we can see the holopad render over atmospherics pipe and cabling in a map editor (without initialization), but so it gets that "inset" look in the floor in-game. - SET_PLANE_IMPLICIT(src, FLOOR_PLANE) - update_appearance() var/static/list/hovering_mob_typechecks = list( /mob/living/silicon = list( diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 9ad6bcac58dc0..3fa7d25767f2f 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/machines/floor.dmi' icon_state = "igniter0" base_icon_state = "igniter" + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE max_integrity = 300 armor_type = /datum/armor/machinery_igniter diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index f8dc9887758d4..8733ca548632e 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -66,6 +66,15 @@ if(in_range(user, src) || isobserver(user)) . += span_notice("The status display reads: Maximum range: [range] units.") +/obj/machinery/launchpad/multitool_act(mob/living/user, obj/item/multitool/multi) + . = NONE + if(!panel_open) + return + + multi.set_buffer(src) + balloon_alert(user, "saved to buffer") + return ITEM_INTERACT_SUCCESS + /obj/machinery/launchpad/attackby(obj/item/weapon, mob/user, params) if(!stationary) return ..() @@ -74,14 +83,6 @@ update_indicator() return - if(panel_open && weapon.tool_behaviour == TOOL_MULTITOOL) - if(!multitool_check_buffer(user, weapon)) - return - var/obj/item/multitool/multi = weapon - multi.set_buffer(src) - balloon_alert(user, "saved to buffer") - return TRUE - if(default_deconstruction_crowbar(weapon)) return @@ -97,7 +98,7 @@ /// Updates diagnostic huds /obj/machinery/launchpad/proc/update_hud() var/image/holder = hud_list[DIAG_LAUNCHPAD_HUD] - var/mutable_appearance/target = mutable_appearance('icons/effects/effects.dmi', "launchpad_target", ABOVE_OPEN_TURF_LAYER, src, GAME_PLANE) + var/mutable_appearance/target = mutable_appearance('icons/effects/effects.dmi', "launchpad_target", ABOVE_NORMAL_TURF_LAYER, src, GAME_PLANE) holder.appearance = target update_indicator() @@ -351,15 +352,15 @@ user.transferItemToLoc(src, pad, TRUE) atom_storage.close_all() -/obj/item/storage/briefcase/launchpad/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - if(istype(inserted, /obj/item/launchpad_remote)) - var/obj/item/launchpad_remote/remote = inserted - if(remote.pad == WEAKREF(src.pad)) - return TRUE - remote.pad = WEAKREF(src.pad) - to_chat(user, span_notice("You link [pad] to [remote].")) - return FALSE // no insert - return TRUE +/obj/item/storage/briefcase/launchpad/tool_act(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/launchpad_remote)) + return ..() + var/obj/item/launchpad_remote/remote = tool + if(remote.pad == WEAKREF(src.pad)) + return ..() + remote.pad = WEAKREF(src.pad) + to_chat(user, span_notice("You link [pad] to [remote].")) + return ITEM_INTERACT_BLOCKING /obj/item/launchpad_remote name = "folder" diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index f9075b4318fac..04883800f31ef 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -42,8 +42,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light_switch, 26) if(isnull(held_item)) context[SCREENTIP_CONTEXT_LMB] = area.lightswitch ? "Flick off" : "Flick on" return CONTEXTUAL_SCREENTIP_SET - if(held_item.tool_behaviour != TOOL_SCREWDRIVER) - context[SCREENTIP_CONTEXT_RMB] = "Deconstruct" + if(held_item.tool_behaviour == TOOL_SCREWDRIVER) + context[SCREENTIP_CONTEXT_LMB] = "Deconstruct" return CONTEXTUAL_SCREENTIP_SET return . @@ -69,17 +69,20 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light_switch, 26) /obj/machinery/light_switch/examine(mob/user) . = ..() . += "It is [(machine_stat & NOPOWER) ? "unpowered" : (area.lightswitch ? "on" : "off")]." + . += span_notice("It's screwed and secured to the wall.") /obj/machinery/light_switch/interact(mob/user) . = ..() set_lights(!area.lightswitch) -/obj/machinery/light_switch/attackby_secondary(obj/item/weapon, mob/user, params) - if(weapon.tool_behaviour == TOOL_SCREWDRIVER) - to_chat(user, "You pop \the [src] off the wall.") - deconstruct() - return COMPONENT_CANCEL_ATTACK_CHAIN - return ..() +/obj/machinery/light_switch/screwdriver_act(mob/living/user, obj/item/tool) + user.visible_message(span_notice("[user] starts unscrewing [src]..."), span_notice("You start unscrewing [src]...")) + if(!tool.use_tool(src, user, 40, volume = 50)) + return ITEM_INTERACT_BLOCKING + user.visible_message(span_notice("[user] unscrews [src]!"), span_notice("You detach [src] from the wall.")) + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS /obj/machinery/light_switch/proc/set_lights(status) if(area.lightswitch == status) diff --git a/code/game/machinery/mechlaunchpad.dm b/code/game/machinery/mechlaunchpad.dm index b8c282ae22cca..cbdc34d864800 100644 --- a/code/game/machinery/mechlaunchpad.dm +++ b/code/game/machinery/mechlaunchpad.dm @@ -30,15 +30,14 @@ if(default_deconstruction_crowbar(tool)) return TRUE -/obj/machinery/mechpad/multitool_act(mob/living/user, obj/item/tool) +/obj/machinery/mechpad/multitool_act(mob/living/user, obj/item/multitool/multitool) + . = NONE if(!panel_open) return - if(!multitool_check_buffer(user, tool)) - return - var/obj/item/multitool/multitool = tool + multitool.set_buffer(src) balloon_alert(user, "saved to multitool buffer") - return TRUE + return ITEM_INTERACT_SUCCESS /obj/machinery/mechpad/wirecutter_act(mob/living/user, obj/item/tool) if(!panel_open) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 9e926d9a84189..929383b178c62 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -120,8 +120,8 @@ Buildable meters return ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/ghettojetpack, /datum/crafting_recipe/pipegun, /datum/crafting_recipe/smoothbore_disabler, /datum/crafting_recipe/improvised_pneumatic_cannon) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index d41064ba2efcf..c9694730a3f8a 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -317,6 +317,15 @@ DEFINE_BITFIELD(turret_flags, list( remove_control() check_should_process() +/obj/machinery/porta_turret/multitool_act(mob/living/user, obj/item/multitool/tool) + . = NONE + if(locked) + return + + tool.set_buffer(src) + balloon_alert(user, "saved to multitool buffer") + return ITEM_INTERACT_SUCCESS + /obj/machinery/porta_turret/attackby(obj/item/I, mob/user, params) if(machine_stat & BROKEN) if(I.tool_behaviour == TOOL_CROWBAR) @@ -364,12 +373,6 @@ DEFINE_BITFIELD(turret_flags, list( to_chat(user, span_notice("Controls are now [locked ? "locked" : "unlocked"].")) else to_chat(user, span_alert("Access denied.")) - else if(I.tool_behaviour == TOOL_MULTITOOL && !locked) - if(!multitool_check_buffer(user, I)) - return - var/obj/item/multitool/M = I - M.set_buffer(src) - balloon_alert(user, "saved to multitool buffer") else return ..() @@ -967,18 +970,19 @@ DEFINE_BITFIELD(turret_flags, list( . += {"[span_notice("Ctrl-click [src] to [ enabled ? "disable" : "enable"] turrets.")] [span_notice("Alt-click [src] to set turrets to [ lethal ? "stun" : "kill"].")]"} -/obj/machinery/turretid/attackby(obj/item/attacking_item, mob/user, params) +/obj/machinery/turretid/multitool_act(mob/living/user, obj/item/multitool/multi_tool) + . = NONE if(machine_stat & BROKEN) return - if(attacking_item.tool_behaviour == TOOL_MULTITOOL) - if(!multitool_check_buffer(user, attacking_item)) - return - var/obj/item/multitool/M = attacking_item - if(M.buffer && istype(M.buffer, /obj/machinery/porta_turret)) - turrets |= WEAKREF(M.buffer) - to_chat(user, span_notice("You link \the [M.buffer] with \the [src].")) - return + if(multi_tool.buffer && istype(multi_tool.buffer, /obj/machinery/porta_turret)) + turrets |= WEAKREF(multi_tool.buffer) + to_chat(user, span_notice("You link \the [multi_tool.buffer] with \the [src].")) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/turretid/attackby(obj/item/attacking_item, mob/user, params) + if(machine_stat & BROKEN) + return if (issilicon(user)) return attack_hand(user) diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index 149a0e7723ded..ad3111b330bdc 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -36,6 +36,15 @@ /obj/machinery/porta_turret_cover/attack_ghost(mob/user) return ..() || parent_turret.attack_ghost(user) +/obj/machinery/porta_turret_cover/multitool_act(mob/living/user, obj/item/multitool/multi_tool) + . = NONE + if(parent_turret.locked) + return + + multi_tool.set_buffer(parent_turret) + balloon_alert(user, "saved to multitool buffer") + return ITEM_INTERACT_SUCCESS + /obj/machinery/porta_turret_cover/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_WRENCH && !parent_turret.on) if(parent_turret.raised) @@ -43,12 +52,12 @@ if(!parent_turret.anchored) parent_turret.set_anchored(TRUE) to_chat(user, span_notice("You secure the exterior bolts on the turret.")) - parent_turret.SetInvisibility(INVISIBILITY_NONE, id=type, priority=INVISIBILITY_PRIORITY_TURRET_COVER) + parent_turret.SetInvisibility(INVISIBILITY_MAXIMUM, id=parent_turret.type, priority=INVISIBILITY_PRIORITY_TURRET_COVER) parent_turret.update_appearance() else parent_turret.set_anchored(FALSE) to_chat(user, span_notice("You unsecure the exterior bolts on the turret.")) - parent_turret.SetInvisibility(INVISIBILITY_MAXIMUM, id=type, priority=INVISIBILITY_PRIORITY_TURRET_COVER) + parent_turret.SetInvisibility(INVISIBILITY_NONE, id=parent_turret.type, priority=INVISIBILITY_PRIORITY_TURRET_COVER) parent_turret.update_appearance() qdel(src) return @@ -61,13 +70,6 @@ to_chat(user, span_notice("Access denied.")) return - if(I.tool_behaviour == TOOL_MULTITOOL && !parent_turret.locked) - if(!multitool_check_buffer(user, I)) - return - var/obj/item/multitool/M = I - M.set_buffer(parent_turret) - balloon_alert(user, "saved to multitool buffer") - return return ..() /obj/machinery/porta_turret_cover/attacked_by(obj/item/I, mob/user) diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index 1c014927e62d4..f5f5851b7586e 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -53,37 +53,30 @@ teleport_cooldown = initial(teleport_cooldown) teleport_cooldown -= (E * 100) -/obj/machinery/quantumpad/attackby(obj/item/I, mob/user, params) - if(default_deconstruction_screwdriver(user, "qpad-idle-open", "qpad-idle", I)) - return - +/obj/machinery/quantumpad/multitool_act(mob/living/user, obj/item/multitool/multi_tool) if(panel_open) - if(I.tool_behaviour == TOOL_MULTITOOL) - if(!multitool_check_buffer(user, I)) - return - var/obj/item/multitool/M = I - M.set_buffer(src) - balloon_alert(user, "saved to multitool buffer") - to_chat(user, span_notice("You save the data in [I]'s buffer. It can now be saved to pads with closed panels.")) - return TRUE - else if(I.tool_behaviour == TOOL_MULTITOOL) - if(!multitool_check_buffer(user, I)) - return - var/obj/item/multitool/M = I - if(istype(M.buffer, /obj/machinery/quantumpad)) - if(M.buffer == src) - balloon_alert(user, "cannot link to self!") - return TRUE - else - linked_pad = M.buffer - balloon_alert(user, "data uploaded from buffer") - return TRUE - else - balloon_alert(user, "no quantum pad data found!") - return TRUE + multi_tool.set_buffer(src) + balloon_alert(user, "saved to multitool buffer") + to_chat(user, span_notice("You save the data in [multi_tool] buffer. It can now be saved to pads with closed panels.")) + return ITEM_INTERACT_SUCCESS + + if(istype(multi_tool.buffer, /obj/machinery/quantumpad)) + if(multi_tool.buffer == src) + balloon_alert(user, "cannot link to self!") + return ITEM_INTERACT_BLOCKING + linked_pad = multi_tool.buffer + balloon_alert(user, "data uploaded from buffer") + return ITEM_INTERACT_SUCCESS + + balloon_alert(user, "no quantum pad data found!") + return NONE + +/obj/machinery/quantumpad/attackby(obj/item/weapon, mob/user, params) + if(default_deconstruction_screwdriver(user, "qpad-idle-open", "qpad-idle", weapon)) + return - else if(istype(I, /obj/item/quantum_keycard)) - var/obj/item/quantum_keycard/K = I + if(istype(weapon, /obj/item/quantum_keycard)) + var/obj/item/quantum_keycard/K = weapon if(K.qpad) to_chat(user, span_notice("You insert [K] into [src]'s card slot, activating it.")) interact(user, K.qpad) @@ -93,7 +86,7 @@ to_chat(user, span_notice("You complete the link between [K] and [src].")) K.set_pad(src) - if(default_deconstruction_crowbar(I)) + if(default_deconstruction_crowbar(weapon)) return return ..() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 4e7a80e166388..d961c68dc8ed6 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -286,6 +286,10 @@ icon = 'icons/obj/machines/shield_generator.dmi' icon_state = "shield_wall_gen" base_icon_state = "shield_wall_gen" + light_on = FALSE + light_range = 2.5 + light_power = 2 + light_color = LIGHT_COLOR_BLUE anchored = FALSE density = TRUE req_access = list(ACCESS_TELEPORTER) @@ -325,6 +329,10 @@ RegisterSignal(src, COMSIG_ATOM_SINGULARITY_TRY_MOVE, PROC_REF(block_singularity_if_active)) set_wires(new /datum/wires/shieldwallgen(src)) +/obj/machinery/power/shieldwallgen/update_appearance(updates) + . = ..() + set_light(l_on = !!active) + /obj/machinery/power/shieldwallgen/update_icon_state() icon_state = "[base_icon_state][active ? "_on" : ""]" return ..() @@ -530,7 +538,10 @@ icon_state = "shieldwall" density = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - light_range = 3 + light_range = 2.5 + light_power = 0.7 + light_color = LIGHT_COLOR_BLUE + var/primary_direction = NONE var/needs_power = FALSE var/obj/machinery/power/shieldwallgen/gen_primary var/obj/machinery/power/shieldwallgen/gen_secondary @@ -554,6 +565,10 @@ gen_secondary = null return ..() +/obj/machinery/shieldwall/update_overlays() + . = ..() + . += emissive_appearance(icon, icon_state, src, alpha = 200) + /obj/machinery/shieldwall/process() if(needs_power) if(!gen_primary || !gen_primary.active || !gen_secondary || !gen_secondary.active) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 2d6c5339de494..a74d7456ed8ef 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -2,7 +2,7 @@ #define HEATER_MODE_HEAT "heat" #define HEATER_MODE_COOL "cool" #define HEATER_MODE_AUTO "auto" -#define BASE_HEATING_ENERGY (40 KILO JOULES) +#define BASE_HEATING_ENERGY (STANDARD_CELL_RATE * 0.1) /obj/machinery/space_heater anchored = FALSE @@ -20,7 +20,7 @@ //We don't use area power, we always use the cell use_power = NO_POWER_USE ///The cell we spawn with - var/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell + var/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell/high ///Is the machine on? var/on = FALSE ///What is the mode we are in now? @@ -30,7 +30,7 @@ ///The temperature we trying to get to var/target_temperature = T20C ///How much heat/cold we can deliver - var/heating_energy = 40 KILO JOULES + var/heating_energy = BASE_HEATING_ENERGY ///How efficiently we can deliver that heat/cold (higher indicates less cell consumption) var/efficiency = 20 ///The amount of degrees above and below the target temperature for us to change mode to heater or cooler @@ -468,7 +468,7 @@ for(var/datum/stock_part/capacitor/capacitor in component_parts) capacitors_rating += capacitor.tier - heating_energy = lasers_rating * 20000 + heating_energy = lasers_rating * BASE_HEATING_ENERGY settable_temperature_range = capacitors_rating * 50 //-20 - 80 at base efficiency = (capacitors_rating + 1) * 10 diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index a2e1427198bab..181252d9a703f 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -193,8 +193,10 @@ mod = new mod_type(src) if(storage_type) storage = new storage_type(src) - if(space_suit_type) // MASSMETA EDIT - space_suit = new space_suit_type(src) // + //MASSMETA EDIT ADDITION BEGIN + if(space_suit_type) + space_suit = new space_suit_type(src) + //MASSMETA EDIT ADDITION END update_appearance() register_context() @@ -205,7 +207,7 @@ QDEL_NULL(mask) QDEL_NULL(mod) QDEL_NULL(storage) - QDEL_NULL(space_suit) // MASSMETA EDIT + QDEL_NULL(space_suit) //MASSMETA EDIT ADDITION id_card = null return ..() @@ -238,14 +240,16 @@ . += "[base_icon_state]_panel" if(state_open) . += "[base_icon_state]_open" - if(suit || mod || space_suit) // MASSMETA EDIT + if(suit || mod || space_suit) //MASSMETA EDIT CHANGE - ORIGINAL: if(suit || mod) . += "[base_icon_state]_suit" if(helmet) . += "[base_icon_state]_helm" if(storage) . += "[base_icon_state]_storage" - if(space_suit) // MASSMETA EDIT - . += "[base_icon_state]_space_suit" // + //MASSMETA EDIT ADDITION BEGIN + if(space_suit) + . += "[base_icon_state]_space_suit" + //MASSMETA EDIT ADDITION END if(!(machine_stat & BROKEN || machine_stat & NOPOWER)) if(state_open) . += "[base_icon_state]_lights_open" @@ -312,7 +316,7 @@ mask = null mod = null storage = null - space_suit = null // MASSMETA EDIT + space_suit = null //MASSMETA EDIT ADDITION set_occupant(null) /obj/machinery/suit_storage_unit/on_deconstruction(disassembled) @@ -350,7 +354,7 @@ "mask" = create_silhouette_of(/obj/item/clothing/mask/breath), "mod" = create_silhouette_of(/obj/item/mod/control), "storage" = create_silhouette_of(/obj/item/tank/internals/oxygen), - "space_suit" = create_silhouette_of(/obj/item/choice_beacon/space_suit), // MASSMETA EDIT + "space_suit" = create_silhouette_of(/obj/item/choice_beacon/space_suit), //MASSMETA EDIT ADDITION ) . = ..() @@ -408,7 +412,7 @@ if (occupant && safeties) say("Alert: safeties triggered, occupant detected!") return - else if (!helmet && !mask && !suit && !storage && !occupant && !space_suit) // MASSMETA EDIT + else if (!helmet && !mask && !suit && !storage && !occupant && !space_suit) //MASSMETA EDIT CHANGE - ORIGINAL: else if (!helmet && !mask && !suit && !storage && !occupant) to_chat(user, "There's nothing inside [src] to disinfect!") return else @@ -522,7 +526,7 @@ QDEL_NULL(mask) QDEL_NULL(mod) QDEL_NULL(storage) - QDEL_NULL(space_suit) // MASSMETA EDIT + QDEL_NULL(space_suit) //MASSMETA EDIT ADDITION // The wires get damaged too. wires.cut_all() else @@ -548,9 +552,11 @@ if(storage) things_to_clear += storage things_to_clear += storage.get_all_contents() - if(space_suit) // - things_to_clear += space_suit // MASSMETA EDIT - things_to_clear += space_suit.get_all_contents() // + //MASSMETA EDIT ADDITION BEGIN + if(space_suit) + things_to_clear += space_suit + things_to_clear += space_suit.get_all_contents() + //MASSMETA EDIT ADDITION END if(mob_occupant) things_to_clear += mob_occupant things_to_clear += mob_occupant.get_all_contents() @@ -769,13 +775,15 @@ if(!user.transferItemToLoc(weapon, src)) return mod = weapon - else if(istype(weapon, /obj/item/choice_beacon/space_suit)) // MASSMETA EDIT - if(space_suit) // - to_chat(user, span_warning("The unit already contains a delivery beacon!")) // - return // - if(!user.transferItemToLoc(weapon, src)) // - return // - space_suit = weapon // + //MASSMETA EDIT ADDITION BEGIN + else if(istype(weapon, /obj/item/choice_beacon/space_suit)) + if(space_suit) + to_chat(user, span_warning("The unit already contains a delivery beacon!")) + return + if(!user.transferItemToLoc(weapon, src)) + return + space_suit = weapon + //MASSMETA EDIT ADDITION END else if(storage) to_chat(user, span_warning("The auxiliary storage compartment is full!")) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 693668e9e8900..e4f7b0a8338b8 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -642,7 +642,7 @@ var/skip_sound = TRUE if(num_affected % 5) //makes it play the sound more sparingly skip_sound = FALSE - var/time_mult = round(get_dist_euclidian(get_turf(src), affected)) + 1 + var/time_mult = round(get_dist_euclidean(get_turf(src), affected)) + 1 addtimer(CALLBACK(theme_to_use, TYPE_PROC_REF(/datum/dimension_theme, apply_theme), affected, skip_sound, TRUE), 0.1 SECONDS * time_mult) qdel(src) diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 77e1efbdfa13d..fb68631b76676 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -246,22 +246,19 @@ /// Returns a multitool from a user depending on their mobtype. /obj/machinery/telecomms/proc/get_multitool(mob/user) - var/obj/item/multitool/multitool = null - // Let's double check - if(!HAS_SILICON_ACCESS(user) && istype(user.get_active_held_item(), /obj/item/multitool)) - multitool = user.get_active_held_item() - else if(isAI(user)) + . = null + if(isAI(user)) var/mob/living/silicon/ai/U = user - multitool = U.aiMulti - else if(iscyborg(user) && in_range(user, src)) - var/mob/living/silicon/robot/borguser = user - for(var/obj/item/borg/cyborg_omnitool/toolarm in borguser.held_items) - if(istype(toolarm.selected, /obj/item/multitool)) - multitool = toolarm.selected - break - return multitool - -/obj/machinery/telecomms/proc/canAccess(mob/user) - if(HAS_SILICON_ACCESS(user) || in_range(user, src)) - return TRUE - return FALSE + return U.aiMulti + + var/obj/item/held_item = user.get_active_held_item() + if(QDELETED(held_item)) + return + held_item = held_item.get_proxy_attacker_for(src, user) //for borgs omni tool + if(held_item.tool_behaviour != TOOL_MULTITOOL) + return + + if(!HAS_SILICON_ACCESS(user)) + return held_item + if(iscyborg(user) && in_range(user, src)) + return held_item diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 2373334491772..c46f6b351543d 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -162,24 +162,25 @@ teleporter_console = null return ..() +/obj/machinery/teleport/station/multitool_act(mob/living/user, obj/item/multitool/tool) + . = NONE + + if(panel_open) + tool.set_buffer(src) + balloon_alert(user, "saved to multitool buffer") + return ITEM_INTERACT_SUCCESS + + if(!istype(tool.buffer, /obj/machinery/teleport/station) || tool.buffer == src) + return ITEM_INTERACT_BLOCKING + + if(linked_stations.len < efficiency) + linked_stations.Add(tool.buffer) + tool.set_buffer(null) + balloon_alert(user, "data uploaded from buffer") + return ITEM_INTERACT_SUCCESS + /obj/machinery/teleport/station/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_MULTITOOL) - if(!multitool_check_buffer(user, W)) - return - var/obj/item/multitool/M = W - if(panel_open) - M.set_buffer(src) - balloon_alert(user, "saved to multitool buffer") - else - if(M.buffer && istype(M.buffer, /obj/machinery/teleport/station) && M.buffer != src) - if(linked_stations.len < efficiency) - linked_stations.Add(M.buffer) - M.set_buffer(null) - balloon_alert(user, "data uploaded from buffer") - else - to_chat(user, span_alert("This station can't hold more information, try to use better parts.")) - return - else if(default_deconstruction_screwdriver(user, "controller-o", "controller", W)) + if(default_deconstruction_screwdriver(user, "controller-o", "controller", W)) update_appearance() return diff --git a/code/game/objects/effects/blessing.dm b/code/game/objects/effects/blessing.dm index d07ced626dbc5..d1267c59c747c 100644 --- a/code/game/objects/effects/blessing.dm +++ b/code/game/objects/effects/blessing.dm @@ -12,7 +12,7 @@ for(var/obj/effect/blessing/B in loc) if(B != src) return INITIALIZE_HINT_QDEL - var/image/I = image(icon = 'icons/effects/effects.dmi', icon_state = "blessed", layer = ABOVE_OPEN_TURF_LAYER, loc = src) + var/image/I = image(icon = 'icons/effects/effects.dmi', icon_state = "blessed", layer = ABOVE_NORMAL_TURF_LAYER, loc = src) I.alpha = 64 I.appearance_flags = RESET_ALPHA add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/blessed_aware, "blessing", I) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index b0af5c3ca029e..b6837df6f9546 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -1,5 +1,6 @@ /obj/effect/decal/cleanable gender = PLURAL + plane = GAME_PLANE layer = FLOOR_CLEAN_LAYER var/list/random_icon_states = null ///I'm sorry but cleanable/blood code is ass, and so is blood_DNA @@ -84,7 +85,7 @@ qdel(src) return if(W.get_temperature()) //todo: make heating a reagent holder proc - if(istype(W, /obj/item/clothing/mask/cigarette)) + if(istype(W, /obj/item/cigarette)) return else var/hotness = W.get_temperature() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index c95bffdc62676..062ba3837230b 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -97,6 +97,15 @@ /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() return TRUE +// normal version of the above trail holder object for use in less convoluted things +/obj/effect/decal/cleanable/blood/trails + desc = "Looks like a corpse was smeared all over the floor like ketchup. Kinda makes you hungry." + random_icon_states = list("trails_1", "trails_2") + icon_state = "trails_1" + beauty = -50 + dryname = "dried tracks" + drydesc = "Looks like a corpse was smeared all over the floor like ketchup, but it's all dried up and nasty now, ew. You lose some of your appetite." + /obj/effect/decal/cleanable/blood/gibs name = "gibs" desc = "They look bloody and gruesome." @@ -287,7 +296,7 @@ /obj/effect/decal/cleanable/blood/footprints/update_icon() . = ..() - alpha = min(BLOODY_FOOTPRINT_BASE_ALPHA + (255 - BLOODY_FOOTPRINT_BASE_ALPHA) * bloodiness / (BLOOD_ITEM_MAX / 2), 255) + alpha = max(BLOODY_FOOTPRINT_BASE_ALPHA, min(255 * (bloodiness / 15), 255)) //Cache of bloody footprint images //Key: diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index fcc4afa14944d..f3fbf0b817caa 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -81,11 +81,11 @@ if(T.tiled_dirt) smoothing_flags = SMOOTH_BITMASK QUEUE_SMOOTH(src) - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) /obj/effect/decal/cleanable/dirt/Destroy() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) return ..() @@ -458,7 +458,6 @@ COMSIG_TURF_MOVABLE_THROW_LANDED = PROC_REF(ignition_trigger), ) AddElement(/datum/element/connect_loc, ignition_trigger_connections) - RegisterSignal(src, COMSIG_ATOM_TOUCHED_SPARKS, PROC_REF(ignition_trigger)) for(var/obj/effect/decal/cleanable/fuel_pool/pool in get_turf(src)) //Can't use locate because we also belong to that turf if(pool == src) continue @@ -468,6 +467,15 @@ if(burn_stacks) burn_amount = max(min(burn_stacks, 10), 1) + return INITIALIZE_HINT_LATELOAD + +// Just in case of fires, do this after mapload. +/obj/effect/decal/cleanable/fuel_pool/LateInitialize() +// We don't want to burn down the create_and_destroy test area +#ifndef UNIT_TESTS + RegisterSignal(src, COMSIG_ATOM_TOUCHED_SPARKS, PROC_REF(ignition_trigger)) +#endif + /obj/effect/decal/cleanable/fuel_pool/fire_act(exposed_temperature, exposed_volume) . = ..() ignite() diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index 941034ec511be..646713a21d74a 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -1,5 +1,6 @@ /obj/effect/decal name = "decal" + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE anchored = TRUE resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/game/objects/effects/spawners/costume.dm b/code/game/objects/effects/spawners/costume.dm index 6eb3f801f7365..e5280f7e66184 100644 --- a/code/game/objects/effects/spawners/costume.dm +++ b/code/game/objects/effects/spawners/costume.dm @@ -40,7 +40,7 @@ items = list( /obj/item/clothing/under/rank/captain/suit, /obj/item/clothing/head/flatcap, - /obj/item/clothing/mask/cigarette/cigar/havana, + /obj/item/cigarette/cigar/havana, /obj/item/clothing/shoes/jackboots, ) diff --git a/code/game/objects/effects/spawners/random/entertainment.dm b/code/game/objects/effects/spawners/random/entertainment.dm index 3ad477b0294f3..74ca4213b0dc5 100644 --- a/code/game/objects/effects/spawners/random/entertainment.dm +++ b/code/game/objects/effects/spawners/random/entertainment.dm @@ -121,10 +121,10 @@ icon_state = "pill" loot = list( /obj/item/reagent_containers/cup/glass/bottle/hooch = 50, - /obj/item/clothing/mask/cigarette/rollie/cannabis = 15, + /obj/item/cigarette/rollie/cannabis = 15, /obj/item/reagent_containers/syringe = 15, /obj/item/cigbutt/roach = 15, - /obj/item/clothing/mask/cigarette/rollie/mindbreaker = 5, + /obj/item/cigarette/rollie/mindbreaker = 5, ) /obj/effect/spawner/random/entertainment/dice @@ -157,23 +157,23 @@ name = "cigarette spawner" icon_state = "cigarettes" loot = list( - /obj/item/clothing/mask/cigarette/space_cigarette = 3, - /obj/item/clothing/mask/cigarette/rollie/cannabis = 3, - /obj/item/clothing/mask/cigarette/rollie/nicotine = 3, - /obj/item/clothing/mask/cigarette/dromedary = 2, - /obj/item/clothing/mask/cigarette/uplift = 2, - /obj/item/clothing/mask/cigarette/robust = 2, - /obj/item/clothing/mask/cigarette/carp = 1, - /obj/item/clothing/mask/cigarette/robustgold = 1, + /obj/item/cigarette/space_cigarette = 3, + /obj/item/cigarette/rollie/cannabis = 3, + /obj/item/cigarette/rollie/nicotine = 3, + /obj/item/cigarette/dromedary = 2, + /obj/item/cigarette/uplift = 2, + /obj/item/cigarette/robust = 2, + /obj/item/cigarette/carp = 1, + /obj/item/cigarette/robustgold = 1, ) /obj/effect/spawner/random/entertainment/cigar name = "cigar spawner" icon_state = "cigarettes" loot = list( - /obj/item/clothing/mask/cigarette/cigar = 3, - /obj/item/clothing/mask/cigarette/cigar/havana = 2, - /obj/item/clothing/mask/cigarette/cigar/cohiba = 1, + /obj/item/cigarette/cigar = 3, + /obj/item/cigarette/cigar/havana = 2, + /obj/item/cigarette/cigar/cohiba = 1, ) /obj/effect/spawner/random/entertainment/wallet_lighter diff --git a/code/game/objects/effects/spawners/random/random.dm b/code/game/objects/effects/spawners/random/random.dm index 2c98ba72a4eef..ed77f671191b6 100644 --- a/code/game/objects/effects/spawners/random/random.dm +++ b/code/game/objects/effects/spawners/random/random.dm @@ -52,6 +52,9 @@ if(loot_subtype_path) loot += subtypesof(loot_subtype_path) + if(CONFIG_GET(number/random_loot_weight_modifier) != 1) + skew_loot_weights(CONFIG_GET(number/random_loot_weight_modifier)) + if(loot?.len) var/loot_spawned = 0 var/pixel_divider = FLOOR(16 / spawn_loot_split_pixel_offsets, 1) // 16 pixels offsets is max that should be allowed in any direction @@ -85,6 +88,22 @@ spawned_loot.pixel_y = spawn_loot_split_pixel_offsets * (loot_spawned % pixel_divider) loot_spawned++ +///Levels out the weights of loot if lower than 1, or makes rarer spawns even more rare. +/obj/effect/spawner/random/proc/skew_loot_weights(list/loot_list, exponent) + ///This helps keeping the modified weights more or less correct, since pick_weight doesn't appreciate decimals. + var/precision = 1 + if(exponent < 1) + precision = round((1 - exponent) * 10) + 1 + for(var/loot_type in loot_list) + if(islist(loot_type)) + skew_loot_weights(loot_type, exponent) + var/loot_weight = loot_list[loot_type] + if(loot_weight <= 1) + if(exponent < 1) + loot_list[loot_type] *= precision + continue + loot_list[loot_type] = round(loot_weight ** exponent * precision, 1) + /** * Makes the actual item related to our spawner. * diff --git a/code/game/objects/effects/spawners/random/structure.dm b/code/game/objects/effects/spawners/random/structure.dm index b5b2c226d11d6..359c147eb4fb5 100644 --- a/code/game/objects/effects/spawners/random/structure.dm +++ b/code/game/objects/effects/spawners/random/structure.dm @@ -2,6 +2,15 @@ name = "structure spawner" desc = "Now you see me, now you don't..." +///12% chance to spawn a ouija board, or a potted plant. Btw, Wawastation has a guaranteed board. +/obj/effect/spawner/random/structure/twelve_percent_spirit_board + name = "12% spirit board" + icon_state = "spirit_board" + loot = list( + /obj/structure/spirit_board = 3, + /obj/item/kirbyplants/random = 22, + ) + /obj/effect/spawner/random/structure/crate name = "crate spawner" icon_state = "crate_secure" @@ -123,7 +132,7 @@ /obj/effect/spawner/random/structure/closet_empty/crate/with_loot/make_item(spawn_loc, type_path_to_make) var/obj/structure/closet/closet_to_fill = ..() - closet_to_fill.RegisterSignal(closet_to_fill, COMSIG_CLOSET_POPULATE_CONTENTS, TYPE_PROC_REF(/obj/structure/closet/, populate_with_random_maint_loot)) + closet_to_fill.RegisterSignal(closet_to_fill, COMSIG_CLOSET_CONTENTS_INITIALIZED, TYPE_PROC_REF(/obj/structure/closet/, populate_with_random_maint_loot)) return closet_to_fill diff --git a/code/game/objects/effects/temporary_visuals/cult.dm b/code/game/objects/effects/temporary_visuals/cult.dm index a53d4df9b925a..caeede1ec2096 100644 --- a/code/game/objects/effects/temporary_visuals/cult.dm +++ b/code/game/objects/effects/temporary_visuals/cult.dm @@ -49,6 +49,7 @@ /obj/effect/temp_visual/cult/turf/floor icon_state = "floorglow" duration = 5 + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE /obj/effect/temp_visual/cult/portal diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index d132dd53da8c4..9cb926fd19756 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -709,3 +709,29 @@ flags = ANIMATION_RELATIVE, ) return ..() + +/obj/effect/temp_visual/mech_sparks + name = "mech sparks" + icon_state = "mech_sparks" + duration = 0.4 SECONDS + +/obj/effect/temp_visual/mech_sparks/Initialize(mapload, set_color) + . = ..() + pixel_x = rand(-16, 16) + pixel_y = rand(-8, 8) + +/obj/effect/temp_visual/mech_attack_aoe_charge + name = "mech attack aoe charge" + icon = 'icons/effects/96x96.dmi' + icon_state = "mech_attack_aoe_charge" + duration = 1 SECONDS + pixel_x = -32 + pixel_y = -32 + +/obj/effect/temp_visual/mech_attack_aoe_attack + name = "mech attack aoe attack" + icon = 'icons/effects/96x96.dmi' + icon_state = "mech_attack_aoe_attack" + duration = 0.5 SECONDS + pixel_x = -32 + pixel_y = -32 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 6a63488d4cb8e..766df3635b56f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -163,8 +163,10 @@ ///the icon to indicate this object is being dragged mouse_drag_pointer = MOUSE_ACTIVE_POINTER - ///Does it embed and if yes, what kind of embed - var/list/embedding + /// Does it embed and if yes, what kind of embed + var/embed_type + /// Stores embedding data + var/datum/embed_data/embed_data ///for flags such as [GLASSESCOVERSEYES] var/flags_cover = 0 @@ -263,8 +265,8 @@ add_weapon_description() SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NEW_ITEM, src) - if(LAZYLEN(embedding)) - updateEmbedding() + if(get_embed()) + AddElement(/datum/element/embed) setup_reskinning() @@ -1246,9 +1248,11 @@ return owner.dropItemToGround(src) ///Does the current embedding var meet the criteria for being harmless? Namely, does it have a pain multiplier and jostle pain mult of 0? If so, return true. -/obj/item/proc/isEmbedHarmless() - if(embedding) - return !isnull(embedding["pain_mult"]) && !isnull(embedding["jostle_pain_mult"]) && embedding["pain_mult"] == 0 && embedding["jostle_pain_mult"] == 0 +/obj/item/proc/is_embed_harmless() + if (!get_embed()) + return FALSE + + return !isnull(embed_data.pain_mult) && !isnull(embed_data.jostle_pain_mult) && embed_data.pain_mult == 0 && embed_data.jostle_pain_mult == 0 ///In case we want to do something special (like self delete) upon failing to embed in something. /obj/item/proc/failedEmbed() @@ -1281,11 +1285,13 @@ /obj/item/proc/tryEmbed(atom/target, forced=FALSE) if(!isbodypart(target) && !iscarbon(target)) return NONE - if(!forced && !LAZYLEN(embedding)) + + if(!forced && !get_embed()) return NONE if(SEND_SIGNAL(src, COMSIG_EMBED_TRY_FORCE, target = target, forced = forced)) return COMPONENT_EMBED_SUCCESS + failedEmbed() ///For when you want to disable an item's embedding capabilities (like transforming weapons and such), this proc will detach any active embed elements from it. @@ -1293,29 +1299,6 @@ SEND_SIGNAL(src, COMSIG_ITEM_DISABLE_EMBED) return -///For when you want to add/update the embedding on an item. Uses the vars in [/obj/item/var/embedding], and defaults to config values for values that aren't set. Will automatically detach previous embed elements on this item. -/obj/item/proc/updateEmbedding() - SHOULD_CALL_PARENT(TRUE) - - SEND_SIGNAL(src, COMSIG_ITEM_EMBEDDING_UPDATE) - if(!LAZYLEN(embedding)) - disableEmbedding() - return - - AddElement(/datum/element/embed,\ - embed_chance = (!isnull(embedding["embed_chance"]) ? embedding["embed_chance"] : EMBED_CHANCE),\ - fall_chance = (!isnull(embedding["fall_chance"]) ? embedding["fall_chance"] : EMBEDDED_ITEM_FALLOUT),\ - pain_chance = (!isnull(embedding["pain_chance"]) ? embedding["pain_chance"] : EMBEDDED_PAIN_CHANCE),\ - pain_mult = (!isnull(embedding["pain_mult"]) ? embedding["pain_mult"] : EMBEDDED_PAIN_MULTIPLIER),\ - remove_pain_mult = (!isnull(embedding["remove_pain_mult"]) ? embedding["remove_pain_mult"] : EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER),\ - rip_time = (!isnull(embedding["rip_time"]) ? embedding["rip_time"] : EMBEDDED_UNSAFE_REMOVAL_TIME),\ - ignore_throwspeed_threshold = (!isnull(embedding["ignore_throwspeed_threshold"]) ? embedding["ignore_throwspeed_threshold"] : FALSE),\ - impact_pain_mult = (!isnull(embedding["impact_pain_mult"]) ? embedding["impact_pain_mult"] : EMBEDDED_IMPACT_PAIN_MULTIPLIER),\ - jostle_chance = (!isnull(embedding["jostle_chance"]) ? embedding["jostle_chance"] : EMBEDDED_JOSTLE_CHANCE),\ - jostle_pain_mult = (!isnull(embedding["jostle_pain_mult"]) ? embedding["jostle_pain_mult"] : EMBEDDED_JOSTLE_PAIN_MULTIPLIER),\ - pain_stam_pct = (!isnull(embedding["pain_stam_pct"]) ? embedding["pain_stam_pct"] : EMBEDDED_PAIN_STAM_PCT)) - return TRUE - /// How many different types of mats will be counted in a bite? #define MAX_MATS_PER_BITE 2 @@ -1460,15 +1443,6 @@ SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_ITEM_EQUIPPED_AS_OUTFIT, outfit_wearer, visuals_only, item_slot) -/** - * Called before this item is placed into a storage container - * via the item clicking on the target atom - * - * Returning FALSE will prevent the item from being stored - */ -/obj/item/proc/storage_insert_on_interaction(datum/storage, atom/storage_holder, mob/user) - return TRUE - /obj/item/proc/do_pickup_animation(atom/target, turf/source) if(!source) if(!istype(loc, /turf)) @@ -1741,3 +1715,29 @@ if(!isnull(loc)) SEND_SIGNAL(loc, COMSIG_ATOM_CONTENTS_WEIGHT_CLASS_CHANGED, src, old_w_class, new_w_class) return TRUE + +/// Fetches embedding data +/obj/item/proc/get_embed() + RETURN_TYPE(/datum/embed_data) + return embed_type ? (embed_data ||= get_embed_by_type(embed_type)) : null + +/obj/item/proc/set_embed(datum/embed_data/embed) + if(embed_data == embed) + return + if(!GLOB.embed_by_type[embed_data?.type]) + qdel(embed_data) + embed_data = ispath(embed) ? get_embed_by_type(armor) : embed + SEND_SIGNAL(src, COMSIG_ITEM_EMBEDDING_UPDATE) + +/** + * Returns the atom(either itself or an internal module) that will interact/attack the target on behalf of us + * For example an object can have different `tool_behaviours` (e.g borg omni tool) but will return an internal reference of that tool to attack for us + * You can use it for general purpose polymorphism if you need a proxy atom to interact in a specific way + * with a target on behalf on this atom + * + * Currently used only in the object melee attack chain but can be used anywhere else or even moved up to the atom level if required + */ +/obj/item/proc/get_proxy_attacker_for(atom/target, mob/user) + RETURN_TYPE(/obj/item) + + return src diff --git a/code/game/objects/items/botpad_remote.dm b/code/game/objects/items/botpad_remote.dm index d2f2db3e1ac5e..6b219725aa087 100644 --- a/code/game/objects/items/botpad_remote.dm +++ b/code/game/objects/items/botpad_remote.dm @@ -28,22 +28,23 @@ user?.balloon_alert(user, "no connected pad!") return -/obj/item/botpad_remote/multitool_act(mob/living/user, obj/item/tool) - if(!multitool_check_buffer(user, tool)) +/obj/item/botpad_remote/multitool_act(mob/living/user, obj/item/multitool/multitool) + . = NONE + if(!istype(multitool.buffer, /obj/machinery/botpad)) return - var/obj/item/multitool/multitool = tool - if(istype(multitool.buffer, /obj/machinery/botpad)) - var/obj/machinery/botpad/buffered_remote = multitool.buffer - if(buffered_remote == connected_botpad) - to_chat(user, span_warning("Controller cannot connect to its own botpad!")) - else if(!connected_botpad && istype(buffered_remote, /obj/machinery/botpad)) - connected_botpad = buffered_remote - connected_botpad.connected_remote = src - connected_botpad.id = id - multitool.set_buffer(null) - to_chat(user, span_notice("You connect the controller to the pad with data from the [multitool.name]'s buffer.")) - else - to_chat(user, span_warning("Unable to upload!")) + + var/obj/machinery/botpad/buffered_remote = multitool.buffer + if(buffered_remote == connected_botpad) + to_chat(user, span_warning("Controller cannot connect to its own botpad!")) + return ITEM_INTERACT_BLOCKING + + if(!connected_botpad && istype(buffered_remote, /obj/machinery/botpad)) + connected_botpad = buffered_remote + connected_botpad.connected_remote = src + connected_botpad.id = id + multitool.set_buffer(null) + to_chat(user, span_notice("You connect the controller to the pad with data from the [multitool.name]'s buffer.")) + return ITEM_INTERACT_SUCCESS /obj/item/botpad_remote/proc/try_launch(mob/living/user) if(!connected_botpad) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 7c0ebfda5f4a8..32ad7f8845de3 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -94,7 +94,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(M)] on fire with [src] at [AREACOORD(user)]") user.log_message("set [key_name(M)] on fire with [src]", LOG_ATTACK) - var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) + var/obj/item/cigarette/cig = help_light_cig(M) if(!lit || !cig || user.combat_mode) ..() return @@ -109,7 +109,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /// Finds a cigarette on another mob to help light. /obj/item/proc/help_light_cig(mob/living/M) var/mask_item = M.get_item_by_slot(ITEM_SLOT_MASK) - if(istype(mask_item, /obj/item/clothing/mask/cigarette)) + if(istype(mask_item, /obj/item/cigarette)) return mask_item /obj/item/match/get_temperature() @@ -129,14 +129,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM ////////////////// //FINE SMOKABLES// ////////////////// -/obj/item/clothing/mask/cigarette +/obj/item/cigarette name = "cigarette" desc = "A roll of tobacco and nicotine." + icon = 'icons/obj/cigarettes.dmi' icon_state = "cigoff" inhand_icon_state = "cigon" //gets overriden during intialize(), just have it for unit test sanity. throw_speed = 0.5 w_class = WEIGHT_CLASS_TINY - body_parts_covered = null + slot_flags = ITEM_SLOT_MASK grind_results = list() heat = 1000 throw_verb = "flick" @@ -180,7 +181,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /// How long the current mob has been smoking this cigarette VAR_FINAL/how_long_have_we_been_smokin = 0 SECONDS -/obj/item/clothing/mask/cigarette/Initialize(mapload) +/obj/item/cigarette/Initialize(mapload) . = ..() create_reagents(chem_volume, INJECTABLE | NO_REACT) if(list_reagents) @@ -193,24 +194,23 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = icon_off inhand_icon_state = inhand_icon_off -/obj/item/clothing/mask/cigarette/Destroy() +/obj/item/cigarette/Destroy() STOP_PROCESSING(SSobj, src) QDEL_NULL(mob_smoke) QDEL_NULL(cig_smoke) return ..() -/obj/item/clothing/mask/cigarette/equipped(mob/equipee, slot) +/obj/item/cigarette/equipped(mob/equipee, slot) . = ..() if(!(slot & ITEM_SLOT_MASK)) UnregisterSignal(equipee, list(COMSIG_HUMAN_FORCESAY, COMSIG_ATOM_DIR_CHANGE)) return RegisterSignal(equipee, COMSIG_HUMAN_FORCESAY, PROC_REF(on_forcesay)) RegisterSignal(equipee, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_mob_dir_change)) - if(lit && iscarbon(loc)) make_mob_smoke(loc) -/obj/item/clothing/mask/cigarette/dropped(mob/dropee, silent) +/obj/item/cigarette/dropped(mob/dropee) . = ..() // Moving the cigarette from mask to hands (or pocket I guess) will emit a larger puff of smoke if(!QDELETED(src) && !QDELETED(dropee) && how_long_have_we_been_smokin >= 4 SECONDS && iscarbon(dropee) && iscarbon(loc)) @@ -223,17 +223,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM QDEL_NULL(mob_smoke) how_long_have_we_been_smokin = 0 SECONDS -/obj/item/clothing/mask/cigarette/proc/on_forcesay(mob/living/source) +/obj/item/cigarette/proc/on_forcesay(mob/living/source) SIGNAL_HANDLER source.apply_status_effect(/datum/status_effect/choke, src, lit, choke_forever ? -1 : rand(25 SECONDS, choke_time_max)) -/obj/item/clothing/mask/cigarette/proc/on_mob_dir_change(mob/living/source, old_dir, new_dir) +/obj/item/cigarette/proc/on_mob_dir_change(mob/living/source, old_dir, new_dir) SIGNAL_HANDLER if(isnull(mob_smoke)) return update_particle_position(mob_smoke, new_dir) -/obj/item/clothing/mask/cigarette/proc/update_particle_position(obj/effect/abstract/particle_holder/to_edit, new_dir = loc.dir) +/obj/item/cigarette/proc/update_particle_position(obj/effect/abstract/particle_holder/to_edit, new_dir = loc.dir) var/new_x = 0 var/new_layer = initial(to_edit.layer) if(new_dir & NORTH) @@ -248,11 +248,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM to_edit.set_particle_position(new_x, 8, 0) to_edit.layer = new_layer -/obj/item/clothing/mask/cigarette/suicide_act(mob/living/user) +/obj/item/cigarette/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is huffing [src] as quickly as [user.p_they()] can! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer.")) return (TOXLOSS|OXYLOSS) -/obj/item/clothing/mask/cigarette/attackby(obj/item/W, mob/user, params) +/obj/item/cigarette/attackby(obj/item/W, mob/user, params) if(lit) return ..() @@ -270,7 +270,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM to_chat(user, span_warning("There is nothing to smoke!")) /// Checks that we have enough air to smoke -/obj/item/clothing/mask/cigarette/proc/check_oxygen(mob/user) +/obj/item/cigarette/proc/check_oxygen(mob/user) if (reagents.has_reagent(/datum/reagent/oxygen)) return TRUE var/datum/gas_mixture/air = return_air() @@ -281,7 +281,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/mob/living/carbon/the_smoker = user return the_smoker.can_breathe_helmet() -/obj/item/clothing/mask/cigarette/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) +/obj/item/cigarette/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(lit) //can't dip if cigarette is lit (it will heat the reagents in the glass instead) return NONE var/obj/item/reagent_containers/cup/glass = interacting_with @@ -298,7 +298,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM to_chat(user, span_warning("[src] is full!")) return ITEM_INTERACT_SUCCESS -/obj/item/clothing/mask/cigarette/update_icon_state() +/obj/item/cigarette/update_icon_state() . = ..() if(lit) icon_state = icon_on @@ -308,7 +308,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM inhand_icon_state = inhand_icon_off -/obj/item/clothing/mask/cigarette/proc/sparks_touched(datum/source, obj/effect/particle_effect) +/obj/item/cigarette/proc/sparks_touched(datum/source, obj/effect/particle_effect) SIGNAL_HANDLER if(lit) @@ -316,7 +316,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM light() /// Lights the cigarette with given flavor text. -/obj/item/clothing/mask/cigarette/proc/light(flavor_text = null) +/obj/item/cigarette/proc/light(flavor_text = null) if(lit) return @@ -357,7 +357,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(src == smoker.wear_mask) make_mob_smoke(smoker) -/obj/item/clothing/mask/cigarette/extinguish() +/obj/item/cigarette/extinguish() . = ..() if(!lit) return @@ -375,7 +375,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM QDEL_NULL(cig_smoke) QDEL_NULL(mob_smoke) -/obj/item/clothing/mask/cigarette/proc/long_exhale(mob/living/carbon/smoker) +/obj/item/cigarette/proc/long_exhale(mob/living/carbon/smoker) smoker.visible_message( span_notice("[smoker] exhales a large cloud of smoke from [src]."), span_notice("You exhale a large cloud of smoke from [src]."), @@ -388,7 +388,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM QDEL_IN(big_smoke, big_smoke.particles.lifespan) /// Handles processing the reagents in the cigarette. -/obj/item/clothing/mask/cigarette/proc/handle_reagents(seconds_per_tick) +/obj/item/cigarette/proc/handle_reagents(seconds_per_tick) if(!reagents.total_volume) return reagents.expose_temperature(heat, 0.05) @@ -424,7 +424,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!reagents.trans_to(smoker, to_smoke, methods = INGEST, ignore_stomach = TRUE)) reagents.remove_all(to_smoke) -/obj/item/clothing/mask/cigarette/process(seconds_per_tick) +/obj/item/cigarette/process(seconds_per_tick) var/mob/living/user = isliving(loc) ? loc : null user?.ignite_mob() @@ -442,12 +442,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM COOLDOWN_START(src, drag_cooldown, dragtime) handle_reagents(seconds_per_tick) -/obj/item/clothing/mask/cigarette/attack_self(mob/user) +/obj/item/cigarette/attack_self(mob/user) if(lit) put_out(user, TRUE) return ..() -/obj/item/clothing/mask/cigarette/proc/put_out(mob/user, done_early = FALSE) +/obj/item/cigarette/proc/put_out(mob/user, done_early = FALSE) var/atom/location = drop_location() if(!isnull(user)) if(done_early) @@ -463,13 +463,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM new type_butt(location) qdel(src) -/obj/item/clothing/mask/cigarette/attack(mob/living/carbon/M, mob/living/carbon/user) +/obj/item/cigarette/attack(mob/living/carbon/M, mob/living/carbon/user) if(!istype(M)) return ..() if(M.on_fire && !lit) light(span_notice("[user] lights [src] with [M]'s burning body. What a cold-blooded badass.")) return - var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) + var/obj/item/cigarette/cig = help_light_cig(M) if(!lit || !cig || user.combat_mode) return ..() @@ -480,54 +480,54 @@ CIGARETTE PACKETS ARE IN FANCY.DM else cig.light(span_notice("[user] holds the [name] out for [M], and lights [M.p_their()] [cig.name].")) -/obj/item/clothing/mask/cigarette/fire_act(exposed_temperature, exposed_volume) +/obj/item/cigarette/fire_act(exposed_temperature, exposed_volume) light() -/obj/item/clothing/mask/cigarette/get_temperature() +/obj/item/cigarette/get_temperature() return lit * heat -/obj/item/clothing/mask/cigarette/proc/make_mob_smoke(mob/living/smoker) +/obj/item/cigarette/proc/make_mob_smoke(mob/living/smoker) mob_smoke = new(smoker, /particles/smoke/cig) update_particle_position(mob_smoke, smoker.dir) return mob_smoke -/obj/item/clothing/mask/cigarette/proc/make_cig_smoke() +/obj/item/cigarette/proc/make_cig_smoke() cig_smoke = new(src, /particles/smoke/cig) - cig_smoke.particles.scale *= 1.5 + cig_smoke.particles?.scale *= 1.5 return cig_smoke // Cigarette brands. -/obj/item/clothing/mask/cigarette/space_cigarette +/obj/item/cigarette/space_cigarette desc = "A Space brand cigarette that can be smoked anywhere." list_reagents = list(/datum/reagent/drug/nicotine = 9, /datum/reagent/oxygen = 9) smoketime = 4 MINUTES // space cigs have a shorter burn time than normal cigs smoke_all = TRUE // so that it doesn't runout of oxygen while being smoked in space -/obj/item/clothing/mask/cigarette/dromedary +/obj/item/cigarette/dromedary desc = "A DromedaryCo brand cigarette. Contrary to popular belief, does not contain Calomel, but is reported to have a watery taste." list_reagents = list(/datum/reagent/drug/nicotine = 13, /datum/reagent/water = 5) //camel has water -/obj/item/clothing/mask/cigarette/uplift +/obj/item/cigarette/uplift desc = "An Uplift Smooth brand cigarette. Smells refreshing." list_reagents = list(/datum/reagent/drug/nicotine = 13, /datum/reagent/consumable/menthol = 5) -/obj/item/clothing/mask/cigarette/robust +/obj/item/cigarette/robust desc = "A Robust brand cigarette." -/obj/item/clothing/mask/cigarette/robustgold +/obj/item/cigarette/robustgold desc = "A Robust Gold brand cigarette." list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/gold = 3) // Just enough to taste a hint of expensive metal. -/obj/item/clothing/mask/cigarette/carp +/obj/item/cigarette/carp desc = "A Carp Classic brand cigarette. A small label on its side indicates that it does NOT contain carpotoxin." -/obj/item/clothing/mask/cigarette/carp/Initialize(mapload) +/obj/item/cigarette/carp/Initialize(mapload) . = ..() if(!prob(5)) return reagents?.add_reagent(/datum/reagent/toxin/carpotoxin , 3) // They lied -/obj/item/clothing/mask/cigarette/syndicate +/obj/item/cigarette/syndicate desc = "An unknown brand cigarette." chem_volume = 60 smoketime = 2 MINUTES @@ -535,19 +535,19 @@ CIGARETTE PACKETS ARE IN FANCY.DM lung_harm = 1.5 list_reagents = list(/datum/reagent/drug/nicotine = 10, /datum/reagent/medicine/omnizine = 15) -/obj/item/clothing/mask/cigarette/shadyjims +/obj/item/cigarette/shadyjims desc = "A Shady Jim's Super Slims cigarette." lung_harm = 1.5 list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/toxin/lipolicide = 4, /datum/reagent/ammonia = 2, /datum/reagent/toxin/plantbgone = 1, /datum/reagent/toxin = 1.5) -/obj/item/clothing/mask/cigarette/xeno +/obj/item/cigarette/xeno desc = "A Xeno Filtered brand cigarette." lung_harm = 2 list_reagents = list (/datum/reagent/drug/nicotine = 20, /datum/reagent/medicine/regen_jelly = 15, /datum/reagent/drug/krokodil = 4) // Rollies. -/obj/item/clothing/mask/cigarette/rollie +/obj/item/cigarette/rollie name = "rollie" desc = "A roll of dried plant matter wrapped in thin paper." icon_state = "spliffoff" @@ -560,7 +560,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM list_reagents = null choke_time_max = 40 SECONDS -/obj/item/clothing/mask/cigarette/rollie/Initialize(mapload) +/obj/item/cigarette/rollie/Initialize(mapload) name = pick(list( "bifta", "bifter", @@ -606,20 +606,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) -/obj/item/clothing/mask/cigarette/rollie/nicotine +/obj/item/cigarette/rollie/nicotine list_reagents = list(/datum/reagent/drug/nicotine = 15) -/obj/item/clothing/mask/cigarette/rollie/trippy +/obj/item/cigarette/rollie/trippy list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/drug/mushroomhallucinogen = 35) starts_lit = TRUE -/obj/item/clothing/mask/cigarette/rollie/cannabis +/obj/item/cigarette/rollie/cannabis list_reagents = list(/datum/reagent/drug/cannabis = 15) -/obj/item/clothing/mask/cigarette/rollie/mindbreaker +/obj/item/cigarette/rollie/mindbreaker list_reagents = list(/datum/reagent/toxin/mindbreaker = 35, /datum/reagent/toxin/lipolicide = 15) -/obj/item/clothing/mask/cigarette/candy +/obj/item/cigarette/candy name = "\improper Little Timmy's candy cigarette" desc = "For all ages*! Doesn't contain any amount of nicotine. Health and safety risks can be read on the tip of the cigarette." smoketime = 2 MINUTES @@ -633,7 +633,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM list_reagents = list(/datum/reagent/consumable/sugar = 20) choke_time_max = 70 SECONDS // This shit really is deadly -/obj/item/clothing/mask/cigarette/candy/nicotine +/obj/item/cigarette/candy/nicotine desc = "For all ages*! Doesn't contain any* amount of nicotine. Health and safety risks can be read on the tip of the cigarette." type_butt = /obj/item/food/candy_trash/nicotine list_reagents = list(/datum/reagent/consumable/sugar = 20, /datum/reagent/drug/nicotine = 20) //oh no! @@ -653,7 +653,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM //////////// // CIGARS // //////////// -/obj/item/clothing/mask/cigarette/cigar +/obj/item/cigarette/cigar name = "cigar" desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!" icon_state = "cigaroff" @@ -669,11 +669,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM list_reagents = list(/datum/reagent/drug/nicotine = 25) choke_time_max = 40 SECONDS -/obj/item/clothing/mask/cigarette/cigar/premium +/obj/item/cigarette/cigar/premium name = "premium cigar" //this is the version that actually spawns in premium cigar cases, the distinction is made so that the smoker quirk can differentiate between the default cigar box and its subtypes -/obj/item/clothing/mask/cigarette/cigar/cohiba +/obj/item/cigarette/cigar/cohiba name = "\improper Cohiba Robusto cigar" desc = "There's little more you could want from a cigar." icon_state = "cigar2off" @@ -683,7 +683,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM chem_volume = 80 list_reagents = list(/datum/reagent/drug/nicotine = 40) -/obj/item/clothing/mask/cigarette/cigar/havana +/obj/item/cigarette/cigar/havana name = "premium Havanian cigar" desc = "A cigar fit for only the best of the best." icon_state = "cigar2off" @@ -696,7 +696,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/cigbutt name = "cigarette butt" desc = "A manky old cigarette butt." - icon = 'icons/obj/clothing/masks.dmi' + icon = 'icons/obj/cigarettes.dmi' icon_state = "cigbutt" w_class = WEIGHT_CLASS_TINY throwforce = 0 @@ -710,7 +710,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM ///////////////// //SMOKING PIPES// ///////////////// -/obj/item/clothing/mask/cigarette/pipe +/obj/item/cigarette/pipe name = "smoking pipe" desc = "A pipe, for smoking. Probably made of meerschaum or something." icon_state = "pipeoff" @@ -727,15 +727,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM ///name of the stuff packed inside this pipe var/packeditem -/obj/item/clothing/mask/cigarette/pipe/Initialize(mapload) +/obj/item/cigarette/pipe/Initialize(mapload) . = ..() update_appearance(UPDATE_NAME) -/obj/item/clothing/mask/cigarette/pipe/update_name() +/obj/item/cigarette/pipe/update_name() . = ..() name = packeditem ? "[packeditem]-packed [initial(name)]" : "empty [initial(name)]" -/obj/item/clothing/mask/cigarette/pipe/put_out(mob/user, done_early = FALSE) +/obj/item/cigarette/pipe/put_out(mob/user, done_early = FALSE) lit = FALSE if(done_early) user.visible_message(span_notice("[user] puts out [src]."), span_notice("You put out [src].")) @@ -748,7 +748,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM STOP_PROCESSING(SSobj, src) QDEL_NULL(cig_smoke) -/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/thing, mob/user, params) +/obj/item/cigarette/pipe/attackby(obj/item/thing, mob/user, params) if(!istype(thing, /obj/item/food/grown)) return ..() @@ -769,7 +769,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM qdel(to_smoke) -/obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user) +/obj/item/cigarette/pipe/attack_self(mob/user) var/atom/location = drop_location() if(packeditem && !lit) to_chat(user, span_notice("You empty [src] onto [location].")) @@ -781,7 +781,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM return return ..() -/obj/item/clothing/mask/cigarette/pipe/cobpipe +/obj/item/cigarette/pipe/cobpipe 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" @@ -962,7 +962,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(lit && M.ignite_mob()) message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(M)] on fire with [src] at [AREACOORD(user)]") log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]") - var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) + var/obj/item/cigarette/cig = help_light_cig(M) if(!lit || !cig || user.combat_mode) ..() return @@ -1110,13 +1110,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/rollingpaper/Initialize(mapload) . = ..() - AddComponent(/datum/component/customizable_reagent_holder, /obj/item/clothing/mask/cigarette/rollie, CUSTOM_INGREDIENT_ICON_NOCHANGE, ingredient_type=CUSTOM_INGREDIENT_TYPE_DRYABLE, max_ingredients=2) + AddComponent(/datum/component/customizable_reagent_holder, /obj/item/cigarette/rollie, CUSTOM_INGREDIENT_ICON_NOCHANGE, ingredient_type=CUSTOM_INGREDIENT_TYPE_DRYABLE, max_ingredients=2) /////////////// //VAPE NATION// /////////////// -/obj/item/clothing/mask/vape +/obj/item/vape name = "\improper E-Cigarette" desc = "A classy and highly sophisticated electronic cigarette, for classy and dignified gentlemen. A warning label reads \"Warning: Do not fill with flammable materials.\""//<<< i'd vape to that. icon_state = "vape" @@ -1126,6 +1126,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM greyscale_colors = "#2e2e2e" inhand_icon_state = null w_class = WEIGHT_CLASS_TINY + slot_flags = ITEM_SLOT_MASK flags_1 = IS_PLAYER_COLORABLE_1 /// The capacity of the vape. @@ -1139,16 +1140,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM /// Whether the vape has been overloaded to spread smoke. var/super = FALSE -/obj/item/clothing/mask/vape/Initialize(mapload) +/obj/item/vape/Initialize(mapload) . = ..() create_reagents(chem_volume, NO_REACT) reagents.add_reagent(/datum/reagent/drug/nicotine, 50) -/obj/item/clothing/mask/vape/suicide_act(mob/living/user) +/obj/item/vape/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is puffin hard on dat vape, [user.p_they()] trying to join the vape life on a whole notha plane!"))//it doesn't give you cancer, it is cancer return (TOXLOSS|OXYLOSS) -/obj/item/clothing/mask/vape/screwdriver_act(mob/living/user, obj/item/tool) +/obj/item/vape/screwdriver_act(mob/living/user, obj/item/tool) if(!screw) screw = TRUE to_chat(user, span_notice("You open the cap on [src].")) @@ -1169,7 +1170,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = initial(icon_state) set_greyscale(new_config = initial(greyscale_config)) -/obj/item/clothing/mask/vape/multitool_act(mob/living/user, obj/item/tool) +/obj/item/vape/multitool_act(mob/living/user, obj/item/tool) . = TRUE if(screw && !(obj_flags & EMAGGED))//also kinky if(!super) @@ -1186,7 +1187,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(screw && (obj_flags & EMAGGED)) to_chat(user, span_warning("[src] can't be modified!")) -/obj/item/clothing/mask/vape/emag_act(mob/user, obj/item/card/emag/emag_card) // I WON'T REGRET WRITTING THIS, SURLY. +/obj/item/vape/emag_act(mob/user, obj/item/card/emag/emag_card) // I WON'T REGRET WRITTING THIS, SURLY. if (!screw) balloon_alert(user, "open the cap first!") @@ -1206,12 +1207,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM sp.start() return TRUE -/obj/item/clothing/mask/vape/attack_self(mob/user) +/obj/item/vape/attack_self(mob/user) if(reagents.total_volume > 0) to_chat(user, span_notice("You empty [src] of all reagents.")) reagents.clear_reagents() -/obj/item/clothing/mask/vape/equipped(mob/user, slot) +/obj/item/vape/equipped(mob/user, slot) . = ..() if(!(slot & ITEM_SLOT_MASK)) return @@ -1224,13 +1225,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.flags &= ~(NO_REACT) START_PROCESSING(SSobj, src) -/obj/item/clothing/mask/vape/dropped(mob/user) +/obj/item/vape/dropped(mob/user) . = ..() if(user.get_item_by_slot(ITEM_SLOT_MASK) == src) reagents.flags |= NO_REACT STOP_PROCESSING(SSobj, src) -/obj/item/clothing/mask/vape/proc/handle_reagents() +/obj/item/vape/proc/handle_reagents() if(!reagents.total_volume) return @@ -1253,7 +1254,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!reagents.trans_to(vaper, REAGENTS_METABOLISM, methods = INGEST, ignore_stomach = TRUE)) reagents.remove_all(REAGENTS_METABOLISM) -/obj/item/clothing/mask/vape/process(seconds_per_tick) +/obj/item/vape/process(seconds_per_tick) var/mob/living/M = loc if(isliving(loc)) @@ -1292,34 +1293,34 @@ CIGARETTE PACKETS ARE IN FANCY.DM handle_reagents() -/obj/item/clothing/mask/vape/red +/obj/item/vape/red greyscale_colors = "#A02525" flags_1 = NONE -/obj/item/clothing/mask/vape/blue +/obj/item/vape/blue greyscale_colors = "#294A98" flags_1 = NONE -/obj/item/clothing/mask/vape/purple +/obj/item/vape/purple greyscale_colors = "#9900CC" flags_1 = NONE -/obj/item/clothing/mask/vape/green +/obj/item/vape/green greyscale_colors = "#3D9829" flags_1 = NONE -/obj/item/clothing/mask/vape/yellow +/obj/item/vape/yellow greyscale_colors = "#DAC20E" flags_1 = NONE -/obj/item/clothing/mask/vape/orange +/obj/item/vape/orange greyscale_colors = "#da930e" flags_1 = NONE -/obj/item/clothing/mask/vape/black +/obj/item/vape/black greyscale_colors = "#2e2e2e" flags_1 = NONE -/obj/item/clothing/mask/vape/white +/obj/item/vape/white greyscale_colors = "#DCDCDC" flags_1 = NONE diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index a36fa9d2c37d1..f4168b7b37747 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -1008,6 +1008,11 @@ /datum/stock_part/micro_laser = 1, /obj/item/stack/sheet/glass = 1) +/obj/item/circuitboard/machine/vatgrower + name = "Growing Vat" + greyscale_colors = CIRCUIT_COLOR_SCIENCE + build_path = /obj/machinery/vatgrower + /obj/item/circuitboard/machine/monkey_recycler name = "Monkey Recycler" greyscale_colors = CIRCUIT_COLOR_SCIENCE @@ -1637,3 +1642,30 @@ /datum/stock_part/servo = 1, /obj/item/stack/sheet/plasteel = 5, ) + +/obj/item/circuitboard/machine/scrubber + name = "Portable Air Scrubber" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/portable_atmospherics/scrubber + needs_anchored = FALSE + req_components = list( + /obj/item/pipe/directional/scrubber = 1, + ) + +/obj/item/circuitboard/machine/pump + name = "Portable Air Pump" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/portable_atmospherics/pump + needs_anchored = FALSE + req_components = list( + /obj/item/pipe/directional/vent = 1, + ) + +/obj/item/circuitboard/machine/pipe_scrubber + name = "Portable Pipe Scrubber" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/portable_atmospherics/pipe_scrubber + needs_anchored = FALSE + req_components = list( + /obj/item/pipe/trinary/flippable/filter = 1, + ) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 3b10f044fc3c2..3d817d24ccf2b 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -207,6 +207,15 @@ worn_icon_state = "horn_air" sound_file = 'sound/items/airhorn2.ogg' +/datum/crafting_recipe/airhorn + name = "Air Horn" + result = /obj/item/bikehorn/airhorn + reqs = list( + /obj/item/bikehorn = 1, + /obj/item/toy/crayon/spraycan = 1, + ) + category = CAT_ENTERTAINMENT + //golden bikehorn /obj/item/bikehorn/golden name = "golden bike horn" diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index b4fb604d4574a..9bc86d0c7f96b 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -763,8 +763,8 @@ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/improvised_coolant) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) register_context() @@ -831,6 +831,16 @@ . += "It is empty." . += span_notice("Alt-click [src] to [ is_capped ? "take the cap off" : "put the cap on"]. Right-click a colored object to match its existing color.") + +/obj/item/toy/crayon/spraycan/can_use_on(atom/target, mob/user, list/modifiers) + if(iscarbon(target)) + return TRUE + if(ismob(target) && (HAS_TRAIT(target, TRAIT_SPRAY_PAINTABLE))) + return TRUE + if(isobj(target) && !(target.flags_1 & UNPAINTABLE_1)) + return TRUE + return ..() + /obj/item/toy/crayon/spraycan/use_on(atom/target, mob/user, list/modifiers) if(is_capped) balloon_alert(user, "take the cap off first!") diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm index 0a944b300d423..071561d57a095 100644 --- a/code/game/objects/items/debug_items.dm +++ b/code/game/objects/items/debug_items.dm @@ -143,6 +143,10 @@ if("Wire Brush") tool_behaviour = TOOL_RUSTSCRAPER +/obj/item/debug/omnitool/item_spawner + name = "spawntool" + color = COLOR_ADMIN_PINK + /obj/item/debug/omnitool/item_spawner/attack_self(mob/user) if(!user || !user.client) return diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 871892558b9dc..dc68175cafc63 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -28,7 +28,7 @@ /// If the cell can be removed via screwdriver var/cell_removable = TRUE var/obj/item/shockpaddles/paddles - var/obj/item/stock_parts/power_store/cell + var/obj/item/stock_parts/power_store/cell/cell /// If true, revive through space suits, allow for combat shocking var/combat = FALSE /// How long does it take to recharge @@ -155,24 +155,27 @@ update_power() return TRUE -/obj/item/defibrillator/attackby(obj/item/W, mob/user, params) - if(W == paddles) +/obj/item/defibrillator/item_interaction(mob/living/user, obj/item/item, list/modifiers) + if(item == paddles) toggle_paddles() - else if(istype(W, /obj/item/stock_parts/power_store/cell)) - var/obj/item/stock_parts/power_store/cell/C = W - if(cell) - to_chat(user, span_warning("[src] already has a cell!")) - else - if(C.maxcharge < paddles.revivecost) - to_chat(user, span_notice("[src] requires a higher capacity cell.")) - return - if(!user.transferItemToLoc(W, src)) - return - cell = W - to_chat(user, span_notice("You install a cell in [src].")) - update_power() - else - return ..() + return NONE + if(!istype(item, /obj/item/stock_parts/power_store/cell)) + return NONE + + var/obj/item/stock_parts/power_store/cell/new_cell = item + if(!isnull(cell)) + to_chat(user, span_warning("[src] already has a cell!")) + return ITEM_INTERACT_BLOCKING + + if(new_cell.maxcharge < paddles.revivecost) + to_chat(user, span_notice("[src] requires a higher capacity cell.")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(new_cell, src)) + return NONE + cell = new_cell + to_chat(user, span_notice("You install a cell in [src].")) + update_power() + return ITEM_INTERACT_SUCCESS /obj/item/defibrillator/emag_act(mob/user, obj/item/card/emag/emag_card) @@ -314,11 +317,6 @@ cell = new /obj/item/stock_parts/power_store/cell/infinite(src) update_power() -/obj/item/defibrillator/compact/combat/loaded/attackby(obj/item/W, mob/user, params) - if(W == paddles) - toggle_paddles() - return - /obj/item/defibrillator/compact/combat/loaded/nanotrasen name = "elite Nanotrasen defibrillator" desc = "A belt-equipped state-of-the-art defibrillator. Can revive through thick clothing, has an experimental self-recharging battery, and can be utilized as a weapon via applying the paddles while in a combat stance." diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 67ec498a1fbc6..e684c1b4959e5 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -46,8 +46,8 @@ var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/flashlight_eyes) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -928,6 +928,7 @@ light_range = 4 light_power = 2 alpha = 0 + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE anchored = TRUE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 1e47fd8044d66..554db2beb5399 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -80,11 +80,11 @@ diode = null return TRUE -/obj/item/laser_pointer/item_interaction(mob/living/user, obj/item/tool, list/modifiers) +/obj/item/laser_pointer/tool_act(mob/living/user, obj/item/tool, list/modifiers) if(isnull(crystal_lens)) - return NONE + return ..() if(tool_behaviour != TOOL_WIRECUTTER && tool_behaviour != TOOL_HEMOSTAT) - return NONE + return ..() tool.play_tool_sound(src) balloon_alert(user, "removed crystal lens") crystal_lens.forceMove(drop_location()) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index ced454c3d3261..912e1d66b0929 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -116,9 +116,7 @@ // No subtypes if(type != /obj/item/radio) return - AddComponent(/datum/component/slapcrafting,\ - slapcraft_recipes = list(/datum/crafting_recipe/improv_explosive)\ - ) + AddElement(/datum/element/slapcrafting, string_list(list(/datum/crafting_recipe/improv_explosive))) RegisterSignal(src, COMSIG_HIT_BY_SABOTEUR, PROC_REF(on_saboteur)) diff --git a/code/game/objects/items/devices/scanners/gas_analyzer.dm b/code/game/objects/items/devices/scanners/gas_analyzer.dm index b1110e389a1db..f5fe29f9ed541 100644 --- a/code/game/objects/items/devices/scanners/gas_analyzer.dm +++ b/code/game/objects/items/devices/scanners/gas_analyzer.dm @@ -37,8 +37,8 @@ return var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/material_sniffer) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index 8fee497a4f9ee..dde01baac03ee 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -426,12 +426,12 @@ /obj/item/dnainjector/pressuremut name = "\improper DNA injector (Pressure Adaptation)" desc = "Gives you fire." - add_mutations = list(/datum/mutation/human/pressure_adaptation) + add_mutations = list(/datum/mutation/human/adaptation/pressure) /obj/item/dnainjector/antipressure name = "\improper DNA injector (Anti-Pressure Adaptation)" desc = "Cures fire." - remove_mutations = list(/datum/mutation/human/pressure_adaptation) + remove_mutations = list(/datum/mutation/human/adaptation/pressure) /obj/item/dnainjector/radioactive name = "\improper DNA injector (Radioactive)" @@ -500,12 +500,12 @@ /obj/item/dnainjector/firemut name = "\improper DNA injector (Temp Adaptation)" desc = "Gives you fire." - add_mutations = list(/datum/mutation/human/temperature_adaptation) + add_mutations = list(/datum/mutation/human/adaptation/thermal) /obj/item/dnainjector/antifire name = "\improper DNA injector (Anti-Temp Adaptation)" desc = "Cures fire." - remove_mutations = list(/datum/mutation/human/temperature_adaptation) + remove_mutations = list(/datum/mutation/human/adaptation/thermal) /obj/item/dnainjector/thermal name = "\improper DNA injector (Thermal Vision)" diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index ac309e275d77c..764e2fc6173bf 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -52,8 +52,8 @@ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/ghettojetpack) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -190,7 +190,7 @@ balloon_alert(user, "already full!") return TRUE // Make sure we're refilling with the proper chem. - if(!(target.reagents.has_reagent(chem))) + if(!(target.reagents.has_reagent(chem, check_subtypes = TRUE))) balloon_alert(user, "can't refill with this liquid!") return TRUE var/obj/structure/reagent_dispensers/W = target //will it work? diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index e2d587cd3594b..ad03fe9ab4f10 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -40,8 +40,8 @@ AddElement(/datum/element/update_icon_updates_onmob) var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/flamethrower) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/game/objects/items/food/pizza.dm b/code/game/objects/items/food/pizza.dm index 834484872d650..71dd87af8e183 100644 --- a/code/game/objects/items/food/pizza.dm +++ b/code/game/objects/items/food/pizza.dm @@ -127,6 +127,13 @@ foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT crafting_complexity = FOOD_COMPLEXITY_3 +/obj/item/food/pizzaslice/meat/pizzeria //Reward for pizzeria bitrunning domain + name = "pizzeria meatpizza slice" + desc = "An ostensibly nutritious slice of meatpizza from a long-closed pizzeria." + food_reagents = null + tastes = list("crust" = 1, "ketchup" = 1, "'cheese'" = 1, "mystery meat" = 1, "glue" = 1) + foodtypes = null + /obj/item/food/pizza/mushroom name = "mushroom pizza" desc = "Very special pizza." diff --git a/code/game/objects/items/food/sandwichtoast.dm b/code/game/objects/items/food/sandwichtoast.dm index e440a1039e6d1..47a7b563e0895 100644 --- a/code/game/objects/items/food/sandwichtoast.dm +++ b/code/game/objects/items/food/sandwichtoast.dm @@ -9,7 +9,7 @@ /datum/reagent/consumable/nutriment/vitamin = 1, ) tastes = list("meat" = 2, "cheese" = 1, "bread" = 2, "lettuce" = 1) - foodtypes = GRAIN | VEGETABLES + foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL crafting_complexity = FOOD_COMPLEXITY_3 diff --git a/code/game/objects/items/food/snacks.dm b/code/game/objects/items/food/snacks.dm index 1c3cb7736cec0..cb64c6df52204 100644 --- a/code/game/objects/items/food/snacks.dm +++ b/code/game/objects/items/food/snacks.dm @@ -157,7 +157,7 @@ /obj/item/food/candy_trash name = "candy cigarette butt" - icon = 'icons/obj/clothing/masks.dmi' + icon = 'icons/obj/cigarettes.dmi' icon_state = "candybum" desc = "The leftover from a smoked-out candy cigarette. Can be eaten!" food_reagents = list( diff --git a/code/game/objects/items/granters/crafting/fletching.dm b/code/game/objects/items/granters/crafting/fletching.dm new file mode 100644 index 0000000000000..e41c2f9acd121 --- /dev/null +++ b/code/game/objects/items/granters/crafting/fletching.dm @@ -0,0 +1,22 @@ + +/obj/item/book/granter/crafting_recipe/fletching + name = "Whittle Me This: Fletching for the Modern Spacer" + desc = "A how-to guide to crafting and maintaining wooden bows, fletching arrows, and... making violins?" + crafting_recipe_types = list( + /datum/crafting_recipe/arrow, + /datum/crafting_recipe/plastic_arrow, + /datum/crafting_recipe/shortbow, + /datum/crafting_recipe/holy_arrow, + /datum/crafting_recipe/arrow_quiver, + /datum/crafting_recipe/violin, + ) + icon_state = "book4" + uses = INFINITY + remarks = list( + "Okay, so the quality of the wood has some impact.", + "I feel like the violin chapter is in here as a joke, surely...", + "The author seems oddly proud about how many years they've been hunting in 'these parts'...", + "i really wish they'd stop with all the marriage euphemisms...", + "I need membership? Membership with what?", + "Okay, I think I get the point already...", + ) diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index 336c9e5e2eea7..49f66b06896b8 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -145,9 +145,8 @@ var/obj/item/thrown_weapon = bomb_target thrown_weapon.throw_speed = max(1, (thrown_weapon.throw_speed - 3)) thrown_weapon.throw_range = max(1, (thrown_weapon.throw_range - 3)) - if(thrown_weapon.embedding) - thrown_weapon.embedding["embed_chance"] = 0 - thrown_weapon.updateEmbedding() + if(thrown_weapon.get_embed()) + thrown_weapon.set_embed(thrown_weapon.get_embed().generate_with_values(embed_chance = 0)) else if(isliving(bomb_target)) plastic_overlay.layer = FLOAT_LAYER diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index d3e8bdd0ad88d..c5a68260abade 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -214,8 +214,8 @@ var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/bola, /datum/crafting_recipe/gonbola) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -537,6 +537,8 @@ gender = NEUTER ///Amount of time to knock the target down for once it's hit in deciseconds. var/knockdown = 0 + ///Reference of the mob we will attempt to snare + var/datum/weakref/ensnare_mob_ref /obj/item/restraints/legcuffs/bola/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, gentle = FALSE, quickstart = TRUE) if(!..()) @@ -546,21 +548,32 @@ /obj/item/restraints/legcuffs/bola/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(..() || !iscarbon(hit_atom))//if it gets caught or the target can't be cuffed, return//abort - ensnare(hit_atom) + //The mob has been hit, save the reference for ensnaring + ensnare_mob_ref = WEAKREF(hit_atom) + +/obj/item/restraints/legcuffs/bola/after_throw(datum/callback/callback) + . = ..() + if (isnull(ensnare_mob_ref)) + return + var/atom/ensnare_mob = ensnare_mob_ref.resolve() + if (!isnull(ensnare_mob)) + ensnare(ensnare_mob) + ensnare_mob_ref = null /** * Attempts to legcuff someone with the bola * * Arguments: - * * C - the carbon that we will try to ensnare + * * snared_mob - the carbon that we will try to ensnare */ -/obj/item/restraints/legcuffs/bola/proc/ensnare(mob/living/carbon/C) - if(!C.legcuffed && C.num_legs >= 2) - visible_message(span_danger("\The [src] ensnares [C]!"), span_userdanger("\The [src] ensnares you!")) - C.equip_to_slot(src, ITEM_SLOT_LEGCUFFED) - SSblackbox.record_feedback("tally", "handcuffs", 1, type) - C.Knockdown(knockdown) - playsound(src, 'sound/effects/snap.ogg', 50, TRUE) +/obj/item/restraints/legcuffs/bola/proc/ensnare(mob/living/carbon/snared_mob) + if(snared_mob.legcuffed || snared_mob.num_legs < 2) + return + visible_message(span_danger("\The [src] ensnares [snared_mob]!"), span_userdanger("\The [src] ensnares you!")) + snared_mob.equip_to_slot(src, ITEM_SLOT_LEGCUFFED) + SSblackbox.record_feedback("tally", "handcuffs", 1, type) + snared_mob.Knockdown(knockdown) + playsound(src, 'sound/effects/snap.ogg', 50, TRUE) /** * A traitor variant of the bola. diff --git a/code/game/objects/items/inducer.dm b/code/game/objects/items/inducer.dm index ea312fc0df848..d74bb7aa8d10e 100644 --- a/code/game/objects/items/inducer.dm +++ b/code/game/objects/items/inducer.dm @@ -11,13 +11,13 @@ var/power_transfer_multiplier = 1 var/opened = FALSE var/cell_type = /obj/item/stock_parts/power_store/battery/high - var/obj/item/stock_parts/power_store/cell + var/obj/item/stock_parts/power_store/powerdevice var/recharging = FALSE /obj/item/inducer/Initialize(mapload) . = ..() - if(!cell && cell_type) - cell = new cell_type + if(!powerdevice && cell_type) + powerdevice = new cell_type /obj/item/inducer/proc/induce(obj/item/stock_parts/power_store/target, coefficient) var/obj/item/stock_parts/power_store/our_cell = get_cell() @@ -30,7 +30,7 @@ target.update_appearance() /obj/item/inducer/get_cell() - return cell + return powerdevice /obj/item/inducer/emp_act(severity) . = ..() @@ -81,14 +81,14 @@ return /obj/item/inducer/attackby(obj/item/used_item, mob/user) - if(istype(used_item, /obj/item/stock_parts/power_store/cell)) + if(istype(used_item, /obj/item/stock_parts/power_store)) if(opened) var/obj/item/stock_parts/power_store/our_cell = get_cell() if(isnull(our_cell)) if(!user.transferItemToLoc(used_item, src)) return to_chat(user, span_notice("You insert [used_item] into [src].")) - cell = used_item + powerdevice = used_item update_appearance() return else @@ -158,11 +158,11 @@ /obj/item/inducer/attack_self(mob/user) - if(opened && cell) - user.visible_message(span_notice("[user] removes [cell] from [src]!"), span_notice("You remove [cell].")) - cell.update_appearance() - user.put_in_hands(cell) - cell = null + if(opened && powerdevice) + user.visible_message(span_notice("[user] removes [powerdevice] from [src]!"), span_notice("You remove [powerdevice].")) + powerdevice.update_appearance() + user.put_in_hands(powerdevice) + powerdevice = null update_appearance() diff --git a/code/game/objects/items/knives.dm b/code/game/objects/items/knives.dm index 622ee6592cb7a..1a16b08eb866b 100644 --- a/code/game/objects/items/knives.dm +++ b/code/game/objects/items/knives.dm @@ -21,7 +21,6 @@ attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") sharpness = SHARP_EDGED armor_type = /datum/armor/item_knife - var/bayonet = FALSE //Can this be attached to a gun? wound_bonus = 5 bare_wound_bonus = 15 tool_behaviour = TOOL_KNIFE @@ -125,14 +124,19 @@ icon_state = "buckknife" worn_icon_state = "buckknife" desc = "A military combat utility survival knife." - embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) + embed_type = /datum/embed_data/combat_knife force = 20 throwforce = 20 attack_verb_continuous = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "cuts") attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "cut") - bayonet = TRUE slot_flags = ITEM_SLOT_MASK +/datum/embed_data/combat_knife + pain_mult = 4 + embed_chance = 65 + fall_chance = 10 + ignore_throwspeed_threshold = TRUE + /obj/item/knife/combat/Initialize(mapload) . = ..() AddComponent(/datum/component/knockoff, 90, list(BODY_ZONE_PRECISE_MOUTH), slot_flags) //90% to knock off when wearing a mask @@ -157,11 +161,10 @@ icon = 'icons/obj/weapons/stabby.dmi' icon_state = "survivalknife" worn_icon_state = "survivalknife" - embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) + embed_type = /datum/embed_data/combat_knife/weak desc = "A hunting grade survival knife." force = 15 throwforce = 15 - bayonet = TRUE /obj/item/knife/combat/bone name = "bone dagger" @@ -172,13 +175,16 @@ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' desc = "A sharpened bone. The bare minimum in survival." - embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) + embed_type = /datum/embed_data/combat_knife/weak obj_flags = parent_type::obj_flags & ~CONDUCTS_ELECTRICITY slot_flags = NONE force = 15 throwforce = 15 custom_materials = null +/datum/embed_data/combat_knife/weak + embed_chance = 35 + /obj/item/knife/combat/cyborg name = "cyborg knife" icon = 'icons/obj/items_cyborg.dmi' diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm index eca126fc6aee0..253a40be69d54 100644 --- a/code/game/objects/items/melee/baton.dm +++ b/code/game/objects/items/melee/baton.dm @@ -339,6 +339,9 @@ ) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) +/obj/item/melee/baton/telescopic/additional_effects_non_cyborg(mob/living/target, mob/living/user) + target.apply_status_effect(/datum/status_effect/next_shove_stuns) + /obj/item/melee/baton/telescopic/suicide_act(mob/living/user) var/mob/living/carbon/human/human_user = user var/obj/item/organ/internal/brain/our_brain = human_user.get_organ_by_type(/obj/item/organ/internal/brain) @@ -401,6 +404,7 @@ return span_danger("The baton is still charging!") /obj/item/melee/baton/telescopic/contractor_baton/additional_effects_non_cyborg(mob/living/target, mob/living/user) + . = ..() target.set_jitter_if_lower(40 SECONDS) target.set_stutter_if_lower(40 SECONDS) diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 228f359729c31..dd70bd08c2161 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -113,13 +113,9 @@ SIGNAL_HANDLER if(active) - if(embedding) - updateEmbedding() heat = active_heat START_PROCESSING(SSobj, src) else - if(embedding) - disableEmbedding() heat = initial(heat) STOP_PROCESSING(SSobj, src) @@ -173,6 +169,10 @@ return (BRUTELOSS|FIRELOSS) /// Energy swords. +/datum/embed_data/esword + embed_chance = 75 + impact_pain_mult = 10 + /obj/item/melee/energy/sword name = "energy sword" desc = "May the force be within you." @@ -189,7 +189,7 @@ armour_penetration = 35 block_chance = 50 block_sound = 'sound/weapons/block_blade.ogg' - embedding = list("embed_chance" = 75, "impact_pain_mult" = 10) + embed_type = /datum/embed_data/esword /obj/item/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE) if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) diff --git a/code/game/objects/items/pillow.dm b/code/game/objects/items/pillow.dm index f1c96e2baa091..f699dd34b3bfa 100644 --- a/code/game/objects/items/pillow.dm +++ b/code/game/objects/items/pillow.dm @@ -37,8 +37,8 @@ /datum/crafting_recipe/pillow_suit, /datum/crafting_recipe/pillow_hood,\ ) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index 3a020ec5393ea..5d7fc1957f4f4 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -78,7 +78,7 @@ ///Called by update_icon after sanity. There is a target /obj/item/pinpointer/proc/get_direction_icon(here, there) - if(get_dist_euclidian(here,there) <= minimum_range) + if(get_dist_euclidean(here,there) <= minimum_range) return "pinon[alert ? "alert" : ""]direct[icon_suffix]" else setDir(get_dir(here, there)) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index c56e1eb7cdc15..35e4c7ff72e9f 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -676,7 +676,7 @@ ) AddElement(/datum/element/connect_loc, loc_connections) -/obj/item/toy/plush/goatplushie/attackby(obj/item/clothing/mask/cigarette/rollie/fat_dart, mob/user, params) +/obj/item/toy/plush/goatplushie/attackby(obj/item/cigarette/rollie/fat_dart, mob/user, params) if(!istype(fat_dart)) return ..() if(splat) diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index 1fabf13d31ac1..847254d2785ed 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -558,6 +558,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle/password/pin, 32) desc = "A board filled with colored dots. What could this mean?" icon = 'icons/obj/fluff/puzzle_small.dmi' icon_state = "puzzle_dots" + layer = ABOVE_NORMAL_TURF_LAYER plane = GAME_PLANE //visible over walls resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | UNACIDABLE | LAVA_PROOF flags_1 = UNPAINTABLE_1 diff --git a/code/game/objects/items/rcd/RPLD.dm b/code/game/objects/items/rcd/RPLD.dm index 8fc2da9520599..56452e2e452b1 100644 --- a/code/game/objects/items/rcd/RPLD.dm +++ b/code/game/objects/items/rcd/RPLD.dm @@ -38,7 +38,6 @@ /obj/machinery/plumbing/synthesizer = 15, /obj/machinery/plumbing/reaction_chamber/chem = 15, /obj/machinery/plumbing/grinder_chemical = 30, - /obj/machinery/plumbing/growing_vat = 20, /obj/machinery/plumbing/fermenter = 30, /obj/machinery/plumbing/liquid_pump = 35, //extracting chemicals from ground is one way of creation /obj/machinery/plumbing/disposer = 10, @@ -303,44 +302,6 @@ current_layer = GLOB.plumbing_layers[current_loc] to_chat(source, span_notice("You set the layer to [current_layer].")) -/obj/item/construction/plumbing/research - name = "research plumbing constructor" - desc = "A type of plumbing constructor designed to rapidly deploy the machines needed to conduct cytological research." - icon_state = "plumberer_sci" - inhand_icon_state = "plumberer_sci" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - ///Design types for research plumbing constructor - var/list/static/research_design_types = list( - //Category 1 Synthesizers - "Synthesizers" = list( - /obj/machinery/plumbing/reaction_chamber = 15, - /obj/machinery/plumbing/grinder_chemical = 30, - /obj/machinery/plumbing/disposer = 10, - /obj/machinery/plumbing/growing_vat = 20, - ), - - //Category 2 Distributors - "Distributors" = list( - /obj/machinery/duct = 1, - /obj/machinery/plumbing/input = 5, - /obj/machinery/plumbing/filter = 5, - /obj/machinery/plumbing/splitter = 5, - /obj/machinery/plumbing/output = 5, - ), - - //Category 3 storage - "Storage" = list( - /obj/machinery/plumbing/tank = 20, - /obj/machinery/plumbing/acclimator = 10, - ), - ) - -/obj/item/construction/plumbing/research/Initialize(mapload) - plumbing_design_types = research_design_types - - . = ..() - /obj/item/construction/plumbing/service name = "service plumbing constructor" desc = "A type of plumbing constructor designed to rapidly deploy the machines needed to make a brewery." diff --git a/code/game/objects/items/rcd/RSF.dm b/code/game/objects/items/rcd/RSF.dm index b267ecd05cf14..ef0be22acc476 100644 --- a/code/game/objects/items/rcd/RSF.dm +++ b/code/game/objects/items/rcd/RSF.dm @@ -45,7 +45,7 @@ RSF /obj/item/toy/cards/deck = 200, /obj/item/paper = 10, /obj/item/pen = 50, - /obj/item/clothing/mask/cigarette = 10, + /obj/item/cigarette = 10, ) ///An associated list of fuel and it's value var/list/matter_by_item = list(/obj/item/rcd_ammo = 10,) diff --git a/code/game/objects/items/robot/items/food.dm b/code/game/objects/items/robot/items/food.dm index 6e9b2143d12b6..865e5c792e56b 100644 --- a/code/game/objects/items/robot/items/food.dm +++ b/code/game/objects/items/robot/items/food.dm @@ -186,7 +186,7 @@ icon_state = "gumball" damage = 0 speed = 0.5 - embedding = null + embed_type = null /obj/projectile/bullet/gumball/Initialize(mapload) . = ..() @@ -219,29 +219,30 @@ icon_state = "lollipop_1" damage = 0 speed = 0.5 - embedding = null + embed_type = null var/head_color /obj/projectile/bullet/lollipop/harmful - embedding = list( - embed_chance = 35, - fall_chance = 2, - jostle_chance = 0, - ignore_throwspeed_threshold = TRUE, - pain_stam_pct = 0.5, - pain_mult = 3, - rip_time = 10, - ) + embed_type = /datum/embed_data/lollipop damage = 10 shrapnel_type = /obj/item/food/lollipop/cyborg embed_falloff_tile = 0 +/datum/embed_data/lollipop + embed_chance = 35 + fall_chance = 2 + jostle_chance = 0 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.5 + pain_mult = 3 + rip_time = 10 + /obj/projectile/bullet/lollipop/Initialize(mapload) . = ..() var/mutable_appearance/head = mutable_appearance('icons/obj/weapons/guns/projectiles.dmi', "lollipop_2") head.color = head_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) add_overlay(head) - if(!embedding) + if(!embed_type) AddElement(/datum/element/projectile_drop, /obj/item/food/lollipop/cyborg) RegisterSignals(src, list(COMSIG_PROJECTILE_ON_SPAWN_DROP, COMSIG_PROJECTILE_ON_SPAWN_EMBEDDED), PROC_REF(handle_drop)) diff --git a/code/game/objects/items/robot/items/tools.dm b/code/game/objects/items/robot/items/tools.dm index 8cdf65a431a6a..f16cd0844901d 100644 --- a/code/game/objects/items/robot/items/tools.dm +++ b/code/game/objects/items/robot/items/tools.dm @@ -1,7 +1,5 @@ #define PKBORG_DAMPEN_CYCLE_DELAY (2 SECONDS) #define POWER_RECHARGE_CYBORG_DRAIN_MULTIPLIER (0.0004 * STANDARD_CELL_RATE) -#define NO_TOOL "deactivated" -#define TOOL_DRAPES "surgical_drapes" /obj/item/cautery/prt //it's a subtype of cauteries so that it inherits the cautery sprites and behavior and stuff, because I'm too lazy to make sprites for this thing name = "plating repair tool" @@ -176,147 +174,138 @@ projectile.speed *= (1 / projectile_speed_coefficient) projectile.cut_overlay(projectile_effect) -////////////////////// -///CYBORG OMNITOOLS/// -////////////////////// - -/** - Onmi Toolboxs act as a cache of tools for a particular borg's omnitools. Not all borg - get a toolbox (as not all borgs use omnitools), and those that do can only have one - toolbox. The toolbox keeps track of a borg's omnitool arms, and handles speed upgrades. - - Omnitools are the actual tool arms for the cyborg to interact with. When attack_self - is called, they can select a tool from the toolbox. The tool is not moved, and instead - only referenced in place of the omnitool's own attacks. The omnitool also takes on - the tool's sprite, which completes the illusion. In this way, multiple tools are - shared between multiple omnitool arms. A multitool's buffer, for example, will not - depend on which omnitool arm was used to set it. -*/ -/obj/item/cyborg_omnitoolbox - name = "broken cyborg toolbox" - desc = "Some internal part of a broken cyborg." +//bare minimum omni-toolset for modularity +/obj/item/borg/cyborg_omnitool + name = "cyborg omni-toolset" + desc = "You shouldn't see this in-game normally." icon = 'icons/mob/silicon/robot_items.dmi' - icon_state = "lollipop" - toolspeed = 10 - ///List of Omnitool "arms" that the borg has. - var/list/omnitools = list() - ///List of paths for tools. These will be created during Initialize() - var/list/toolpaths = list() - ///Target Toolspeed to set after reciving an omnitool upgrade - var/upgraded_toolspeed = 10 - ///Whether we currently have the upgraded speed - var/currently_upgraded = FALSE - -/obj/item/cyborg_omnitoolbox/Initialize(mapload) - . = ..() - if(!toolpaths.len) - return - - var/obj/item/newitem - for(var/newpath in toolpaths) - newitem = new newpath(src) - newitem.toolspeed = toolspeed //In case thse have different base speeds as stand-alone tools on other borgs - ADD_TRAIT(newitem, TRAIT_NODROP, CYBORG_ITEM_TRAIT) + icon_state = "toolkit_medborg" -/obj/item/cyborg_omnitoolbox/proc/set_upgrade(upgrade = FALSE) - for(var/obj/item/tool in contents) - if(upgrade) - tool.toolspeed = upgraded_toolspeed - else - tool.toolspeed = toolspeed - currently_upgraded = upgrade + ///our tools (list of item typepaths) + var/list/obj/item/omni_toolkit = list() + ///Map of solid objects internally used by the omni tool + var/list/obj/item/atoms = list() + ///object we are referencing to for force, sharpness and sound + var/obj/item/reference + //is the toolset upgraded or not + var/upgraded = FALSE + +/obj/item/borg/cyborg_omnitool/Destroy(force) + for(var/obj/item/tool_path as anything in atoms) + var/obj/item/tool = atoms[tool_path] + if(!QDELETED(tool)) //if we are sharing tools from our other omnitool brothers we don't want to re delete them if they got deleted first + qdel(tool) + atoms.Cut() -/obj/item/cyborg_omnitoolbox/engineering - toolspeed = 0.5 - upgraded_toolspeed = 0.3 - toolpaths = list( - /obj/item/wrench/cyborg, - /obj/item/wirecutters/cyborg, - /obj/item/screwdriver/cyborg, - /obj/item/crowbar/cyborg, - /obj/item/multitool/cyborg, - ) - -/obj/item/cyborg_omnitoolbox/medical - toolspeed = 1 - upgraded_toolspeed = 0.7 - toolpaths = list( - /obj/item/scalpel/cyborg, - /obj/item/surgicaldrill/cyborg, - /obj/item/hemostat/cyborg, - /obj/item/retractor/cyborg, - /obj/item/cautery/cyborg, - /obj/item/circular_saw/cyborg, - /obj/item/bonesetter/cyborg, - ) + return ..() -/obj/item/borg/cyborg_omnitool - name = "broken cyborg tool arm" - desc = "Some internal part of a broken cyborg." - icon = 'icons/mob/silicon/robot_items.dmi' - icon_state = "lollipop" - ///Ref to the toolbox, since our own loc will be changing - var/obj/item/cyborg_omnitoolbox/toolbox - ///Ref to currently selected tool, if any - var/obj/item/selected +/obj/item/borg/cyborg_omnitool/get_all_tool_behaviours() + . = list() + for(var/obj/item/tool as anything in omni_toolkit) + . += initial(tool.tool_behaviour) + +///The omnitool interacts with real world objects based on the state it has assumed +/obj/item/borg/cyborg_omnitool/get_proxy_attacker_for(atom/target, mob/user) + if(!reference) + return src + + //first check if we have the tool + var/obj/item/tool = atoms[reference] + if(!QDELETED(tool)) + return tool + + //else try to borrow an in-built tool from our other omnitool brothers to save & share memory & such + var/mob/living/silicon/robot/borg = user + for(var/obj/item/borg/cyborg_omnitool/omni_tool in borg.model.basic_modules) + if(omni_tool == src) + continue + tool = omni_tool.atoms[reference] + if(!QDELETED(tool)) + atoms[reference] = tool + return tool -/obj/item/borg/cyborg_omnitool/Initialize(mapload) - . = ..() - if(!iscyborg(loc.loc)) - return - var/obj/item/robot_model/model = loc - var/obj/item/cyborg_omnitoolbox/chassis_toolbox = model.toolbox - if(!chassis_toolbox) - return - toolbox = chassis_toolbox - toolbox.omnitools += src + //if all else fails just make a new one from scratch + tool = new reference(user) + ADD_TRAIT(tool, TRAIT_NODROP, CYBORG_ITEM_TRAIT) + atoms[reference] = tool + return tool /obj/item/borg/cyborg_omnitool/attack_self(mob/user) + //build the radial menu options var/list/radial_menu_options = list() - for(var/obj/item/borgtool in toolbox.contents) - radial_menu_options[borgtool] = image(icon = borgtool.icon, icon_state = borgtool.icon_state) - var/obj/item/potential_new_tool = show_radial_menu(user, src, radial_menu_options, require_near = TRUE, tooltips = TRUE) - if(!potential_new_tool) - return ..() - if(potential_new_tool == selected) - return ..() - for(var/obj/item/borg/cyborg_omnitool/coworker in toolbox.omnitools) - if(coworker.selected == potential_new_tool) - coworker.deselect() //Can I borrow that please - break - selected = potential_new_tool - icon_state = selected.icon_state - playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE) - return ..() + for(var/obj/item/tool as anything in omni_toolkit) + radial_menu_options[initial(tool.tool_behaviour)] = image(icon = initial(tool.icon), icon_state = initial(tool.icon_state)) -/obj/item/borg/cyborg_omnitool/proc/deselect() - if(!selected) + //assign the new tool behaviour + var/new_tool_behaviour = show_radial_menu(user, src, radial_menu_options, require_near = TRUE, tooltips = TRUE) + if(isnull(new_tool_behaviour) || new_tool_behaviour == tool_behaviour) return - selected = null + tool_behaviour = new_tool_behaviour + + //set the reference & update icons + for(var/obj/item/tool as anything in omni_toolkit) + if(initial(tool.tool_behaviour) == new_tool_behaviour) + reference = tool + update_appearance(UPDATE_ICON_STATE) + playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE) + break + +/obj/item/borg/cyborg_omnitool/update_icon_state() icon_state = initial(icon_state) - playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE) -/obj/item/borg/cyborg_omnitool/cyborg_unequip() - deselect() - return ..() + if (tool_behaviour) + icon_state += "_[sanitize_css_class_name(tool_behaviour)]" -/obj/item/borg/cyborg_omnitool/pre_attack(atom/atom, mob/living/user, params) - if(selected) - selected.melee_attack_chain(user, atom, params) - return TRUE return ..() +/** + * Is this omni tool upgraded or not + * Arguments + * + * * upgrade - TRUE/FALSE for upgraded + */ +/obj/item/borg/cyborg_omnitool/proc/set_upgraded(upgrade) + upgraded = upgraded + + playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE) + +/obj/item/borg/cyborg_omnitool/medical + name = "surgical omni-toolset" + desc = "A set of surgical tools used by cyborgs to operate on various surgical operations." + + omni_toolkit = list( + /obj/item/surgical_drapes/cyborg, + /obj/item/scalpel/cyborg, + /obj/item/surgicaldrill/cyborg, + /obj/item/hemostat/cyborg, + /obj/item/retractor/cyborg, + /obj/item/cautery/cyborg, + /obj/item/circular_saw/cyborg, + /obj/item/bonesetter/cyborg, + ) + +//Toolset for engineering cyborgs, this is all of the tools except for the welding tool. since it's quite hard to implement (read:can't be arsed to) /obj/item/borg/cyborg_omnitool/engineering name = "engineering omni-toolset" desc = "A set of engineering tools used by cyborgs to conduct various engineering tasks." + icon = 'icons/obj/items_cyborg.dmi' icon_state = "toolkit_engiborg" -/obj/item/borg/cyborg_omnitool/medical - name = "surgical omni-toolset" - desc = "A set of surgical tools used by cyborgs to operate on various surgical operations." - icon_state = "toolkit_medborg" + omni_toolkit = list( + /obj/item/wrench/cyborg, + /obj/item/wirecutters/cyborg, + /obj/item/screwdriver/cyborg, + /obj/item/crowbar/cyborg, + /obj/item/multitool/cyborg, + ) + +/obj/item/borg/cyborg_omnitool/engineering/examine(mob/user) + . = ..() + + if(tool_behaviour == TOOL_MULTITOOL) + for(var/obj/item/multitool/tool in atoms) + . += "Its multitool buffer contains [tool.buffer]" + break #undef PKBORG_DAMPEN_CYCLE_DELAY #undef POWER_RECHARGE_CYBORG_DRAIN_MULTIPLIER -#undef NO_TOOL -#undef TOOL_DRAPES diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 84de0c577c32a..6fa32ae31e29b 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -421,22 +421,28 @@ model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/syndicate_medical) model_flags = BORG_MODEL_MEDICAL + items_to_add = list(/obj/item/healthanalyzer/advanced) + items_to_remove = list(/obj/item/healthanalyzer) + /obj/item/borg/upgrade/surgery_omnitool/action(mob/living/silicon/robot/cyborg, mob/living/user = usr) . = ..() if(!.) return . - if(cyborg.model.toolbox.currently_upgraded) - to_chat(user, span_warning("This unit is already equipped with an omnitool upgrade!")) - return FALSE - cyborg.model.toolbox.set_upgrade(TRUE) ADD_TRAIT(cyborg, TRAIT_FASTMED, REF(src)) + for(var/obj/item/borg/cyborg_omnitool/medical/omnitool_upgrade in cyborg.model.modules) + if(omnitool_upgrade.upgraded) + to_chat(user, span_warning("This unit is already equipped with an omnitool upgrade!")) + return FALSE + for(var/obj/item/borg/cyborg_omnitool/medical/omnitool in cyborg.model.modules) + omnitool.set_upgraded(TRUE) /obj/item/borg/upgrade/surgery_omnitool/deactivate(mob/living/silicon/robot/cyborg, mob/living/user = usr) . = ..() if(!.) return . - cyborg.model.toolbox.set_upgrade(FALSE) REMOVE_TRAIT(cyborg, TRAIT_FASTMED, REF(src)) + for(var/obj/item/borg/cyborg_omnitool/omnitool in cyborg.model.modules) + omnitool.set_upgraded(FALSE) /obj/item/borg/upgrade/engineering_omnitool name = "cyborg engineering omni-tool upgrade" @@ -451,16 +457,19 @@ . = ..() if(!.) return . - if(cyborg.model.toolbox.currently_upgraded) - to_chat(user, span_warning("This unit is already equipped with an omnitool upgrade!")) - return FALSE - cyborg.model.toolbox.set_upgrade(TRUE) + for(var/obj/item/borg/cyborg_omnitool/engineering/omnitool_upgrade in cyborg.model.modules) + if(omnitool_upgrade.upgraded) + to_chat(user, span_warning("This unit is already equipped with an omnitool upgrade!")) + return FALSE + for(var/obj/item/borg/cyborg_omnitool/engineering/omnitool in cyborg.model.modules) + omnitool.set_upgraded(TRUE) /obj/item/borg/upgrade/engineering_omnitool/deactivate(mob/living/silicon/robot/cyborg, mob/living/user = usr) . = ..() if(!.) return . - cyborg.model.toolbox.set_upgrade(FALSE) + for(var/obj/item/borg/cyborg_omnitool/omnitool in cyborg.model.modules) + omnitool.set_upgraded(FALSE) /obj/item/borg/upgrade/defib name = "medical cyborg defibrillator" diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 2cc41b5d9f266..1553f0e9c8f29 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -145,8 +145,8 @@ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/strobeshield) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/game/objects/items/shrapnel.dm b/code/game/objects/items/shrapnel.dm index 9b024cfbb97a2..701a0a819d002 100644 --- a/code/game/objects/items/shrapnel.dm +++ b/code/game/objects/items/shrapnel.dm @@ -17,8 +17,7 @@ name = "bullet" icon = 'icons/obj/weapons/guns/ammo.dmi' icon_state = "s-casing" - embedding = null // embedding vars are taken from the projectile itself - + embed_type = null /obj/projectile/bullet/shrapnel name = "flying shrapnel shard" @@ -34,7 +33,12 @@ ignore_range_hit_prone_targets = TRUE sharpness = SHARP_EDGED wound_bonus = 30 - embedding = list(embed_chance=70, ignore_throwspeed_threshold=TRUE, fall_chance=1) + embed_type = /datum/embed_data/shrapnel + +/datum/embed_data/shrapnel + embed_chance = 70 + ignore_throwspeed_threshold = TRUE + fall_chance = 1 /obj/projectile/bullet/shrapnel/short_range range = 5 @@ -70,7 +74,17 @@ ricochet_incidence_leeway = 0 embed_falloff_tile = -2 shrapnel_type = /obj/item/shrapnel/stingball - embedding = list(embed_chance=55, fall_chance=2, jostle_chance=7, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.7, pain_mult=3, jostle_pain_mult=3, rip_time=15) + embed_type = /datum/embed_data/stingball + +/datum/embed_data/stingball + embed_chance = 55 + fall_chance = 2 + jostle_chance = 7 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.7 + pain_mult = 3 + jostle_pain_mult = 3 + rip_time = 15 /obj/projectile/bullet/pellet/stingball/on_ricochet(atom/A) hit_prone_targets = TRUE // ducking will save you from the first wave, but not the rebounds @@ -92,10 +106,20 @@ ricochets_max = 2 ricochet_chance = 140 shrapnel_type = /obj/item/shrapnel/capmine - embedding = list(embed_chance=90, fall_chance=3, jostle_chance=7, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.7, pain_mult=5, jostle_pain_mult=6, rip_time=15) + embed_type = /datum/embed_data/capmine wound_falloff_tile = 0 embed_falloff_tile = 0 +/datum/embed_data/capmine + embed_chance = 90 + fall_chance = 3 + jostle_chance = 7 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.7 + pain_mult = 5 + jostle_pain_mult = 6 + rip_time = 15 + /obj/item/shrapnel/capmine name = "\improper AP shrapnel shard" custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5) diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm index 66e96bcab4b83..96fbde554b79e 100644 --- a/code/game/objects/items/spear.dm +++ b/code/game/objects/items/spear.dm @@ -12,7 +12,7 @@ throwforce = 20 throw_speed = 4 demolition_mod = 0.75 - embedding = list("impact_pain_mult" = 2, "remove_pain_mult" = 4, "jostle_chance" = 2.5) + embed_type = /datum/embed_data/spear armour_penetration = 10 custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass= HALF_SHEET_MATERIAL_AMOUNT * 2) hitsound = 'sound/weapons/bladeslice.ogg' @@ -32,6 +32,11 @@ /// How much damage to do wielded var/force_wielded = 18 +/datum/embed_data/spear + impact_pain_mult = 2 + remove_pain_mult = 4 + jostle_chance = 2.5 + /datum/armor/item_spear fire = 50 acid = 30 @@ -61,8 +66,8 @@ /obj/item/spear/proc/add_headpike_component() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/headpike) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -231,8 +236,8 @@ /obj/item/spear/military/add_headpike_component() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/headpikemilitary) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -255,8 +260,8 @@ /obj/item/spear/bonespear/add_headpike_component() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/headpikebone) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -279,7 +284,7 @@ /obj/item/spear/bamboospear/add_headpike_component() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/headpikebamboo) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 82f19d09d9692..5a8e1361c28c3 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -33,13 +33,16 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ attack_verb_continuous = list("hits", "bludgeons", "whacks") attack_verb_simple = list("hit", "bludgeon", "whack") hitsound = 'sound/weapons/gun/general/grenade_launch.ogg' - embedding = list(embed_chance = 50) + embed_type = /datum/embed_data/rods novariants = TRUE matter_amount = 2 cost = HALF_SHEET_MATERIAL_AMOUNT source = /datum/robot_energy_storage/material/iron merge_type = /obj/item/stack/rods +/datum/embed_data/rods + embed_chance = 50 + /obj/item/stack/rods/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] begins to stuff \the [src] down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide!"))//it looks like theyre ur mum return BRUTELOSS @@ -58,8 +61,8 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/spear, /datum/crafting_recipe/stunprod, /datum/crafting_recipe/teleprod) // snatcher prod isn't here as a spoopy secret - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 59196639ffeba..a9d71fa127abb 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -293,7 +293,16 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( var/shiv_type = /obj/item/knife/shiv var/craft_time = 3.5 SECONDS var/obj/item/stack/sheet/weld_material = /obj/item/stack/sheet/glass - embedding = list("embed_chance" = 65) + embed_type = /datum/embed_data/shard + +/datum/embed_data/shard + embed_chance = 65 + +/datum/embed_data/glass_candy + embed_chance = 100 + ignore_throwspeed_threshold = TRUE + impact_pain_mult = 1 + pain_chance = 5 /datum/armor/item_shard melee = 100 diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 2d1636e9e165a..fbd69dbd20d4b 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -251,8 +251,8 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \ /datum/crafting_recipe/goliathcloak, /datum/crafting_recipe/skilt, /datum/crafting_recipe/drakecloak,\ ) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -311,8 +311,8 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/drakecloak) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index c969b1dbe50cc..0d4393efea6a4 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -367,7 +367,7 @@ GLOBAL_LIST_INIT(snow_recipes, list ( \ GLOBAL_LIST_INIT(adamantine_recipes, list( - new /datum/stack_recipe("incomplete servant golem shell", /obj/item/golem_shell/servant, req_amount=1, res_amount=1, category = CAT_ROBOT), + new /datum/stack_recipe("incomplete servant golem shell", /obj/item/golem_shell/servant, req_amount=3, res_amount=1, category = CAT_ROBOT), )) /obj/item/stack/sheet/mineral/adamantine diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 662f94c61d5e1..0ec790fe74349 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -87,9 +87,9 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("wall girders (anchored)", /obj/structure/girder, 2, time = 4 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, placement_checks = STACK_CHECK_TRAM_FORBIDDEN, trait_booster = TRAIT_QUICK_BUILD, trait_modifier = 0.75, category = CAT_STRUCTURE), \ null, \ null, \ - new/datum/stack_recipe("computer frame", /obj/structure/frame/computer, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_EQUIPMENT), \ - new/datum/stack_recipe("modular console", /obj/machinery/modular_computer, 10, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_EQUIPMENT), \ - new/datum/stack_recipe("machine frame", /obj/structure/frame/machine, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_EQUIPMENT), \ + new/datum/stack_recipe("computer frame", /obj/structure/frame/computer, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("modular console", /obj/machinery/modular_computer, 10, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("machine frame", /obj/structure/frame/machine, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), \ null, \ new /datum/stack_recipe_list("airlock assemblies", list( \ new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_DOORS), \ @@ -113,24 +113,37 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ )), \ null, \ new/datum/stack_recipe("firelock frame", /obj/structure/firelock_frame, 3, time = 5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_DOORS), \ - new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_EQUIPMENT), \ - new/datum/stack_recipe("meatspike frame", /obj/structure/kitchenspike_frame, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_EQUIPMENT), \ - new/datum/stack_recipe("reflector frame", /obj/structure/reflector, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_EQUIPMENT), \ + new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("meatspike frame", /obj/structure/kitchenspike_frame, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("reflector frame", /obj/structure/reflector, 5, time = 2.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), \ null, \ new/datum/stack_recipe("grenade casing", /obj/item/grenade/chem_grenade, crafting_flags = NONE, category = CAT_CHEMISTRY), \ - new/datum/stack_recipe("light fixture frame", /obj/item/wallframe/light_fixture, 2, crafting_flags = NONE, category = CAT_EQUIPMENT), \ - new/datum/stack_recipe("small light fixture frame", /obj/item/wallframe/light_fixture/small, 1, crafting_flags = NONE, category = CAT_EQUIPMENT), \ + new/datum/stack_recipe("light fixture frame", /obj/item/wallframe/light_fixture, 2, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("small light fixture frame", /obj/item/wallframe/light_fixture/small, 1, crafting_flags = NONE, category = CAT_STRUCTURE), \ null, \ - new/datum/stack_recipe("apc frame", /obj/item/wallframe/apc, 2, crafting_flags = NONE, category = CAT_EQUIPMENT), \ - new/datum/stack_recipe("air alarm frame", /obj/item/wallframe/airalarm, 2, crafting_flags = NONE, category = CAT_EQUIPMENT), \ - new/datum/stack_recipe("fire alarm frame", /obj/item/wallframe/firealarm, 2, crafting_flags = NONE, category = CAT_EQUIPMENT), \ - new/datum/stack_recipe("extinguisher cabinet frame", /obj/item/wallframe/extinguisher_cabinet, 2, crafting_flags = NONE, category = CAT_EQUIPMENT), \ - new/datum/stack_recipe("button frame", /obj/item/wallframe/button, 1, crafting_flags = NONE, category = CAT_EQUIPMENT), \ + new/datum/stack_recipe("apc frame", /obj/item/wallframe/apc, 2, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("air alarm frame", /obj/item/wallframe/airalarm, 2, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("fire alarm frame", /obj/item/wallframe/firealarm, 2, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("extinguisher cabinet frame", /obj/item/wallframe/extinguisher_cabinet, 2, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("button frame", /obj/item/wallframe/button, 1, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("light switch frame", /obj/item/wallframe/light_switch, 1, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("sparker frame", /obj/item/wallframe/sparker, 1, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("turret control frame", /obj/item/wallframe/turret_control, 6, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("camera assembly", /obj/item/wallframe/camera, 1, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("newscaster frame", /obj/item/wallframe/newscaster, 7, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("status display frame", /obj/item/wallframe/status_display, 7, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("intercom frame", /obj/item/wallframe/intercom, 2, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("requests console frame", /obj/item/wallframe/requests_console, 7, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("telescreen turbine frame", /obj/item/wallframe/telescreen/turbine, 7, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("telescreen engine frame", /obj/item/wallframe/telescreen/engine, 7, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("telescreen auxbase frame", /obj/item/wallframe/telescreen/auxbase, 7, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("tram controller frame", /obj/item/wallframe/tram/controller, 20, crafting_flags = NONE, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("tram display frame", /obj/item/wallframe/indicator_display, 7, crafting_flags = NONE, category = CAT_STRUCTURE), \ null, \ new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, time = 5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND | CRAFT_APPLIES_MATS, category = CAT_DOORS), \ new/datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 2, time = 10 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_FURNITURE), \ new/datum/stack_recipe("desk bell", /obj/structure/desk_bell, 2, time = 3 SECONDS, crafting_flags = NONE, category = CAT_FURNITURE), \ - new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_EQUIPMENT), \ + new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), \ new/datum/stack_recipe("voting box", /obj/structure/votebox, 15, time = 5 SECONDS, crafting_flags = NONE, category = CAT_ENTERTAINMENT), \ new/datum/stack_recipe("pestle", /obj/item/pestle, 1, time = 5 SECONDS, crafting_flags = NONE, category = CAT_CHEMISTRY), \ new/datum/stack_recipe("hygienebot assembly", /obj/item/bot_assembly/hygienebot, 2, time = 5 SECONDS, crafting_flags = NONE, category = CAT_ROBOT), \ @@ -326,7 +339,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 5 SECONDS, crafting_flags = NONE, category = CAT_TOOLS),\ new/datum/stack_recipe("mannequin", /obj/structure/mannequin/wood, 25, time = 5 SECONDS, crafting_flags = CRAFT_ONE_PER_TURF, category = CAT_ENTERTAINMENT), \ new/datum/stack_recipe("tiki mask", /obj/item/clothing/mask/gas/tiki_mask, 2, crafting_flags = NONE, category = CAT_CLOTHING), \ - new/datum/stack_recipe("smoking pipe", /obj/item/clothing/mask/cigarette/pipe, 2, crafting_flags = NONE, category = CAT_CLOTHING), \ + new/datum/stack_recipe("smoking pipe", /obj/item/cigarette/pipe, 2, crafting_flags = NONE, category = CAT_CLOTHING), \ new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 1 SECONDS, crafting_flags = NONE, category = CAT_TOOLS),\ new/datum/stack_recipe("wooden bucket", /obj/item/reagent_containers/cup/bucket/wooden, 3, time = 1 SECONDS, crafting_flags = NONE, category = CAT_CONTAINERS),\ new/datum/stack_recipe("rake", /obj/item/cultivator/rake, 5, time = 1 SECONDS, crafting_flags = NONE, category = CAT_TOOLS),\ @@ -536,8 +549,8 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/durathread_helmet, /datum/crafting_recipe/durathread_vest) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -670,8 +683,8 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/cardboard_id) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -811,8 +824,8 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ /datum/crafting_recipe/skullhelm, ) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) GLOBAL_LIST_INIT(plastic_recipes, list( diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 4258465f3a07e..c748ba4c494a1 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -426,6 +426,7 @@ if(created) created.setDir(builder.dir) + SEND_SIGNAL(created, COMSIG_ATOM_CONSTRUCTED, builder) on_item_crafted(builder, created) // Use up the material diff --git a/code/game/objects/items/stacks/tape.dm b/code/game/objects/items/stacks/tape.dm index 57aa666c046ab..0e054ba8d1062 100644 --- a/code/game/objects/items/stacks/tape.dm +++ b/code/game/objects/items/stacks/tape.dm @@ -14,12 +14,17 @@ grind_results = list(/datum/reagent/cellulose = 5) splint_factor = 0.65 merge_type = /obj/item/stack/sticky_tape - var/list/conferred_embed = EMBED_HARMLESS + var/conferred_embed = /datum/embed_data/sticky_tape ///The tape type you get when ripping off a piece of tape. var/obj/tape_gag = /obj/item/clothing/mask/muzzle/tape greyscale_config = /datum/greyscale_config/tape greyscale_colors = "#B2B2B2#BD6A62" +/datum/embed_data/sticky_tape + pain_mult = 0 + jostle_pain_mult = 0 + ignore_throwspeed_threshold = 0 + /obj/item/stack/sticky_tape/attack_hand(mob/user, list/modifiers) if(user.get_inactive_held_item() == src) if(is_zero_amount(delete_if_zero = TRUE)) @@ -43,7 +48,7 @@ if(!isitem(target)) return NONE - if(target.embedding && target.embedding == conferred_embed) + if(target.get_embed()?.type == conferred_embed) to_chat(user, span_warning("[target] is already coated in [src]!")) return ITEM_INTERACT_BLOCKING @@ -60,12 +65,11 @@ user.put_in_hands(O) return ITEM_INTERACT_SUCCESS - if(target.embedding && target.embedding == conferred_embed) + if(target.get_embed() && target.get_embed().type == conferred_embed) to_chat(user, span_warning("[target] is already coated in [src]!")) return ITEM_INTERACT_BLOCKING - target.embedding = conferred_embed - target.updateEmbedding() + target.set_embed(conferred_embed) to_chat(user, span_notice("You finish wrapping [target] with [src].")) target.name = "[prefix] [target.name]" @@ -80,34 +84,44 @@ singular_name = "super sticky tape" desc = "Quite possibly the most mischevious substance in the galaxy. Use with extreme lack of caution." prefix = "super sticky" - conferred_embed = EMBED_HARMLESS_SUPERIOR + conferred_embed = /datum/embed_data/sticky_tape/super splint_factor = 0.4 merge_type = /obj/item/stack/sticky_tape/super greyscale_colors = "#4D4D4D#75433F" tape_gag = /obj/item/clothing/mask/muzzle/tape/super +/datum/embed_data/sticky_tape/super + embed_chance = 100 + fall_chance = 0.1 + /obj/item/stack/sticky_tape/pointy name = "pointy tape" singular_name = "pointy tape" desc = "Used for sticking to things for sticking said things inside people." icon_state = "tape_spikes" prefix = "pointy" - conferred_embed = EMBED_POINTY + conferred_embed = /datum/embed_data/pointy_tape merge_type = /obj/item/stack/sticky_tape/pointy greyscale_config = /datum/greyscale_config/tape/spikes greyscale_colors = "#E64539#808080#AD2F45" tape_gag = /obj/item/clothing/mask/muzzle/tape/pointy +/datum/embed_data/pointy_tape + ignore_throwspeed_threshold = TRUE + /obj/item/stack/sticky_tape/pointy/super name = "super pointy tape" singular_name = "super pointy tape" desc = "You didn't know tape could look so sinister. Welcome to Space Station 13." prefix = "super pointy" - conferred_embed = EMBED_POINTY_SUPERIOR + conferred_embed = /datum/embed_data/pointy_tape/super merge_type = /obj/item/stack/sticky_tape/pointy/super greyscale_colors = "#8C0A00#4F4F4F#300008" tape_gag = /obj/item/clothing/mask/muzzle/tape/pointy/super +/datum/embed_data/pointy_tape/super + embed_chance = 100 + /obj/item/stack/sticky_tape/surgical name = "surgical tape" singular_name = "surgical tape" diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 073a35ed1013c..89e6cae389dbd 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -1075,6 +1075,11 @@ inhand_icon_state = "tile-bcircuit" turf_type = /turf/open/floor/circuit merge_type = /obj/item/stack/tile/circuit + tile_reskin_types = list( + /obj/item/stack/tile/circuit, + /obj/item/stack/tile/circuit/green, + /obj/item/stack/tile/circuit/red, + ) /obj/item/stack/tile/circuit/green name = "green circuit tile" diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 10c95056afffb..d2d4297fdc6c5 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -32,10 +32,6 @@ * Backpack Types */ -/obj/item/storage/backpack/old/Initialize(mapload) - . = ..() - atom_storage.max_total_storage = 12 - /obj/item/bag_of_holding_inert name = "inert bag of holding" desc = "What is currently a just an unwieldly block of metal with a slot ready to accept a bluespace anomaly core." @@ -51,9 +47,8 @@ /obj/item/bag_of_holding_inert/Initialize(mapload) . = ..() - AddComponent(/datum/component/slapcrafting,\ - slapcraft_recipes = list(/datum/crafting_recipe/boh)\ - ) + var/static/list/recipes = list(/datum/crafting_recipe/boh) + AddElement(/datum/element/slapcrafting, recipes) /obj/item/storage/backpack/holding name = "bag of holding" diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index e363687618988..996cd933647a1 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -363,7 +363,7 @@ atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY //Plates are required bulky to keep them out of backpacks atom_storage.set_holdable( can_hold_list = list( - /obj/item/clothing/mask/cigarette, + /obj/item/cigarette, /obj/item/food, /obj/item/kitchen, /obj/item/lighter, diff --git a/code/game/objects/items/storage/boxes/food_boxes.dm b/code/game/objects/items/storage/boxes/food_boxes.dm index bab60320c957f..bccb04f14d006 100644 --- a/code/game/objects/items/storage/boxes/food_boxes.dm +++ b/code/game/objects/items/storage/boxes/food_boxes.dm @@ -94,27 +94,27 @@ desc = "A paper sack with a crude smile etched onto the side." return ..() -/obj/item/storage/box/papersack/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - if(IS_WRITING_UTENSIL(inserted)) - var/choice = show_radial_menu(user, src , papersack_designs, custom_check = CALLBACK(src, PROC_REF(check_menu), user, inserted), radius = 36, require_near = TRUE) +/obj/item/storage/box/papersack/tool_act(mob/living/user, obj/item/tool, list/modifiers) + if(IS_WRITING_UTENSIL(tool)) + var/choice = show_radial_menu(user, src , papersack_designs, custom_check = CALLBACK(src, PROC_REF(check_menu), user, tool), radius = 36, require_near = TRUE) if(!choice || choice == design_choice) - return FALSE + return ITEM_INTERACT_BLOCKING design_choice = choice balloon_alert(user, "modified") update_appearance() - return FALSE - if(inserted.get_sharpness() && !contents.len) + return ITEM_INTERACT_SUCCESS + if(tool.get_sharpness() && !contents.len) if(design_choice == "None") user.show_message(span_notice("You cut eyeholes into [src]."), MSG_VISUAL) new /obj/item/clothing/head/costume/papersack(drop_location()) qdel(src) - return FALSE + return ITEM_INTERACT_SUCCESS else if(design_choice == "SmileyFace") user.show_message(span_notice("You cut eyeholes into [src] and modify the design."), MSG_VISUAL) new /obj/item/clothing/head/costume/papersack/smiley(drop_location()) qdel(src) - return FALSE - return TRUE + return ITEM_INTERACT_SUCCESS + return ..() /** * check_menu: Checks if we are allowed to interact with a radial menu diff --git a/code/game/objects/items/storage/boxes/job_boxes.dm b/code/game/objects/items/storage/boxes/job_boxes.dm index 7785099a2262c..ea9189cc5f2b0 100644 --- a/code/game/objects/items/storage/boxes/job_boxes.dm +++ b/code/game/objects/items/storage/boxes/job_boxes.dm @@ -171,20 +171,20 @@ desc = "A colorful cardboard box for the clown" illustration = "clown" -/obj/item/storage/box/clown/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - if(istype(inserted, /obj/item/bodypart/arm/left/robot) || istype(inserted, /obj/item/bodypart/arm/right/robot)) - if(contents.len) //prevent accidently deleting contents - balloon_alert(user, "items inside!") - return FALSE - if(!user.temporarilyRemoveItemFromInventory(inserted)) - return FALSE - qdel(inserted) - loc.balloon_alert(user, "wheels added, honk!") - var/obj/item/bot_assembly/honkbot/A = new - qdel(src) - user.put_in_hands(A) - return FALSE - return TRUE +/obj/item/storage/box/clown/tool_act(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/bodypart/arm/left/robot) && !istype(tool, /obj/item/bodypart/arm/right/robot)) + return ..() + if(contents.len) //prevent accidently deleting contents + balloon_alert(user, "items inside!") + return ITEM_INTERACT_BLOCKING + if(!user.temporarilyRemoveItemFromInventory(tool)) + return ITEM_INTERACT_BLOCKING + qdel(tool) + loc.balloon_alert(user, "wheels added, honk!") + var/obj/item/bot_assembly/honkbot/A = new + qdel(src) + user.put_in_hands(A) + return ITEM_INTERACT_SUCCESS /obj/item/storage/box/clown/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] opens [src] and gets consumed by [p_them()]! It looks like [user.p_theyre()] trying to commit suicide!")) diff --git a/code/game/objects/items/storage/boxes/service_boxes.dm b/code/game/objects/items/storage/boxes/service_boxes.dm index e4d6a86553f4c..ee558d863daf4 100644 --- a/code/game/objects/items/storage/boxes/service_boxes.dm +++ b/code/game/objects/items/storage/boxes/service_boxes.dm @@ -92,19 +92,17 @@ atom_storage.max_slots = 10 atom_storage.set_holdable(/obj/item/match) -/obj/item/storage/box/matches/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - return !istype(inserted, /obj/item/match) +/obj/item/storage/box/matches/tool_act(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/match)) + var/obj/item/match/match = tool + match.matchignite() + return ITEM_INTERACT_SUCCESS + return ..() /obj/item/storage/box/matches/PopulateContents() for(var/i in 1 to 10) new /obj/item/match(src) -/obj/item/storage/box/matches/item_interaction(mob/living/user, obj/item/match/match, list/modifiers) - if(istype(match)) - match.matchignite() - return ITEM_INTERACT_SUCCESS - return NONE - /obj/item/storage/box/matches/update_icon_state() . = ..() switch(length(contents)) diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 4aa93cc543332..1c5490301a5c0 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -202,7 +202,7 @@ w_class = WEIGHT_CLASS_TINY throwforce = 0 slot_flags = ITEM_SLOT_BELT - spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette + spawn_type = /obj/item/cigarette/space_cigarette spawn_count = 6 custom_price = PAYCHECK_CREW age_restricted = TRUE @@ -233,18 +233,18 @@ /obj/item/storage/fancy/cigarettes/Initialize(mapload) . = ..() atom_storage.display_contents = FALSE - atom_storage.set_holdable(list(/obj/item/clothing/mask/cigarette, /obj/item/lighter)) + atom_storage.set_holdable(list(/obj/item/cigarette, /obj/item/lighter)) register_context() /obj/item/storage/fancy/cigarettes/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) . = ..() if(interacting_with != user) // you can quickly put a cigarette in your mouth only return ..() - quick_remove_item(/obj/item/clothing/mask/cigarette, user, equip_to_mouth = TRUE) + quick_remove_item(/obj/item/cigarette, user, equip_to_mouth = TRUE) /obj/item/storage/fancy/cigarettes/attack_hand_secondary(mob/user, list/modifiers) . = ..() - quick_remove_item(/obj/item/clothing/mask/cigarette, user) + quick_remove_item(/obj/item/cigarette, user) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN /obj/item/storage/fancy/cigarettes/click_alt(mob/user) @@ -252,7 +252,7 @@ if(lighter) quick_remove_item(lighter, user) else - quick_remove_item(/obj/item/clothing/mask/cigarette, user) + quick_remove_item(/obj/item/cigarette, user) return CLICK_ACTION_SUCCESS /// Removes an item or puts it in mouth from the packet, if any @@ -316,49 +316,49 @@ desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\"" icon_state = "dromedary" base_icon_state = "dromedary" - spawn_type = /obj/item/clothing/mask/cigarette/dromedary + spawn_type = /obj/item/cigarette/dromedary /obj/item/storage/fancy/cigarettes/cigpack_uplift name = "\improper Uplift Smooth packet" desc = "Your favorite brand, now menthol flavored." icon_state = "uplift" base_icon_state = "uplift" - spawn_type = /obj/item/clothing/mask/cigarette/uplift + spawn_type = /obj/item/cigarette/uplift /obj/item/storage/fancy/cigarettes/cigpack_robust name = "\improper Robust packet" desc = "Smoked by the robust." icon_state = "robust" base_icon_state = "robust" - spawn_type = /obj/item/clothing/mask/cigarette/robust + spawn_type = /obj/item/cigarette/robust /obj/item/storage/fancy/cigarettes/cigpack_robustgold name = "\improper Robust Gold packet" desc = "Smoked by the truly robust." icon_state = "robustg" base_icon_state = "robustg" - spawn_type = /obj/item/clothing/mask/cigarette/robustgold + spawn_type = /obj/item/cigarette/robustgold /obj/item/storage/fancy/cigarettes/cigpack_carp name = "\improper Carp Classic packet" desc = "Since 2313." icon_state = "carp" base_icon_state = "carp" - spawn_type = /obj/item/clothing/mask/cigarette/carp + spawn_type = /obj/item/cigarette/carp /obj/item/storage/fancy/cigarettes/cigpack_syndicate name = "cigarette packet" desc = "An obscure brand of cigarettes." icon_state = "syndie" base_icon_state = "syndie" - spawn_type = /obj/item/clothing/mask/cigarette/syndicate + spawn_type = /obj/item/cigarette/syndicate /obj/item/storage/fancy/cigarettes/cigpack_midori name = "\improper Midori Tabako packet" desc = "You can't understand the runes, but the packet smells funny." icon_state = "midori" base_icon_state = "midori" - spawn_type = /obj/item/clothing/mask/cigarette/rollie/nicotine + spawn_type = /obj/item/cigarette/rollie/nicotine /obj/item/storage/fancy/cigarettes/cigpack_candy name = "\improper Timmy's First Candy Smokes packet" @@ -366,42 +366,42 @@ icon_state = "candy" base_icon_state = "candy" contents_tag = "candy cigarette" - spawn_type = /obj/item/clothing/mask/cigarette/candy + spawn_type = /obj/item/cigarette/candy candy = TRUE age_restricted = FALSE /obj/item/storage/fancy/cigarettes/cigpack_candy/Initialize(mapload) . = ..() if(prob(7)) - spawn_type = /obj/item/clothing/mask/cigarette/candy/nicotine //uh oh! + spawn_type = /obj/item/cigarette/candy/nicotine //uh oh! /obj/item/storage/fancy/cigarettes/cigpack_shadyjims name = "\improper Shady Jim's Super Slims packet" desc = "Is your weight slowing you down? Having trouble running away from gravitational singularities? Can't stop stuffing your mouth? Smoke Shady Jim's Super Slims and watch all that fat burn away. Guaranteed results!" icon_state = "shadyjim" base_icon_state = "shadyjim" - spawn_type = /obj/item/clothing/mask/cigarette/shadyjims + spawn_type = /obj/item/cigarette/shadyjims /obj/item/storage/fancy/cigarettes/cigpack_xeno name = "\improper Xeno Filtered packet" desc = "Loaded with 100% pure slime. And also nicotine." icon_state = "slime" base_icon_state = "slime" - spawn_type = /obj/item/clothing/mask/cigarette/xeno + spawn_type = /obj/item/cigarette/xeno /obj/item/storage/fancy/cigarettes/cigpack_cannabis name = "\improper Freak Brothers' Special packet" desc = "A label on the packaging reads, \"Endorsed by Phineas, Freddy and Franklin.\"" icon_state = "midori" base_icon_state = "midori" - spawn_type = /obj/item/clothing/mask/cigarette/rollie/cannabis + spawn_type = /obj/item/cigarette/rollie/cannabis /obj/item/storage/fancy/cigarettes/cigpack_mindbreaker name = "\improper Leary's Delight packet" desc = "Banned in over 36 galaxies." icon_state = "shadyjim" base_icon_state = "shadyjim" - spawn_type = /obj/item/clothing/mask/cigarette/rollie/mindbreaker + spawn_type = /obj/item/cigarette/rollie/mindbreaker /obj/item/storage/fancy/rollingpapers name = "rolling paper pack" @@ -437,14 +437,14 @@ base_icon_state = "cigarcase" w_class = WEIGHT_CLASS_NORMAL contents_tag = "premium cigar" - spawn_type = /obj/item/clothing/mask/cigarette/cigar/premium + spawn_type = /obj/item/cigarette/cigar/premium spawn_count = 5 spawn_coupon = FALSE display_cigs = FALSE /obj/item/storage/fancy/cigarettes/cigars/Initialize(mapload) . = ..() - atom_storage.set_holdable(/obj/item/clothing/mask/cigarette/cigar) + atom_storage.set_holdable(/obj/item/cigarette/cigar) /obj/item/storage/fancy/cigarettes/cigars/update_icon_state() . = ..() @@ -456,7 +456,7 @@ if(!open_status) return var/cigar_position = 1 //generate sprites for cigars in the box - for(var/obj/item/clothing/mask/cigarette/cigar/smokes in contents) + for(var/obj/item/cigarette/cigar/smokes in contents) . += "[smokes.icon_off]_[cigar_position]" cigar_position++ @@ -465,14 +465,14 @@ desc = "A case of imported Cohiba cigars, renowned for their strong flavor." icon_state = "cohibacase" base_icon_state = "cohibacase" - spawn_type = /obj/item/clothing/mask/cigarette/cigar/cohiba + spawn_type = /obj/item/cigarette/cigar/cohiba /obj/item/storage/fancy/cigarettes/cigars/havana name = "\improper premium Havanian cigar case" desc = "A case of classy Havanian cigars." icon_state = "cohibacase" base_icon_state = "cohibacase" - spawn_type = /obj/item/clothing/mask/cigarette/cigar/havana + spawn_type = /obj/item/cigarette/cigar/havana /* * Heart Shaped Box w/ Chocolates diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index 3f80f0e22af55..a1dbe0e690c71 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -12,6 +12,7 @@ var/open = FALSE var/icon_locked = "lockbox+l" var/icon_closed = "lockbox" + var/icon_open = "lockbox" var/icon_broken = "lockbox+b" /obj/item/storage/lockbox/Initialize(mapload) @@ -19,48 +20,54 @@ atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL atom_storage.max_total_storage = 14 atom_storage.max_slots = 4 - atom_storage.locked = TRUE + atom_storage.locked = STORAGE_FULLY_LOCKED register_context() + update_appearance() + +/obj/item/storage/lockbox/tool_act(mob/living/user, obj/item/tool, list/modifiers) + var/obj/item/card/card = tool.GetID() + if(isnull(card)) + return ..() + + if(can_unlock(user, card)) + if(atom_storage.locked) + atom_storage.locked = STORAGE_NOT_LOCKED + else + atom_storage.locked = STORAGE_FULLY_LOCKED + atom_storage.close_all() + balloon_alert(user, atom_storage.locked ? "locked" : "unlocked") + update_appearance() + return ITEM_INTERACT_SUCCESS + + return ITEM_INTERACT_BLOCKING + +/obj/item/storage/lockbox/proc/can_unlock(mob/living/user, obj/item/card/id/id_card) + if(check_access(id_card)) + return TRUE + + balloon_alert(user, "access denied!") + return FALSE -/obj/item/storage/lockbox/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - var/locked = atom_storage.locked - if(inserted.GetID()) - if(broken) - balloon_alert(user, "broken!") - return FALSE - if(allowed(user)) - if(atom_storage.locked) - atom_storage.locked = STORAGE_NOT_LOCKED - else - atom_storage.locked = STORAGE_FULLY_LOCKED - locked = atom_storage.locked - if(locked) - icon_state = icon_locked - atom_storage.close_all() - else - icon_state = icon_closed - - balloon_alert(user, locked ? "locked" : "unlocked") - return FALSE - - balloon_alert(user, "access denied!") - return FALSE - - if(locked) - balloon_alert(user, "locked!") - return FALSE - - return TRUE +/obj/item/storage/lockbox/update_icon_state() + . = ..() + if(broken) + icon_state = icon_broken + else if(atom_storage?.locked) + icon_state = icon_locked + else if(open) + icon_state = icon_open + else + icon_state = icon_closed /obj/item/storage/lockbox/emag_act(mob/user, obj/item/card/emag/emag_card) if(!broken) broken = TRUE atom_storage.locked = STORAGE_NOT_LOCKED - icon_state = src.icon_broken balloon_alert(user, "lock destroyed") if (emag_card && user) user.visible_message(span_warning("[user] swipes [emag_card] over [src], breaking it!")) + update_appearance() return TRUE return FALSE @@ -108,6 +115,7 @@ icon_locked = "medalbox+l" icon_closed = "medalbox" icon_broken = "medalbox+b" + icon_open = "medalboxopen" /obj/item/storage/lockbox/medal/Initialize(mapload) . = ..() @@ -123,7 +131,7 @@ /obj/item/storage/lockbox/medal/click_alt(mob/user) if(!atom_storage.locked) - open = (open ? FALSE : TRUE) + open = !open update_appearance() return CLICK_ACTION_SUCCESS @@ -138,18 +146,6 @@ for(var/i in 1 to 3) new /obj/item/clothing/accessory/medal/conduct(src) -/obj/item/storage/lockbox/medal/update_icon_state() - if(atom_storage?.locked) - icon_state = "medalbox+l" - return ..() - - icon_state = "medalbox" - if(open) - icon_state += "open" - if(broken) - icon_state += "+b" - return ..() - /obj/item/storage/lockbox/medal/update_overlays() . = ..() if(!contents || !open) @@ -238,13 +234,13 @@ icon_state = "secure" icon_closed = "secure" icon_locked = "secure_locked" - icon_broken = "secure+b" + icon_broken = "secure_locked" + icon_open = "secure" inhand_icon_state = "sec-case" lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' w_class = WEIGHT_CLASS_HUGE var/datum/bank_account/buyer_account - var/privacy_lock = TRUE /obj/item/storage/lockbox/order/Initialize(mapload, datum/bank_account/_buyer_account) . = ..() @@ -252,26 +248,11 @@ ADD_TRAIT(src, TRAIT_NO_MISSING_ITEM_ERROR, TRAIT_GENERIC) ADD_TRAIT(src, TRAIT_NO_MANIFEST_CONTENTS_ERROR, TRAIT_GENERIC) -/obj/item/storage/lockbox/order/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - var/obj/item/card/id/id_card = inserted.GetID() - if(!id_card) - return ..() - - if(id_card.registered_account != buyer_account) - balloon_alert(user, "incorrect bank account!") - return FALSE +/obj/item/storage/lockbox/order/can_unlock(mob/living/user, obj/item/card/id/id_card) + if(id_card.registered_account == buyer_account) + return TRUE - if(privacy_lock) - atom_storage.locked = STORAGE_NOT_LOCKED - icon_state = icon_locked - else - atom_storage.locked = STORAGE_FULLY_LOCKED - icon_state = icon_closed - privacy_lock = atom_storage.locked - user.visible_message( - span_notice("[user] [privacy_lock ? "" : "un"]locks [src]'s privacy lock."), - span_notice("You [privacy_lock ? "" : "un"]lock [src]'s privacy lock."), - ) + balloon_alert(user, "incorrect bank account!") return FALSE ///screentips for lockboxes diff --git a/code/game/objects/items/storage/medkit.dm b/code/game/objects/items/storage/medkit.dm index b1ca307e939f1..944289598d17b 100644 --- a/code/game/objects/items/storage/medkit.dm +++ b/code/game/objects/items/storage/medkit.dm @@ -171,6 +171,9 @@ inhand_icon_state = "medkit-ointment" damagetype_healed = BURN +/obj/item/storage/medkit/fire/get_medbot_skin() + return "ointment" + /obj/item/storage/medkit/fire/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] begins rubbing \the [src] against [user.p_them()]self! It looks like [user.p_theyre()] trying to start a fire!")) return FIRELOSS @@ -192,6 +195,9 @@ inhand_icon_state = "medkit-toxin" damagetype_healed = TOX +/obj/item/storage/medkit/toxin/get_medbot_skin() + return "tox" + /obj/item/storage/medkit/toxin/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] begins licking the lead paint off \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return TOXLOSS @@ -216,6 +222,9 @@ inhand_icon_state = "medkit-o2" damagetype_healed = OXY +/obj/item/storage/medkit/o2/get_medbot_skin() + return "o2" + /obj/item/storage/medkit/o2/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] begins hitting [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return OXYLOSS @@ -237,6 +246,9 @@ inhand_icon_state = "medkit-brute" damagetype_healed = BRUTE +/obj/item/storage/medkit/brute/get_medbot_skin() + return "brute" + /obj/item/storage/medkit/brute/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] begins beating [user.p_them()]self over the head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS @@ -261,6 +273,9 @@ custom_premium_price = PAYCHECK_COMMAND * 6 damagetype_healed = HEAL_ALL_DAMAGE +/obj/item/storage/medkit/advanced/get_medbot_skin() + return "advanced" + /obj/item/storage/medkit/advanced/PopulateContents() if(empty) return @@ -277,6 +292,9 @@ inhand_icon_state = "medkit-tactical" damagetype_healed = HEAL_ALL_DAMAGE +/obj/item/storage/medkit/tactical_lite/get_medbot_skin() + return "bezerk" + /obj/item/storage/medkit/tactical_lite/PopulateContents() if(empty) return @@ -399,35 +417,28 @@ generate_items_inside(items_inside,src) //medibot assembly -/obj/item/storage/medkit/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - if(!istype(inserted, /obj/item/bodypart/arm/left/robot) && !istype(inserted, /obj/item/bodypart/arm/right/robot)) - return TRUE +/obj/item/storage/medkit/tool_act(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/bodypart/arm/left/robot) && !istype(tool, /obj/item/bodypart/arm/right/robot)) + return ..() //Making a medibot! if(contents.len >= 1) balloon_alert(user, "items inside!") - return FALSE - - ///if you add a new one don't forget to update /datum/crafting_recipe/medbot/on_craft_completion() - var/obj/item/bot_assembly/medbot/medbot_assembly = new - if (istype(src, /obj/item/storage/medkit/fire)) - medbot_assembly.set_skin("ointment") - else if (istype(src, /obj/item/storage/medkit/toxin)) - medbot_assembly.set_skin("tox") - else if (istype(src, /obj/item/storage/medkit/o2)) - medbot_assembly.set_skin("o2") - else if (istype(src, /obj/item/storage/medkit/brute)) - medbot_assembly.set_skin("brute") - else if (istype(src, /obj/item/storage/medkit/advanced)) - medbot_assembly.set_skin("advanced") - else if (istype(src, /obj/item/storage/medkit/tactical)) - medbot_assembly.set_skin("bezerk") + return ITEM_INTERACT_BLOCKING + + var/obj/item/bot_assembly/medbot/medbot_assembly = new() + medbot_assembly.set_skin(get_medbot_skin()) user.put_in_hands(medbot_assembly) medbot_assembly.balloon_alert(user, "arm added") - medbot_assembly.robot_arm = inserted.type + medbot_assembly.robot_arm = tool.type medbot_assembly.medkit_type = type - qdel(inserted) + qdel(tool) qdel(src) - return FALSE + return ITEM_INTERACT_SUCCESS + +/// Gets what skin (icon_state) this medkit uses for a medbot +/obj/item/storage/medkit/proc/get_medbot_skin() + // The skin var is nullsafe so returning nothing is A-OK + return /* * Pill Bottles @@ -733,14 +744,7 @@ icon_state = "[base_icon_state][cooling ? "-working" : null]" return ..() -/obj/item/storage/organbox/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - if(is_reagent_container(inserted) && inserted.is_open_container()) - return FALSE - if(istype(inserted, /obj/item/plunger)) - return FALSE - return TRUE - -/obj/item/storage/organbox/item_interaction(mob/living/user, obj/item/tool, list/modifiers) +/obj/item/storage/organbox/tool_act(mob/living/user, obj/item/tool, list/modifiers) if(is_reagent_container(tool) && tool.is_open_container()) var/obj/item/reagent_containers/RC = tool var/units = RC.reagents.trans_to(src, RC.amount_per_transfer_from_this, transferred_by = user) @@ -754,7 +758,7 @@ balloon_alert(user, "plunged") reagents.clear_reagents() return ITEM_INTERACT_SUCCESS - return NONE + return ..() /obj/item/storage/organbox/suicide_act(mob/living/carbon/user) if(HAS_TRAIT(user, TRAIT_RESISTCOLD)) //if they're immune to cold, just do the box suicide diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 5420121945b92..7c5bc74e07550 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -273,9 +273,9 @@ new /obj/item/gun_maintenance_supplies(src) //floorbot assembly -/obj/item/storage/toolbox/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - if(!istype(inserted, /obj/item/stack/tile/iron)) - return TRUE +/obj/item/storage/toolbox/tool_act(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/tile/iron)) + return ..() var/static/list/allowed_toolbox = list( /obj/item/storage/toolbox/artistic, /obj/item/storage/toolbox/electrical, @@ -285,11 +285,11 @@ ) if(!is_type_in_list(src, allowed_toolbox) && (type != /obj/item/storage/toolbox)) - return TRUE + return ITEM_INTERACT_BLOCKING if(contents.len >= 1) balloon_alert(user, "not empty!") - return FALSE - if(inserted.use(10)) + return ITEM_INTERACT_BLOCKING + if(tool.use(10)) var/obj/item/bot_assembly/floorbot/B = new B.toolbox = type switch(B.toolbox) @@ -307,9 +307,9 @@ B.update_appearance() B.balloon_alert(user, "tiles added") qdel(src) - return FALSE + return ITEM_INTERACT_BLOCKING balloon_alert(user, "needs 10 tiles!") - return FALSE + return ITEM_INTERACT_SUCCESS /obj/item/storage/toolbox/haunted name = "old toolbox" diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 96b2d10440d4e..d3e41b21a986b 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -300,7 +300,7 @@ new /obj/item/clothing/suit/armor/vest/marine/pmc(src) //The armor kit is comparable to the infiltrator, 6 TC new /obj/item/clothing/head/helmet/marine/pmc(src) new /obj/item/clothing/mask/gas/sechailer(src) - new /obj/item/clothing/glasses/night(src) // 3~ TC + new /obj/item/clothing/glasses/night/colorless(src) // 3~ TC new /obj/item/clothing/gloves/krav_maga/combatglovesplus(src) //5TC new /obj/item/clothing/shoes/jackboots(src) new /obj/item/storage/belt/military/assault/fisher(src) //items in this belt easily costs 18 TC diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index 469a14e0e7810..e485d6997f05f 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -18,7 +18,7 @@ /obj/item/stack/spacecash, /obj/item/holochip, /obj/item/card, - /obj/item/clothing/mask/cigarette, + /obj/item/cigarette, /obj/item/clothing/accessory/dogtag, /obj/item/coin, /obj/item/coupon, diff --git a/code/game/objects/items/tail_pin.dm b/code/game/objects/items/tail_pin.dm index de3148dd06dea..71bd50b1dda21 100644 --- a/code/game/objects/items/tail_pin.dm +++ b/code/game/objects/items/tail_pin.dm @@ -7,7 +7,6 @@ w_class = WEIGHT_CLASS_SMALL throwforce = 0 throw_speed = 1 - embedding = EMBED_HARMLESS custom_materials = list(/datum/material/iron= HALF_SHEET_MATERIAL_AMOUNT) hitsound = 'sound/weapons/bladeslice.ogg' attack_verb_continuous = list("pokes", "jabs", "pins the tail on") @@ -15,6 +14,12 @@ sharpness = SHARP_POINTY max_integrity = 200 layer = CORGI_ASS_PIN_LAYER + embed_type = /datum/embed_data/corgi_pin + +/datum/embed_data/corgi_pin + pain_chance = 0 + jostle_pain_mult = 0 + ignore_throwspeed_threshold = TRUE /obj/item/poster/tail_board name = "party game poster" diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index 339894eb2d8f0..01c1304493df2 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -10,7 +10,6 @@ actions_types = list(/datum/action/item_action/set_internals, /datum/action/item_action/toggle_jetpack, /datum/action/item_action/jetpack_stabilization) var/gas_type = /datum/gas/oxygen var/on = FALSE - var/full_speed = TRUE // If the jetpack will have a speedboost in space/nograv or not var/stabilize = FALSE var/thrust_callback @@ -98,16 +97,12 @@ return FALSE on = TRUE update_icon(UPDATE_ICON_STATE) - if(full_speed) - user.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed) return TRUE /obj/item/tank/jetpack/proc/turn_off(mob/user) SEND_SIGNAL(src, COMSIG_JETPACK_DEACTIVATED, user) on = FALSE update_icon(UPDATE_ICON_STATE) - if(user) - user.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed) /obj/item/tank/jetpack/proc/allow_thrust(num, use_fuel = TRUE) if(!ismob(loc)) @@ -148,7 +143,6 @@ worn_icon_state = "jetpack-improvised" volume = 20 //normal jetpacks have 70 volume gas_type = null //it starts empty - full_speed = FALSE //moves at modsuit jetpack speeds /obj/item/tank/jetpack/improvised/allow_thrust(num) if(!ismob(loc)) diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 70c0ea0822a41..40989915a68ce 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -77,6 +77,14 @@ . += span_notice("A warning is etched into [src]...") . += span_warning("There is no process in the body that uses N2O, so patients will exhale the N2O... exposing you to it. Make sure to work in a well-ventilated space to avoid sleepy mishaps.") +/obj/item/tank/internals/anesthetic/pure + desc = "A tank with pure N2O. There is a warning sticker crudely slapped onto the tank." + icon_state = "anesthetic_warning" + +/obj/item/tank/internals/anesthetic/pure/populate_gas() + air_contents.assert_gases(/datum/gas/nitrous_oxide) + air_contents.gases[/datum/gas/nitrous_oxide][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + /* * Plasma */ diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 45c20e9908bf4..8094a9a21c863 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -295,8 +295,8 @@ var/Adj = user.Adjacent(interacting_with) if(nozzle_mode == RESIN_LAUNCHER) - if(Adj) - return ITEM_INTERACT_BLOCKING //Safety check so you don't blast yourself trying to refill your tank + if(Adj && user.combat_mode) + return ITEM_INTERACT_SKIP_TO_ATTACK var/datum/reagents/R = reagents if(R.total_volume < 100) balloon_alert(user, "not enough water!") @@ -316,7 +316,9 @@ return ITEM_INTERACT_SUCCESS if(nozzle_mode == RESIN_FOAM) - if(!Adj || !isturf(interacting_with)) + if(!isturf(interacting_with)) + return NONE + if(!Adj) balloon_alert(user, "too far!") return ITEM_INTERACT_BLOCKING for(var/thing in interacting_with) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 41edfaea37e88..e13251fe8e5ea 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -247,13 +247,6 @@ if(ismob(loc)) to_chat(loc, span_warning("[src] is permanently sealed, [sliver] is safely contained.")) -/obj/item/nuke_core_container/supermatter/attackby(obj/item/hemostat/supermatter/tongs, mob/user) - if(istype(tongs)) - //try to load shard into core - load(tongs, user) - else - return ..() - /obj/item/scalpel/supermatter name = "supermatter scalpel" desc = "A scalpel with a fragile tip of condensed hyper-noblium gas, searingly cold to the touch, that can safely shave a sliver off a supermatter crystal." @@ -295,11 +288,15 @@ /obj/item/hemostat/supermatter/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!sliver) - return NONE + return ..() + if (istype(interacting_with, /obj/item/nuke_core_container/supermatter)) + var/obj/item/nuke_core_container/supermatter/container = interacting_with + container.load(src, user) + return ITEM_INTERACT_SUCCESS if(ismovable(interacting_with) && interacting_with != sliver) Consume(interacting_with, user) return ITEM_INTERACT_SUCCESS - return NONE + return ..() /obj/item/hemostat/supermatter/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) // no instakill supermatter javelins if(sliver) diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index b4185732ce96c..c6b0d52cdc1c3 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -160,8 +160,8 @@ return COMPONENT_NO_DEFAULT_MESSAGE /obj/item/crowbar/power/syndicate - name = "Syndicate jaws of life" - desc = "A pocket sized re-engineered copy of Nanotrasen's standard jaws of life. Can be used to force open airlocks in its crowbar configuration." + name = "jaws of death" + desc = "An improved, faster, and smaller copy of Nanotrasen's standard jaws of life. Can be used to force open airlocks in its crowbar configuration." icon_state = "jaws_syndie" w_class = WEIGHT_CLASS_SMALL toolspeed = 0.5 diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 3eea2400aa24f..5384a11cf3bbe 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -387,7 +387,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 force = 2 throwforce = 10 //10 + 2 (WEIGHT_CLASS_SMALL) * 4 (EMBEDDED_IMPACT_PAIN_MULTIPLIER) = 18 damage on hit due to guaranteed embedding throw_speed = 4 - embedding = list("pain_mult" = 4, "embed_chance" = 100, "fall_chance" = 0) + embed_type = /datum/embed_data/throwing_star armour_penetration = 40 w_class = WEIGHT_CLASS_SMALL @@ -395,11 +395,22 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 5) resistance_flags = FIRE_PROOF +/datum/embed_data/throwing_star + pain_mult = 4 + embed_chance = 100 + fall_chance = 0 + /obj/item/throwing_star/stamina name = "shock throwing star" desc = "An aerodynamic disc designed to cause excruciating pain when stuck inside fleeing targets, hopefully without causing fatal harm." throwforce = 5 - embedding = list("pain_chance" = 5, "embed_chance" = 100, "fall_chance" = 0, "jostle_chance" = 10, "pain_stam_pct" = 0.8, "jostle_pain_mult" = 3) + embed_type = /datum/embed_data/throwing_star/stamina + +/datum/embed_data/throwing_star/stamina + pain_mult = 5 + jostle_chance = 10 + pain_stam_pct = 0.8 + jostle_pain_mult = 3 /obj/item/throwing_star/toy name = "toy throwing star" @@ -407,7 +418,11 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 sharpness = NONE force = 0 throwforce = 0 - embedding = list("pain_mult" = 0, "jostle_pain_mult" = 0, "embed_chance" = 100, "fall_chance" = 0) + embed_type = /datum/embed_data/throwing_star/toy + +/datum/embed_data/throwing_star/toy + pain_mult = 0 + jostle_pain_mult = 0 /obj/item/switchblade name = "switchblade" @@ -762,6 +777,40 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 inhand_icon_state = "hoverboard_nt" board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin +/obj/item/melee/skateboard/holyboard + name = "holy skateboard" + desc = "A board blessed by the gods with the power to grind for our sins. Has the initials 'J.C.' on the underside." + icon_state = "hoverboard_holy_held" + inhand_icon_state = "hoverboard_holy" + force = 18 + throwforce = 6 + w_class = WEIGHT_CLASS_NORMAL + attack_verb_continuous = list("bashes", "crashes", "grinds", "skates") + attack_verb_simple = list("bash", "crash", "grind", "skate") + board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/holyboarded + +/obj/item/melee/skateboard/holyboard/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 MAGICKS!!", \ + tip_text = "Clear rune", \ + on_clear_callback = CALLBACK(src, PROC_REF(on_cult_rune_removed)), \ + effects_we_clear = list(/obj/effect/rune, /obj/effect/heretic_rune) \ + ) + AddElement(/datum/element/bane, target_type = /mob/living/basic/revenant, damage_multiplier = 0, added_damage = 25, requires_combat_mode = FALSE) + +/obj/item/melee/skateboard/holyboard/proc/on_cult_rune_removed(obj/effect/target, mob/living/user) + SIGNAL_HANDLER + if(!istype(target, /obj/effect/rune)) + return + + var/obj/effect/rune/target_rune = target + if(target_rune.log_when_erased) + user.log_message("erased [target_rune.cultist_name] rune using [src]", LOG_GAME) + SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_NARNAR] = TRUE + /obj/item/melee/baseball_bat name = "baseball bat" desc = "There ain't a skull in the league that can withstand a swatter." @@ -1048,7 +1097,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 throwforce = 25 throw_speed = 4 attack_speed = CLICK_CD_HYPER_RAPID - embedding = list("embed_chance" = 100) + embed_type = /datum/embed_data/hfr_blade block_chance = 25 block_sound = 'sound/weapons/parry.ogg' sharpness = SHARP_EDGED @@ -1063,6 +1112,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /// The previous target we attacked var/datum/weakref/previous_target +/datum/embed_data/hfr_blade + embed_chance = 100 + /obj/item/highfrequencyblade/Initialize(mapload) . = ..() AddComponent(/datum/component/two_handed, \ diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index f43cc8dfa1cd4..ff6e6e171bb06 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -19,7 +19,7 @@ /obj/structure/Initialize(mapload) . = ..() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH(src) QUEUE_SMOOTH_NEIGHBORS(src) if(smoothing_flags & SMOOTH_CORNERS) @@ -28,7 +28,7 @@ /obj/structure/Destroy(force) GLOB.cameranet.updateVisibility(src) - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) return ..() diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index e8b5ed4c13d43..1783d4b236a63 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -11,7 +11,7 @@ integrity_failure = 0.1 custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT) layer = OBJ_LAYER - interaction_flags_mouse_drop = NEED_HANDS | NEED_DEXTERITY + interaction_flags_mouse_drop = ALLOW_RESTING var/buildstacktype = /obj/item/stack/sheet/iron var/buildstackamount = 1 @@ -437,7 +437,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0) buildstacktype = /obj/item/stack/sheet/bronze buildstackamount = 1 item_chair = null - interaction_flags_click = NEED_DEXTERITY /// Total rotations made var/turns = 0 diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 32ed0d14d873b..a843c3e3e4bff 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -12,6 +12,8 @@ LINEN BINS righthand_file = 'icons/mob/inhands/items/bedsheet_righthand.dmi' icon_state = "sheetwhite" inhand_icon_state = "sheetwhite" + drop_sound = 'sound/items/handling/cloth_drop.ogg' + pickup_sound = 'sound/items/handling/cloth_pickup.ogg' slot_flags = ITEM_SLOT_NECK layer = BELOW_MOB_LAYER throwforce = 0 @@ -57,20 +59,38 @@ LINEN BINS return NONE -/obj/item/bedsheet/attack_secondary(mob/living/target, mob/living/user, params) - if(!user.CanReach(target)) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - if(target.body_position != LYING_DOWN) - return ..() +/obj/item/bedsheet/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers) + if(!isliving(interacting_with)) + return NONE + var/mob/living/to_cover = interacting_with + if(to_cover.body_position != LYING_DOWN) + return ITEM_INTERACT_BLOCKING if(!user.dropItemToGround(src)) - return ..() + return ITEM_INTERACT_BLOCKING - forceMove(get_turf(target)) + forceMove(get_turf(to_cover)) balloon_alert(user, "covered") - coverup(target) + coverup(to_cover) add_fingerprint(user) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + return ITEM_INTERACT_SUCCESS + +/obj/item/bedsheet/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + // Handle wirecutters here so we still tear it up in combat mode + if(tool.tool_behaviour != TOOL_WIRECUTTER && !tool.get_sharpness()) + return NONE + + // We cannot get free cloth from holograms + if(flags_1 & HOLOGRAM_1) + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/shreds = new stack_type(get_turf(src), stack_amount) + if(!QDELETED(shreds)) // Stacks merged + transfer_fingerprints_to(shreds) + shreds.add_fingerprint(user) + to_chat(user, span_notice("You tear [src] up.")) + qdel(src) + return ITEM_INTERACT_SUCCESS /obj/item/bedsheet/attack_self(mob/living/user) if(!user.CanReach(src)) //No telekinetic grabbing. @@ -83,10 +103,15 @@ LINEN BINS coverup(user) add_fingerprint(user) +/obj/item/bedsheet/click_alt(mob/living/user) + setDir(REVERSE_DIR(dir)) + return CLICK_ACTION_SUCCESS + /obj/item/bedsheet/proc/coverup(mob/living/sleeper) layer = ABOVE_MOB_LAYER pixel_x = 0 pixel_y = 0 + pixel_z = sleeper.pixel_z // Account for possible mob elevation balloon_alert(sleeper, "covered") var/angle = sleeper.lying_prev dir = angle2dir(angle + 180) // 180 flips it to be the same direction as the mob @@ -107,6 +132,7 @@ LINEN BINS balloon_alert(sleeper, "smoothed sheets") layer = initial(layer) SET_PLANE_IMPLICIT(src, initial(plane)) + pixel_z = 0 signal_sleeper = null // We need to do this in case someone picks up a bedsheet while a mob is covered up @@ -120,24 +146,9 @@ LINEN BINS UnregisterSignal(sleeper, COMSIG_MOVABLE_MOVED) UnregisterSignal(sleeper, COMSIG_LIVING_SET_BODY_POSITION) UnregisterSignal(sleeper, COMSIG_QDELETING) + pixel_z = 0 signal_sleeper = null -/obj/item/bedsheet/attackby(obj/item/I, mob/user, params) - if(I.tool_behaviour == TOOL_WIRECUTTER || I.get_sharpness()) - if (!(flags_1 & HOLOGRAM_1)) - var/obj/item/stack/shreds = new stack_type(get_turf(src), stack_amount) - if(!QDELETED(shreds)) //stacks merged - transfer_fingerprints_to(shreds) - shreds.add_fingerprint(user) - qdel(src) - to_chat(user, span_notice("You tear [src] up.")) - else - return ..() - -/obj/item/bedsheet/click_alt(mob/living/user) - dir = REVERSE_DIR(dir) - return CLICK_ACTION_SUCCESS - /obj/item/bedsheet/blue icon_state = "sheetblue" inhand_icon_state = "sheetblue" @@ -565,9 +576,12 @@ LINEN BINS desc = "It looks rather cosy." icon = 'icons/obj/structures.dmi' icon_state = "linenbin-full" + base_icon_state = "linenbin" anchored = TRUE + pass_flags = PASSTABLE resistance_flags = FLAMMABLE max_integrity = 70 + anchored_tabletop_offset = 6 /// The number of bedsheets in the bin var/amount = 10 /// A list of actual sheets within the bin @@ -581,6 +595,10 @@ LINEN BINS anchored = FALSE +/obj/structure/bedsheetbin/Initialize(mapload) + . = ..() + register_context() + /obj/structure/bedsheetbin/examine(mob/user) . = ..() if(amount < 1) @@ -590,15 +608,37 @@ LINEN BINS else . += "There are [amount] bed sheets in the bin." +/obj/structure/bedsheetbin/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + if(isnull(held_item)) + if(amount) + context[SCREENTIP_CONTEXT_LMB] = "Take bedsheet" + return CONTEXTUAL_SCREENTIP_SET + return + + if(istype(held_item, /obj/item/bedsheet)) + context[SCREENTIP_CONTEXT_LMB] = "Put in" + return CONTEXTUAL_SCREENTIP_SET + + if(held_item.tool_behaviour == TOOL_SCREWDRIVER) + context[SCREENTIP_CONTEXT_RMB] = "Disassemble" + . = CONTEXTUAL_SCREENTIP_SET + else if(held_item.tool_behaviour == TOOL_WRENCH) + context[SCREENTIP_CONTEXT_RMB] = "[anchored ? "Una" : "A"]nchor" + . = CONTEXTUAL_SCREENTIP_SET + + if(amount && held_item.w_class < WEIGHT_CLASS_BULKY) + context[SCREENTIP_CONTEXT_LMB] = "Hide item in" + . = CONTEXTUAL_SCREENTIP_SET + return . /obj/structure/bedsheetbin/update_icon_state() switch(amount) if(0) - icon_state = "linenbin-empty" + icon_state = "[base_icon_state]-empty" if(1 to 5) - icon_state = "linenbin-half" + icon_state = "[base_icon_state]-half" else - icon_state = "linenbin-full" + icon_state = "[base_icon_state]-full" return ..() /obj/structure/bedsheetbin/fire_act(exposed_temperature, exposed_volume) @@ -607,7 +647,7 @@ LINEN BINS update_appearance() ..() -/obj/structure/bedsheetbin/screwdriver_act(mob/living/user, obj/item/tool) +/obj/structure/bedsheetbin/screwdriver_act_secondary(mob/living/user, obj/item/tool) if(amount) to_chat(user, span_warning("The [src] must be empty first!")) return ITEM_INTERACT_SUCCESS @@ -617,27 +657,45 @@ LINEN BINS qdel(src) return ITEM_INTERACT_SUCCESS -/obj/structure/bedsheetbin/wrench_act(mob/living/user, obj/item/tool) +/obj/structure/bedsheetbin/wrench_act_secondary(mob/living/user, obj/item/tool) . = ..() default_unfasten_wrench(user, tool, time = 0.5 SECONDS) return ITEM_INTERACT_SUCCESS -/obj/structure/bedsheetbin/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/bedsheet)) - if(!user.transferItemToLoc(I, src)) - return - sheets.Add(I) - amount++ - to_chat(user, span_notice("You put [I] in [src].")) - update_appearance() +/obj/structure/bedsheetbin/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/bedsheet)) + return bedsheet_act(user, tool) - else if(amount && !hidden && I.w_class < WEIGHT_CLASS_BULKY) //make sure there's sheets to hide it among, make sure nothing else is hidden in there. - if(!user.transferItemToLoc(I, src)) - to_chat(user, span_warning("\The [I] is stuck to your hand, you cannot hide it among the sheets!")) - return - hidden = I - to_chat(user, span_notice("You hide [I] among the sheets.")) + // Everything else we try to hide + return hide_item_act(user, tool) +/obj/structure/bedsheetbin/proc/bedsheet_act(mob/living/user, obj/item/tool) + if(!user.transferItemToLoc(tool, src, silent = FALSE)) + return ITEM_INTERACT_BLOCKING + sheets.Add(tool) + amount++ + to_chat(user, span_notice("You put [tool] in [src].")) + update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/structure/bedsheetbin/proc/hide_item_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return NONE + if(tool.w_class >= WEIGHT_CLASS_BULKY) + balloon_alert(user, "too big!") + return ITEM_INTERACT_BLOCKING + if(!amount) + balloon_alert(user, "nothing to hide under!") + return ITEM_INTERACT_BLOCKING + if(hidden) + balloon_alert(user, "already something there!") + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src, silent = FALSE)) + to_chat(user, span_warning("\The [tool] is stuck to your hand, you cannot hide it among the sheets!")) + return ITEM_INTERACT_BLOCKING + hidden = tool + to_chat(user, span_notice("You hide [tool] among the sheets.")) + return ITEM_INTERACT_SUCCESS /obj/structure/bedsheetbin/attack_paw(mob/user, list/modifiers) return attack_hand(user, modifiers) @@ -696,3 +754,13 @@ LINEN BINS add_fingerprint(user) return COMPONENT_CANCEL_ATTACK_CHAIN + +/obj/structure/bedsheetbin/basket + name = "linen basket" + icon_state = "linenbasket-full" + base_icon_state = "linenbasket" + +/obj/structure/bedsheetbin/empty/basket + name = "linen basket" + icon_state = "linenbasket-empty" + base_icon_state = "linenbasket" diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 8fd16036811fe..4484e3c512ef3 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -182,7 +182,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) //USE THIS TO FILL IT, NOT INITIALIZE OR NEW /obj/structure/closet/proc/PopulateContents() - SEND_SIGNAL(src, COMSIG_CLOSET_POPULATE_CONTENTS) + return /// Populate the closet with stuff that needs to be added before it is opened. /// This is useful for things like traitor objectives. @@ -452,6 +452,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) if (!contents_initialized) contents_initialized = TRUE PopulateContents() + SEND_SIGNAL(src, COMSIG_CLOSET_CONTENTS_INITIALIZED) var/atom/L = drop_location() for(var/atom/movable/AM in src) @@ -1012,7 +1013,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) return FALSE return TRUE -/obj/structure/closet/container_resist_act(mob/living/user) +/obj/structure/closet/container_resist_act(mob/living/user, loc_required = TRUE) if(isstructure(loc)) relay_container_resist_act(user, loc) if(opened) @@ -1037,7 +1038,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) addtimer(CALLBACK(src, PROC_REF(check_if_shake)), 1 SECONDS) if(do_after(user,(breakout_time), target = src)) - if(!user || user.stat != CONSCIOUS || user.loc != src || opened || (!locked && !welded) ) + if(!user || user.stat != CONSCIOUS || (loc_required && (user.loc != src)) || opened || (!locked && !welded) ) return //we check after a while whether there is a point of resisting anymore and whether the user is capable of resisting user.visible_message(span_danger("[user] successfully broke out of [src]!"), diff --git a/code/game/objects/structures/crates_lockers/closets/bodybag.dm b/code/game/objects/structures/crates_lockers/closets/bodybag.dm index 8eb5cc3b8c0d4..ac8b444e47dc7 100644 --- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm +++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm @@ -276,7 +276,7 @@ else icon_state = initial(icon_state) -/obj/structure/closet/body_bag/environmental/prisoner/container_resist_act(mob/living/user) +/obj/structure/closet/body_bag/environmental/prisoner/container_resist_act(mob/living/user, loc_required = TRUE) /// copy-pasted with changes because flavor text as well as some other misc stuff if(opened) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 215fa6d86ed3d..7531b8bacfdcd 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -34,11 +34,9 @@ /obj/structure/closet/secure_closet/cytology/PopulateContents() . = ..() new /obj/item/pushbroom(src) - new /obj/item/plunger(src) new /obj/item/storage/bag/xeno(src) new /obj/item/storage/box/petridish(src) - new /obj/item/stack/ducts/fifty(src) for(var/i in 1 to 2) new /obj/item/biopsy_tool(src) new /obj/item/storage/box/swab(src) - new /obj/item/construction/plumbing/research(src) + new /obj/item/reagent_containers/condiment/protein(src) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index aab8e4b858286..64be6a4df8dac 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -20,7 +20,7 @@ /obj/structure/closet/syndicate/personal/PopulateContents() ..() new /obj/item/trench_tool(src) - new /obj/item/clothing/glasses/night(src) + new /obj/item/clothing/glasses/night/colorless(src) new /obj/item/ammo_box/magazine/m10mm(src) new /obj/item/storage/belt/military(src) new /obj/item/storage/belt/holster/nukie(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index c44cd0972aad1..baf239284ac2f 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -140,7 +140,7 @@ for (var/i in 1 to rand(2,6)) new /obj/effect/spawner/random/maintenance(src) - UnregisterSignal(src, COMSIG_CLOSET_POPULATE_CONTENTS) + UnregisterSignal(src, COMSIG_CLOSET_CONTENTS_INITIALIZED) ///Removes the supply manifest from the closet /obj/structure/closet/crate/proc/tear_manifest(mob/user) diff --git a/code/game/objects/structures/fake_stairs.dm b/code/game/objects/structures/fake_stairs.dm index a5e03ed6b5986..1152a8c02dcca 100644 --- a/code/game/objects/structures/fake_stairs.dm +++ b/code/game/objects/structures/fake_stairs.dm @@ -6,6 +6,7 @@ anchored = TRUE move_resist = INFINITY + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE //one with the floor MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fake_stairs, 0) diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index cace64a710169..0564223a7c759 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -91,9 +91,9 @@ qdel(src) return T -/obj/structure/falsewall/item_interaction(mob/living/user, obj/item/tool, list/modifiers) +/obj/structure/falsewall/tool_act(mob/living/user, obj/item/tool, list/modifiers) if(!opening || !tool.tool_behaviour) - return NONE + return ..() to_chat(user, span_warning("You must wait until the door has stopped moving!")) return ITEM_INTERACT_BLOCKING diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm index 82569c8f9e794..7acfa65f62577 100644 --- a/code/game/objects/structures/fluff.dm +++ b/code/game/objects/structures/fluff.dm @@ -87,7 +87,7 @@ icon = 'icons/obj/mining_zones/survival_pod.dmi' icon_state = "fan_tiny" plane = FLOOR_PLANE - layer = LOW_OBJ_LAYER + layer = ABOVE_OPEN_TURF_LAYER /** * A variety of statue in disrepair; parts are broken off and a gemstone is missing diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 37b894e277307..3bd3e00cc273b 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -42,7 +42,7 @@ return . = ..() - if((updates & UPDATE_SMOOTHING) && (smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))) + if((updates & UPDATE_SMOOTHING) && (smoothing_flags & USES_SMOOTHING)) QUEUE_SMOOTH(src) /obj/structure/grille/update_icon_state() diff --git a/code/game/objects/structures/gym/punching_bag.dm b/code/game/objects/structures/gym/punching_bag.dm index ef0db16e953e3..03a64725ab5e3 100644 --- a/code/game/objects/structures/gym/punching_bag.dm +++ b/code/game/objects/structures/gym/punching_bag.dm @@ -57,12 +57,12 @@ stamina_exhaustion = 2 if (is_heavy_gravity) stamina_exhaustion *= 1.5 - + if(HAS_TRAIT(user, TRAIT_STRENGTH)) //The strong get reductions to stamina damage taken while exercising stamina_exhaustion *= 0.5 user.adjustStaminaLoss(stamina_exhaustion) - user.mind?.adjust_experience(/datum/skill/athletics, is_heavy_gravity ? 0.2 : 0.1) + user.mind?.adjust_experience(/datum/skill/athletics, is_heavy_gravity ? 0.6 : 0.3) user.apply_status_effect(/datum/status_effect/exercised) /obj/structure/punching_bag/wrench_act_secondary(mob/living/user, obj/item/tool) diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm index 58308b9b9cf2b..2ede6833aa992 100644 --- a/code/game/objects/structures/lavaland/necropolis_tendril.dm +++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm @@ -6,7 +6,7 @@ icon = 'icons/mob/simple/lavaland/nest.dmi' icon_state = "tendril" - faction = list(FACTION_MINING) + faction = list(FACTION_MINING, FACTION_ASHWALKER) max_mobs = 3 max_integrity = 250 mob_types = list(/mob/living/basic/mining/watcher) diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm index c1e81862ac934..27e05b6dc540d 100644 --- a/code/game/objects/structures/lavaland/ore_vent.dm +++ b/code/game/objects/structures/lavaland/ore_vent.dm @@ -560,7 +560,7 @@ 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) + if(/mob/living/simple_animal/hostile/megafauna/wendigo/noportal) boss_string = "A chilling skull" . += span_notice("[boss_string] is etched onto the side of the vent.") @@ -585,7 +585,7 @@ 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/wendigo/noportal, /mob/living/simple_animal/hostile/megafauna/colossus, ) diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index d794f24dd0894..d67f61e9442bb 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -300,7 +300,7 @@ /obj/structure/mineral_door/paperframe/Initialize(mapload) . = ..() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) /obj/structure/mineral_door/paperframe/examine(mob/user) @@ -333,6 +333,6 @@ return ..() /obj/structure/mineral_door/paperframe/Destroy() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) return ..() diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 01e19e49e5087..75285f672dfb2 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -378,8 +378,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror/broken, 28) race_flags = MIRROR_BADMIN /obj/structure/mirror/magic/pride - name = "strange mirror" //MASSMETA EDIT - ORIGINAL - "pride's mirror" - desc = "You look a little different in this mirror" //MASSMETA EDIT - ORIGINAL - "Pride cometh before the..." + name = "strange mirror" //MASSMETA EDIT CHANGE (gay removal) - ORIGINAL: "pride's mirror" + desc = "You look a little different in this mirror" //MASSMETA EDIT CHANGE (gay removal) - ORIGINAL: "Pride cometh before the..." race_flags = MIRROR_PRIDE mirror_options = PRIDE_MIRROR_OPTIONS diff --git a/code/game/objects/structures/mystery_box.dm b/code/game/objects/structures/mystery_box.dm index 9dc8152f5b7bf..e165c2e295c93 100644 --- a/code/game/objects/structures/mystery_box.dm +++ b/code/game/objects/structures/mystery_box.dm @@ -22,9 +22,7 @@ GLOBAL_LIST_INIT(mystery_box_guns, list( /obj/item/gun/energy/lasercannon, /obj/item/gun/energy/recharge/ebow/large, /obj/item/gun/energy/e_gun, - /obj/item/gun/energy/e_gun/advtaser, /obj/item/gun/energy/e_gun/nuclear, - /obj/item/gun/energy/e_gun/turret, /obj/item/gun/energy/laser, /obj/item/gun/energy/laser/hellgun, /obj/item/gun/energy/laser/captain, @@ -34,17 +32,17 @@ GLOBAL_LIST_INIT(mystery_box_guns, list( /obj/item/gun/ballistic/revolver/mateba, /obj/item/gun/ballistic/automatic/pistol/deagle/camo, /obj/item/gun/ballistic/automatic/pistol/suppressed, - /obj/item/gun/energy/pulse/carbine, - /obj/item/gun/energy/pulse/pistol, + /obj/item/gun/energy/pulse/carbine/taserless, + /obj/item/gun/energy/pulse/pistol/taserless, /obj/item/gun/ballistic/shotgun/lethal, /obj/item/gun/ballistic/shotgun/automatic/combat, - /obj/item/gun/ballistic/shotgun/bulldog, + /obj/item/gun/ballistic/shotgun/bulldog/unrestricted, /obj/item/gun/ballistic/rifle/boltaction, /obj/item/gun/ballistic/automatic/ar, - /obj/item/gun/ballistic/automatic/proto, - /obj/item/gun/ballistic/automatic/c20r, - /obj/item/gun/ballistic/automatic/l6_saw, - /obj/item/gun/ballistic/automatic/m90, + /obj/item/gun/ballistic/automatic/proto/unrestricted, + /obj/item/gun/ballistic/automatic/c20r/unrestricted, + /obj/item/gun/ballistic/automatic/l6_saw/unrestricted, + /obj/item/gun/ballistic/automatic/m90/unrestricted, /obj/item/gun/ballistic/automatic/tommygun, /obj/item/gun/ballistic/automatic/wt550, /obj/item/gun/ballistic/rifle/sniper_rifle, @@ -72,15 +70,11 @@ GLOBAL_LIST_INIT(mystery_magic, list( /obj/item/gun/magic/wand/arcane_barrage/blood, /obj/item/gun/magic/wand/fireball, /obj/item/gun/magic/wand/resurrection, - /obj/item/gun/magic/wand/death, - /obj/item/gun/magic/wand/polymorph, /obj/item/gun/magic/wand/teleport, /obj/item/gun/magic/wand/door, /obj/item/gun/magic/wand/nothing, /obj/item/storage/belt/wands/full, /obj/item/gun/magic/staff/healing, - /obj/item/gun/magic/staff/change, - /obj/item/gun/magic/staff/animate, /obj/item/gun/magic/staff/chaos, /obj/item/gun/magic/staff/door, /obj/item/gun/magic/staff/honk, @@ -88,7 +82,6 @@ GLOBAL_LIST_INIT(mystery_magic, list( /obj/item/gun/magic/staff/flying, /obj/item/gun/magic/staff/babel, /obj/item/singularityhammer, - /obj/item/mod/control/pre_equipped/enchanted, /obj/item/runic_vendor_scepter, )) diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm index 0700f19818a39..e27f5fcf42b40 100644 --- a/code/game/objects/structures/reflector.dm +++ b/code/game/objects/structures/reflector.dm @@ -79,10 +79,10 @@ P.decayedRange = max(P.decayedRange--, 0) return BULLET_ACT_FORCE_PIERCE -/obj/structure/reflector/item_interaction(mob/living/user, obj/item/tool, list/modifiers) +/obj/structure/reflector/tool_act(mob/living/user, obj/item/tool, list/modifiers) if(admin && tool.tool_behaviour) return ITEM_INTERACT_BLOCKING - return NONE + return ..() /obj/structure/reflector/screwdriver_act(mob/living/user, obj/item/tool) can_rotate = !can_rotate diff --git a/code/game/objects/structures/secure_safe.dm b/code/game/objects/structures/secure_safe.dm index 76c3ab4575f6c..9e1bf9b5adef9 100644 --- a/code/game/objects/structures/secure_safe.dm +++ b/code/game/objects/structures/secure_safe.dm @@ -74,15 +74,15 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/secure_safe, 32) There appears to be a small amount of surface corrosion. It doesn't look like it could withstand much of an explosion.\ Due to the expensive material, it was made incredibly small to cut corners, leaving only enough room to fit something as slim as an ID card." icon = 'icons/obj/structures.dmi' - icon_state = "safe" - base_icon_state = "safe" + icon_state = "spare_safe" + base_icon_state = "spare_safe" armor_type = /datum/armor/safe_caps_spare max_integrity = 300 damage_deflection = 30 // prevents stealing the captain's spare using null rods/lavaland monsters/AP projectiles density = TRUE - anchored_tabletop_offset = 4 + anchored_tabletop_offset = 6 custom_materials = list(/datum/material/gold = SMALL_MATERIAL_AMOUNT) - material_flags = MATERIAL_EFFECTS | MATERIAL_COLOR + material_flags = MATERIAL_EFFECTS /datum/armor/safe_caps_spare melee = 100 @@ -95,9 +95,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/secure_safe, 32) /obj/structure/secure_safe/caps_spare/Initialize(mapload) . = ..() - var/matrix/small_safe_transformation = new - small_safe_transformation.Scale(0.6) - transform = small_safe_transformation atom_storage.set_holdable(/obj/item/card/id) AddComponent(/datum/component/lockable_storage, \ lock_code = SSid_access.spare_id_safe_code, \ diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm index 5f9450e435838..743d76ef182b2 100644 --- a/code/game/objects/structures/spawner.dm +++ b/code/game/objects/structures/spawner.dm @@ -70,7 +70,9 @@ spawn_time = spawn_time, \ max_spawned = max_mobs, \ faction = faction, \ - spawn_text = spawn_text, \ + spawn_text = spawn_text,\ + spawn_callback = CALLBACK(src, PROC_REF(on_mob_spawn)), \ + initial_spawn_delay = !mapload, \ ) /obj/structure/spawner/attack_animal(mob/living/simple_animal/user, list/modifiers) @@ -78,6 +80,8 @@ return return ..() +/obj/structure/spawner/proc/on_mob_spawn(atom/created_atom) + return /obj/structure/spawner/syndicate name = "warp beacon" @@ -226,3 +230,74 @@ newmob.desc = "It's [living_mob], but [living_mob.p_their()] flesh has an ashy texture, and [living_mob.p_their()] face is featureless save an eerie smile." src.visible_message(span_warning("[living_mob] reemerges from the link!")) qdel(living_mob) + +/obj/structure/spawner/sentient + var/role_name = "A sentient mob" + var/assumed_control_message = "You are a sentient mob from a badly coded spawner" + +/obj/structure/spawner/sentient/Initialize(mapload) + . = ..() + notify_ghosts( + "A [name] has been created in \the [get_area(src)]!", + source = src, + header = "Sentient Spawner Created", + notify_flags = NOTIFY_CATEGORY_NOFLASH, + ) + +/obj/structure/spawner/sentient/on_mob_spawn(atom/created_atom) + created_atom.AddComponent(\ + /datum/component/ghost_direct_control,\ + role_name = src.role_name,\ + assumed_control_message = src.assumed_control_message,\ + after_assumed_control = CALLBACK(src, PROC_REF(became_player_controlled)),\ + ) + +/obj/structure/spawner/sentient/proc/became_player_controlled(mob/proteon) + return + +/obj/structure/spawner/sentient/proteon_spawner + name = "eldritch gateway" + desc = "A dizzying structure that somehow links into Nar'Sie's own domain. The screams of the damned echo continously." + icon = 'icons/obj/antags/cult/structures.dmi' + icon_state = "hole" + light_power = 2 + light_color = COLOR_CULT_RED + max_integrity = 50 + density = FALSE + max_mobs = 2 + spawn_time = 15 SECONDS + mob_types = list(/mob/living/basic/construct/proteon/hostile) + spawn_text = "arises from" + faction = list(FACTION_CULT) + role_name = "A proteon cult construct" + assumed_control_message = null + +/obj/structure/spawner/sentient/proteon_spawner/examine_status(mob/user) + if(IS_CULTIST(user) || !isliving(user)) + return span_cult("It's at [round(atom_integrity * 100 / max_integrity)]% stability.") + return ..() + +/obj/structure/spawner/sentient/proteon_spawner/examine(mob/user) + . = ..() + if(!IS_CULTIST(user) && isliving(user)) + var/mob/living/living_user = user + living_user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15) + . += span_danger("The voices of the damned echo relentlessly in your mind, continously rebounding on the walls of your self the more you focus on [src]. Your head pounds, better keep away...") + else + . += span_cult("The gateway will create one weak proteon construct every [spawn_time * 0.1] seconds, up to a total of [max_mobs], that may be controlled by the spirits of the dead.") + +/obj/structure/spawner/sentient/proteon_spawner/became_player_controlled(mob/living/basic/construct/proteon/proteon) + proteon.mind.add_antag_datum(/datum/antagonist/cult) + proteon.add_filter("awoken_proteon", 3, list("type" = "outline", "color" = COLOR_CULT_RED, "size" = 2)) + visible_message(span_cult_bold("[proteon] awakens, glowing an eerie red as it stirs from its stupor!")) + playsound(proteon, 'sound/items/haunted/ghostitemattack.ogg', 100, TRUE) + proteon.balloon_alert_to_viewers("awoken!") + addtimer(CALLBACK(src, PROC_REF(remove_wake_outline), proteon), 8 SECONDS) + +/obj/structure/spawner/sentient/proteon_spawner/proc/remove_wake_outline(mob/proteon) + proteon.remove_filter("awoken_proteon") + proteon.add_filter("sentient_proteon", 3, list("type" = "outline", "color" = COLOR_CULT_RED, "size" = 2, "alpha" = 40)) + +/obj/structure/spawner/sentient/proteon_spawner/handle_deconstruct(disassembled) + playsound('sound/hallucinations/veryfar_noise.ogg', 125) + visible_message(span_cult_bold("[src] completely falls apart, the screams of the damned reaching a feverous pitch before slowly fading away into nothing.")) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 04be4f9d72331..69c6aca505f36 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -92,7 +92,7 @@ /obj/structure/table/update_icon(updates=ALL) . = ..() - if((updates & UPDATE_SMOOTHING) && (smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))) + if((updates & UPDATE_SMOOTHING) && (smoothing_flags & USES_SMOOTHING)) QUEUE_SMOOTH(src) QUEUE_SMOOTH_NEIGHBORS(src) @@ -225,11 +225,6 @@ return ITEM_INTERACT_SUCCESS /obj/structure/table/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) - if(tool.tool_behaviour == TOOL_SCREWDRIVER || tool.tool_behaviour == TOOL_WRENCH) - // continue to tool act - // ...we need a better way to do this natively. - // maybe flag to call tool acts before item interaction specifically? - return NONE if(istype(tool, /obj/item/construction/rcd)) return NONE @@ -864,12 +859,6 @@ deconstruct(TRUE) return ITEM_INTERACT_SUCCESS -/obj/structure/rack/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) - if(tool.tool_behaviour == TOOL_WRENCH) - return NONE - - return item_interaction(user, tool, modifiers) - /obj/structure/rack/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if((tool.item_flags & ABSTRACT) || user.combat_mode) return NONE diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm index 2c0b3bdc95bbd..2d16ea30a69e4 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -2,7 +2,7 @@ /obj/structure/tank_dispenser name = "tank dispenser" - desc = "A simple yet bulky storage device for gas tanks. Holds up to 10 oxygen tanks and 10 plasma tanks." + desc = "A simple yet bulky storage device for gas tanks." icon = 'icons/obj/structures.dmi' icon_state = "dispenser" density = TRUE @@ -19,6 +19,7 @@ /obj/structure/tank_dispenser/Initialize(mapload) . = ..() + AddElement(/datum/element/contextual_screentip_bare_hands, lmb_text = "Take Plasma Tank", rmb_text = "Take Oxygen Tank") update_appearance() /obj/structure/tank_dispenser/update_overlays() @@ -34,6 +35,25 @@ if(5 to TANK_DISPENSER_CAPACITY) . += "plasma-5" +/obj/structure/tank_dispenser/attack_hand(mob/living/user, list/modifiers) + . = ..() + if (!plasmatanks) + balloon_alert(user, "no plasma tanks!") + return + dispense(/obj/item/tank/internals/plasma, user) + plasmatanks-- + update_appearance() + +/obj/structure/tank_dispenser/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if (!oxygentanks) + balloon_alert(user, "no oxygen tanks!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + dispense(/obj/item/tank/internals/oxygen, user) + oxygentanks-- + update_appearance() + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + /obj/structure/tank_dispenser/wrench_act(mob/living/user, obj/item/tool) . = ..() default_unfasten_wrench(user, tool) @@ -52,67 +72,37 @@ else full = TRUE else if(!user.combat_mode) - to_chat(user, span_notice("[I] does not fit into [src].")) + balloon_alert(user, "can't insert!") return else return ..() if(full) - to_chat(user, span_notice("[src] can't hold any more of [I].")) + balloon_alert(user, "it is full!") return if(!user.transferItemToLoc(I, src)) return - to_chat(user, span_notice("You put [I] in [src].")) + balloon_alert(user, "tank inserted") update_appearance() -/obj/structure/tank_dispenser/ui_state(mob/user) - return GLOB.physical_state - -/obj/structure/tank_dispenser/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "TankDispenser", name) - ui.open() - -/obj/structure/tank_dispenser/ui_data(mob/user) - var/list/data = list() - data["oxygen"] = oxygentanks - data["plasma"] = plasmatanks - - return data - -/obj/structure/tank_dispenser/ui_act(action, params) - . = ..() - if(.) - return - switch(action) - if("plasma") - if (plasmatanks == 0) - return TRUE - - dispense(/obj/item/tank/internals/plasma, usr) - plasmatanks-- - if("oxygen") - if (oxygentanks == 0) - return TRUE - - dispense(/obj/item/tank/internals/oxygen, usr) - oxygentanks-- - - update_appearance() - return TRUE - - /obj/structure/tank_dispenser/atom_deconstruct(disassembled = TRUE) for(var/X in src) var/obj/item/I = X I.forceMove(loc) new /obj/item/stack/sheet/iron (loc, 2) +/obj/structure/tank_dispenser/examine(mob/user) + . = ..() + if(plasmatanks && oxygentanks) + . += span_notice("It has [plasmatanks] plasma tank\s and [oxygentanks] oxygen tank\s left.") + else if(plasmatanks || oxygentanks) + . += span_notice("It has [plasmatanks ? "[plasmatanks] plasma" : "[oxygentanks] oxygen"] tank\s left.") + /obj/structure/tank_dispenser/proc/dispense(tank_type, mob/receiver) var/existing_tank = locate(tank_type) in src if (isnull(existing_tank)) existing_tank = new tank_type receiver.put_in_hands(existing_tank) + balloon_alert(receiver, "tank received") #undef TANK_DISPENSER_CAPACITY diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 195fbbc643e0a..4c22cbf01b29d 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -1,13 +1,3 @@ -/* Windoor (window door) assembly -Nodrak - * Step 1: Create a windoor out of rglass - * Step 2: Add r-glass to the assembly to make a secure windoor (Optional) - * Step 3: Rotate or Flip the assembly to face and open the way you want - * Step 4: Wrench the assembly in place - * Step 5: Add cables to the assembly - * Step 6: Set access for the door. - * Step 7: Screwdriver the door to complete - */ - /obj/structure/windoor_assembly icon = 'icons/obj/doors/windoor.dmi' @@ -20,15 +10,30 @@ dir = NORTH obj_flags = CAN_BE_HIT | BLOCKS_CONSTRUCTION_DIR set_dir_on_move = FALSE + can_atmos_pass = ATMOS_PASS_PROC + /// Reference to the airlock electronics inside for determining window access. var/obj/item/electronics/airlock/electronics = null + /// Player generated name string from renaming. var/created_name = null //Vars to help with the icon's name - var/facing = "l" //Does the windoor open to the left or right? - var/secure = FALSE //Whether or not this creates a secure windoor - var/state = "01" //How far the door assembly has progressed - can_atmos_pass = ATMOS_PASS_PROC + ///Does the windoor open to the left or right? + var/facing = "l" + ///Whether or not this creates a secure windoor + var/secure = FALSE + /** + * Windoor (window door) assembly -Nodrak + * Step 1: Create a windoor out of rglass + * Step 2: Add r-glass to the assembly to make a secure windoor (Optional) + * Step 3: Rotate or Flip the assembly to face and open the way you want + * Step 4: Wrench the assembly in place + * Step 5: Add cables to the assembly + * Step 6: Set access for the door. + * Step 7: Crowbar the door to complete + */ + var/state = "01" + /obj/structure/windoor_assembly/Initialize(mapload, set_dir) . = ..() @@ -279,6 +284,21 @@ //Update to reflect changes(if applicable) update_appearance() +/obj/structure/windoor_assembly/examine(mob/user) + . = ..() + if(!anchored) + . += span_notice("\The [src] can be [span_boldnotice("wrenched")] down.") + . += span_notice("\The [src] could also be [span_boldnotice("cut apart")] with a [span_boldnotice("welder")].") + return + switch(state) + if("01") + . += span_notice("\The [src] needs [span_boldnotice("wiring")], or could be [span_boldnotice("un-wrenched")] from the floor.") + if("02") + if(!electronics) + . += span_notice("\The [src] needs [span_boldnotice("airlock electronics")] to continue installation, or [span_boldnotice("wirecutters")] to take apart.") + else + . += span_notice("\The [src] is ready to be [span_boldnotice("levered")] into place with a [span_boldnotice("crowbar")].") + /obj/structure/windoor_assembly/proc/finish_door() var/obj/machinery/door/window/windoor if(secure) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 5ddac3f5a5245..6c41b2f8b157d 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -188,11 +188,11 @@ return return ..() -/obj/structure/window/item_interaction(mob/living/user, obj/item/tool, list/modifiers) +/obj/structure/window/tool_act(mob/living/user, obj/item/tool, list/modifiers) if(!can_be_reached(user)) return ITEM_INTERACT_SKIP_TO_ATTACK // Guess you get to hit it add_fingerprint(user) - return NONE + return ..() /obj/structure/window/welder_act(mob/living/user, obj/item/tool) if(atom_integrity >= max_integrity) @@ -393,7 +393,7 @@ //This proc is used to update the icons of nearby windows. /obj/structure/window/proc/update_nearby_icons() update_appearance() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) //merges adjacent full-tile windows into one @@ -402,7 +402,7 @@ if(QDELETED(src) || !fulltile) return - if((updates & UPDATE_SMOOTHING) && (smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))) + if((updates & UPDATE_SMOOTHING) && (smoothing_flags & USES_SMOOTHING)) QUEUE_SMOOTH(src) var/ratio = atom_integrity / max_integrity @@ -568,6 +568,14 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/spawner, 0) MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/unanchored/spawner, 0) +// You can't rust glass! So only reinforced glass can be impacted. +/obj/structure/window/reinforced/rust_heretic_act() + add_atom_colour(COLOR_RUSTED_GLASS, FIXED_COLOUR_PRIORITY) + AddElement(/datum/element/rust) + set_armor(/datum/armor/none) + take_damage(get_integrity() * 0.5) + modify_max_integrity(max_integrity * 0.5) + /obj/structure/window/plasma name = "plasma window" desc = "A window made out of a plasma-silicate alloy. It looks insanely tough to break and burn through." @@ -893,7 +901,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/tinted/frosted/spaw /obj/structure/window/paperframe/update_icon(updates=ALL) . = ..() - if((updates & UPDATE_SMOOTHING) && (smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))) + if((updates & UPDATE_SMOOTHING) && (smoothing_flags & USES_SMOOTHING)) QUEUE_SMOOTH(src) /obj/structure/window/paperframe/update_overlays() diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index 4b0f7961d51ff..ed31138bb19f8 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -99,7 +99,7 @@ if(is_station_level(z)) GLOB.station_turfs += src if(smoothing_flags & SMOOTH_DIAGONAL_CORNERS && fixed_underlay) //Set underlays for the diagonal walls. - var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER, offset_spokesman = src, plane = FLOOR_PLANE) + var/mutable_appearance/underlay_appearance = mutable_appearance(layer = LOW_FLOOR_LAYER, offset_spokesman = src, plane = FLOOR_PLANE) if(fixed_underlay["space"]) generate_space_underlay(underlay_appearance, src) else diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm index 8270e3d791a90..147e123c8af28 100644 --- a/code/game/turfs/open/_open.dm +++ b/code/game/turfs/open/_open.dm @@ -1,4 +1,5 @@ /turf/open + layer = LOW_FLOOR_LAYER plane = FLOOR_PLANE ///negative for faster, positive for slower var/slowdown = 0 @@ -11,7 +12,11 @@ /// Determines the type of damage overlay that will be used for the tile var/damaged_dmi = null var/broken = FALSE + /// Are broken overlays smoothed? if they are we have to change a little bit about how we render them + var/smooth_broken = FALSE var/burnt = FALSE + /// Are burnt overlays smoothed? if they are we have to change a little bit about how we render them + var/smooth_burnt = FALSE /// Returns a list of every turf state considered "broken". @@ -47,7 +52,7 @@ if(broken) var/mutable_appearance/broken_appearance = mutable_appearance(damaged_dmi, pick(broken_states())) - if(smoothing_flags && !(smoothing_flags & SMOOTH_BROKEN_TURF)) + if(smoothing_flags && !smooth_broken) var/matrix/translation = new translation.Translate(-LARGE_TURF_SMOOTHING_X_OFFSET, -LARGE_TURF_SMOOTHING_Y_OFFSET) broken_appearance.transform = translation @@ -62,7 +67,7 @@ else burnt_appearance = mutable_appearance(damaged_dmi, pick(broken_states())) - if(smoothing_flags && !(smoothing_flags & SMOOTH_BURNT_TURF)) + if(smoothing_flags && !smooth_burnt) var/matrix/translation = new translation.Translate(-LARGE_TURF_SMOOTHING_X_OFFSET, -LARGE_TURF_SMOOTHING_Y_OFFSET) burnt_appearance.transform = translation @@ -320,7 +325,7 @@ for(var/mob/living/L in contents) if(L.bodytemperature <= 50 && !HAS_TRAIT(L, TRAIT_RESISTCOLD)) L.apply_status_effect(/datum/status_effect/freon) - MakeSlippery(TURF_WET_PERMAFROST, 50) + MakeSlippery(TURF_WET_PERMAFROST, 10 SECONDS) return TRUE /turf/open/proc/water_vapor_gas_act() diff --git a/code/game/turfs/open/asteroid.dm b/code/game/turfs/open/asteroid.dm index aa295e1e8346e..8db5753a7196b 100644 --- a/code/game/turfs/open/asteroid.dm +++ b/code/game/turfs/open/asteroid.dm @@ -223,7 +223,7 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) return TRUE return FALSE -/turf/open/misc/grass/burnt_states() +/turf/open/misc/asteroid/snow/burnt_states() return list("snow_dug") /turf/open/misc/asteroid/snow/icemoon diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index 12d9deedbae84..84b9ac26e9b8d 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -142,7 +142,7 @@ /turf/open/floor/proc/try_replace_tile(obj/item/stack/tile/T, mob/user, params) if(T.turf_type == type && T.turf_dir == dir) return - var/obj/item/crowbar/CB = user.is_holding_item_of_type(/obj/item/crowbar) + var/obj/item/crowbar/CB = user.is_holding_tool_quality(TOOL_CROWBAR) if(!CB) return var/turf/open/floor/plating/P = pry_tile(CB, user, TRUE) diff --git a/code/game/turfs/open/floor/catwalk_plating.dm b/code/game/turfs/open/floor/catwalk_plating.dm index 57bd0b74107ee..765482cf78cfa 100644 --- a/code/game/turfs/open/floor/catwalk_plating.dm +++ b/code/game/turfs/open/floor/catwalk_plating.dm @@ -19,14 +19,10 @@ rust_resistance = RUST_RESISTANCE_BASIC var/covered = TRUE var/catwalk_type = "maint" - var/static/list/catwalk_underlays = list() /turf/open/floor/catwalk_floor/Initialize(mapload) . = ..() - if(!catwalk_underlays[catwalk_type]) - var/mutable_appearance/plating_underlay = mutable_appearance(icon, "[catwalk_type]_below", TURF_LAYER) - catwalk_underlays[catwalk_type] = plating_underlay - underlays += catwalk_underlays[catwalk_type] + underlays += mutable_appearance(icon, "[catwalk_type]_below", LOW_FLOOR_LAYER, src, FLOOR_PLANE) update_appearance() /turf/open/floor/catwalk_floor/examine(mob/user) @@ -43,7 +39,7 @@ covered = !covered if(!covered) underfloor_accessibility = UNDERFLOOR_INTERACTABLE - layer = TURF_LAYER + layer = LOW_FLOOR_LAYER icon_state = "[catwalk_type]_below" else underfloor_accessibility = UNDERFLOOR_VISIBLE diff --git a/code/game/turfs/open/floor/fancy_floor.dm b/code/game/turfs/open/floor/fancy_floor.dm index e9331872907f4..e672b7f7294fa 100644 --- a/code/game/turfs/open/floor/fancy_floor.dm +++ b/code/game/turfs/open/floor/fancy_floor.dm @@ -34,9 +34,9 @@ /turf/open/floor/wood/try_replace_tile(obj/item/stack/tile/T, mob/user, params) if(T.turf_type == type) return - var/obj/item/tool = user.is_holding_item_of_type(/obj/item/screwdriver) + var/obj/item/tool = user.is_holding_tool_quality(TOOL_SCREWDRIVER) if(!tool) - tool = user.is_holding_item_of_type(/obj/item/crowbar) + tool = user.is_holding_tool_quality(TOOL_CROWBAR) if(!tool) return var/turf/open/floor/plating/P = pry_tile(tool, user, TRUE) @@ -160,6 +160,9 @@ AddElement(/datum/element/diggable, /obj/item/stack/ore/glass, 2, worm_chance = 50, \ action_text = "uproot", action_text_third_person = "uproots") +/turf/open/floor/grass/Airless + initial_gas_mix = AIRLESS_ATMOS + /turf/open/floor/grass/proc/spawniconchange() icon_state = "grass[rand(0,3)]" @@ -273,11 +276,11 @@ if(!. || !(updates & UPDATE_SMOOTHING)) return if(!broken && !burnt) - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH(src) else make_plating() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) /turf/open/floor/carpet/lone @@ -868,6 +871,7 @@ icon = 'icons/turf/space.dmi' icon_state = "space" floor_tile = /obj/item/stack/tile/fakespace + layer = SPACE_LAYER plane = PLANE_SPACE tiled_dirt = FALSE damaged_dmi = 'icons/turf/space.dmi' diff --git a/code/game/turfs/open/floor/hull.dm b/code/game/turfs/open/floor/hull.dm index 54ea29e051a45..6836c29b960ec 100644 --- a/code/game/turfs/open/floor/hull.dm +++ b/code/game/turfs/open/floor/hull.dm @@ -10,6 +10,16 @@ name = "shuttle ceiling plating" var/old_turf_type +/turf/open/floor/engine/hull/ceiling/Initialize(mapload) + . = ..() + if(!istype(loc, /area/space)) + return + if(istype(loc, /area/space/nearstation)) + return + new /obj/effect/mapping_error (src) //We're in a normal space tile, meaning we aren't lit correct. + ///datum/unit_test/mapping_nearstation_test.dm SHOULD fail this case automatically + //this is just here so the mapper responsible can easily see where the issues are directly on the map. + /turf/open/floor/engine/hull/ceiling/AfterChange(flags, oldType) . = ..() old_turf_type = oldType diff --git a/code/game/turfs/open/floor/plating.dm b/code/game/turfs/open/floor/plating.dm index b5f1e38faae3e..6e4834773c325 100644 --- a/code/game/turfs/open/floor/plating.dm +++ b/code/game/turfs/open/floor/plating.dm @@ -176,8 +176,8 @@ ScrapeAway(flags = CHANGETURF_INHERIT_AIR) return TRUE -/turf/open/floor/plating/foam/item_interaction(mob/living/user, obj/item/tool, list/modifiers) - return user.combat_mode ? ITEM_INTERACT_SKIP_TO_ATTACK : ITEM_INTERACT_BLOCKING // Fuck you +/turf/open/floor/plating/foam/welder_act(mob/living/user, obj/item/I) + return NONE // Fuck you //reinforced plating deconstruction states #define PLATE_INTACT 0 diff --git a/code/game/turfs/open/floor/plating/misc_plating.dm b/code/game/turfs/open/floor/plating/misc_plating.dm index 704578438fdc3..101376e73aead 100644 --- a/code/game/turfs/open/floor/plating/misc_plating.dm +++ b/code/game/turfs/open/floor/plating/misc_plating.dm @@ -67,6 +67,10 @@ /turf/open/floor/plating/snowed/icemoon initial_gas_mix = ICEMOON_DEFAULT_ATMOS +/turf/open/floor/plating/snowed/standard_air + initial_gas_mix = OPENTURF_DEFAULT_ATMOS + planetary_atmos = FALSE + /turf/open/floor/plating/snowed/smoothed icon = 'icons/turf/floors/snow_turf.dmi' icon_state = "snow_turf-0" diff --git a/code/game/turfs/open/grass.dm b/code/game/turfs/open/grass.dm index d1779ad7499ac..4dd5946a7ed14 100644 --- a/code/game/turfs/open/grass.dm +++ b/code/game/turfs/open/grass.dm @@ -10,9 +10,11 @@ barefootstep = FOOTSTEP_GRASS clawfootstep = FOOTSTEP_GRASS heavyfootstep = FOOTSTEP_GENERIC_HEAVY - smoothing_flags = SMOOTH_BITMASK | SMOOTH_BROKEN_TURF | SMOOTH_BURNT_TURF + smoothing_flags = SMOOTH_BITMASK smoothing_groups = SMOOTH_GROUP_TURF_OPEN + SMOOTH_GROUP_FLOOR_GRASS canSmoothWith = SMOOTH_GROUP_FLOOR_GRASS + SMOOTH_GROUP_CLOSED_TURFS + smooth_broken = TRUE + smooth_burnt = TRUE layer = HIGH_TURF_LAYER rust_resistance = RUST_RESISTANCE_ORGANIC damaged_dmi = 'icons/turf/floors/grass_damaged.dmi' @@ -24,13 +26,13 @@ var/base_burnt_icon_state = "grass_damaged" /turf/open/misc/grass/broken_states() - if (!smoothing_junction || !(smoothing_flags & SMOOTH_BROKEN_TURF)) + if (!smoothing_junction || !smooth_broken) return list("[base_broken_icon_state]-255") return list("[base_broken_icon_state]-[smoothing_junction]") /turf/open/misc/grass/burnt_states() - if (!smoothing_junction || !(smoothing_flags & SMOOTH_BURNT_TURF)) + if (!smoothing_junction || !smooth_burnt) return list("[base_burnt_icon_state]-255") return list("[base_burnt_icon_state]-[smoothing_junction]") diff --git a/code/game/turfs/open/lava.dm b/code/game/turfs/open/lava.dm index 53450b85db0df..23e2b6b38db84 100644 --- a/code/game/turfs/open/lava.dm +++ b/code/game/turfs/open/lava.dm @@ -205,8 +205,8 @@ to_chat(user, span_warning("You need one rod to build a heatproof lattice.")) return // Light a cigarette in the lava - if(istype(C, /obj/item/clothing/mask/cigarette)) - var/obj/item/clothing/mask/cigarette/ciggie = C + if(istype(C, /obj/item/cigarette)) + var/obj/item/cigarette/ciggie = C if(ciggie.lit) to_chat(user, span_warning("The [ciggie.name] is already lit!")) return TRUE diff --git a/code/game/turfs/open/openspace.dm b/code/game/turfs/open/openspace.dm index 677bc776ea5a7..6e4a8f62576bc 100644 --- a/code/game/turfs/open/openspace.dm +++ b/code/game/turfs/open/openspace.dm @@ -10,6 +10,7 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT pathing_pass_method = TURF_PATHING_PASS_PROC plane = TRANSPARENT_FLOOR_PLANE + layer = SPACE_LAYER rust_resistance = RUST_RESISTANCE_ABSOLUTE var/can_cover_up = TRUE var/can_build_on = TRUE diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 565adb22dbc00..10165f869174f 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -153,7 +153,7 @@ GLOBAL_LIST_EMPTY(station_turfs) SETUP_SMOOTHING() - if (smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if (smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH(src) for(var/atom/movable/content as anything in src) diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 509787ffd3a56..4534ae9d93cff 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -11,7 +11,7 @@ user << browse(create_panel_helper(create_mob_html), "window=create_mob;size=425x475") /** - * Randomizes everything about a human, including DNA and name + * Fully randomizes everything about a human, including DNA and name. */ /proc/randomize_human(mob/living/carbon/human/human, randomize_mutations = FALSE) human.gender = human.dna.species.sexes ? pick(MALE, FEMALE, PLURAL, NEUTER) : PLURAL @@ -31,3 +31,32 @@ // Snowflake for Ethereals human.updatehealth() human.updateappearance(mutcolor_update = TRUE) + +/** + * Randomizes a human, but produces someone who looks exceedingly average (by most standards). + * + * (IE, no wacky hair styles / colors) + */ +/proc/randomize_human_normie(mob/living/carbon/human/human, randomize_mutations = FALSE) + // Sorry enbys but statistically you are not average enough + human.gender = human.dna.species.sexes ? pick(MALE, FEMALE) : PLURAL + human.physique = human.gender + human.real_name = human.generate_random_mob_name() + human.name = human.get_visible_name() + human.eye_color_left = random_eye_color() + human.eye_color_right = human.eye_color_left + human.skin_tone = pick(GLOB.skin_tones) + // No underwear generation handled here + var/picked_color = random_hair_color() + human.set_haircolor(picked_color, update = FALSE) + human.set_facial_haircolor(picked_color, update = FALSE) + var/datum/sprite_accessory/hairstyle = SSaccessories.hairstyles_list[random_hairstyle(human.gender)] + if(hairstyle && hairstyle.natural_spawn && !hairstyle.locked) + human.set_hairstyle(hairstyle.name, update = FALSE) + var/datum/sprite_accessory/facial_hair = SSaccessories.facial_hairstyles_list[random_facial_hairstyle(human.gender)] + if(facial_hair && facial_hair.natural_spawn && !facial_hair.locked) + human.set_facial_hairstyle(facial_hair.name, update = FALSE) + // Normal DNA init stuff, these can generally be wacky but we care less, they're aliens after all + human.dna.initialize_dna(newblood_type = random_blood_type(), create_mutation_blocks = randomize_mutations, randomize_features = TRUE) + human.updatehealth() + human.updateappearance(mutcolor_update = TRUE) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 2ba75020d48d1..13f5b3544b2a0 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1413,7 +1413,7 @@ if(response.body == "[]") dat += "
0 bans detected for [ckey]
" else - bans = json_decode(response["body"]) + bans = json_decode(response.body) //Ignore bans from non-whitelisted sources, if a whitelist exists var/list/valid_sources diff --git a/code/modules/admin/verbs/adminevents.dm b/code/modules/admin/verbs/adminevents.dm index 035edeb3d93e4..4bf32dedb41c1 100644 --- a/code/modules/admin/verbs/adminevents.dm +++ b/code/modules/admin/verbs/adminevents.dm @@ -8,6 +8,8 @@ ADMIN_VERB_AND_CONTEXT_MENU(cmd_admin_subtle_message, R_ADMIN, "Subtle Message", message_admins("[key_name_admin(user)] decided not to answer [ADMIN_LOOKUPFLW(target)]'s prayer") return + msg = user.reformat_narration(msg) + target.balloon_alert(target, "you hear a voice") to_chat(target, "You hear a voice in your head... [msg]", confidential = TRUE) @@ -53,6 +55,8 @@ ADMIN_VERB_AND_CONTEXT_MENU(cmd_admin_headset_message, R_ADMIN, "Headset Message message_admins("[key_name_admin(src)] decided not to answer [key_name_admin(target)]'s [sender] request.") return + input = reformat_narration(input) + log_directed_talk(mob, target, input, LOG_ADMIN, "reply") message_admins("[key_name_admin(src)] replied to [key_name_admin(target)]'s [sender] message with: \"[input]\"") target.balloon_alert(target, "you hear a voice") @@ -64,6 +68,7 @@ ADMIN_VERB(cmd_admin_world_narrate, R_ADMIN, "Global Narrate", "Send a direct na var/msg = input(user, "Message:", "Enter the text you wish to appear to everyone:") as text|null if (!msg) return + msg = user.reformat_narration(msg) to_chat(world, "[msg]", confidential = TRUE) log_admin("GlobalNarrate: [key_name(user)] : [msg]") message_admins(span_adminnotice("[key_name_admin(user)] Sent a global narrate")) @@ -76,6 +81,7 @@ ADMIN_VERB_AND_CONTEXT_MENU(cmd_admin_local_narrate, R_ADMIN, "Local Narrate", A var/msg = input(user, "Message:", "Enter the text you wish to appear to everyone within view:") as text|null if (!msg) return + msg = user.reformat_narration(msg) for(var/mob/M in view(range, locale)) to_chat(M, msg, confidential = TRUE) @@ -89,6 +95,8 @@ ADMIN_VERB_AND_CONTEXT_MENU(cmd_admin_direct_narrate, R_ADMIN, "Direct Narrate", if( !msg ) return + msg = user.reformat_narration(msg) + to_chat(target, msg, confidential = TRUE) log_admin("DirectNarrate: [key_name(user)] to ([key_name(target)]): [msg]") msg = span_adminnotice(" DirectNarrate: [key_name_admin(user)] to ([key_name_admin(target)]): [msg]
") @@ -278,3 +286,14 @@ ADMIN_VERB(command_report_footnote, R_ADMIN, "Command Report Footnote", "Adds a ADMIN_VERB(delay_command_report, R_FUN, "Delay Command Report", "Prevents the roundstart command report from being sent; or forces it to send it delayed.", ADMIN_CATEGORY_EVENTS) GLOB.communications_controller.block_command_report = !GLOB.communications_controller.block_command_report message_admins("[key_name_admin(user)] has [(GLOB.communications_controller.block_command_report ? "delayed" : "sent")] the roundstart command report.") + +///Reformats a narration message. First provides a prompt asking if the user wants to reformat their message, then allows them to pick from a list of spans to use. +/client/proc/reformat_narration(input) + if(tgui_alert(mob, "Set a custom text format?", "Make it snazzy!", list("Yes", "No")) == "Yes") + var/text_span = tgui_input_list(mob, "Select a span!", "Immersion! Yeah!", GLOB.spanname_to_formatting) + if(isnull(text_span)) //In case the user just quit the prompt. + return text_span + text_span = GLOB.spanname_to_formatting[text_span] + input = "" + input + "" + + return input diff --git a/code/modules/admin/verbs/anonymousnames.dm b/code/modules/admin/verbs/anonymousnames.dm index 10edb49d99336..7f56155c9989a 100644 --- a/code/modules/admin/verbs/anonymousnames.dm +++ b/code/modules/admin/verbs/anonymousnames.dm @@ -94,7 +94,7 @@ GLOBAL_DATUM(current_anonymous_theme, /datum/anonymous_theme) return var/mob/living/carbon/human/human_mob = player var/original_name = player.real_name //id will not be changed if you do not do this - randomize_human(player) //do this first so the special name can be given + randomize_human_normie(player) //do this first so the special name can be given player.fully_replace_character_name(original_name, anonymous_name(player)) if(extras_enabled) player_extras(player) diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 436e484cb430e..3717affc51c34 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -208,7 +208,7 @@ ADMIN_VERB(create_mapping_job_icons, R_DEBUG, "Generate job landmarks icons", "G else for(var/obj/item/I in D) qdel(I) - randomize_human(D) + randomize_human_normie(D) D.dress_up_as_job( equipping = JB, visual_only = TRUE, diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm index a4035acd01421..d9a1b90b0af29 100644 --- a/code/modules/admin/view_variables/debug_variables.dm +++ b/code/modules/admin/view_variables/debug_variables.dm @@ -3,11 +3,12 @@ /proc/debug_variable(name, value, level, datum/owner, sanitize = TRUE, display_flags = NONE) //if D is a list, name will be index, and value will be assoc value. if(owner) if(islist(owner)) + var/list/list_owner = owner var/index = name if (value) - name = owner[name] //name is really the index until this line + name = list_owner[name] //name is really the index until this line else - value = owner[name] + value = list_owner[name] . = "
  • ([VV_HREF_TARGET_1V(owner, VV_HK_LIST_EDIT, "E", index)]) ([VV_HREF_TARGET_1V(owner, VV_HK_LIST_CHANGE, "C", index)]) ([VV_HREF_TARGET_1V(owner, VV_HK_LIST_REMOVE, "-", index)]) " else . = "
  • ([VV_HREF_TARGET_1V(owner, VV_HK_BASIC_EDIT, "E", name)]) ([VV_HREF_TARGET_1V(owner, VV_HK_BASIC_CHANGE, "C", name)]) ([VV_HREF_TARGET_1V(owner, VV_HK_BASIC_MASSEDIT, "M", name)]) " diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index c72c97fb73402..d51885d51431f 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -525,6 +525,7 @@ GLOBAL_LIST_EMPTY(antagonists) "antag_team_hud_[REF(src)]", hud_image_on(target), antag_to_check || type, + get_team() && WEAKREF(get_team()), )) // Add HUDs that they couldn't see before diff --git a/code/modules/antagonists/_common/antag_hud.dm b/code/modules/antagonists/_common/antag_hud.dm index 228bfc354dff0..863d52ef5ffe4 100644 --- a/code/modules/antagonists/_common/antag_hud.dm +++ b/code/modules/antagonists/_common/antag_hud.dm @@ -4,9 +4,12 @@ GLOBAL_LIST_EMPTY_TYPED(has_antagonist_huds, /datum/atom_hud/alternate_appearanc /// An alternate appearance that will only show if you have the antag datum /datum/atom_hud/alternate_appearance/basic/has_antagonist var/antag_datum_type + /// Optionally, a weakref to antag team + var/datum/weakref/team_ref -/datum/atom_hud/alternate_appearance/basic/has_antagonist/New(key, image/I, antag_datum_type) +/datum/atom_hud/alternate_appearance/basic/has_antagonist/New(key, image/I, antag_datum_type, datum/weakref/team) src.antag_datum_type = antag_datum_type + team_ref = team GLOB.has_antagonist_huds += src return ..(key, I, NONE) @@ -15,6 +18,9 @@ GLOBAL_LIST_EMPTY_TYPED(has_antagonist_huds, /datum/atom_hud/alternate_appearanc return ..() /datum/atom_hud/alternate_appearance/basic/has_antagonist/mobShouldSee(mob/M) + var/datum/team/antag_team = team_ref?.resolve() + if(!isnull(antag_team)) + return !!(M.mind in antag_team.members) return !!M.mind?.has_antag_datum(antag_datum_type) /// An alternate appearance that will show all the antagonists this mob has diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index bc22eedbfa189..440feb91b7622 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -443,7 +443,7 @@ name = "Syndicate Monkey Agent Kit" head = /obj/item/clothing/head/fedora - mask = /obj/item/clothing/mask/cigarette/syndicate + mask = /obj/item/cigarette/syndicate uniform = /obj/item/clothing/under/syndicate l_pocket = /obj/item/reagent_containers/cup/soda_cans/monkey_energy r_pocket = /obj/item/storage/fancy/cigarettes/cigpack_syndicate diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm index 9f02e5cb167f9..68cf781db9b05 100644 --- a/code/modules/antagonists/abductor/abductor.dm +++ b/code/modules/antagonists/abductor/abductor.dm @@ -7,6 +7,7 @@ show_in_antagpanel = FALSE //should only show subtypes show_to_ghosts = TRUE suicide_cry = "FOR THE MOTHERSHIP!!" // They can't even talk but y'know + stinger_sound = 'sound/ambience/antag/ayylien.ogg' var/datum/team/abductor_team/team var/sub_role var/outfit @@ -74,7 +75,6 @@ objectives += team.objectives finalize_abductor() ADD_TRAIT(owner, TRAIT_ABDUCTOR_TRAINING, ABDUCTOR_ANTAGONIST) - owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ayylien.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE) return ..() /datum/antagonist/abductor/on_removal() diff --git a/code/modules/antagonists/ashwalker/ashwalker.dm b/code/modules/antagonists/ashwalker/ashwalker.dm index 7caa0d0a2fb0b..827d929b0fbb5 100644 --- a/code/modules/antagonists/ashwalker/ashwalker.dm +++ b/code/modules/antagonists/ashwalker/ashwalker.dm @@ -28,10 +28,14 @@ . = ..() RegisterSignal(owner.current, COMSIG_MOB_EXAMINATE, PROC_REF(on_examinate)) owner.teach_crafting_recipe(/datum/crafting_recipe/skeleton_key) + if(FACTION_NEUTRAL in owner.current.faction) + owner.current.faction.Remove(FACTION_NEUTRAL) // ashwalkers aren't neutral; they're ashwalker-aligned /datum/antagonist/ashwalker/on_removal() . = ..() UnregisterSignal(owner.current, COMSIG_MOB_EXAMINATE) + if(!(FACTION_NEUTRAL in owner.current.faction)) + owner.current.faction.Add(FACTION_NEUTRAL) /datum/antagonist/ashwalker/proc/on_examinate(datum/source, atom/A) SIGNAL_HANDLER diff --git a/code/modules/antagonists/brother/brother.dm b/code/modules/antagonists/brother/brother.dm index b62b18a02aedf..13707df2c052f 100644 --- a/code/modules/antagonists/brother/brother.dm +++ b/code/modules/antagonists/brother/brother.dm @@ -75,9 +75,14 @@ flashed.balloon_alert(source, "unconscious!") return +#ifdef TESTING + if (isnull(flashed.mind)) + flashed.mind_initialize() +#else if (isnull(flashed.mind) || !GET_CLIENT(flashed)) flashed.balloon_alert(source, "[flashed.p_their()] mind is vacant!") return +#endif for(var/datum/objective/brother_objective as anything in source.mind.get_all_objectives()) // If the objective has a target, are we flashing them? @@ -183,6 +188,11 @@ message_admins("[key_name_admin(admin)] made [key_name_admin(new_owner)] into a blood brother.") log_admin("[key_name(admin)] made [key_name(new_owner)] into a blood brother.") +/datum/antagonist/brother/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/the_mob = owner.current || mob_override + add_team_hud(the_mob) + /datum/antagonist/brother/ui_static_data(mob/user) var/list/data = list() data["antag_name"] = name @@ -219,8 +229,13 @@ /// Adds a new brother to the team /datum/team/brother_team/proc/add_brother(mob/living/new_brother, source) +#ifndef TESTING if (isnull(new_brother) || isnull(new_brother.mind) || !GET_CLIENT(new_brother) || new_brother.mind.has_antag_datum(/datum/antagonist/brother)) return FALSE +#else + if (isnull(new_brother) || new_brother.mind.has_antag_datum(/datum/antagonist/brother)) + return FALSE +#endif set_brothers_left(brothers_left - 1) for (var/datum/mind/brother_mind as anything in members) diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index d0aaa2671c414..20e1c94ee9a60 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -40,7 +40,7 @@ /// The max chemical storage the changeling currently has. var/total_chem_storage = 75 /// The chemical recharge rate per life tick. - var/chem_recharge_rate = 0.5 + var/chem_recharge_rate = 1 /// Any additional modifiers triggered by changelings that modify the chem_recharge_rate. var/chem_recharge_slowdown = 0 /// The range this ling can sting things. @@ -262,14 +262,18 @@ SIGNAL_HANDLER var/delta_time = DELTA_WORLD_TIME(SSmobs) + var/mob/living/living_owner = owner.current // If dead, we only regenerate up to half chem storage. if(owner.current.stat == DEAD) adjust_chemicals((chem_recharge_rate - chem_recharge_slowdown) * delta_time, total_chem_storage * 0.5) - // If we're not dead - we go up to the full chem cap. + // If we're not dead and not on fire - we go up to the full chem cap at normal speed. If on fire we only regenerate at 1/4th the normal speed else - adjust_chemicals((chem_recharge_rate - chem_recharge_slowdown) * delta_time) + if(living_owner.fire_stacks && living_owner.on_fire) + adjust_chemicals((chem_recharge_rate - 0.75) * delta_time) + else + adjust_chemicals((chem_recharge_rate - chem_recharge_slowdown) * delta_time) /** * Signal proc for [COMSIG_LIVING_POST_FULLY_HEAL] diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 1c4fa8c501cd0..db261c29b5433 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -341,7 +341,7 @@ damage = 0 damage_type = BRUTE range = 8 - hitsound = 'sound/weapons/thudswoosh.ogg' + hitsound = 'sound/weapons/shove.ogg' var/chain var/obj/item/ammo_casing/magic/tentacle/source //the item that shot it ///Click params that were used to fire the tentacle shot diff --git a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm index 0e468159a3c7a..7b9eee1bfe94a 100644 --- a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm +++ b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm @@ -55,7 +55,7 @@ var/datum/antagonist/changeling/antag_datum = IS_CHANGELING(C) if(istype(antag_datum)) var/their_loc = get_turf(C) - var/distance = get_dist_euclidian(my_loc, their_loc) + var/distance = get_dist_euclidean(my_loc, their_loc) if (distance < CHANGELING_PHEROMONE_MAX_DISTANCE) changelings[C] = (CHANGELING_PHEROMONE_MAX_DISTANCE ** 2) - (distance ** 2) diff --git a/code/modules/antagonists/clown_ops/clown_weapons.dm b/code/modules/antagonists/clown_ops/clown_weapons.dm index 1c55e5416e247..130b6c9af5f1b 100644 --- a/code/modules/antagonists/clown_ops/clown_weapons.dm +++ b/code/modules/antagonists/clown_ops/clown_weapons.dm @@ -89,7 +89,7 @@ force = 0 throwforce = 0 hitsound = null - embedding = null + embed_type = null light_color = COLOR_YELLOW sword_color_icon = "bananium" active_heat = 0 diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 192d9c4e66d5a..eb55138a4483a 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -12,6 +12,8 @@ default_button_position = DEFAULT_BLOODSPELLS var/list/spells = list() var/channeling = FALSE + /// If the magic has been enhanced somehow, likely due to a crimson focus. + var/magic_enhanced = FALSE /datum/action/innate/cult/blood_magic/Remove() for(var/X in spells) @@ -29,7 +31,7 @@ var/atom/movable/screen/movable/action_button/button = viewers[hud] var/position = screen_loc_to_offset(button.screen_loc) var/list/position_list = list() - for(var/possible_position in 1 to MAX_BLOODCHARGE) + for(var/possible_position in 1 to magic_enhanced ? ENHANCED_BLOODCHARGE : MAX_BLOODCHARGE) position_list += possible_position for(var/datum/action/innate/cult/blood_spell/blood_spell in spells) if(blood_spell.positioned) @@ -50,10 +52,10 @@ rune = TRUE break if(rune) - limit = MAX_BLOODCHARGE + limit = magic_enhanced ? ENHANCED_BLOODCHARGE : MAX_BLOODCHARGE if(length(spells) >= limit) if(rune) - to_chat(owner, span_cult_italic("You cannot store more than [MAX_BLOODCHARGE] spells. Pick a spell to remove.")) + to_chat(owner, span_cult_italic("You cannot store more than [limit] spells. Pick a spell to remove.")) else to_chat(owner, span_cult_bold_italic("You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spells without an empowering rune! Pick a spell to remove.")) var/nullify_spell = tgui_input_list(owner, "Spell to remove", "Current Spells", spells) @@ -86,10 +88,15 @@ else to_chat(owner, span_cult_italic("You are already invoking blood magic!")) return - if(do_after(owner, 100 - rune*60, target = owner)) + var/spell_carving_timer = 10 SECONDS + if(rune) + spell_carving_timer = 4 SECONDS + if(magic_enhanced) + spell_carving_timer *= 0.5 + if(do_after(owner, spell_carving_timer, target = owner)) if(ishuman(owner)) var/mob/living/carbon/human/human_owner = owner - human_owner.bleed(40 - rune*32) + human_owner.bleed(rune ? 8 : 40) var/datum/action/innate/cult/blood_spell/new_spell = new BS(owner.mind) new_spell.Grant(owner, src) spells += new_spell @@ -428,19 +435,35 @@ return var/datum/antagonist/cult/cultist = IS_CULTIST(user) var/datum/team/cult/cult_team = cultist.get_team() - var/effect_coef = 1 - (cult_team.cult_risen ? 0.4 : 0) - (cult_team.cult_ascendent ? 0.5 : 0) + var/effect_coef = 1 + if(cult_team.cult_ascendent) + effect_coef = 0.1 + else if(cult_team.cult_risen) + effect_coef = 0.4 user.visible_message( span_warning("[user] holds up [user.p_their()] hand, which explodes in a flash of red light!"), span_cult_italic("You attempt to stun [target] with the spell!"), visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, ) user.mob_light(range = 1.1, power = 2, color = LIGHT_COLOR_BLOOD_MAGIC, duration = 0.2 SECONDS) + // Heretics are momentarily disoriented by the stunning aura. Enough for both parties to go 'oh shit' but only a mild combat ability. + // Heretics have an identical effect on their grasp. The cultist's worse spell preparation is offset by their extra gear and teammates. if(IS_HERETIC(target)) - to_chat(user, span_warning("Some force greater than you intervenes! [target] is protected by the Forgotten Gods!")) - to_chat(target, span_warning("You are protected by your faith to the Forgotten Gods.")) + target.AdjustKnockdown(0.5 SECONDS) + target.adjust_confusion_up_to(1.5 SECONDS, 3 SECONDS) + target.adjust_dizzy_up_to(1.5 SECONDS, 3 SECONDS) + ADD_TRAIT(target, TRAIT_NO_SIDE_KICK, REF(src)) // We don't want this to be a good stunning tool, just minor disorientation + addtimer(TRAIT_CALLBACK_REMOVE(target, TRAIT_NO_SIDE_KICK, REF(src)), 1 SECONDS) + var/old_color = target.color - target.color = rgb(0, 128, 0) - animate(target, color = old_color, time = 1 SECONDS, easing = EASE_IN) + target.color = COLOR_HERETIC_GREEN + animate(target, color = old_color, time = 4 SECONDS, easing = EASE_IN) + target.mob_light(range = 1.5, power = 2.5, color = COLOR_HERETIC_GREEN, duration = 0.5 SECONDS) + playsound(target, 'sound/magic/magic_block_mind.ogg', 150, TRUE) // insanely quiet + + to_chat(user, span_warning("An eldritch force intervenes as you touch [target], absorbing most of the effects!")) + to_chat(target, span_warning("As [user] touches you with vile magicks, the Mansus absorbs most of the effects!")) + target.balloon_alert_to_viewers("absorbed!") else if(target.can_block_magic()) to_chat(user, span_warning("The spell had no effect!")) else diff --git a/code/modules/antagonists/cult/cult_bastard_sword.dm b/code/modules/antagonists/cult/cult_bastard_sword.dm deleted file mode 100644 index 0d70bd503fb7f..0000000000000 --- a/code/modules/antagonists/cult/cult_bastard_sword.dm +++ /dev/null @@ -1,98 +0,0 @@ - -/// Cult Bastard Sword, earned by cultists when they manage to sacrifice a heretic. -/obj/item/cult_bastard - name = "bloody bastard sword" - desc = "An enormous sword used by Nar'Sien cultists to rapidly harvest the souls of non-believers." - w_class = WEIGHT_CLASS_HUGE - block_chance = 50 - block_sound = 'sound/weapons/parry.ogg' - throwforce = 20 - force = 35 - armour_penetration = 45 - throw_speed = 1 - throw_range = 3 - sharpness = SHARP_EDGED - light_color = "#ff0000" - attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "rends") - attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend") - icon = 'icons/obj/weapons/sword.dmi' - icon_state = "cultbastard" - inhand_icon_state = "cultbastard" - hitsound = 'sound/weapons/bladeslice.ogg' - lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' - righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' - inhand_x_dimension = 64 - inhand_y_dimension = 64 - actions_types = list() - item_flags = SLOWS_WHILE_IN_HAND - ///if we are using our attack_self ability - var/spinning = FALSE - -/obj/item/cult_bastard/Initialize(mapload) - . = ..() - set_light(4) - AddComponent(/datum/component/butchering, 50, 80) - AddComponent(/datum/component/two_handed, require_twohands = TRUE) - AddComponent(/datum/component/soul_stealer, soulstone_type = /obj/item/soulstone) - AddComponent( \ - /datum/component/spin2win, \ - spin_cooldown_time = 25 SECONDS, \ - on_spin_callback = CALLBACK(src, PROC_REF(on_spin)), \ - on_unspin_callback = CALLBACK(src, PROC_REF(on_unspin)), \ - start_spin_message = span_danger("%USER begins swinging the sword around with inhuman strength!"), \ - end_spin_message = span_warning("%USER's inhuman strength dissipates and the sword's runes grow cold!") \ - ) - -/obj/item/cult_bastard/proc/on_spin(mob/living/user, duration) - var/oldcolor = user.color - user.color = "#ff0000" - user.add_stun_absorption( - source = name, - duration = duration, - priority = 2, - message = span_warning("%EFFECT_OWNER doesn't even flinch as the sword's power courses through [user.p_them()]!"), - self_message = span_boldwarning("You shrug off the stun!"), - examine_message = span_warning("%EFFECT_OWNER_THEYRE glowing with a blazing red aura!"), - ) - user.spin(duration, 1) - animate(user, color = oldcolor, time = duration, easing = EASE_IN) - addtimer(CALLBACK(user, TYPE_PROC_REF(/atom, update_atom_colour)), duration) - block_chance = 100 - slowdown += 1.5 - spinning = TRUE - -/obj/item/cult_bastard/proc/on_unspin(mob/living/user) - block_chance = 50 - slowdown -= 1.5 - spinning = FALSE - -/obj/item/cult_bastard/can_be_pulled(user) - return FALSE - -/obj/item/cult_bastard/pickup(mob/living/user) - . = ..() - if(!IS_CULTIST(user)) - if(!IS_HERETIC(user)) - to_chat(user, "\"I wouldn't advise that.\"") - force = 5 - return - else - to_chat(user, span_cult_large("\"You cling to the Forgotten Gods, as if you're more than their pawn.\"")) - to_chat(user, span_userdanger("A horrible force yanks at your arm!")) - user.emote("scream") - user.apply_damage(30, BRUTE, pick(GLOB.arm_zones)) - user.dropItemToGround(src, TRUE) - user.Paralyze(50) - return - force = initial(force) - -/obj/item/cult_bastard/IsReflect(def_zone) - if(!spinning) - return FALSE - return TRUE - -/obj/item/cult_bastard/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE) - if(!prob(final_block_chance)) - return FALSE - owner.visible_message(span_danger("[owner] parries [attack_text] with [src]!")) - return TRUE diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index c0051aec87cd1..ecd85253c21a8 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -76,6 +76,8 @@ Striking a noncultist, however, will tear their flesh."} block_sound = 'sound/weapons/parry.ogg' attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "rends") attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend") + /// If TRUE, it can be used at will by anyone, non-cultists included + var/free_use = FALSE /obj/item/melee/cultblade/Initialize(mapload) . = ..() @@ -93,7 +95,7 @@ Striking a noncultist, however, will tear their flesh."} return FALSE /obj/item/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user) - if(!IS_CULTIST(user)) + if(!IS_CULTIST(user) && !free_use) user.Paralyze(100) user.dropItemToGround(src, TRUE) user.visible_message(span_warning("A powerful force shoves [user] away from [target]!"), \ @@ -106,6 +108,174 @@ Striking a noncultist, however, will tear their flesh."} return ..() +#define WIELDER_SPELLS "wielder_spell" +#define SWORD_SPELLS "sword_spell" +#define SWORD_PREFIX "sword_prefix" + +/obj/item/melee/cultblade/haunted + name = "haunted longsword" + desc = "An eerie sword with a blade that is less 'black' than it is 'absolute nothingness'. It glows with furious, restrained green energy." + icon_state = "hauntedblade" + inhand_icon_state = "hauntedblade" + worn_icon_state = "hauntedblade" + force = 35 + throwforce = 35 + block_chance = 55 + wound_bonus = -25 + bare_wound_bonus = 30 + free_use = TRUE + light_color = COLOR_HERETIC_GREEN + light_range = 4 + /// holder for the actual action when created. + var/datum/action/cooldown/spell/path_wielder_action + var/mob/living/trapped_entity + /// The heretic path that the variable below uses to index abilities. Assigned when the heretic is ensouled. + var/heretic_path + /// Nested static list used to index abilities and names. + var/static/list/heretic_paths_to_haunted_sword_abilities = list( + // Ash + PATH_ASH = list( + WIELDER_SPELLS = list(/datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash), + SWORD_SPELLS = list(/datum/action/cooldown/spell/pointed/ash_beams), + SWORD_PREFIX = "ashen", + ), + // Flesh + PATH_FLESH = list( + WIELDER_SPELLS = list(/datum/action/cooldown/spell/pointed/blood_siphon), + SWORD_SPELLS = list(/datum/action/cooldown/spell/pointed/cleave), + SWORD_PREFIX = "sanguine", + ), + // Void + PATH_VOID = list( + WIELDER_SPELLS = list(/datum/action/cooldown/spell/pointed/void_phase), + SWORD_SPELLS = list(/datum/action/cooldown/spell/cone/staggered/cone_of_cold/void), + SWORD_PREFIX = "tenebrous", + ), + // Blade + PATH_BLADE = list( + WIELDER_SPELLS = list(/datum/action/cooldown/spell/pointed/projectile/furious_steel/haunted), + SWORD_SPELLS = list(/datum/action/cooldown/spell/pointed/projectile/furious_steel/solo), + SWORD_PREFIX = "keen", + ), + // Rust + PATH_RUST = list( + WIELDER_SPELLS = list(/datum/action/cooldown/spell/cone/staggered/entropic_plume), + SWORD_SPELLS = list(/datum/action/cooldown/spell/aoe/rust_conversion, /datum/action/cooldown/spell/pointed/rust_construction), + SWORD_PREFIX = "rusted", + ), + // Cosmic + PATH_COSMIC = list( + WIELDER_SPELLS = list(/datum/action/cooldown/spell/conjure/cosmic_expansion), + SWORD_SPELLS = list(/datum/action/cooldown/spell/pointed/projectile/star_blast), + SWORD_PREFIX = "astral", + ), + // Lock + PATH_LOCK = list( + WIELDER_SPELLS = list(/datum/action/cooldown/spell/pointed/burglar_finesse), + SWORD_SPELLS = list(/datum/action/cooldown/spell/pointed/apetra_vulnera), + SWORD_PREFIX = "incisive", + ), + // Moon + PATH_MOON = list( + WIELDER_SPELLS = list(/datum/action/cooldown/spell/pointed/projectile/moon_parade), + SWORD_SPELLS = list(/datum/action/cooldown/spell/pointed/moon_smile), + SWORD_PREFIX = "shimmering", + ), + // Starter + PATH_START = list( + WIELDER_SPELLS = null, + SWORD_SPELLS = null, + SWORD_PREFIX = "stillborn", // lol loser + ) , + ) + +/obj/item/melee/cultblade/haunted/Initialize(mapload, mob/soul_to_bind, mob/awakener, do_bind = TRUE) + . = ..() + + AddElement(/datum/element/heretic_focus) + add_traits(list(TRAIT_CASTABLE_LOC, TRAIT_SPELLS_TRANSFER_TO_LOC), INNATE_TRAIT) + if(do_bind && !mapload) + bind_soul(soul_to_bind, awakener) + +/obj/item/melee/cultblade/haunted/proc/bind_soul(mob/soul_to_bind, mob/awakener) + + var/datum/mind/trapped_mind = soul_to_bind?.mind + + if(!trapped_mind) + return // Can't do anything further down the list + + if(trapped_mind) + AddComponent(/datum/component/spirit_holding,\ + soul_to_bind = trapped_mind,\ + awakener = awakener,\ + allow_renaming = FALSE,\ + allow_channeling = FALSE,\ + ) + + // Get the heretic's new body and antag datum. + trapped_entity = trapped_mind?.current + trapped_entity.key = trapped_mind?.key + var/datum/antagonist/heretic/heretic_holder = IS_HERETIC(trapped_entity) + if(!heretic_holder) + stack_trace("[soul_to_bind] in but not a heretic on the heretic soul blade.") + + // Give the spirit a spell that lets them try to fly around. + var/datum/action/cooldown/spell/pointed/sword_fling/fling_act = \ + new /datum/action/cooldown/spell/pointed/sword_fling(trapped_mind, to_fling = src) + fling_act.Grant(trapped_entity) + + // Set the sword's path for spell selection. + heretic_path = heretic_holder.heretic_path + + // Copy the objectives to keep for roundend, remove the datum as neither us nor the heretic need it anymore + var/list/copied_objectives = heretic_holder.objectives.Copy() + trapped_entity.mind.remove_antag_datum(/datum/antagonist/heretic) + + // Add the fallen antag datum, give them a heads-up of what's happening. + var/datum/antagonist/soultrapped_heretic/bozo = new() + bozo.objectives |= copied_objectives + trapped_entity.mind.add_antag_datum(bozo) + to_chat(trapped_entity, span_userdanger("You've been sacrificed to the Enemy, and trapped inside a haunted blade! While you cannot escape, you may help the Cult, your current wielder, or even pester everyone with what few abilities you kept.")) + + // Assigning the spells to give to the wielder and spirit. + // Let them cast the given spell. + ADD_TRAIT(trapped_entity, TRAIT_ALLOW_HERETIC_CASTING, INNATE_TRAIT) + + var/list/path_spells = heretic_paths_to_haunted_sword_abilities[heretic_path] + + var/list/wielder_spells = path_spells[WIELDER_SPELLS] + var/list/sword_spells = path_spells[SWORD_SPELLS] + + name = "[path_spells[SWORD_PREFIX]] [name]" + + + // Granting the path spells. The sword spirit gains it outright, while it's just instanced for wielders to be added on pickup. + + if(sword_spells) + for(var/datum/action/cooldown/spell/sword_spell as anything in sword_spells) + sword_spell = new sword_spell(trapped_entity) + sword_spell?.Grant(trapped_entity) + sword_spell?.overlay_icon_state = "bg_cult_border" // for flavor, and also helps distinguish + + + if(wielder_spells) + for(var/datum/action/cooldown/spell/wielder_spell as anything in wielder_spells) + path_wielder_action = new wielder_spell(src) + wielder_spell?.overlay_icon_state = "bg_cult_border" + +/obj/item/melee/cultblade/haunted/equipped(mob/user, slot, initial) + . = ..() + if(slot & ITEM_SLOT_HANDS) + path_wielder_action?.Grant(user) + +/obj/item/melee/cultblade/haunted/dropped(mob/user, silent) + . = ..() + path_wielder_action?.Remove(user) + +#undef WIELDER_SPELLS +#undef SWORD_SPELLS +#undef SWORD_PREFIX + /obj/item/melee/cultblade/ghost name = "eldritch sword" force = 19 //can't break normal airlocks @@ -120,7 +290,7 @@ Striking a noncultist, however, will tear their flesh."} /obj/item/melee/cultblade/pickup(mob/living/user) ..() - if(!IS_CULTIST(user)) + if(!IS_CULTIST(user) && !free_use) to_chat(user, span_cult_large("\"I wouldn't advise that.\"")) /datum/action/innate/dash/cult @@ -162,6 +332,7 @@ Striking a noncultist, however, will tear their flesh."} else to_chat(user, span_warning("The bola seems to take on a life of its own!")) ensnare(user) + user.update_held_items() #undef CULT_BOLA_PICKUP_STUN @@ -463,6 +634,10 @@ Striking a noncultist, however, will tear their flesh."} icon_state = "blindfold" inhand_icon_state = "blindfold" flash_protect = FLASH_PROTECTION_WELDER + actions_types = null + color_cutoffs = list(40, 0, 0) //red + glass_colour_type = null + forced_glass_color = FALSE /obj/item/clothing/glasses/hud/health/night/cultblind/equipped(mob/living/user, slot) ..() @@ -563,6 +738,78 @@ Striking a noncultist, however, will tear their flesh."} #undef MAX_SHUTTLE_CURSES +#define GATEWAY_TURF_SCAN_RANGE 40 + +/obj/item/proteon_orb + name = "summoning orb" + desc = "An eerie translucent orb that feels impossibly light. Legends say summoning orbs are created from corrupted scrying orbs. If you hold it close to your ears, you can hear the screams of the damned." + icon = 'icons/obj/antags/cult/items.dmi' + icon_state = "summoning_orb" + light_range = 3 + light_color = COLOR_CULT_RED + +/obj/item/proteon_orb/examine(mob/user) + . = ..() + if(!IS_CULTIST(user) && isliving(user)) + var/mob/living/living_user = user + living_user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5) + . += span_danger("It hurts just to look at it. Better keep away.") + else + . += span_cult("It can be used to create a gateway to Nar'Sie's domain, which will summon weak, sentient constructs over time.") + +/obj/item/proteon_orb/attack_self(mob/living/user) + + var/list/turfs_to_scan = detect_room(get_turf(user), max_size = GATEWAY_TURF_SCAN_RANGE) + + if(!IS_CULTIST(user)) + to_chat(user, span_cult_large("\"You want to enter my domain? Go ahead.\"")) + turfs_to_scan = null // narsie wants to have some fun and the veil wont stop her + + for(var/turf/hole_candidate as anything in turfs_to_scan) + if(locate(/obj/structure/spawner/sentient/proteon_spawner) in hole_candidate) + to_chat(user, span_cult_bold("There's a gateway too close nearby. The veil is not yet weak enough to allow such close rips in its fabric.")) + return + to_chat(user, span_cult_bold_italic("You focus on [src] and direct it into the ground. It rumbles...")) + + var/turf/open/hole_spot = get_turf(user) + if(!istype(hole_spot) || isgroundlessturf(hole_spot)) + to_chat(user, span_notice("This is not a suitable spot.")) + return + + INVOKE_ASYNC(hole_spot, TYPE_PROC_REF(/turf/open, quake_gateway), user) + qdel(src) + +/** + * Bespoke proc that happens when a proteon orb is activated, creating a gateway. + * If activated by a non-cultist, they get an unusual game over. +*/ +/turf/open/proc/quake_gateway(mob/living/user) + Shake(2, 2, 5 SECONDS) + narsie_act(TRUE, TRUE, 100) + var/fucked = FALSE + if(!IS_CULTIST(user)) + fucked = TRUE + ADD_TRAIT(user, TRAIT_NO_TRANSFORM, REF(src)) // keep em in place + user.add_atom_colour(COLOR_CULT_RED, TEMPORARY_COLOUR_PRIORITY) + user.visible_message(span_cult_bold("Dark tendrils appear from the ground and root [user] in place!")) + sleep(5 SECONDS) // can we still use these or. i mean its async + new /obj/structure/spawner/sentient/proteon_spawner(src) + visible_message(span_cult_bold("A mysterious hole appears out of nowhere!")) + if(!fucked || QDELETED(user)) + return + if(get_turf(user) != src) // they get away. for now + REMOVE_TRAIT(user, TRAIT_NO_TRANSFORM, REF(src)) + return + user.visible_message(span_cult_bold("[user] is pulled into the portal through an infinitesmally minuscule hole, shredding [user.p_their()] body!")) + sleep(5 SECONDS) + user.visible_message(span_cult_italic("An unusually large construct appears through the portal!")) + user.gib() // total destruction + var/mob/living/basic/construct/proteon/hostile/remnant = new(get_step_rand(src)) + remnant.name = "[user]" // no, they do not become it + remnant.transform *= 1.5 + +#undef GATEWAY_TURF_SCAN_RANGE + /obj/item/cult_shift name = "veil shifter" desc = "This relic instantly teleports you, and anything you're pulling, forward by a moderate distance." diff --git a/code/modules/antagonists/cult/cult_other.dm b/code/modules/antagonists/cult/cult_other.dm index 82b342b87ef50..9435baedba11a 100644 --- a/code/modules/antagonists/cult/cult_other.dm +++ b/code/modules/antagonists/cult/cult_other.dm @@ -16,8 +16,15 @@ /proc/is_convertable_to_cult(mob/living/target, datum/team/cult/specific_cult) if(!istype(target)) return FALSE - if(isnull(target.mind) || !GET_CLIENT(target)) + if(isnull(target.mind)) return FALSE + +// disables client checks if testing for easier debugging +#ifndef TESTING + if(!GET_CLIENT(target)) + return FALSE +#endif + if(target.mind.unconvertable) return FALSE if(ishuman(target) && target.mind.holy_role) diff --git a/code/modules/antagonists/cult/cult_structure_altar.dm b/code/modules/antagonists/cult/cult_structure_altar.dm index 9347acb33210f..e38591c0c0705 100644 --- a/code/modules/antagonists/cult/cult_structure_altar.dm +++ b/code/modules/antagonists/cult/cult_structure_altar.dm @@ -2,6 +2,7 @@ #define ELDRITCH_WHETSTONE "Eldritch Whetstone" #define CONSTRUCT_SHELL "Construct Shell" #define UNHOLY_WATER "Flask of Unholy Water" +#define PROTEON_ORB "Portal Summoning Orb" // Cult altar. Gives out consumable items. /obj/structure/destructible/cult/item_dispenser/altar @@ -10,6 +11,7 @@ cult_examine_tip = "Can be used to create eldritch whetstones, construct shells, and flasks of unholy water." icon_state = "talismanaltar" break_message = "The altar shatters, leaving only the wailing of the damned!" + mansus_conversion_path = /obj/effect/heretic_rune /obj/structure/destructible/cult/item_dispenser/altar/setup_options() var/static/list/altar_items = list( @@ -27,7 +29,20 @@ ), ) + var/extra_item = extra_options() + options = altar_items + if(!isnull(extra_item)) + options += extra_item + +/obj/structure/destructible/cult/item_dispenser/altar/extra_options() + if(!cult_team?.unlocked_heretic_items[PROTEON_ORB_UNLOCKED]) + return + return list(PROTEON_ORB = list( + PREVIEW_IMAGE = image(icon = 'icons/obj/antags/cult/items.dmi', icon_state = "summoning_orb"), + OUTPUT_ITEMS = list(/obj/item/proteon_orb), + ), + ) /obj/structure/destructible/cult/item_dispenser/altar/succcess_message(mob/living/user, obj/item/spawned_item) to_chat(user, span_cult_italic("You kneel before [src] and your faith is rewarded with [spawned_item]!")) @@ -35,3 +50,4 @@ #undef ELDRITCH_WHETSTONE #undef CONSTRUCT_SHELL #undef UNHOLY_WATER +#undef PROTEON_ORB diff --git a/code/modules/antagonists/cult/cult_structure_archives.dm b/code/modules/antagonists/cult/cult_structure_archives.dm index a961739663391..d3a96dd1f77aa 100644 --- a/code/modules/antagonists/cult/cult_structure_archives.dm +++ b/code/modules/antagonists/cult/cult_structure_archives.dm @@ -2,6 +2,7 @@ #define CULT_BLINDFOLD "Zealot's Blindfold" #define CURSE_ORB "Shuttle Curse" #define VEIL_WALKER "Veil Walker Set" +#define CRIMSON_FOCUS "Crimson Focus" // Cult archives. Gives out utility items. /obj/structure/destructible/cult/item_dispenser/archives @@ -12,6 +13,7 @@ light_range = 1.5 light_color = LIGHT_COLOR_FIRE break_message = "The books and tomes of the archives burn into ash as the desk shatters!" + mansus_conversion_path = /obj/item/codex_cicatrix /obj/structure/destructible/cult/item_dispenser/archives/setup_options() var/static/list/archive_items = list( @@ -29,7 +31,20 @@ ), ) + var/extra_item = extra_options() + options = archive_items + if(!isnull(extra_item)) + options += extra_item + +/obj/structure/destructible/cult/item_dispenser/archives/extra_options() + if(!cult_team?.unlocked_heretic_items[CRIMSON_FOCUS_UNLOCKED]) + return + return list(CRIMSON_FOCUS = list( + PREVIEW_IMAGE = image(icon = 'icons/obj/clothing/neck.dmi', icon_state = "crimson_focus"), + OUTPUT_ITEMS = list(/obj/item/clothing/neck/heretic_focus/crimson_focus), + ), + ) /obj/structure/destructible/cult/item_dispenser/archives/succcess_message(mob/living/user, obj/item/spawned_item) to_chat(user, span_cult_italic("You summon [spawned_item] from [src]!")) @@ -41,3 +56,4 @@ #undef CULT_BLINDFOLD #undef CURSE_ORB #undef VEIL_WALKER +#undef CRIMSON_FOCUS diff --git a/code/modules/antagonists/cult/cult_structure_forge.dm b/code/modules/antagonists/cult/cult_structure_forge.dm index 912db7d37e9b8..12d15b9296ef4 100644 --- a/code/modules/antagonists/cult/cult_structure_forge.dm +++ b/code/modules/antagonists/cult/cult_structure_forge.dm @@ -2,6 +2,7 @@ #define NARSIE_ARMOR "Nar'Sien Hardened Armor" #define FLAGELLANT_ARMOR "Flagellant's Robe" #define ELDRITCH_SWORD "Eldritch Longsword" +#define CURSED_BLADE "Cursed Ritual Blade" // Cult forge. Gives out combat weapons. /obj/structure/destructible/cult/item_dispenser/forge @@ -12,6 +13,7 @@ light_range = 2 light_color = LIGHT_COLOR_LAVA break_message = "The forge breaks apart into shards with a howling scream!" + mansus_conversion_path = /obj/structure/destructible/eldritch_crucible /obj/structure/destructible/cult/item_dispenser/forge/setup_options() var/static/list/forge_items = list( @@ -29,7 +31,21 @@ ), ) + var/extra_item = extra_options() + options = forge_items + if(!isnull(extra_item)) + options += extra_item + +/obj/structure/destructible/cult/item_dispenser/forge/extra_options() + if(!cult_team?.unlocked_heretic_items[CURSED_BLADE_UNLOCKED]) + return + return list(CURSED_BLADE = list( + PREVIEW_IMAGE = image(icon = 'icons/obj/weapons/khopesh.dmi', icon_state = "cursed_blade"), + OUTPUT_ITEMS = list(/obj/item/melee/sickly_blade/cursed), + ), + ) + /obj/structure/destructible/cult/item_dispenser/forge/succcess_message(mob/living/user, obj/item/spawned_item) to_chat(user, span_cult_italic("You work [src] as dark knowledge guides your hands, creating [spawned_item]!")) @@ -42,3 +58,4 @@ #undef NARSIE_ARMOR #undef FLAGELLANT_ARMOR #undef ELDRITCH_SWORD +#undef CURSED_BLADE diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index 932c3ac03c1f6..5067dcf979904 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -12,16 +12,43 @@ var/cult_examine_tip /// The cooldown for when items can be dispensed. COOLDOWN_DECLARE(use_cooldown) + /// Assigned cult team, set when cultistism is checked. + var/datum/team/cult/cult_team + +/obj/structure/destructible/cult/Destroy() + cult_team = null + return ..() + +/obj/structure/destructible/cult/Initialize(mapload) + . = ..() + RegisterSignal(src, COMSIG_ATOM_CONSTRUCTED, PROC_REF(on_constructed)) + +/obj/structure/destructible/cult/proc/on_constructed(datum/source, mob/builder) + SIGNAL_HANDLER + var/datum/antagonist/cult/cultist = builder.mind?.has_antag_datum(/datum/antagonist/cult, TRUE) + cult_team = cultist?.get_team() + +/// Tries to find a cultist. If it succeeds, it also takes advantage of the moment to define the structure's cult team if it's not set yet. +/obj/structure/destructible/cult/proc/is_cultist_check(mob/fool) + + if(!IS_CULTIST(fool)) + return FALSE + + if(isnull(cult_team)) + var/datum/antagonist/cult/cultist = fool.mind?.has_antag_datum(/datum/antagonist/cult, TRUE) + cult_team = cultist?.get_team() + + return TRUE /obj/structure/destructible/cult/examine_status(mob/user) - if(IS_CULTIST(user) || isobserver(user)) + if(is_cultist_check(user) || isobserver(user)) return span_cult("It's at [round(atom_integrity * 100 / max_integrity)]% stability.") return ..() /obj/structure/destructible/cult/examine(mob/user) . = ..() . += span_notice("[src] is [anchored ? "secured to":"unsecured from"] the floor.") - if(IS_CULTIST(user) || isobserver(user)) + if(is_cultist_check(user) || isobserver(user)) if(cult_examine_tip) . += span_cult(cult_examine_tip) if(!COOLDOWN_FINISHED(src, use_cooldown_duration)) @@ -65,16 +92,25 @@ /obj/structure/destructible/cult/item_dispenser /// An associated list of options this structure can make. See setup_options() for format. var/list/options + /// The dispenser will create this item and then delete itself if it is rust converted. + var/obj/mansus_conversion_path = /obj/item/skub /obj/structure/destructible/cult/item_dispenser/Initialize(mapload) . = ..() setup_options() +/obj/structure/destructible/cult/item_dispenser/rust_heretic_act() + visible_message(span_notice("[src] crumbles to dust. In its midst, you spot \a [initial(mansus_conversion_path.name)].")) + var/turf/turfy = get_turf(src) + new mansus_conversion_path(turfy) + turfy.rust_heretic_act() + return ..() + /obj/structure/destructible/cult/item_dispenser/attack_hand(mob/living/user, list/modifiers) . = ..() if(.) return - if(!isliving(user) || !IS_CULTIST(user)) + if(!isliving(user) || !is_cultist_check(user)) to_chat(user, span_warning("You're pretty sure you know exactly what this is used for and you can't seem to touch it.")) return if(!anchored) @@ -84,6 +120,8 @@ to_chat(user, span_cult_italic("The magic in [src] is too weak, it will be ready to use again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, use_cooldown))].")) return + setup_options() + var/list/spawned_items = get_items_to_spawn(user) if(!length(spawned_items)) return @@ -109,6 +147,18 @@ /obj/structure/destructible/cult/item_dispenser/proc/setup_options() return +/* + * Extra options, currently used for items unlocked after sacrificing a heretic. + * + * The list of options is a associated list of format: + * item_name = list( + * preview = image(), + * output = list(paths), + * ) + */ +/obj/structure/destructible/cult/item_dispenser/proc/extra_options() + return + /* * Get all items that this cult building will spawn when interacted with. * Opens a radial menu for the user and shows them the list of options, which they can choose from. @@ -150,7 +200,7 @@ * Returns TRUE if the user is a living mob that is a cultist and is not incapacitated. */ /obj/structure/destructible/cult/item_dispenser/proc/check_menu(mob/user) - return isliving(user) && IS_CULTIST(user) && !user.incapacitated() + return isliving(user) && is_cultist_check(user) && !user.incapacitated() // Spooky looking door used in gateways. Or something. /obj/effect/gateway diff --git a/code/modules/antagonists/cult/datums/cult_team.dm b/code/modules/antagonists/cult/datums/cult_team.dm index c47cc2145b5dc..09d4a25a321c4 100644 --- a/code/modules/antagonists/cult/datums/cult_team.dm +++ b/code/modules/antagonists/cult/datums/cult_team.dm @@ -16,9 +16,16 @@ var/reckoning_complete = FALSE ///Has the cult risen, and gotten red eyes? var/cult_risen = FALSE - ///Has the cult asceneded, and gotten halos? + ///Has the cult ascended, and gotten halos? var/cult_ascendent = FALSE + /// List that keeps track of which items have been unlocked after a heretic was sacked. + var/list/unlocked_heretic_items = list( + CURSED_BLADE_UNLOCKED = FALSE, + CRIMSON_FOCUS_UNLOCKED = FALSE, + PROTEON_ORB_UNLOCKED = FALSE, + ) + ///Has narsie been summoned yet? var/narsie_summoned = FALSE ///How large were we at max size. diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 926981bb096bb..d8ce241caf3c8 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -326,16 +326,12 @@ structure_check() searches for nearby cultist structures required for the invoca return TRUE /obj/effect/rune/convert/proc/do_sacrifice(mob/living/sacrificial, list/invokers, datum/team/cult/cult_team) - var/big_sac = FALSE + var/target_sac = FALSE if((((ishuman(sacrificial) || iscyborg(sacrificial)) && sacrificial.stat != DEAD) || cult_team.is_sacrifice_target(sacrificial.mind)) && length(invokers) < 3) for(var/invoker in invokers) to_chat(invoker, span_cult_italic("[sacrificial] is too greatly linked to the world! You need three acolytes!")) return FALSE - var/signal_result = SEND_SIGNAL(sacrificial, COMSIG_LIVING_CULT_SACRIFICED, invokers, cult_team) - if(signal_result & STOP_SACRIFICE) - return FALSE - if(sacrificial.mind) LAZYADD(GLOB.sacrificed, WEAKREF(sacrificial.mind)) for(var/datum/objective/sacrifice/sac_objective in cult_team.objectives) @@ -343,15 +339,23 @@ structure_check() searches for nearby cultist structures required for the invoca sac_objective.sacced = TRUE sac_objective.clear_sacrifice() sac_objective.update_explanation_text() - big_sac = TRUE + target_sac = TRUE else LAZYADD(GLOB.sacrificed, WEAKREF(sacrificial)) new /obj/effect/temp_visual/cult/sac(loc) - if(!(signal_result & SILENCE_SACRIFICE_MESSAGE)) + var/signal_result = SEND_SIGNAL(sacrificial, COMSIG_LIVING_CULT_SACRIFICED, invokers, cult_team) + + var/do_message = TRUE + if(signal_result & SILENCE_SACRIFICE_MESSAGE) + do_message = FALSE + if((signal_result & SILENCE_NONTARGET_SACRIFICE_MESSAGE) && !(target_sac)) + do_message = FALSE + + if(do_message) for(var/invoker in invokers) - if(big_sac) + if(target_sac) to_chat(invoker, span_cult_large("\"Yes! This is the one I desire! You have done well.\"")) continue if(ishuman(sacrificial) || iscyborg(sacrificial)) @@ -359,6 +363,10 @@ structure_check() searches for nearby cultist structures required for the invoca else to_chat(invoker, span_cult_large("\"I accept this meager sacrifice.\"")) + // post-message + if(signal_result & STOP_SACRIFICE) + return FALSE + if(iscyborg(sacrificial)) var/construct_class = show_radial_menu(invokers[1], sacrificial, GLOB.construct_radial_images, require_near = TRUE, tooltips = TRUE) if(QDELETED(sacrificial) || !construct_class) @@ -370,17 +378,20 @@ structure_check() searches for nearby cultist structures required for the invoca sacriborg.mmi = null qdel(sacrificial) return TRUE - - var/obj/item/soulstone/stone = new(loc) - if(sacrificial.mind && !HAS_TRAIT(sacrificial, TRAIT_SUICIDED)) - stone.capture_soul(sacrificial, invokers[1], forced = TRUE) - - if(sacrificial) + if(sacrificial && (signal_result & DUST_SACRIFICE)) // No soulstone when dusted + playsound(sacrificial, 'sound/magic/teleport_diss.ogg', 100, TRUE) + sacrificial.investigate_log("has been sacrificially dusted by the cult.", INVESTIGATE_DEATHS) + sacrificial.dust(TRUE, FALSE, TRUE) + else if (sacrificial) + var/obj/item/soulstone/stone = new(loc) + if(sacrificial.mind && !HAS_TRAIT(sacrificial, TRAIT_SUICIDED)) + stone.capture_soul(sacrificial, invokers[1], forced = TRUE) playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE) sacrificial.investigate_log("has been sacrificially gibbed by the cult.", INVESTIGATE_DEATHS) sacrificial.gib(DROP_ALL_REMAINS) try_spawn_sword() // after sharding and gibbing, which potentially dropped a null rod + return TRUE /// Tries to convert a null rod over the rune to a cult sword @@ -396,12 +407,12 @@ structure_check() searches for nearby cultist structures required for the invoca rod.visible_message(span_cult_italic(displayed_message)) switch(num_slain) - if(0, 1) + if(0) animate_spawn_sword(rod, /obj/item/melee/cultblade/dagger) - if(2) + if(1) animate_spawn_sword(rod, /obj/item/melee/cultblade) else - animate_spawn_sword(rod, /obj/item/cult_bastard) + animate_spawn_sword(rod, /obj/item/melee/cultblade/halberd) return TRUE return FALSE diff --git a/code/modules/antagonists/cult/sword_fling.dm b/code/modules/antagonists/cult/sword_fling.dm new file mode 100644 index 0000000000000..766f97917de60 --- /dev/null +++ b/code/modules/antagonists/cult/sword_fling.dm @@ -0,0 +1,93 @@ + +/datum/action/cooldown/spell/pointed/sword_fling + name = "Sword Fling" + desc = "Try to fling yourself around." + ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' + background_icon_state = "bg_heretic" + overlay_icon_state = "bg_cult_border" + + button_icon = 'icons/mob/actions/actions_cult.dmi' + button_icon_state = "sword_fling" + + school = SCHOOL_EVOCATION + cooldown_time = 4 SECONDS + invocation_type = INVOCATION_NONE + spell_requirements = NONE + + cast_range = 6 + active_msg = "You ready yourself to attempt to leap!" + var/obj/item/flinged_sword + +/datum/action/cooldown/spell/pointed/sword_fling/New(Target, to_fling) + . = ..() + flinged_sword = to_fling + +/datum/action/cooldown/spell/pointed/sword_fling/Destroy() + flinged_sword = null + . = ..() + +/datum/action/cooldown/spell/pointed/sword_fling/is_valid_target(atom/cast_on) + return isatom(cast_on) + +/datum/action/cooldown/spell/pointed/sword_fling/cast(turf/cast_on) + . = ..() + var/atom/sword_loc = flinged_sword.loc + if(ismob(sword_loc)) + var/mob/loccer = sword_loc + var/resist_chance = 25 + var/fail_text = "You struggle, but [loccer] keeps [loccer.p_their()] grip on you!" + var/particle_to_spawn = null + if(IS_CULTIST_OR_CULTIST_MOB(loccer)) + resist_chance = 10 // your mastahs + fail_text = "You struggle, but [loccer]'s grip is unnaturally hard to resist!" + particle_to_spawn = /obj/effect/temp_visual/cult/sparks + if(IS_HERETIC_OR_MONSTER(loccer) || IS_LUNATIC(loccer)) + resist_chance = 15 + fail_text = "You struggle, but [loccer] deftly handles the grip movement." + particle_to_spawn = /obj/effect/temp_visual/eldritch_sparks + if(loccer.mind?.holy_role) // IS_PRIEST() + resist_chance = 12 + fail_text = "You struggle, but [loccer]'s holy grip holds tight against your thrashing." + particle_to_spawn = /obj/effect/temp_visual/blessed + if(IS_WIZARD(loccer)) + resist_chance = 5 // magic master + fail_text = "You struggle, but [loccer]'s handle on magic easily neutralizes your movement." + particle_to_spawn = /obj/effect/particle_effect/sparks/electricity + + new particle_to_spawn(get_turf(loccer)) + + if(prob(resist_chance)) + flinged_sword.forceMove(get_turf(loccer)) + flinged_sword.visible_message(span_alert("\the [flinged_sword] yanks itself out of [loccer]'s grip!")) + // flung by later code + else + to_chat(owner, span_warning(fail_text)) + return + + if(isitem(sword_loc)) + flinged_sword.forceMove(get_turf(sword_loc)) + flinged_sword.visible_message(span_alert("\the [flinged_sword] yanks itself out of [sword_loc]!")) + // flung by later code + + if(iscloset(sword_loc)) + var/obj/structure/closet/sword_closet = sword_loc + if(!(sword_closet.open(owner, force = prob(5), special_effects = TRUE))) + sword_closet.container_resist_act(owner, loc_required = FALSE) + flinged_sword.visible_message(span_alert("\the [flinged_sword] yanks itself out of [sword_closet]!")) + + // no general struct/machinery check. imagine if someone put the sword in a vendor + + if(isturf(sword_loc)) + new /obj/effect/temp_visual/sword_sparks(sword_loc) + flinged_sword.throw_at(cast_on, cast_range, flinged_sword.throw_speed, owner) + flinged_sword.visible_message(\ + span_warning("\the [flinged_sword] lunges at \the [cast_on]!")) + +/obj/effect/temp_visual/eldritch_sparks + icon_state = "purplesparkles" + +/obj/effect/temp_visual/sword_sparks + icon_state = "mech_toxin" // only used in one place and it looks kinda good + +/obj/effect/temp_visual/blessed + icon_state = "blessed" diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm index ed256acae03e7..e1530ba16eddd 100644 --- a/code/modules/antagonists/fugitive/fugitive_outfits.dm +++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm @@ -75,7 +75,7 @@ back = /obj/item/storage/backpack/satchel/leather shoes = /obj/item/clothing/shoes/laceup glasses = /obj/item/clothing/glasses/monocle - mask = /obj/item/clothing/mask/cigarette/pipe + mask = /obj/item/cigarette/pipe ears = /obj/item/radio/headset backpack_contents = list( diff --git a/code/modules/antagonists/fugitive/hunters/hunter.dm b/code/modules/antagonists/fugitive/hunters/hunter.dm index b75cba69e528a..ba26645364712 100644 --- a/code/modules/antagonists/fugitive/hunters/hunter.dm +++ b/code/modules/antagonists/fugitive/hunters/hunter.dm @@ -42,6 +42,10 @@ to_chat(owner, span_danger("GOOD EVENING, WE ARE PSYKER HUNTE- NO, PSYKER SHIKARIS!")) to_chat(owner, span_danger("A brainling hit us up on the holopad with an offer we could NOT pass up. We kidnap some fools for them, and in exchange we get a LIFETIME SUPPLY OF GORE.")) to_chat(owner, span_danger("Our gore supply has been running thin as of late -- How could we say no? The binge MUST go on!")) + if(HUNTER_PACK_MI13) + to_chat(owner, span_danger("Agents, we have detected a wanted fugitive in Nanotrasen controlled space.")) + to_chat(owner, span_danger("Your mission is simple. Infiltrate the facility and extract the target, dead or alive.")) + to_chat(owner, span_danger("This is a stealth infiltration mission in hostile enemy territory. Be wary, and avoid being caught if possible.")) to_chat(owner, span_boldannounce("You are not an antagonist in that you may kill whomever you please, but you can do anything to ensure the capture of the fugitives, even if that means going through the station.")) owner.announce_objectives() diff --git a/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm b/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm index 7df6818cdc44a..5491251d1aa53 100644 --- a/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm +++ b/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm @@ -216,6 +216,56 @@ id_trim = /datum/id_trim/bounty_hunter/psykers/seer +/datum/outfit/mi13_hunter + name = "\improper MI13 Fugitive Retrieval Agent" + uniform = /obj/item/clothing/under/syndicate/sniper + back = /obj/item/storage/backpack/satchel/leather + ears = /obj/item/radio/headset/syndicate + glasses = /obj/item/clothing/glasses/sunglasses + gloves = /obj/item/clothing/gloves/combat + shoes = /obj/item/clothing/shoes/laceup + belt = /obj/item/restraints/handcuffs/cable/zipties + l_pocket = /obj/item/gun/ballistic/automatic/pistol + r_pocket = /obj/item/suppressor + id = /obj/item/card/id/advanced/chameleon/black + box = /obj/item/storage/box/survival/syndie + implants = list(/obj/item/implant/explosive) + +/datum/outfit/mi13_hunter/pre_equip(mob/living/carbon/human/agent, visualsOnly = FALSE) + backpack_contents = list() + backpack_contents += pick_weight(list(/obj/item/ammo_box/magazine/m9mm = 80, + /obj/item/ammo_box/magazine/m9mm/hp = 10, + /obj/item/ammo_box/magazine/m9mm/ap = 5, + /obj/item/ammo_box/magazine/m9mm/fire = 5, + )) + backpack_contents += pick_weight(list( + /obj/item/pen/edagger = 40, + /obj/item/knife/combat = 30, + /obj/item/assembly/flash = 30, + )) + backpack_contents += pick_weight(list( + /obj/item/grenade/c4 = 20, + /obj/item/implanter/freedom = 20, + /obj/item/clothing/mask/chameleon = 20, + /obj/item/language_manual/codespeak_manual/unlimited = 10, + /obj/item/storage/mail_counterfeit_device = 10, + /obj/item/traitor_machine_trapper = 10, + /obj/item/gun/ballistic/automatic/pistol/clandestine/fisher = 10, + )) + +/datum/outfit/mi13_hunter/post_equip(mob/living/carbon/human/agent, visualsOnly = FALSE) + if(visualsOnly) + return + var/obj/item/card/id/wearing = agent.wear_id + wearing.registered_name = agent.real_name + wearing.update_label() + +/datum/outfit/mi13_hunter/chef + name = "\improper MI13 Fugitive Retrieval Agent - Chef Disguise" + head = /obj/item/clothing/head/utility/chefhat + suit = /obj/item/clothing/suit/apron/chef + mask = /obj/item/clothing/mask/fakemoustache + //ids and ert code /obj/item/card/id/advanced/bountyhunter diff --git a/code/modules/antagonists/heretic/heretic_antag.dm b/code/modules/antagonists/heretic/heretic_antag.dm index 2c31529ed3386..f31639c508c73 100644 --- a/code/modules/antagonists/heretic/heretic_antag.dm +++ b/code/modules/antagonists/heretic/heretic_antag.dm @@ -60,17 +60,17 @@ /// Wether we are allowed to ascend var/feast_of_owls = FALSE /// Static list of what each path converts to in the UI (colors are TGUI colors) - var/static/list/path_to_ui_color = list( - PATH_START = "grey", - PATH_SIDE = "green", - PATH_RUST = "brown", - PATH_FLESH = "red", - PATH_ASH = "white", - PATH_VOID = "blue", - PATH_BLADE = "label", // my favorite color is label - PATH_COSMIC = "purple", - PATH_LOCK = "yellow", - PATH_MOON = "blue", + var/static/list/path_to_ui_bgr = list( + PATH_START = "node_side", + PATH_SIDE = "node_side", + PATH_RUST = "node_rust", + PATH_FLESH = "node_flesh", + PATH_ASH = "node_ash", + PATH_VOID = "node_void", + PATH_BLADE = "node_blade", + PATH_COSMIC = "node_cosmos", + PATH_LOCK = "node_lock", + PATH_MOON = "node_moon", ) var/static/list/path_to_rune_color = list( @@ -85,10 +85,95 @@ PATH_MOON = COLOR_BLUE_LIGHT, ) + /// List that keeps track of which items have been gifted to the heretic after a cultist was sacrificed. Used to alter drop chances to reduce dupes. + var/list/unlocked_heretic_items = list( + /obj/item/melee/sickly_blade/cursed = 0, + /obj/item/clothing/neck/heretic_focus/crimson_focus = 0, + /mob/living/basic/construct/harvester/heretic = 0, + ) + /// Simpler version of above used to limit amount of loot that can be hoarded + var/rewards_given = 0 + /datum/antagonist/heretic/Destroy() LAZYNULL(sac_targets) return ..() +/datum/antagonist/heretic/proc/get_icon_of_knowledge(datum/heretic_knowledge/knowledge) + //basic icon parameters + var/icon_path = 'icons/mob/actions/actions_ecult.dmi' + var/icon_state = "eye" + var/icon_frame = knowledge.research_tree_icon_frame + var/icon_dir = knowledge.research_tree_icon_dir + //can't imagine why you would want this one, so it can't be overridden by the knowledge + var/icon_moving = 0 + + //item transmutation knowledge does not generate its own icon due to implementation difficulties, the icons have to be specified in the override vars + + //if the knowledge has a special icon, use that + if(!isnull(knowledge.research_tree_icon_path)) + icon_path = knowledge.research_tree_icon_path + icon_state = knowledge.research_tree_icon_state + + //if the knowledge is a spell, use the spell's button + else if(ispath(knowledge,/datum/heretic_knowledge/spell)) + var/datum/heretic_knowledge/spell/spell_knowledge = knowledge + var/datum/action/cooldown/spell/result_spell = spell_knowledge.spell_to_add + icon_path = result_spell.button_icon + icon_state = result_spell.button_icon_state + + //if the knowledge is a summon, use the mob sprite + else if(ispath(knowledge,/datum/heretic_knowledge/summon)) + var/datum/heretic_knowledge/summon/summon_knowledge = knowledge + var/mob/living/result_mob = summon_knowledge.mob_to_summon + icon_path = result_mob.icon + icon_state = result_mob.icon_state + + //if the knowledge is an eldritch mark, use the mark sprite + else if(ispath(knowledge,/datum/heretic_knowledge/mark)) + var/datum/heretic_knowledge/mark/mark_knowledge = knowledge + var/datum/status_effect/eldritch/mark_effect = mark_knowledge.mark_type + icon_path = mark_effect.effect_icon + icon_state = mark_effect.effect_icon_state + + //if the knowledge is an ascension, use the achievement sprite + else if(ispath(knowledge,/datum/heretic_knowledge/ultimate)) + var/datum/heretic_knowledge/ultimate/ascension_knowledge = knowledge + var/datum/award/achievement/misc/achievement = ascension_knowledge.ascension_achievement + if(!isnull(achievement)) + icon_path = achievement.icon + icon_state = achievement.icon_state + + var/list/result_parameters = list() + result_parameters["icon"] = icon_path + result_parameters["state"] = icon_state + result_parameters["frame"] = icon_frame + result_parameters["dir"] = icon_dir + result_parameters["moving"] = icon_moving + return result_parameters + +/datum/antagonist/heretic/proc/get_knowledge_data(datum/heretic_knowledge/knowledge, done) + + var/list/knowledge_data = list() + + knowledge_data["path"] = knowledge + knowledge_data["icon_params"] = get_icon_of_knowledge(knowledge) + knowledge_data["name"] = initial(knowledge.name) + knowledge_data["gainFlavor"] = initial(knowledge.gain_text) + knowledge_data["cost"] = initial(knowledge.cost) + knowledge_data["disabled"] = (!done) && (initial(knowledge.cost) > knowledge_points) + knowledge_data["bgr"] = (path_to_ui_bgr[initial(knowledge.route)] || "side") + knowledge_data["finished"] = done + knowledge_data["ascension"] = ispath(knowledge,/datum/heretic_knowledge/ultimate) + + //description of a knowledge might change, make sure we are not shown the initial() value in that case + if(done) + var/datum/heretic_knowledge/knowledge_instance = researched_knowledge[knowledge] + knowledge_data["desc"] = knowledge_instance.desc + else + knowledge_data["desc"] = initial(knowledge.desc) + + return knowledge_data + /datum/antagonist/heretic/ui_data(mob/user) var/list/data = list() @@ -96,26 +181,32 @@ data["total_sacrifices"] = total_sacrifices data["ascended"] = ascended + var/list/tiers = list() + // This should be cached in some way, but the fact that final knowledge // has to update its disabled state based on whether all objectives are complete, // makes this very difficult. I'll figure it out one day maybe + for(var/datum/heretic_knowledge/knowledge as anything in researched_knowledge) + var/list/knowledge_data = get_knowledge_data(knowledge,TRUE) + + while(initial(knowledge.depth) > tiers.len) + tiers += list(list("nodes"=list())) + + tiers[initial(knowledge.depth)]["nodes"] += list(knowledge_data) + for(var/datum/heretic_knowledge/knowledge as anything in get_researchable_knowledge()) - var/list/knowledge_data = list() - knowledge_data["path"] = knowledge - knowledge_data["name"] = initial(knowledge.name) - knowledge_data["desc"] = initial(knowledge.desc) - knowledge_data["gainFlavor"] = initial(knowledge.gain_text) - knowledge_data["cost"] = initial(knowledge.cost) - knowledge_data["disabled"] = initial(knowledge.cost) > knowledge_points + var/list/knowledge_data = get_knowledge_data(knowledge,FALSE) // Final knowledge can't be learned until all objectives are complete. if(ispath(knowledge, /datum/heretic_knowledge/ultimate)) - knowledge_data["disabled"] = !can_ascend() + knowledge_data["disabled"] ||= !can_ascend() + + while(initial(knowledge.depth) > tiers.len) + tiers += list(list("nodes"=list())) - knowledge_data["hereticPath"] = initial(knowledge.route) - knowledge_data["color"] = path_to_ui_color[initial(knowledge.route)] || "grey" + tiers[initial(knowledge.depth)]["nodes"] += list(knowledge_data) - data["learnableKnowledge"] += list(knowledge_data) + data["knowledge_tiers"] = tiers return data @@ -125,18 +216,6 @@ data["objectives"] = get_objectives() data["can_change_objective"] = can_assign_self_objectives - for(var/path in researched_knowledge) - var/list/knowledge_data = list() - var/datum/heretic_knowledge/found_knowledge = researched_knowledge[path] - knowledge_data["name"] = found_knowledge.name - knowledge_data["desc"] = found_knowledge.desc - knowledge_data["gainFlavor"] = found_knowledge.gain_text - knowledge_data["cost"] = found_knowledge.cost - knowledge_data["hereticPath"] = found_knowledge.route - knowledge_data["color"] = path_to_ui_color[found_knowledge.route] || "grey" - - data["learnedKnowledge"] += list(knowledge_data) - return data /datum/antagonist/heretic/ui_act(action, params) @@ -230,6 +309,8 @@ if (!issilicon(our_mob)) GLOB.reality_smash_track.add_tracked_mind(owner) + ADD_TRAIT(our_mob, TRAIT_MANSUS_TOUCHED, REF(src)) + RegisterSignal(our_mob, COMSIG_LIVING_CULT_SACRIFICED, PROC_REF(on_cult_sacrificed)) RegisterSignals(our_mob, list(COMSIG_MOB_BEFORE_SPELL_CAST, COMSIG_MOB_SPELL_ACTIVATED), PROC_REF(on_spell_cast)) RegisterSignal(our_mob, COMSIG_USER_ITEM_INTERACTION, PROC_REF(on_item_use)) RegisterSignal(our_mob, COMSIG_MOB_LOGIN, PROC_REF(fix_influence_network)) @@ -243,12 +324,14 @@ if (owner in GLOB.reality_smash_track.tracked_heretics) GLOB.reality_smash_track.remove_tracked_mind(owner) + REMOVE_TRAIT(our_mob, TRAIT_MANSUS_TOUCHED, REF(src)) UnregisterSignal(our_mob, list( COMSIG_MOB_BEFORE_SPELL_CAST, COMSIG_MOB_SPELL_ACTIVATED, COMSIG_USER_ITEM_INTERACTION, COMSIG_MOB_LOGIN, COMSIG_LIVING_POST_FULLY_HEAL, + COMSIG_LIVING_CULT_SACRIFICED, )) /datum/antagonist/heretic/on_body_transfer(mob/living/old_body, mob/living/new_body) @@ -395,6 +478,118 @@ var/datum/heretic_knowledge/living_heart/heart_knowledge = get_knowledge(/datum/heretic_knowledge/living_heart) heart_knowledge.on_research(source, src) +/// Signal proc for [COMSIG_LIVING_CULT_SACRIFICED] to reward cultists for sacrificing a heretic +/datum/antagonist/heretic/proc/on_cult_sacrificed(mob/living/source, list/invokers) + SIGNAL_HANDLER + + for(var/mob/dead/observer/ghost in GLOB.dead_mob_list) // uhh let's find the guy to shove him back in + if((ghost.mind?.current == source) && ghost.client) // is it the same guy and do they have the same client + ghost.reenter_corpse() // shove them in! it doesnt do it automatically + + // Drop all items and splatter them around messily. + var/list/dustee_items = source.unequip_everything() + for(var/obj/item/loot as anything in dustee_items) + loot.throw_at(get_step_rand(source), 2, 4, pick(invokers), TRUE) + + // Create the blade, give it the heretic and a randomly-chosen master for the soul sword component + var/obj/item/melee/cultblade/haunted/haunted_blade = new(get_turf(source), source, pick(invokers)) + + // Cool effect for the rune as well as the item + var/obj/effect/rune/convert/conversion_rune = locate() in get_turf(source) + if(conversion_rune) + conversion_rune.gender_reveal( + outline_color = COLOR_HERETIC_GREEN, + ray_color = null, + do_float = FALSE, + do_layer = FALSE, + ) + + haunted_blade.gender_reveal(outline_color = null, ray_color = COLOR_HERETIC_GREEN) + + for(var/mob/living/culto as anything in invokers) + to_chat(culto, span_cult_large("\"A follower of the forgotten gods! You must be rewarded for such a valuable sacrifice.\"")) + + // Locate a cultist team (Is there a better way??) + var/mob/living/random_cultist = pick(invokers) + var/datum/antagonist/cult/antag = random_cultist.mind.has_antag_datum(/datum/antagonist/cult) + ASSERT(antag) + var/datum/team/cult/cult_team = antag.get_team() + + // Unlock one of 3 special items! + var/list/possible_unlocks + for(var/i in cult_team.unlocked_heretic_items) + if(cult_team.unlocked_heretic_items[i]) + continue + LAZYADD(possible_unlocks, i) + if(length(possible_unlocks)) + var/result = pick(possible_unlocks) + cult_team.unlocked_heretic_items[result] = TRUE + + for(var/datum/mind/mind as anything in cult_team.members) + if(mind.current) + SEND_SOUND(mind.current, 'sound/magic/clockwork/narsie_attack.ogg') + to_chat(mind.current, span_cult_large(span_warning("Arcane and forbidden knowledge floods your forges and archives. The cult has learned how to create the ")) + span_cult_large(span_hypnophrase("[result]!"))) + + return SILENCE_SACRIFICE_MESSAGE|DUST_SACRIFICE + +/** + * Creates an animation of the item slowly lifting up from the floor with a colored outline, then slowly drifting back down. + * Arguments: + * * outline_color: Default is between pink and light blue, is the color of the outline filter. + * * ray_color: Null by default. If not set, just copies outline. Used for the ray filter. + * * anim_time: Total time of the animation. Split into two different calls. + * * do_float: Lets you disable the sprite floating up and down. + * * do_layer: Lets you disable the layering increase. + */ +/obj/proc/gender_reveal( + outline_color = null, + ray_color = null, + anim_time = 10 SECONDS, + do_float = TRUE, + do_layer = TRUE, +) + + var/og_layer + if(do_layer) + // Layering above to stand out! + og_layer = layer + layer = ABOVE_MOB_LAYER + + // Slowly floats up, then slowly goes down. + if(do_float) + animate(src, pixel_y = 12, time = anim_time * 0.5, easing = QUAD_EASING | EASE_OUT) + animate(pixel_y = 0, time = anim_time * 0.5, easing = QUAD_EASING | EASE_IN) + + // Adding a cool outline effect + if(outline_color) + add_filter("gender_reveal_outline", 3, list("type" = "outline", "color" = outline_color, "size" = 0.5)) + // Animating it! + var/gay_filter = get_filter("gender_reveal_outline") + animate(gay_filter, alpha = 110, time = 1.5 SECONDS, loop = -1) + animate(alpha = 40, time = 2.5 SECONDS) + + // Adding a cool ray effect + if(ray_color) + add_filter(name = "gender_reveal_ray", priority = 1, params = list( + type = "rays", + size = 45, + color = ray_color, + density = 6 + )) + // Animating it! + var/ray_filter = get_filter("gender_reveal_ray") + // I understand nothing but copypaste saves lives + animate(ray_filter, offset = 100, time = 30 SECONDS, loop = -1, flags = ANIMATION_PARALLEL) + + addtimer(CALLBACK(src, PROC_REF(remove_gender_reveal_fx), og_layer), anim_time) + +/** + * Removes the non-animate effects from above proc + */ +/obj/proc/remove_gender_reveal_fx(og_layer) + remove_filter(list("gender_reveal_outline", "gender_reveal_ray")) + layer = og_layer + /** * Create our objectives for our heretic. */ diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm index 5369e5fee8d91..6cfa8db05608f 100644 --- a/code/modules/antagonists/heretic/heretic_knowledge.dm +++ b/code/modules/antagonists/heretic/heretic_knowledge.dm @@ -38,6 +38,16 @@ var/priority = 0 /// What path is this on. If set to "null", assumed to be unreachable (or abstract). var/route + /// In case we want to override the default UI icon getter and plug in our own icon instead. + /// if research_tree_icon_path is not null, research_tree_icon_state must also be specified or things may break + var/research_tree_icon_path + var/research_tree_icon_state + var/research_tree_icon_frame = 1 + var/research_tree_icon_dir = SOUTH + /// Level of knowledge tree where this knowledge should be in the UI + var/depth = 1 + ///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) @@ -261,6 +271,7 @@ limit = 2 cost = 1 priority = MAX_KNOWLEDGE_PRIORITY - 5 + depth = 2 /datum/heretic_knowledge/limited_amount/starting/New() . = ..() @@ -285,6 +296,7 @@ abstract_parent_type = /datum/heretic_knowledge/mark mutually_exclusive = TRUE cost = 2 + depth = 5 /// The status effect typepath we apply on people on mansus grasp. var/datum/status_effect/eldritch/mark_type @@ -350,6 +362,7 @@ abstract_parent_type = /datum/heretic_knowledge/blade_upgrade mutually_exclusive = TRUE cost = 2 + depth = 9 /datum/heretic_knowledge/blade_upgrade/on_gain(mob/user, datum/antagonist/heretic/our_heretic) RegisterSignal(user, COMSIG_HERETIC_BLADE_ATTACK, PROC_REF(on_eldritch_blade)) @@ -523,11 +536,23 @@ abstract_parent_type = /datum/heretic_knowledge/summon /// Typepath of a mob to summon when we finish the recipe. var/mob/living/mob_to_summon - ///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/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 @@ -557,6 +582,7 @@ var/datum/antagonist/heretic_monster/heretic_monster = summoned.mind.add_antag_datum(/datum/antagonist/heretic_monster) heretic_monster.set_owner(user.mind) + summoned.RegisterSignal(user, COMSIG_LIVING_DEATH, TYPE_PROC_REF(/mob/living/, on_master_death)) var/datum/objective/heretic_summon/summon_objective = locate() in user.mind.get_all_objectives() summon_objective?.num_summoned++ @@ -577,6 +603,9 @@ mutually_exclusive = TRUE cost = 1 priority = MAX_KNOWLEDGE_PRIORITY - 10 // A pretty important midgame ritual. + depth = 6 + research_tree_icon_path = 'icons/obj/antags/eldritch.dmi' + research_tree_icon_state = "book_open" /// Whether we've done the ritual. Only doable once. var/was_completed = FALSE @@ -670,6 +699,9 @@ cost = 2 priority = MAX_KNOWLEDGE_PRIORITY + 1 // Yes, the final ritual should be ABOVE the max priority. required_atoms = list(/mob/living/carbon/human = 3) + depth = 11 + //use this to store the achievement typepath + var/datum/award/achievement/misc/ascension_achievement /datum/heretic_knowledge/ultimate/on_research(mob/user, datum/antagonist/heretic/our_heretic) . = ..() @@ -730,6 +762,8 @@ source = user, header = "A Heretic is Ascending!", ) + if(!isnull(ascension_achievement)) + user.client?.give_award(ascension_achievement, user) heretic_datum.increase_rust_strength() return TRUE diff --git a/code/modules/antagonists/heretic/heretic_monsters.dm b/code/modules/antagonists/heretic/heretic_monsters.dm index 31b18b6a83353..fcdea51287980 100644 --- a/code/modules/antagonists/heretic/heretic_monsters.dm +++ b/code/modules/antagonists/heretic/heretic_monsters.dm @@ -38,3 +38,7 @@ owner.announce_objectives() to_chat(owner, span_boldnotice("You are a [ishuman(owner.current) ? "shambling corpse returned":"horrible creation brought"] to this plane through the Gates of the Mansus.")) to_chat(owner, span_notice("Your master is [master]. Assist them to all ends.")) + + if(istype(owner.current, /mob/living/basic/construct/harvester/heretic)) + var/mob/living/basic/construct/harvester/heretic/shitcode = owner.current + shitcode.master = master diff --git a/code/modules/antagonists/heretic/items/eldritch_flask.dm b/code/modules/antagonists/heretic/items/eldritch_flask.dm index 95b77f956188c..409bcd473ed7d 100644 --- a/code/modules/antagonists/heretic/items/eldritch_flask.dm +++ b/code/modules/antagonists/heretic/items/eldritch_flask.dm @@ -4,5 +4,5 @@ name = "flask of eldritch essence" desc = "Toxic to the closed minded, yet refreshing to those with knowledge of the beyond." icon = 'icons/obj/antags/eldritch.dmi' - icon_state = "eldrich_flask" + icon_state = "eldritch_flask" list_reagents = list(/datum/reagent/eldritch = 50) diff --git a/code/modules/antagonists/heretic/items/heretic_blades.dm b/code/modules/antagonists/heretic/items/heretic_blades.dm index 675f5f87b0abf..ddfec8db20cf7 100644 --- a/code/modules/antagonists/heretic/items/heretic_blades.dm +++ b/code/modules/antagonists/heretic/items/heretic_blades.dm @@ -24,23 +24,37 @@ attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend") var/after_use_message = "" +/obj/item/melee/sickly_blade/examine(mob/user) + . = ..() + if(!check_usability(user)) + return + + . += span_notice("You can shatter the blade to teleport to a random, (mostly) safe location by activating it in-hand.") + +/// Checks if the passed mob can use this blade without being stunned +/obj/item/melee/sickly_blade/proc/check_usability(mob/living/user) + return IS_HERETIC_OR_MONSTER(user) + /obj/item/melee/sickly_blade/pre_attack(atom/A, mob/living/user, params) . = ..() if(.) return . - if(!IS_HERETIC_OR_MONSTER(user)) + if(!check_usability(user)) to_chat(user, span_danger("You feel a pulse of alien intellect lash out at your mind!")) - user.AdjustParalyzed(5 SECONDS) + var/mob/living/carbon/human/human_user = user + human_user.AdjustParalyzed(5 SECONDS) return TRUE - return . -/obj/item/melee/sickly_blade/afterattack(atom/target, mob/user, click_parameters) - if(isliving(target)) - SEND_SIGNAL(user, COMSIG_HERETIC_BLADE_ATTACK, target, src) + return . /obj/item/melee/sickly_blade/attack_self(mob/user) - var/turf/safe_turf = find_safe_turf(zlevel = z, extended_safety_checks = TRUE) - if(IS_HERETIC_OR_MONSTER(user)) + seek_safety(user) + return ..() + +/// Attempts to teleport the passed mob to somewhere safe on the station, if they can use the blade. +/obj/item/melee/sickly_blade/proc/seek_safety(mob/user) + var/turf/safe_turf = find_safe_turf(zlevels = z, extended_safety_checks = TRUE) + if(check_usability(user)) if(do_teleport(user, safe_turf, channel = TELEPORT_CHANNEL_MAGIC)) to_chat(user, span_warning("As you shatter [src], you feel a gust of energy flow through your body. [after_use_message]")) else @@ -50,18 +64,15 @@ playsound(src, SFX_SHATTER, 70, TRUE) //copied from the code for smashing a glass sheet onto the ground to turn it into a shard qdel(src) +/obj/item/melee/sickly_blade/afterattack(atom/target, mob/user, click_parameters) + if(isliving(target)) + SEND_SIGNAL(user, COMSIG_HERETIC_BLADE_ATTACK, target, src) + /obj/item/melee/sickly_blade/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(isliving(interacting_with)) SEND_SIGNAL(user, COMSIG_HERETIC_RANGED_BLADE_ATTACK, interacting_with, src) return ITEM_INTERACT_BLOCKING -/obj/item/melee/sickly_blade/examine(mob/user) - . = ..() - if(!IS_HERETIC_OR_MONSTER(user)) - return - - . += span_notice("You can shatter the blade to teleport to a random, (mostly) safe location by activating it in-hand.") - // Path of Rust's blade /obj/item/melee/sickly_blade/rust name = "\improper rusted blade" @@ -154,3 +165,76 @@ icon_state = "moon_blade" inhand_icon_state = "moon_blade" after_use_message = "The Moon hears your call..." + +// Path of Nar'Sie's blade +// What!? This blade is given to cultists as an altar item when they sacrifice a heretic. +// It is also given to the heretic themself if they sacrifice a cultist. +/obj/item/melee/sickly_blade/cursed + name = "\improper cursed blade" + desc = "A dark blade, cursed to bleed forever. In constant struggle between the eldritch and the dark, it is forced to accept any wielder as its master. \ + Its eye's cornea drips blood endlessly into the ground, yet its piercing gaze remains on you." + force = 25 + throwforce = 15 + block_chance = 35 + wound_bonus = 25 + bare_wound_bonus = 15 + armour_penetration = 35 + icon_state = "cursed_blade" + inhand_icon_state = "cursed_blade" + +/obj/item/melee/sickly_blade/cursed/Initialize(mapload) + . = ..() + + var/examine_text = {"Allows the scribing of blood runes of the cult of Nar'Sie. + The combination of eldritch power and Nar'Sie's might allows for vastly increased rune drawing speed, + alongside the vicious strength of the blade being more powerful than usual.\n + It can also be shattered in-hand by cultists (via right-click), teleporting them to relative safety."} + + AddComponent(/datum/component/cult_ritual_item, span_cult(examine_text), turfs_that_boost_us = /turf) // Always fast to draw! + +/obj/item/melee/sickly_blade/cursed/attack_self_secondary(mob/user) + seek_safety(user, TRUE) + +/obj/item/melee/sickly_blade/cursed/seek_safety(mob/user, secondary_attack = FALSE) + if(IS_CULTIST(user) && !secondary_attack) + return FALSE + return ..() + +/obj/item/melee/sickly_blade/cursed/check_usability(mob/living/user) + if(IS_HERETIC_OR_MONSTER(user) || IS_CULTIST(user)) + return TRUE + if(prob(15)) + to_chat(user, span_cult_large(pick("\"An untouched mind? Amusing.\"", "\" I suppose it isn't worth the effort to stop you.\"", "\"Go ahead. I don't care.\"", "\"You'll be mine soon enough.\""))) + var/obj/item/bodypart/affecting = user.get_active_hand() + if(!affecting) + return + affecting.receive_damage(burn = 5) + playsound(src, SFX_SEAR, 25, TRUE) + to_chat(user, span_danger("Your hand sizzles.")) // Nar nar might not care but their essence still doesn't like you + else if(prob(15)) + to_chat(user, span_big(span_hypnophrase("LW'NAFH'NAHOR UH'ENAH'YMG EPGOKA AH NAFL MGEMPGAH'EHYE"))) + to_chat(user, span_danger("Horrible, unintelligible utterances flood your mind!")) + user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15) // This can kill you if you ignore it + return TRUE + +/obj/item/melee/sickly_blade/cursed/equipped(mob/user, slot) + . = ..() + if(IS_HERETIC_OR_MONSTER(user)) + after_use_message = "The Mansus hears your call..." + else if(IS_CULTIST(user)) + after_use_message = "Nar'Sie hears your call..." + else + after_use_message = null + +/obj/item/melee/sickly_blade/cursed/interact_with_atom(atom/target, mob/living/user, list/modifiers) + . = ..() + + var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) + if(!heretic_datum) + return NONE + + // Can only carve runes with it if off combat mode. + if(isopenturf(target) && !user.combat_mode) + heretic_datum.try_draw_rune(user, target, drawing_time = 14 SECONDS) // Faster than pen, slower than cicatrix + return ITEM_INTERACT_BLOCKING + return NONE diff --git a/code/modules/antagonists/heretic/items/heretic_necks.dm b/code/modules/antagonists/heretic/items/heretic_necks.dm index e24c17abdeeba..3f140dc99df1d 100644 --- a/code/modules/antagonists/heretic/items/heretic_necks.dm +++ b/code/modules/antagonists/heretic/items/heretic_necks.dm @@ -9,6 +9,101 @@ . = ..() AddElement(/datum/element/heretic_focus) +/obj/item/clothing/neck/heretic_focus/crimson_focus + name = "Crimson Focus" + desc = "A blood-red focusing glass that provides a link to the world beyond, and worse. Its eye is constantly twitching and gazing in all directions. It almost seems to be silently screaming..." + icon_state = "crimson_focus" + /// The aura healing component. Used to delete it when taken off. + var/datum/component/component + /// If active or not, used to add and remove its cult and heretic buffs. + var/active = FALSE + +/obj/item/clothing/neck/heretic_focus/crimson_focus/equipped(mob/living/user, slot) + . = ..() + if(!(slot & ITEM_SLOT_NECK)) + return + + var/team_color = COLOR_ADMIN_PINK + if(IS_CULTIST(user)) + var/datum/action/innate/cult/blood_magic/magic_holder = locate() in user.actions + team_color = COLOR_CULT_RED + magic_holder.magic_enhanced = TRUE + else if(IS_HERETIC_OR_MONSTER(user) && !active) + for(var/datum/action/cooldown/spell/spell_action in user.actions) + spell_action.cooldown_time *= 0.5 + active = TRUE + team_color = COLOR_GREEN + else + team_color = pick(COLOR_CULT_RED, COLOR_GREEN) + + user.add_traits(list(TRAIT_MANSUS_TOUCHED, TRAIT_BLOODY_MESS), REF(src)) + to_chat(user, span_alert("Your heart takes on a strange yet soothing irregular rhythm, and your blood feels significantly less viscous than it used to be. You're not sure if that's a good thing.")) + component = user.AddComponent( \ + /datum/component/aura_healing, \ + range = 3, \ + brute_heal = 1, \ + burn_heal = 1, \ + blood_heal = 2, \ + suffocation_heal = 5, \ + simple_heal = 0.6, \ + requires_visibility = FALSE, \ + limit_to_trait = TRAIT_MANSUS_TOUCHED, \ + healing_color = team_color, \ + ) + +/obj/item/clothing/neck/heretic_focus/crimson_focus/dropped(mob/living/user) + . = ..() + + if(!istype(user)) + return + + if(HAS_TRAIT_FROM(user, TRAIT_MANSUS_TOUCHED, REF(src))) + to_chat(user, span_notice("Your heart and blood return to their regular old rhythm and flow.")) + + if(IS_HERETIC_OR_MONSTER(user) && active) + for(var/datum/action/cooldown/spell/spell_action in user.actions) + spell_action.cooldown_time *= 2 + active = FALSE + QDEL_NULL(component) + user.remove_traits(list(TRAIT_MANSUS_TOUCHED, TRAIT_BLOODY_MESS), REF(src)) + + // If boosted enable is set, to prevent false dropped() calls from repeatedly nuking the max spells. + var/datum/action/innate/cult/blood_magic/magic_holder = locate() in user.actions + // Remove the last spell if over new limit, as we will reduce our max spell amount. Done beforehand as it causes a index out of bounds runtime otherwise. + if(magic_holder?.magic_enhanced) + QDEL_NULL(magic_holder.spells[ENHANCED_BLOODCHARGE]) + magic_holder?.magic_enhanced = FALSE + + +/obj/item/clothing/neck/heretic_focus/crimson_focus/attack_self(mob/living/user, modifiers) + . = ..() + to_chat(user, span_danger("You start tightly squeezing [src]...")) + if(!do_after(user, 1.25 SECONDS, src)) + return + to_chat(user, span_danger("[src] explodes into a shower of gore and blood, drenching your arm. You can feel the blood seeping into your skin. You inmediately feel better, but soon, the feeling turns hollow as your veins itch.")) + new /obj/effect/gibspawner/generic(get_turf(src)) + var/heal_amt = user.adjustBruteLoss(-50) + user.adjustFireLoss( -(50 - abs(heal_amt)) ) // no double dipping + + // I want it to poison the user but I also think it'd be neat if they got their juice as well. But that cancels most of the damage out. So I dunno. + user.reagents?.add_reagent(/datum/reagent/fuel/unholywater, rand(6, 10)) + user.reagents?.add_reagent(/datum/reagent/eldritch, rand(6, 10)) + qdel(src) + +/obj/item/clothing/neck/heretic_focus/crimson_focus/examine(mob/user) + . = ..() + + var/magic_dude + if(IS_CULTIST(user)) + . += span_cult_bold("This focus will allow you to store one extra spell and halve the empowering time, alongside providing a small regenerative effect.") + magic_dude = TRUE + if(IS_HERETIC_OR_MONSTER(user)) + . += span_notice("This focus will halve your spell cooldowns, alongside granting a small regenerative effect to any nearby heretics or monsters, including you.") + magic_dude = TRUE + + if(magic_dude) + . += span_red("You can also squeeze it to recover a large amount of health quickly, at a cost...") + /obj/item/clothing/neck/eldritch_amulet name = "Warm Eldritch Medallion" desc = "A strange medallion. Peering through the crystalline surface, the world around you melts away. You see your own beating heart, and the pulsing of a thousand others." diff --git a/code/modules/antagonists/heretic/items/keyring.dm b/code/modules/antagonists/heretic/items/keyring.dm index dc1291bc03437..c0df68ec7cc3f 100644 --- a/code/modules/antagonists/heretic/items/keyring.dm +++ b/code/modules/antagonists/heretic/items/keyring.dm @@ -185,7 +185,7 @@ if(reference_resolved) make_portal(user, reference_resolved, target) - to_chat(user, span_notice("You use [src], to link [link] and [target] together.")) + to_chat(user, span_notice("You use [src], to link [reference_resolved] and [target] together.")) link = null balloon_alert(user, "link 2/2") else diff --git a/code/modules/antagonists/heretic/knowledge/ash_lore.dm b/code/modules/antagonists/heretic/knowledge/ash_lore.dm index 9386611304292..b74569f1a1447 100644 --- a/code/modules/antagonists/heretic/knowledge/ash_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/ash_lore.dm @@ -1,5 +1,7 @@ /** * # The path of Ash. + * Spell names are in this language: OLD NORDIC + * Both are related: Nordic Mythology-Yggdrassil-Ash Tree Genus-Ash * * Goes as follows: * @@ -39,6 +41,8 @@ ) result_atoms = list(/obj/item/melee/sickly_blade/ash) route = PATH_ASH + research_tree_icon_path = 'icons/obj/weapons/khopesh.dmi' + research_tree_icon_state = "ash_blade" /datum/heretic_knowledge/ashen_grasp name = "Grasp of Ash" @@ -48,6 +52,9 @@ next_knowledge = list(/datum/heretic_knowledge/spell/ash_passage) cost = 1 route = PATH_ASH + depth = 3 + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "grasp_ash" /datum/heretic_knowledge/ashen_grasp/on_gain(mob/user, datum/antagonist/heretic/our_heretic) RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp)) @@ -80,6 +87,7 @@ spell_to_add = /datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash cost = 1 route = PATH_ASH + depth = 4 /datum/heretic_knowledge/mark/ash_mark name = "Mark of Ash" @@ -119,6 +127,8 @@ spell_to_add = /datum/action/cooldown/spell/charged/beam/fire_blast cost = 1 route = PATH_ASH + depth = 7 + research_tree_icon_frame = 7 /datum/heretic_knowledge/mad_mask @@ -142,6 +152,9 @@ result_atoms = list(/obj/item/clothing/mask/madness_mask) cost = 1 route = PATH_ASH + research_tree_icon_path = 'icons/obj/clothing/masks.dmi' + research_tree_icon_state = "mad_mask" + depth = 8 /datum/heretic_knowledge/blade_upgrade/ash name = "Fiery Blade" @@ -150,6 +163,8 @@ His city, the people he swore to watch... and watch he did, as they all burnt to cinders." next_knowledge = list(/datum/heretic_knowledge/spell/flame_birth) route = PATH_ASH + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "blade_upgrade_ash" /datum/heretic_knowledge/blade_upgrade/ash/do_melee_effects(mob/living/source, mob/living/target, obj/item/melee/sickly_blade/blade) if(source == target) @@ -173,6 +188,8 @@ spell_to_add = /datum/action/cooldown/spell/aoe/fiery_rebirth cost = 1 route = PATH_ASH + depth = 10 + research_tree_icon_frame = 5 /datum/heretic_knowledge/ultimate/ash_final name = "Ashlord's Rite" @@ -187,6 +204,7 @@ for the Nightwatcher brought forth the rite to mankind! His gaze continues, as now I am one with the flames, \ WITNESS MY ASCENSION, THE ASHY LANTERN BLAZES ONCE MORE!" route = PATH_ASH + ascension_achievement = /datum/award/achievement/misc/ash_ascension /// A static list of all traits we apply on ascension. var/static/list/traits_to_apply = list( TRAIT_BOMBIMMUNE, @@ -215,7 +233,7 @@ text = "[generate_heretic_text()] Fear the blaze, for the Ashlord, [user.real_name] has ascended! The flames shall consume all! [generate_heretic_text()]", title = "[generate_heretic_text()]", sound = 'sound/ambience/antag/heretic/ascend_ash.ogg', - color_override = "pink", + color_override = "white", ) var/datum/action/cooldown/spell/fire_sworn/circle_spell = new(user.mind) @@ -233,6 +251,5 @@ var/datum/action/cooldown/spell/aoe/fiery_rebirth/fiery_rebirth = locate() in user.actions fiery_rebirth?.cooldown_time *= 0.16 - user.client?.give_award(/datum/award/achievement/misc/ash_ascension, user) if(length(traits_to_apply)) user.add_traits(traits_to_apply, MAGIC_TRAIT) diff --git a/code/modules/antagonists/heretic/knowledge/blade_lore.dm b/code/modules/antagonists/heretic/knowledge/blade_lore.dm index 6553353745517..357e789416d1d 100644 --- a/code/modules/antagonists/heretic/knowledge/blade_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/blade_lore.dm @@ -1,5 +1,7 @@ /** * # The path of Blades. Stab stab. + * Spell names are in this language: ARAMAIC + * Both are related: Aramaic-Damascus-Blade * * Goes as follows: * @@ -43,6 +45,8 @@ result_atoms = list(/obj/item/melee/sickly_blade/dark) limit = 5 // It's the blade path, it's a given route = PATH_BLADE + research_tree_icon_path = 'icons/obj/weapons/khopesh.dmi' + research_tree_icon_state = "dark_blade" /datum/heretic_knowledge/blade_grasp name = "Grasp of the Blade" @@ -52,6 +56,9 @@ next_knowledge = list(/datum/heretic_knowledge/blade_dance) cost = 1 route = PATH_BLADE + depth = 3 + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "grasp_blade" /datum/heretic_knowledge/blade_grasp/on_gain(mob/user, datum/antagonist/heretic/our_heretic) RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp)) @@ -111,6 +118,9 @@ ) cost = 1 route = PATH_BLADE + depth = 4 + research_tree_icon_path = 'icons/mob/actions/actions_ecult.dmi' + research_tree_icon_state = "shatter" /// Whether the counter-attack is ready or not. /// Used instead of cooldowns, so we can give feedback when it's ready again var/riposte_ready = TRUE @@ -231,6 +241,7 @@ spell_to_add = /datum/action/cooldown/spell/realignment cost = 1 route = PATH_BLADE + depth = 7 /// The amount of blood flow reduced per level of severity of gained bleeding wounds for Stance of the Torn Champion. #define BLOOD_FLOW_PER_SEVEIRTY -1 @@ -251,6 +262,10 @@ ) cost = 1 route = PATH_BLADE + depth = 8 + research_tree_icon_path = 'icons/effects/blood.dmi' + research_tree_icon_state = "suitblood" + research_tree_icon_dir = SOUTH /// Whether we're currently in duelist stance, gaining certain buffs (low health) var/in_duelist_stance = FALSE @@ -310,6 +325,8 @@ a flurry of blades, neither hitting their mark, for the Champion was indomitable." next_knowledge = list(/datum/heretic_knowledge/spell/furious_steel) route = PATH_BLADE + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "blade_upgrade_blade" /// How much force do we apply to the offhand? var/offand_force_decrement = 0 /// How much force was the last weapon we offhanded with? If it's different, we need to re-calculate the decrement @@ -380,6 +397,7 @@ spell_to_add = /datum/action/cooldown/spell/pointed/projectile/furious_steel cost = 1 route = PATH_BLADE + depth = 10 /datum/heretic_knowledge/ultimate/blade_final name = "Maelstrom of Silver" @@ -393,6 +411,7 @@ gain_text = "The Torn Champion is freed! I will become the blade reunited, and with my greater ambition, \ I AM UNMATCHED! A STORM OF STEEL AND SILVER IS UPON US! WITNESS MY ASCENSION!" route = PATH_BLADE + ascension_achievement = /datum/award/achievement/misc/blade_ascension /datum/heretic_knowledge/ultimate/blade_final/is_valid_sacrifice(mob/living/carbon/human/sacrifice) . = ..() @@ -409,7 +428,6 @@ sound = 'sound/ambience/antag/heretic/ascend_blade.ogg', color_override = "pink", ) - user.client?.give_award(/datum/award/achievement/misc/blade_ascension, user) ADD_TRAIT(user, TRAIT_NEVER_WOUNDED, name) RegisterSignal(user, COMSIG_HERETIC_BLADE_ATTACK, PROC_REF(on_eldritch_blade)) user.apply_status_effect(/datum/status_effect/protective_blades/recharging, null, 8, 30, 0.25 SECONDS, 1 MINUTES) diff --git a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm index 6e22ebc37900a..8a94aada74a67 100644 --- a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm @@ -1,5 +1,7 @@ /** * # The path of Cosmos. + * Spell names are in this language: SUMERIAN + * Both are related: Sumerian-Original-Primordial-Cosmic * * Goes as follows: * @@ -38,6 +40,8 @@ ) result_atoms = list(/obj/item/melee/sickly_blade/cosmic) route = PATH_COSMIC + research_tree_icon_path = 'icons/obj/weapons/khopesh.dmi' + research_tree_icon_state = "cosmic_blade" /datum/heretic_knowledge/cosmic_grasp name = "Grasp of Cosmos" @@ -48,6 +52,9 @@ next_knowledge = list(/datum/heretic_knowledge/spell/cosmic_runes) cost = 1 route = PATH_COSMIC + depth = 3 + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "grasp_cosmos" /datum/heretic_knowledge/cosmic_grasp/on_gain(mob/user, datum/antagonist/heretic/our_heretic) RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp)) @@ -78,6 +85,7 @@ spell_to_add = /datum/action/cooldown/spell/cosmic_rune cost = 1 route = PATH_COSMIC + depth = 4 /datum/heretic_knowledge/mark/cosmic_mark name = "Mark of Cosmos" @@ -107,6 +115,7 @@ spell_to_add = /datum/action/cooldown/spell/touch/star_touch cost = 1 route = PATH_COSMIC + depth = 7 /datum/heretic_knowledge/spell/star_blast name = "Star Blast" @@ -123,6 +132,7 @@ spell_to_add = /datum/action/cooldown/spell/pointed/projectile/star_blast cost = 1 route = PATH_COSMIC + depth = 8 /datum/heretic_knowledge/blade_upgrade/cosmic name = "Cosmic Blade" @@ -135,6 +145,8 @@ The blades now glistened with fragmented power. I fell to the ground and wept at the beast's feet." next_knowledge = list(/datum/heretic_knowledge/spell/cosmic_expansion) route = PATH_COSMIC + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "blade_upgrade_cosmos" /// Storage for the second target. var/datum/weakref/second_target /// Storage for the third target. @@ -233,6 +245,7 @@ spell_to_add = /datum/action/cooldown/spell/conjure/cosmic_expansion cost = 1 route = PATH_COSMIC + depth = 10 /datum/heretic_knowledge/ultimate/cosmic_final name = "Creators's Gift" @@ -250,6 +263,7 @@ I closed my eyes with my head laid against their form. I was safe. \ WITNESS MY ASCENSION!" route = PATH_COSMIC + ascension_achievement = /datum/award/achievement/misc/cosmic_ascension /// A static list of command we can use with our mob. var/static/list/star_gazer_commands = list( /datum/pet_command/idle, @@ -271,7 +285,7 @@ text = "[generate_heretic_text()] A Star Gazer has arrived into the station, [user.real_name] has ascended! This station is the domain of the Cosmos! [generate_heretic_text()]", title = "[generate_heretic_text()]", sound = 'sound/ambience/antag/heretic/ascend_cosmic.ogg', - color_override = "pink", + color_override = "purple", ) var/mob/living/basic/heretic_summon/star_gazer/star_gazer_mob = new /mob/living/basic/heretic_summon/star_gazer(loc) star_gazer_mob.maxHealth = INFINITY @@ -296,5 +310,3 @@ var/datum/action/cooldown/spell/conjure/cosmic_expansion/cosmic_expansion_spell = locate() in user.actions cosmic_expansion_spell?.ascended = TRUE - - user.client?.give_award(/datum/award/achievement/misc/cosmic_ascension, user) diff --git a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm index 4a7b2fd205297..e0b82651bc9d6 100644 --- a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm @@ -5,6 +5,8 @@ /** * # The path of Flesh. + * Spell names are in this language: LATIN + * Both are related: Latin-Rome-Hedonism-Flesh * * Goes as follows: * @@ -44,6 +46,8 @@ result_atoms = list(/obj/item/melee/sickly_blade/flesh) limit = 3 // Bumped up so they can arm up their ghouls too. route = PATH_FLESH + research_tree_icon_path = 'icons/obj/weapons/khopesh.dmi' + research_tree_icon_state = "flesh_blade" /datum/heretic_knowledge/limited_amount/starting/base_flesh/on_research(mob/user, datum/antagonist/heretic/our_heretic) . = ..() @@ -64,6 +68,9 @@ limit = 1 cost = 1 route = PATH_FLESH + depth = 3 + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "grasp_flesh" /datum/heretic_knowledge/limited_amount/flesh_grasp/on_gain(mob/user, datum/antagonist/heretic/our_heretic) RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp)) @@ -137,6 +144,10 @@ limit = 2 cost = 1 route = PATH_FLESH + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "ghoul_voiceless" + + depth = 4 /datum/heretic_knowledge/limited_amount/flesh_ghoul/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc) . = ..() @@ -227,6 +238,7 @@ spell_to_add = /datum/action/cooldown/spell/touch/flesh_surgery cost = 1 route = PATH_FLESH + depth = 7 /datum/heretic_knowledge/summon/raw_prophet name = "Raw Ritual" @@ -250,6 +262,7 @@ cost = 1 route = PATH_FLESH poll_ignore_define = POLL_IGNORE_RAW_PROPHET + depth = 8 /datum/heretic_knowledge/blade_upgrade/flesh name = "Bleeding Steel" @@ -258,6 +271,8 @@ I finally began to understand. And then, blood rained from the heavens." next_knowledge = list(/datum/heretic_knowledge/summon/stalker) route = PATH_FLESH + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "blade_upgrade_flesh" ///What type of wound do we apply on hit var/wound_type = /datum/wound/slash/flesh/severe @@ -292,6 +307,7 @@ cost = 1 route = PATH_FLESH poll_ignore_define = POLL_IGNORE_STALKER + depth = 10 /datum/heretic_knowledge/ultimate/flesh_final name = "Priest's Final Hymn" @@ -308,6 +324,7 @@ Reality will bend to THE LORD OF THE NIGHT or be unraveled! WITNESS MY ASCENSION!" required_atoms = list(/mob/living/carbon/human = 4) route = PATH_FLESH + ascension_achievement = /datum/award/achievement/misc/flesh_ascension /datum/heretic_knowledge/ultimate/flesh_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) . = ..() @@ -315,13 +332,12 @@ text = "[generate_heretic_text()] Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, [user.real_name] has ascended! Fear the ever twisting hand! [generate_heretic_text()]", title = "[generate_heretic_text()]", sound = 'sound/ambience/antag/heretic/ascend_flesh.ogg', - color_override = "pink", + color_override = "red", ) var/datum/action/cooldown/spell/shapeshift/shed_human_form/worm_spell = new(user.mind) worm_spell.Grant(user) - user.client?.give_award(/datum/award/achievement/misc/flesh_ascension, user) var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) var/datum/heretic_knowledge/limited_amount/flesh_grasp/grasp_ghoul = heretic_datum.get_knowledge(/datum/heretic_knowledge/limited_amount/flesh_grasp) diff --git a/code/modules/antagonists/heretic/knowledge/general_side.dm b/code/modules/antagonists/heretic/knowledge/general_side.dm index 2dc2719227b1c..27f0e11b4467b 100644 --- a/code/modules/antagonists/heretic/knowledge/general_side.dm +++ b/code/modules/antagonists/heretic/knowledge/general_side.dm @@ -12,6 +12,9 @@ ) cost = 1 route = PATH_SIDE + depth = 8 + research_tree_icon_path = 'icons/mob/actions/actions_animal.dmi' + research_tree_icon_state = "gaze" /datum/heretic_knowledge/reroll_targets/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc) diff --git a/code/modules/antagonists/heretic/knowledge/lock_lore.dm b/code/modules/antagonists/heretic/knowledge/lock_lore.dm index 2807167d819fb..b238d6dd3c7f3 100644 --- a/code/modules/antagonists/heretic/knowledge/lock_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/lock_lore.dm @@ -1,5 +1,7 @@ /** * # The path of Lock. + * Spell names are in this language: EGYPTIAN + * Both are related: Egyptian-Mysteries-Secrets-Lock * * Goes as follows: * @@ -39,6 +41,8 @@ result_atoms = list(/obj/item/melee/sickly_blade/lock) limit = 2 route = PATH_LOCK + research_tree_icon_path = 'icons/obj/weapons/khopesh.dmi' + research_tree_icon_state = "key_blade" /datum/heretic_knowledge/lock_grasp name = "Grasp of Lock" @@ -49,6 +53,9 @@ next_knowledge = list(/datum/heretic_knowledge/key_ring) cost = 1 route = PATH_LOCK + depth = 3 + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "grasp_lock" /datum/heretic_knowledge/lock_grasp/on_gain(mob/user, datum/antagonist/heretic/our_heretic) RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK_SECONDARY, PROC_REF(on_secondary_mansus_grasp)) @@ -111,6 +118,9 @@ ) cost = 1 route = PATH_LOCK + research_tree_icon_path = 'icons/obj/card.dmi' + research_tree_icon_state = "card_gold" + depth = 4 /datum/heretic_knowledge/mark/lock_mark name = "Mark of Lock" @@ -140,6 +150,9 @@ next_knowledge = list(/datum/heretic_knowledge/spell/burglar_finesse) cost = 1 route = PATH_LOCK + research_tree_icon_path = 'icons/obj/service/library.dmi' + research_tree_icon_state = "heretichandbook" + depth = 7 /datum/heretic_knowledge/spell/burglar_finesse name = "Burglar's Finesse" @@ -156,6 +169,7 @@ spell_to_add = /datum/action/cooldown/spell/pointed/burglar_finesse cost = 1 route = PATH_LOCK + depth = 8 /datum/heretic_knowledge/blade_upgrade/flesh/lock //basically a chance-based weeping avulsion version of the former name = "Opening Blade" @@ -164,6 +178,8 @@ next_knowledge = list(/datum/heretic_knowledge/spell/caretaker_refuge) route = PATH_LOCK wound_type = /datum/wound/slash/flesh/critical + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "blade_upgrade_lock" var/chance = 35 /datum/heretic_knowledge/blade_upgrade/flesh/lock/do_melee_effects(mob/living/source, mob/living/target, obj/item/melee/sickly_blade/blade) @@ -183,6 +199,7 @@ route = PATH_LOCK spell_to_add = /datum/action/cooldown/spell/caretaker cost = 1 + depth = 10 /datum/heretic_knowledge/ultimate/lock_final name = "Unlock the Labyrinth" @@ -199,6 +216,7 @@ The Labyrinth will be Locked no more, and freedom will be ours! WITNESS US!" required_atoms = list(/mob/living/carbon/human = 3) route = PATH_LOCK + ascension_achievement = /datum/award/achievement/misc/lock_ascension /datum/heretic_knowledge/ultimate/lock_final/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc) . = ..() @@ -225,15 +243,13 @@ text = "Delta-class dimensional anomaly detec[generate_heretic_text()] Reality rended, torn. Gates open, doors open, [user.real_name] has ascended! Fear the tide! [generate_heretic_text()]", title = "[generate_heretic_text()]", sound = 'sound/ambience/antag/heretic/ascend_knock.ogg', - color_override = "pink", + color_override = "yellow", ) - user.client?.give_award(/datum/award/achievement/misc/lock_ascension, user) // buffs var/datum/action/cooldown/spell/shapeshift/eldritch/ascension/transform_spell = new(user.mind) transform_spell.Grant(user) - user.client?.give_award(/datum/award/achievement/misc/lock_ascension, user) var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) var/datum/heretic_knowledge/blade_upgrade/flesh/lock/blade_upgrade = heretic_datum.get_knowledge(/datum/heretic_knowledge/blade_upgrade/flesh/lock) blade_upgrade.chance += 30 diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm index 4b61648329214..5ba55b64058cb 100644 --- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm @@ -1,5 +1,7 @@ /** * # The path of Moon. + * Spell names are in this language: ANCIENT HEBREW + * Both are related: Ancient Hebrew-Moon Mysticism-Moon * * Goes as follows: * @@ -39,6 +41,8 @@ ) result_atoms = list(/obj/item/melee/sickly_blade/moon) route = PATH_MOON + research_tree_icon_path = 'icons/obj/weapons/khopesh.dmi' + research_tree_icon_state = "moon_blade" /datum/heretic_knowledge/base_moon/on_gain(mob/user, datum/antagonist/heretic/our_heretic) add_traits(user ,TRAIT_EMPATH, REF(src)) @@ -51,6 +55,9 @@ next_knowledge = list(/datum/heretic_knowledge/spell/moon_smile) cost = 1 route = PATH_MOON + depth = 3 + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "grasp_moon" /datum/heretic_knowledge/moon_grasp/on_gain(mob/user, datum/antagonist/heretic/our_heretic) RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp)) @@ -82,6 +89,7 @@ spell_to_add = /datum/action/cooldown/spell/pointed/moon_smile cost = 1 route = PATH_MOON + depth = 4 /datum/heretic_knowledge/mark/moon_mark name = "Mark of Moon" @@ -107,6 +115,7 @@ spell_to_add = /datum/action/cooldown/spell/pointed/projectile/moon_parade cost = 1 route = PATH_MOON + depth = 7 /datum/heretic_knowledge/moon_amulet @@ -130,6 +139,10 @@ result_atoms = list(/obj/item/clothing/neck/heretic_focus/moon_amulet) cost = 1 route = PATH_MOON + depth = 8 + research_tree_icon_path = 'icons/obj/antags/eldritch.dmi' + research_tree_icon_state = "moon_amulette" + research_tree_icon_frame = 9 /datum/heretic_knowledge/blade_upgrade/moon name = "Moonlight Blade" @@ -137,6 +150,8 @@ gain_text = "His wit was sharp as a blade, cutting through the lie to bring us joy." next_knowledge = list(/datum/heretic_knowledge/spell/moon_ringleader) route = PATH_MOON + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "blade_upgrade_moon" /datum/heretic_knowledge/blade_upgrade/moon/do_melee_effects(mob/living/source, mob/living/target, obj/item/melee/sickly_blade/blade) if(source == target) @@ -164,6 +179,8 @@ spell_to_add = /datum/action/cooldown/spell/aoe/moon_ringleader cost = 1 route = PATH_MOON + depth = 10 + research_tree_icon_frame = 5 /datum/heretic_knowledge/ultimate/moon_final name = "The Last Act" @@ -176,6 +193,7 @@ for where the Ringleader had started the parade, I shall continue it unto the suns demise \ WITNESS MY ASCENSION, THE MOON SMILES ONCE MORE AND FOREVER MORE IT SHALL!" route = PATH_MOON + ascension_achievement = /datum/award/achievement/misc/moon_ascension /datum/heretic_knowledge/ultimate/moon_final/is_valid_sacrifice(mob/living/sacrifice) @@ -193,10 +211,9 @@ The truth shall finally devour the lie! [generate_heretic_text()]", title = "[generate_heretic_text()]", sound = 'sound/ambience/antag/heretic/ascend_moon.ogg', - color_override = "pink", + color_override = "blue", ) - user.client?.give_award(/datum/award/achievement/misc/moon_ascension, user) ADD_TRAIT(user, TRAIT_MADNESS_IMMUNE, REF(src)) user.mind.add_antag_datum(/datum/antagonist/lunatic/master) RegisterSignal(user, COMSIG_LIVING_LIFE, PROC_REF(on_life)) diff --git a/code/modules/antagonists/heretic/knowledge/rust_lore.dm b/code/modules/antagonists/heretic/knowledge/rust_lore.dm index fe553c8b8c779..5e96119135f71 100644 --- a/code/modules/antagonists/heretic/knowledge/rust_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/rust_lore.dm @@ -1,5 +1,6 @@ /** * # The path of Rust. + * Spell names are in this language: OLD SLAVIC * * Goes as follows: * @@ -42,6 +43,8 @@ ) result_atoms = list(/obj/item/melee/sickly_blade/rust) route = PATH_RUST + research_tree_icon_path = 'icons/obj/weapons/khopesh.dmi' + research_tree_icon_state = "rust_blade" /datum/heretic_knowledge/rust_fist name = "Grasp of Rust" @@ -52,6 +55,9 @@ next_knowledge = list(/datum/heretic_knowledge/rust_regen) cost = 1 route = PATH_RUST + depth = 3 + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "grasp_rust" /datum/heretic_knowledge/rust_fist/on_gain(mob/user, datum/antagonist/heretic/our_heretic) RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp)) @@ -73,7 +79,7 @@ SIGNAL_HANDLER // Rusting an airlock causes it to lose power, mostly to prevent the airlock from shocking you. - // This is a bit of a hack, but fixing this would require the enture wire cut/pulse system to be reworked. + // This is a bit of a hack, but fixing this would require the entire wire cut/pulse system to be reworked. if(istype(target, /obj/machinery/door/airlock)) var/obj/machinery/door/airlock/airlock = target airlock.loseMainPower() @@ -93,58 +99,15 @@ ) cost = 1 route = PATH_RUST + research_tree_icon_path = 'icons/effects/eldritch.dmi' + research_tree_icon_state = "cloud_swirl" + depth = 4 /datum/heretic_knowledge/rust_regen/on_gain(mob/user, datum/antagonist/heretic/our_heretic) - RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) - RegisterSignal(user, COMSIG_LIVING_LIFE, PROC_REF(on_life)) + user.AddElement(/datum/element/leeching_walk) /datum/heretic_knowledge/rust_regen/on_lose(mob/user, datum/antagonist/heretic/our_heretic) - UnregisterSignal(user, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_LIFE)) - -/* - * Signal proc for [COMSIG_MOVABLE_MOVED]. - * - * Checks if we should have baton resistance on the new turf. - */ -/datum/heretic_knowledge/rust_regen/proc/on_move(mob/source, atom/old_loc, dir, forced, list/old_locs) - SIGNAL_HANDLER - - var/turf/mover_turf = get_turf(source) - if(HAS_TRAIT(mover_turf, TRAIT_RUSTY)) - ADD_TRAIT(source, TRAIT_BATON_RESISTANCE, type) - return - - REMOVE_TRAIT(source, TRAIT_BATON_RESISTANCE, type) - -/** - * Signal proc for [COMSIG_LIVING_LIFE]. - * - * Gradually heals the heretic ([source]) on rust, - * including baton knockdown and stamina damage. - */ -/datum/heretic_knowledge/rust_regen/proc/on_life(mob/living/source, seconds_per_tick, times_fired) - SIGNAL_HANDLER - - var/turf/our_turf = get_turf(source) - if(!HAS_TRAIT(our_turf, TRAIT_RUSTY)) - return - - // Heals all damage + Stamina - var/need_mob_update = FALSE - need_mob_update += source.adjustBruteLoss(-3, updating_health = FALSE) - need_mob_update += source.adjustFireLoss(-3, updating_health = FALSE) - need_mob_update += source.adjustToxLoss(-3, updating_health = FALSE, forced = TRUE) // Slimes are people too - need_mob_update += source.adjustOxyLoss(-1.5, updating_health = FALSE) - need_mob_update += source.adjustStaminaLoss(-10, updating_stamina = FALSE) - if(need_mob_update) - source.updatehealth() - // Reduces duration of stuns/etc - source.AdjustAllImmobility(-0.5 SECONDS) - // Heals blood loss - if(source.blood_volume < BLOOD_VOLUME_NORMAL) - source.blood_volume += 2.5 * seconds_per_tick - // Slowly regulates your body temp - source.adjust_bodytemperature((source.get_body_temp_normal() - source.bodytemperature)/5) + user.RemoveElement(/datum/element/leeching_walk) /datum/heretic_knowledge/mark/rust_mark name = "Mark of Rust" @@ -174,6 +137,7 @@ spell_to_add = /datum/action/cooldown/spell/pointed/rust_construction cost = 1 route = PATH_RUST + depth = 7 /datum/heretic_knowledge/spell/area_conversion name = "Aggressive Spread" @@ -191,6 +155,8 @@ spell_to_add = /datum/action/cooldown/spell/aoe/rust_conversion cost = 1 route = PATH_RUST + depth = 8 + research_tree_icon_frame = 5 /datum/heretic_knowledge/spell/area_conversion/on_gain(mob/user, datum/antagonist/heretic/our_heretic) . = ..() @@ -203,6 +169,8 @@ The heavy rust weights it down. You stare deeply into it. The Rusted Hills call for you, now." next_knowledge = list(/datum/heretic_knowledge/spell/entropic_plume) route = PATH_RUST + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "blade_upgrade_rust" /datum/heretic_knowledge/blade_upgrade/rust/on_gain(mob/user, datum/antagonist/heretic/our_heretic) . = ..() @@ -227,6 +195,7 @@ spell_to_add = /datum/action/cooldown/spell/cone/staggered/entropic_plume cost = 1 route = PATH_RUST + depth = 10 /datum/heretic_knowledge/spell/entropic_plume/on_gain(mob/user) . = ..() @@ -243,6 +212,7 @@ gain_text = "Champion of rust. Corruptor of steel. Fear the dark, for the RUSTBRINGER has come! \ The Blacksmith forges ahead! Rusted Hills, CALL MY NAME! WITNESS MY ASCENSION!" route = PATH_RUST + ascension_achievement = /datum/award/achievement/misc/rust_ascension /// If TRUE, then immunities are currently active. var/immunities_active = FALSE /// A typepath to an area that we must finish the ritual in. @@ -288,7 +258,7 @@ text = "[generate_heretic_text()] Fear the decay, for the Rustbringer, [user.real_name] has ascended! None shall escape the corrosion! [generate_heretic_text()]", title = "[generate_heretic_text()]", sound = 'sound/ambience/antag/heretic/ascend_rust.ogg', - color_override = "pink", + color_override = "brown", ) trigger(loc) RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) 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 1d2be465b3026..8da3b90494899 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -16,6 +16,9 @@ cost = 0 priority = MAX_KNOWLEDGE_PRIORITY // Should be at the top route = PATH_START + research_tree_icon_path = 'icons/effects/eldritch.dmi' + research_tree_icon_state = "eye_close" + research_tree_icon_frame = 1 /// 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. @@ -80,8 +83,11 @@ // 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/mob/living/carbon/human/sacrifice in atoms) - // If the mob's not in soft crit or worse, or isn't one of the sacrifices, remove it from the list - if(sacrifice.stat < SOFT_CRIT || !(sacrifice in heretic_datum.sac_targets)) + // If the mob's not in soft crit or worse, remove from list + if(sacrifice.stat < SOFT_CRIT) + atoms -= sacrifice + // Otherwise if it's neither a target nor a cultist, remove it + else if(!(sacrifice in heretic_datum.sac_targets) && !IS_CULTIST(sacrifice)) atoms -= sacrifice // Finally, return TRUE if we have a target in the list @@ -94,7 +100,9 @@ /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.sac_targets)) + // Force it to work if the sacrifice is a cultist, even if there's no targets. + var/mob/living/carbon/human/sac = selected_atoms[1] + if(!LAZYLEN(heretic_datum.sac_targets) && !IS_CULTIST(sac)) if(obtain_targets(user, heretic_datum = heretic_datum)) return TRUE else @@ -183,34 +191,128 @@ * * 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) +/datum/heretic_knowledge/hunt_and_sacrifice/proc/sacrifice_process(mob/living/user, list/selected_atoms, turf/loc) var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) var/mob/living/carbon/human/sacrifice = locate() in selected_atoms if(!sacrifice) CRASH("[type] sacrifice_process didn't have a human in the atoms list. How'd it make it so far?") - if(!(sacrifice in heretic_datum.sac_targets)) - CRASH("[type] sacrifice_process managed to get a non-target human. This is incorrect.") + if(!(sacrifice in heretic_datum.sac_targets) && !IS_CULTIST(sacrifice)) + CRASH("[type] sacrifice_process managed to get a non-target, non-cult human. This is incorrect.") if(sacrifice.mind) LAZYADD(target_blacklist, sacrifice.mind) heretic_datum.remove_sacrifice_target(sacrifice) + var/feedback = "Your patrons accept your offer" var/sac_job_flag = sacrifice.mind?.assigned_role?.job_flags | sacrifice.last_mind?.assigned_role?.job_flags - if(sac_job_flag & JOB_HEAD_OF_STAFF) - heretic_datum.knowledge_points++ + var/datum/antagonist/cult/cultist_datum = IS_CULTIST(sacrifice) + // Heads give 3 points, cultists give 1 point (and a special reward), normal sacrifices give 2 points. + heretic_datum.total_sacrifices++ + if((sac_job_flag & JOB_HEAD_OF_STAFF)) + heretic_datum.knowledge_points += 3 heretic_datum.high_value_sacrifices++ feedback += " graciously" + else if(cultist_datum) + heretic_datum.knowledge_points += 1 + grant_reward(user, sacrifice, loc) + // easier to read + var/rewards_given = heretic_datum.rewards_given + // Chance for it to send a warning to cultists, higher with each reward. Stops after 5 because they probably got the hint by then. + if(prob(min(15 * rewards_given)) && (rewards_given <= 5)) + for(var/datum/mind/mind as anything in cultist_datum.cult_team.members) + if(mind.current) + SEND_SOUND(mind.current, 'sound/magic/clockwork/narsie_attack.ogg') + var/message = span_narsie("A vile heretic has ") + \ + span_cult_large(span_hypnophrase("sacrificed")) + \ + span_narsie(" one of our own. Destroy and sacrifice the infidel before it claims more!") + to_chat(mind.current, message) + // he(retic) gets a warn too + var/message = span_cult_bold("You feel that your action has attracted") + \ + span_cult_bold_italic(" attention.") + to_chat(user, message) + return + else + heretic_datum.knowledge_points += 2 to_chat(user, span_hypnophrase("[feedback].")) - heretic_datum.total_sacrifices++ - heretic_datum.knowledge_points += 2 + if(!begin_sacrifice(sacrifice)) + disembowel_target(sacrifice) + return sacrifice.apply_status_effect(/datum/status_effect/heretic_curse, user) - if(!begin_sacrifice(sacrifice)) - disembowel_target(sacrifice) + +/datum/heretic_knowledge/hunt_and_sacrifice/proc/grant_reward(mob/living/user, mob/living/sacrifice, turf/loc) + + // Visible and audible encouragement! + to_chat(user, span_big(span_hypnophrase("A servant of the Sanguine Apostate!"))) + to_chat(user, span_hierophant("Your patrons are rapturous!")) + playsound(sacrifice, 'sound/magic/disintegrate.ogg', 75, TRUE) + + // Drop all items and splatter them around messily. + var/list/dustee_items = sacrifice.unequip_everything() + for(var/obj/item/loot as anything in dustee_items) + loot.throw_at(get_step_rand(sacrifice), 2, 4, user, TRUE) + + // The loser is DUSTED. + sacrifice.dust(TRUE, TRUE) + + // Increase reward counter + var/datum/antagonist/heretic/antag = IS_HERETIC(user) + antag.rewards_given++ + + // We limit the amount so the heretic doesn't just turn into a frickin' god (early) + to_chat(user, span_hierophant("You feel the rotten energies of the infidel warp and twist, mixing with that of your own...")) + if(prob(8 * antag.rewards_given)) + to_chat(user, span_hierophant("Faint, dark red sparks flit around the dust, then fade. It looks like your patrons weren't able to fashion something out of it.")) + return + + // Cool effect for the rune as well as the item + var/obj/effect/heretic_rune/rune = locate() in range(2, user) + if(rune) + rune.gender_reveal( + outline_color = COLOR_CULT_RED, + ray_color = null, + do_float = FALSE, + do_layer = FALSE, + ) + + addtimer(CALLBACK(src, PROC_REF(deposit_reward), user, loc, null, rune), 5 SECONDS) + + +/datum/heretic_knowledge/hunt_and_sacrifice/proc/deposit_reward(mob/user, turf/loc, loop = 0, obj/rune) + if(loop > 5) // Max limit for retrying a reward + return + // Remove the rays, we don't need them anymore. + rune?.remove_filter("reward_outline") + playsound(loc, 'sound/magic/repulse.ogg', 75, TRUE) + var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) + ASSERT(heretic_datum) + // This list will be almost identical to unlocked_heretic_items, with the same keys, the difference being the values will be 1 to 5. + var/list/rewards = heretic_datum.unlocked_heretic_items.Copy() + // We will make it increasingly less likely to get a reward if you've already got it + for(var/possible_reward in heretic_datum.unlocked_heretic_items) + var/amount_already_awarded = heretic_datum.unlocked_heretic_items[possible_reward] + rewards[possible_reward] = min(5 - (amount_already_awarded * 2), 1) + + var/atom/reward = pick_weight(rewards) + reward = new reward(loc) + + if(isliving(reward)) + if(summon_ritual_mob(user, loc, reward) == FALSE) + qdel(reward) + deposit_reward(user, loc, loop++, rune) // If no ghosts, try again until limit is hit + return + + else if(isitem(reward)) + var/obj/item/item_reward = reward + item_reward.gender_reveal(outline_color = null, ray_color = COLOR_CULT_RED) + + ASSERT(reward) + + return reward /** * This proc is called from [proc/sacrifice_process] after the heretic successfully sacrifices [sac_target].) diff --git a/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm b/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm index f933bbfda1d26..758ee0548d5fc 100644 --- a/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm +++ b/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm @@ -16,6 +16,9 @@ result_atoms = list(/obj/item/clothing/neck/eldritch_amulet) cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/obj/antags/eldritch.dmi' + research_tree_icon_state = "eye_medalion" + depth = 4 /datum/heretic_knowledge/curse/paralysis name = "Curse of Paralysis" @@ -37,6 +40,9 @@ curse_color = "#f19a9a" cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "curse_paralysis" + depth = 8 /datum/heretic_knowledge/curse/paralysis/curse(mob/living/carbon/human/chosen_mob, boosted = FALSE) if(chosen_mob.usable_legs <= 0) // What're you gonna do, curse someone who already can't walk? @@ -75,6 +81,7 @@ cost = 1 route = PATH_SIDE poll_ignore_define = POLL_IGNORE_ASH_SPIRIT + depth = 10 /datum/heretic_knowledge/summon/ashy/cleanup_atoms(list/selected_atoms) var/obj/item/bodypart/head/ritual_head = locate() in selected_atoms diff --git a/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm b/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm index e8c14d16abeca..3a0f17ed48391 100644 --- a/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm +++ b/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm @@ -16,11 +16,15 @@ result_atoms = list(/obj/item/clothing/suit/hooded/cultrobes/eldritch) cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/obj/clothing/suits/armor.dmi' + research_tree_icon_state = "eldritch_armor" + research_tree_icon_frame = 12 + depth = 4 /datum/heretic_knowledge/crucible name = "Mawed Crucible" desc = "Allows you to transmute a portable water tank and a table to create a Mawed Crucible. \ - The Mawed Crubile can brew powerful potions for combat and utility, but must be fed bodyparts and organs between uses." + The Mawed Crucible can brew powerful potions for combat and utility, but must be fed bodyparts and organs between uses." gain_text = "This is pure agony. I wasn't able to summon the figure of the Aristocrat, \ but with the Priest's attention I stumbled upon a different recipe..." next_knowledge = list( @@ -34,6 +38,9 @@ result_atoms = list(/obj/structure/destructible/eldritch_crucible) cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/obj/antags/eldritch.dmi' + research_tree_icon_state = "crucible" + depth = 8 /datum/heretic_knowledge/rifle name = "Lionhunter's Rifle" @@ -43,7 +50,7 @@ These shots function as normal, albeit weak high caliber mutitions when fired from \ close range or at inanimate objects. You can aim the rifle at distant foes, \ causing the shot to deal massively increased damage and hone in on them." - gain_text = "I met an old man in an anique shop who wielded a very unusual weapon. \ + gain_text = "I met an old man in an antique shop who wielded a very unusual weapon. \ I could not purchase it at the time, but they showed me how they made it ages ago." next_knowledge = list( /datum/heretic_knowledge/duel_stance, @@ -59,9 +66,12 @@ result_atoms = list(/obj/item/gun/ballistic/rifle/lionhunter) cost = 1 route = PATH_SIDE + depth = 8 + research_tree_icon_path = 'icons/obj/weapons/guns/ballistic.dmi' + research_tree_icon_state = "goldrevolver" /datum/heretic_knowledge/rifle_ammo - name = "Lionhunter Rifle Ammunition (free)" + name = "Lionhunter Rifle Ammunition" desc = "Allows you to transmute 3 ballistic ammo casings (used or unused) of any caliber, \ including shotgun shot, with any animal hide to create an extra clip of ammunition for the Lionhunter Rifle." gain_text = "The weapon came with three rough iron balls, intended to be used as ammunition. \ @@ -74,6 +84,9 @@ result_atoms = list(/obj/item/ammo_box/strilka310/lionhunter) cost = 0 route = PATH_SIDE + research_tree_icon_path = 'icons/obj/weapons/guns/ammo.dmi' + research_tree_icon_state = "310_strip" + depth = 8 /// A list of calibers that the ritual will deny. Only ballistic calibers are allowed. var/static/list/caliber_blacklist = list( CALIBER_LASER, @@ -107,3 +120,4 @@ spell_to_add = /datum/action/cooldown/mob_cooldown/charge/rust cost = 1 route = PATH_SIDE + depth = 10 diff --git a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm index 14a003ce11c0b..1a08236aee64d 100644 --- a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm +++ b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm @@ -19,6 +19,8 @@ cost = 1 route = PATH_SIDE poll_ignore_define = POLL_IGNORE_FIRE_SHARK + depth = 4 + research_tree_icon_dir = EAST /datum/heretic_knowledge/spell/space_phase name = "Space Phase" @@ -32,6 +34,8 @@ spell_to_add = /datum/action/cooldown/spell/jaunt/space_crawl cost = 1 route = PATH_SIDE + depth = 8 + research_tree_icon_frame = 6 /datum/heretic_knowledge/eldritch_coin name = "Eldritch Coin" @@ -51,3 +55,6 @@ result_atoms = list(/obj/item/coin/eldritch) cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/obj/economy.dmi' + research_tree_icon_state = "coin_heretic" + depth = 10 diff --git a/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm b/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm index 4a315575d61b7..a958ab3f272bb 100644 --- a/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm +++ b/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm @@ -19,6 +19,9 @@ result_atoms = list(/obj/item/clothing/suit/hooded/cultrobes/void) cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/obj/clothing/suits/armor.dmi' + research_tree_icon_state = "void_cloak" + depth = 4 /datum/heretic_knowledge/spell/blood_siphon name = "Blood Siphon" @@ -32,6 +35,7 @@ spell_to_add = /datum/action/cooldown/spell/pointed/blood_siphon cost = 1 route = PATH_SIDE + depth = 8 /datum/heretic_knowledge/spell/cleave name = "Blood Cleave" @@ -46,3 +50,4 @@ spell_to_add = /datum/action/cooldown/spell/pointed/cleave cost = 1 route = PATH_SIDE + depth = 10 diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm b/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm index 74013f2b0bd1d..706b83abac7b3 100644 --- a/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm +++ b/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm @@ -12,6 +12,7 @@ spell_to_add = /datum/action/cooldown/spell/aoe/wave_of_desperation cost = 1 route = PATH_SIDE + depth = 8 /datum/heretic_knowledge/spell/apetra_vulnera name = "Apetra Vulnera" @@ -26,3 +27,4 @@ spell_to_add = /datum/action/cooldown/spell/pointed/apetra_vulnera cost = 1 route = PATH_SIDE + depth = 10 diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm index ac56b9ba24006..1e265b974980f 100644 --- a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm +++ b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm @@ -13,6 +13,7 @@ spell_to_add = /datum/action/cooldown/spell/pointed/mind_gate cost = 1 route = PATH_SIDE + depth = 4 /datum/heretic_knowledge/unfathomable_curio name = "Unfathomable Curio" @@ -33,6 +34,9 @@ result_atoms = list(/obj/item/storage/belt/unfathomable_curio) cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/obj/clothing/belts.dmi' + research_tree_icon_state = "unfathomable_curio" + depth = 8 /datum/heretic_knowledge/painting name = "Unsealed Arts" @@ -53,6 +57,9 @@ result_atoms = list(/obj/item/canvas) cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/obj/signs.dmi' + research_tree_icon_state = "eldritch_painting_weeping" + depth = 8 /datum/heretic_knowledge/painting/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc) if(locate(/obj/item/organ/internal/eyes) in atoms) diff --git a/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm b/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm index 56999243b5de3..11918c66a2906 100644 --- a/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm +++ b/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm @@ -17,6 +17,9 @@ result_atoms = list(/obj/item/reagent_containers/cup/beaker/eldritch) cost = 1 route = PATH_SIDE + depth = 4 + research_tree_icon_path = 'icons/obj/antags/eldritch.dmi' + research_tree_icon_state = "eldritch_flask" /datum/heretic_knowledge/entropy_pulse name = "Pulse of Entropy" @@ -28,6 +31,10 @@ ) cost = 0 route = PATH_SIDE + research_tree_icon_path = 'icons/mob/actions/actions_ecult.dmi' + research_tree_icon_state = "corrode" + research_tree_icon_frame = 10 + depth = 4 var/rusting_range = 8 /datum/heretic_knowledge/entropy_pulse/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) @@ -60,6 +67,9 @@ curse_color = "#c1ffc9" cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "curse_corrosion" + depth = 8 /datum/heretic_knowledge/curse/corrosion/curse(mob/living/carbon/human/chosen_mob, boosted = FALSE) to_chat(chosen_mob, span_danger("You feel very ill...")) @@ -92,6 +102,7 @@ cost = 1 route = PATH_SIDE poll_ignore_define = POLL_IGNORE_RUST_SPIRIT + depth = 8 /datum/heretic_knowledge/summon/rusty/cleanup_atoms(list/selected_atoms) var/obj/item/bodypart/head/ritual_head = locate() in selected_atoms diff --git a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm index e044eee8619ef..56945262e3cb0 100644 --- a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm +++ b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm @@ -23,6 +23,9 @@ limit = 1 cost = 1 route = PATH_SIDE + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "ghoul_shattered" + depth = 4 /datum/heretic_knowledge/limited_amount/risen_corpse/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc) . = ..() @@ -139,6 +142,9 @@ result_atoms = list(/obj/item/melee/rune_carver) cost = 1 route = PATH_SIDE + depth = 8 + research_tree_icon_path = 'icons/obj/antags/eldritch.dmi' + research_tree_icon_state = "rune_carver" /datum/heretic_knowledge/summon/maid_in_mirror name = "Maid in the Mirror" @@ -162,3 +168,4 @@ route = PATH_SIDE mob_to_summon = /mob/living/basic/heretic_summon/maid_in_the_mirror poll_ignore_define = POLL_IGNORE_MAID_IN_MIRROR + depth = 10 diff --git a/code/modules/antagonists/heretic/knowledge/starting_lore.dm b/code/modules/antagonists/heretic/knowledge/starting_lore.dm index 50b57fd9e96b4..7cb3b82a39ac2 100644 --- a/code/modules/antagonists/heretic/knowledge/starting_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/starting_lore.dm @@ -1,4 +1,5 @@ // Heretic starting knowledge. +// Default heretic language is Ancient Greek, because, uh, they're like ancient and shit. /// Global list of all heretic knowledge that have route = PATH_START. List of PATHS. GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) @@ -48,6 +49,9 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) cost = 0 priority = MAX_KNOWLEDGE_PRIORITY - 1 // Knowing how to remake your heart is important route = PATH_START + research_tree_icon_path = 'icons/obj/antags/eldritch.dmi' + research_tree_icon_state = "living_heart" + research_tree_icon_frame = 1 /// The typepath of the organ type required for our heart. var/required_organ_type = /obj/item/organ/internal/heart @@ -204,6 +208,8 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) cost = 0 priority = MAX_KNOWLEDGE_PRIORITY - 2 // Not as important as making a heart or sacrificing, but important enough. route = PATH_START + research_tree_icon_path = 'icons/obj/clothing/neck.dmi' + research_tree_icon_state = "eldritch_necklace" /datum/heretic_knowledge/spell/cloak_of_shadows name = "Cloak of Shadow" @@ -238,6 +244,8 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) route = PATH_START priority = MAX_KNOWLEDGE_PRIORITY - 3 // Least priority out of the starting knowledges, as it's an optional boon. var/static/list/non_mob_bindings = typecacheof(list(/obj/item/stack/sheet/leather, /obj/item/stack/sheet/animalhide)) + research_tree_icon_path = 'icons/obj/antags/eldritch.dmi' + research_tree_icon_state = "book" /datum/heretic_knowledge/codex_cicatrix/parse_required_item(atom/item_path, number_of_things) if(item_path == /obj/item/pen) @@ -300,21 +308,30 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) gain_text = "Under the soft glow of unreason there is a beast that stalks the night. I shall bring it forth and let it enter my presence. It will feast upon my amibitions and leave knowledge in its wake." route = PATH_START required_atoms = list() + research_tree_icon_path = 'icons/mob/actions/actions_animal.dmi' + research_tree_icon_state = "god_transmit" /datum/heretic_knowledge/feast_of_owls/can_be_invoked(datum/antagonist/heretic/invoker) return !invoker.feast_of_owls /datum/heretic_knowledge/feast_of_owls/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) + //amount of research points granted + var/reward = 5 var/alert = tgui_alert(user,"Do you really want to forsake your ascension? This action cannot be reverted.", "Feast of Owls", list("Yes I'm sure", "No"), 30 SECONDS) if( alert != "Yes I'm sure") return FALSE - user.set_temp_blindness(5 SECONDS) - user.AdjustParalyzed(5 SECONDS) + user.set_temp_blindness(reward SECONDS) + user.AdjustParalyzed(reward SECONDS) + user.playsound_local(get_turf(user), 'sound/ambience/antag/heretic/heretic_gain_intense.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE) var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user) - for(var/i in 0 to 4) + for(var/i in 1 to reward) user.emote("scream") playsound(loc, 'sound/items/eatfood.ogg', 100, TRUE) heretic_datum.knowledge_points++ + to_chat(user, span_danger("You feel something invisible tearing away at your very essence!")) + user.do_jitter_animation() sleep(1 SECONDS) - to_chat(user,span_danger("You feel different...")) heretic_datum.feast_of_owls = TRUE + to_chat(user, span_danger(span_big("Your ambition is ravaged, but something powerful remains in its wake..."))) + var/drain_message = pick(strings(HERETIC_INFLUENCE_FILE, "drain_message")) + to_chat(user, span_hypnophrase(span_big("[drain_message]"))) diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm index da1864f87dbc5..482de8184401b 100644 --- a/code/modules/antagonists/heretic/knowledge/void_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm @@ -1,5 +1,7 @@ /** * # The path of VOID. + * Spell names are in this language: PALI + * Both are related: Pali-Buddhism-Nothingness-Void * * Goes as follows: * @@ -37,6 +39,8 @@ required_atoms = list(/obj/item/knife = 1) result_atoms = list(/obj/item/melee/sickly_blade/void) route = PATH_VOID + research_tree_icon_path = 'icons/obj/weapons/khopesh.dmi' + research_tree_icon_state = "void_blade" /datum/heretic_knowledge/limited_amount/starting/base_void/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc) if(!isopenturf(loc)) @@ -58,6 +62,9 @@ next_knowledge = list(/datum/heretic_knowledge/cold_snap) cost = 1 route = PATH_VOID + depth = 3 + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "grasp_void" /datum/heretic_knowledge/void_grasp/on_gain(mob/user, datum/antagonist/heretic/our_heretic) RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp)) @@ -88,6 +95,9 @@ ) cost = 1 route = PATH_VOID + research_tree_icon_path = 'icons/effects/effects.dmi' + research_tree_icon_state = "the_freezer" + depth = 4 /datum/heretic_knowledge/cold_snap/on_gain(mob/user, datum/antagonist/heretic/our_heretic) user.add_traits(list(TRAIT_NOBREATH, TRAIT_RESISTCOLD), type) @@ -119,6 +129,7 @@ spell_to_add = /datum/action/cooldown/spell/cone/staggered/cone_of_cold/void cost = 1 route = PATH_VOID + depth = 7 /datum/heretic_knowledge/spell/void_phase name = "Void Phase" @@ -135,6 +146,8 @@ spell_to_add = /datum/action/cooldown/spell/pointed/void_phase cost = 1 route = PATH_VOID + depth = 8 + research_tree_icon_frame = 7 /datum/heretic_knowledge/blade_upgrade/void name = "Seeking Blade" @@ -142,6 +155,8 @@ gain_text = "Fleeting memories, fleeting feet. I mark my way with frozen blood upon the snow. Covered and forgotten." next_knowledge = list(/datum/heretic_knowledge/spell/void_pull) route = PATH_VOID + research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi' + research_tree_icon_state = "blade_upgrade_void" /datum/heretic_knowledge/blade_upgrade/void/do_ranged_effects(mob/living/user, mob/living/target, obj/item/melee/sickly_blade/blade) if(!target.has_status_effect(/datum/status_effect/eldritch)) @@ -168,6 +183,8 @@ spell_to_add = /datum/action/cooldown/spell/aoe/void_pull cost = 1 route = PATH_VOID + depth = 10 + research_tree_icon_frame = 6 /datum/heretic_knowledge/ultimate/void_final name = "Waltz at the End of Time" @@ -180,6 +197,7 @@ The Aristocrat stands before me, beckoning. We will play a waltz to the whispers of dying reality, \ as the world is destroyed before our eyes. The void will return all to nothing, WITNESS MY ASCENSION!" route = PATH_VOID + ascension_achievement = /datum/award/achievement/misc/void_ascension ///soundloop for the void theme var/datum/looping_sound/void_loop/sound_loop ///Reference to the ongoing voidstrom that surrounds the heretic @@ -203,9 +221,8 @@ text = "[generate_heretic_text()] The nobleman of void [user.real_name] has arrived, stepping along the Waltz that ends worlds! [generate_heretic_text()]", title = "[generate_heretic_text()]", sound = 'sound/ambience/antag/heretic/ascend_void.ogg', - color_override = "pink", + color_override = "blue", ) - user.client?.give_award(/datum/award/achievement/misc/void_ascension, user) ADD_TRAIT(user, TRAIT_RESISTLOWPRESSURE, MAGIC_TRAIT) // Let's get this show on the road! diff --git a/code/modules/antagonists/heretic/magic/aggressive_spread.dm b/code/modules/antagonists/heretic/magic/aggressive_spread.dm index fedc30193ed48..0c14550f0b269 100644 --- a/code/modules/antagonists/heretic/magic/aggressive_spread.dm +++ b/code/modules/antagonists/heretic/magic/aggressive_spread.dm @@ -10,14 +10,23 @@ school = SCHOOL_FORBIDDEN cooldown_time = 30 SECONDS - invocation = "A'GRSV SPR'D" - invocation_type = INVOCATION_WHISPER + invocation = "Agresiv'noe rasprostra-neniye!" + invocation_type = INVOCATION_SHOUT spell_requirements = NONE aoe_radius = 2 /datum/action/cooldown/spell/aoe/rust_conversion/get_things_to_cast_on(atom/center) - return RANGE_TURFS(aoe_radius, center) + + var/list/things_to_convert = RANGE_TURFS(aoe_radius, center) + + // Also converts things right next to you. + for(var/atom/movable/nearby_movable in view(1, center)) + if(nearby_movable == owner || !isstructure(nearby_movable) ) + continue + things_to_convert += nearby_movable + + return things_to_convert /datum/action/cooldown/spell/aoe/rust_conversion/cast_on_thing_in_aoe(turf/victim, mob/living/caster) // We have less chance of rusting stuff that's further @@ -27,9 +36,11 @@ if(prob(chance_of_not_rusting)) return - caster.do_rust_heretic_act(victim) + if(ismob(caster)) + caster.do_rust_heretic_act(victim) + else + victim.rust_heretic_act() -/datum/action/cooldown/spell/aoe/rust_conversion/small - name = "Rust Conversion" - desc = "Spreads rust onto nearby surfaces." - aoe_radius = 2 +/datum/action/cooldown/spell/aoe/rust_conversion/construct + name = "Construct Spread" + cooldown_time = 15 SECONDS diff --git a/code/modules/antagonists/heretic/magic/apetravulnera.dm b/code/modules/antagonists/heretic/magic/apetravulnera.dm index e80d08911848c..eedef71f4b6c8 100644 --- a/code/modules/antagonists/heretic/magic/apetravulnera.dm +++ b/code/modules/antagonists/heretic/magic/apetravulnera.dm @@ -10,8 +10,8 @@ school = SCHOOL_FORBIDDEN cooldown_time = 45 SECONDS - invocation = "AP'TRA VULN'RA!" - invocation_type = INVOCATION_WHISPER + invocation = "Shea' shen-eh!" + invocation_type = INVOCATION_SHOUT spell_requirements = NONE cast_range = 4 diff --git a/code/modules/antagonists/heretic/magic/ash_ascension.dm b/code/modules/antagonists/heretic/magic/ash_ascension.dm index 0d8ca8da4f1c6..70422a7c48a37 100644 --- a/code/modules/antagonists/heretic/magic/ash_ascension.dm +++ b/code/modules/antagonists/heretic/magic/ash_ascension.dm @@ -10,7 +10,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 70 SECONDS - invocation = "FL'MS" + invocation = "EID'R-ELDR!!!" invocation_type = INVOCATION_WHISPER spell_requirements = NONE @@ -72,8 +72,8 @@ school = SCHOOL_FORBIDDEN cooldown_time = 30 SECONDS - invocation = "C'SC'DE" - invocation_type = INVOCATION_WHISPER + invocation = "ILLA-LASARA'FOSS!!!" + invocation_type = INVOCATION_SHOUT spell_requirements = NONE /// The radius the flames will go around the caster. @@ -112,7 +112,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 300 - invocation = "F'RE" + invocation = "Eld'sky!" invocation_type = INVOCATION_WHISPER spell_requirements = NONE @@ -129,16 +129,17 @@ INVOKE_ASYNC(src, PROC_REF(fire_line), owner, line_target(offset, flame_line_length, target, owner)) /datum/action/cooldown/spell/pointed/ash_beams/proc/line_target(offset, range, atom/at, atom/user) + var/turf/user_loc = get_turf(user) if(!at) return - var/angle = ATAN2(at.x - user.x, at.y - user.y) + offset + var/angle = ATAN2(at.x - user_loc.x, at.y - user_loc.y) + offset var/turf/T = get_turf(user) for(var/i in 1 to range) - var/turf/check = locate(user.x + cos(angle) * i, user.y + sin(angle) * i, user.z) + var/turf/check = locate(user_loc.x + cos(angle) * i, user_loc.y + sin(angle) * i, user_loc.z) if(!check) break T = check - return (get_line(user, T) - get_turf(user)) + return (get_line(user_loc, T) - user_loc) /datum/action/cooldown/spell/pointed/ash_beams/proc/fire_line(atom/source, list/turfs) var/list/hit_list = list() diff --git a/code/modules/antagonists/heretic/magic/ash_jaunt.dm b/code/modules/antagonists/heretic/magic/ash_jaunt.dm index 41242063a9098..4f8c59d635145 100644 --- a/code/modules/antagonists/heretic/magic/ash_jaunt.dm +++ b/code/modules/antagonists/heretic/magic/ash_jaunt.dm @@ -10,7 +10,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 15 SECONDS - invocation = "ASH'N P'SSG'" + invocation = "Askgraar' goetur!" invocation_type = INVOCATION_WHISPER spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/blood_cleave.dm b/code/modules/antagonists/heretic/magic/blood_cleave.dm index d5317f23e344b..b3370a3ccc614 100644 --- a/code/modules/antagonists/heretic/magic/blood_cleave.dm +++ b/code/modules/antagonists/heretic/magic/blood_cleave.dm @@ -10,7 +10,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 45 SECONDS - invocation = "CL'VE!" + invocation = "Fer're!" invocation_type = INVOCATION_WHISPER spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/blood_siphon.dm b/code/modules/antagonists/heretic/magic/blood_siphon.dm index 1e3d6258826d4..6280353a072a5 100644 --- a/code/modules/antagonists/heretic/magic/blood_siphon.dm +++ b/code/modules/antagonists/heretic/magic/blood_siphon.dm @@ -11,7 +11,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 15 SECONDS - invocation = "FL'MS O'ET'RN'ITY." + invocation = "Sanguis suctio!" invocation_type = INVOCATION_WHISPER spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/burglar_finesse.dm b/code/modules/antagonists/heretic/magic/burglar_finesse.dm index 7bb6960354ec7..c5264119bb48e 100644 --- a/code/modules/antagonists/heretic/magic/burglar_finesse.dm +++ b/code/modules/antagonists/heretic/magic/burglar_finesse.dm @@ -9,7 +9,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 40 SECONDS - invocation = "Y'O'K!" + invocation = "Khenem" invocation_type = INVOCATION_WHISPER spell_requirements = NONE @@ -26,7 +26,7 @@ return FALSE var/obj/storage_item = locate(/obj/item/storage/backpack) in cast_on.contents - + if(isnull(storage_item)) return FALSE diff --git a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm index 3fb197d392cb0..6869dc0df51c0 100644 --- a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm +++ b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm @@ -11,7 +11,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 45 SECONDS - invocation = "C'SM'S 'XP'ND" + invocation = "An'gar baltil!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/cosmic_runes.dm b/code/modules/antagonists/heretic/magic/cosmic_runes.dm index 207b60ae9393a..e07aa4fbe8b8a 100644 --- a/code/modules/antagonists/heretic/magic/cosmic_runes.dm +++ b/code/modules/antagonists/heretic/magic/cosmic_runes.dm @@ -11,7 +11,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 15 SECONDS - invocation = "ST'R R'N'" + invocation = "Is'zara-runen" invocation_type = INVOCATION_WHISPER spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/eldritch_blind.dm b/code/modules/antagonists/heretic/magic/eldritch_blind.dm index 8df20503821b0..413ff4fe67810 100644 --- a/code/modules/antagonists/heretic/magic/eldritch_blind.dm +++ b/code/modules/antagonists/heretic/magic/eldritch_blind.dm @@ -5,7 +5,7 @@ overlay_icon_state = "bg_heretic_border" school = SCHOOL_FORBIDDEN - invocation = "E'E'S" + invocation = "Caecus" spell_requirements = NONE cast_range = 10 diff --git a/code/modules/antagonists/heretic/magic/eldritch_emplosion.dm b/code/modules/antagonists/heretic/magic/eldritch_emplosion.dm index c68ed07c81f8c..4028f80f84cea 100644 --- a/code/modules/antagonists/heretic/magic/eldritch_emplosion.dm +++ b/code/modules/antagonists/heretic/magic/eldritch_emplosion.dm @@ -8,7 +8,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 30 SECONDS - invocation = "E'P" + invocation = "Pulsus Energiae" invocation_type = INVOCATION_WHISPER spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/eldritch_shapeshift.dm b/code/modules/antagonists/heretic/magic/eldritch_shapeshift.dm index e598f1f9215b9..bde032a3b39fd 100644 --- a/code/modules/antagonists/heretic/magic/eldritch_shapeshift.dm +++ b/code/modules/antagonists/heretic/magic/eldritch_shapeshift.dm @@ -7,7 +7,7 @@ overlay_icon_state = "bg_heretic_border" school = SCHOOL_FORBIDDEN - invocation = "SH'PE" + invocation = "Forma" invocation_type = INVOCATION_WHISPER spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/fire_blast.dm b/code/modules/antagonists/heretic/magic/fire_blast.dm index f76a1f18d1757..8c6d632be9f2d 100644 --- a/code/modules/antagonists/heretic/magic/fire_blast.dm +++ b/code/modules/antagonists/heretic/magic/fire_blast.dm @@ -12,7 +12,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 45 SECONDS - invocation = "V'LC'N!" + invocation = "Eld'fjall!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE channel_time = 5 SECONDS @@ -23,8 +23,8 @@ var/beam_duration = 2 SECONDS /datum/action/cooldown/spell/charged/beam/fire_blast/cast(atom/cast_on) - if(isliving(cast_on)) - var/mob/living/caster = cast_on + var/mob/living/caster = get_caster_from_target(cast_on) + if(istype(caster)) // Caster becomes fireblasted, but in a good way - heals damage over time caster.apply_status_effect(/datum/status_effect/fire_blasted, beam_duration, -2) return ..() diff --git a/code/modules/antagonists/heretic/magic/flesh_ascension.dm b/code/modules/antagonists/heretic/magic/flesh_ascension.dm index a2d792080e058..add0704a8d61a 100644 --- a/code/modules/antagonists/heretic/magic/flesh_ascension.dm +++ b/code/modules/antagonists/heretic/magic/flesh_ascension.dm @@ -9,7 +9,7 @@ school = SCHOOL_FORBIDDEN - invocation = "REALITY UNCOIL!" + invocation = "REALITAS EXSERPAT!!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/flesh_surgery.dm b/code/modules/antagonists/heretic/magic/flesh_surgery.dm index 2ca256419efca..96ccb8450f97b 100644 --- a/code/modules/antagonists/heretic/magic/flesh_surgery.dm +++ b/code/modules/antagonists/heretic/magic/flesh_surgery.dm @@ -11,8 +11,8 @@ school = SCHOOL_FORBIDDEN cooldown_time = 20 SECONDS - invocation = "CL'M M'N!" // "CLAIM MINE", but also almost "KALI MA" - invocation_type = INVOCATION_SHOUT + invocation = "Carnis chirurgia" + invocation_type = INVOCATION_WHISPER spell_requirements = NONE hand_path = /obj/item/melee/touch_attack/flesh_surgery diff --git a/code/modules/antagonists/heretic/magic/furious_steel.dm b/code/modules/antagonists/heretic/magic/furious_steel.dm index 15648a9b4d34d..36c7c07608bcb 100644 --- a/code/modules/antagonists/heretic/magic/furious_steel.dm +++ b/code/modules/antagonists/heretic/magic/furious_steel.dm @@ -11,7 +11,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 60 SECONDS - invocation = "F'LSH'NG S'LV'R!" + invocation = "Ham'sana-qasep!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE @@ -67,7 +67,7 @@ QDEL_NULL(blade_effect) var/mob/living/living_user = on_who - blade_effect = living_user.apply_status_effect(/datum/status_effect/protective_blades, null, projectile_amount, 25, 0.66 SECONDS) + blade_effect = living_user.apply_status_effect(/datum/status_effect/protective_blades, null, projectile_amount, 25, 0.66 SECONDS, projectile_type) RegisterSignal(blade_effect, COMSIG_QDELETING, PROC_REF(on_status_effect_deleted)) /datum/action/cooldown/spell/pointed/projectile/furious_steel/on_deactivation(mob/on_who, refund_cooldown = TRUE) @@ -106,10 +106,12 @@ sharpness = SHARP_EDGED wound_bonus = 15 pass_flags = PASSTABLE | PASSFLAPS + /// Color applied as an outline filter on init + var/outline_color = "#f8f8ff" /obj/projectile/floating_blade/Initialize(mapload) . = ..() - add_filter("dio_knife", 2, list("type" = "outline", "color" = "#f8f8ff", "size" = 1)) + add_filter("dio_knife", 2, list("type" = "outline", "color" = outline_color, "size" = 1)) /obj/projectile/floating_blade/prehit_pierce(atom/hit) if(isliving(hit) && isliving(firer)) @@ -128,3 +130,40 @@ return PROJECTILE_DELETE_WITHOUT_HITTING return ..() + +/obj/projectile/floating_blade/haunted + name = "ritual blade" + icon = 'icons/obj/weapons/khopesh.dmi' + icon_state = "render" + damage = 35 + wound_bonus = 25 + outline_color = "#D7CBCA" + +/datum/action/cooldown/spell/pointed/projectile/furious_steel/solo + name = "Lesser Furious Steel" + cooldown_time = 20 SECONDS + projectile_amount = 1 + active_msg = "You summon forth a blade of furious silver." + deactive_msg = "You conceal the blade of furious silver." + +/datum/action/cooldown/spell/pointed/projectile/furious_steel/haunted + name = "Cursed Steel" + desc = "Summon two cursed blades which orbit you. \ + While orbiting you, these blades will protect you from from attacks, but will be consumed on use. \ + Additionally, you can click to fire the blades at a target, dealing damage and causing bleeding." + background_icon_state = "bg_heretic" // kept intentionally + overlay_icon_state = "bg_cult_border" + button_icon = 'icons/mob/actions/actions_ecult.dmi' + button_icon_state = "cursed_steel" + sound = 'sound/weapons/guillotine.ogg' + + cooldown_time = 40 SECONDS + invocation = "IA!" + invocation_type = INVOCATION_SHOUT + + spell_requirements = NONE + + active_msg = "You summon forth two cursed blades." + deactive_msg = "You conceal the cursed blades." + projectile_amount = 2 + projectile_type = /obj/projectile/floating_blade/haunted diff --git a/code/modules/antagonists/heretic/magic/manse_link.dm b/code/modules/antagonists/heretic/magic/manse_link.dm index 06fd4dd9863f4..e077c6db2b45f 100644 --- a/code/modules/antagonists/heretic/magic/manse_link.dm +++ b/code/modules/antagonists/heretic/magic/manse_link.dm @@ -11,7 +11,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 20 SECONDS - invocation = "PI'RC' TH' M'ND." + invocation = "Diaperaste' to-myalo!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND diff --git a/code/modules/antagonists/heretic/magic/mansus_grasp.dm b/code/modules/antagonists/heretic/magic/mansus_grasp.dm index 4ba6aceb20093..803bdd3d218e5 100644 --- a/code/modules/antagonists/heretic/magic/mansus_grasp.dm +++ b/code/modules/antagonists/heretic/magic/mansus_grasp.dm @@ -10,7 +10,7 @@ school = SCHOOL_EVOCATION cooldown_time = 10 SECONDS - invocation = "R'CH T'H TR'TH!" + invocation = "Ad verum per aspera!" invocation_type = INVOCATION_SHOUT // Mimes can cast it. Chaplains can cast it. Anyone can cast it, so long as they have a hand. spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION @@ -38,11 +38,35 @@ var/mob/living/living_hit = victim living_hit.apply_damage(10, BRUTE, wound_bonus = CANT_WOUND) - if(iscarbon(victim)) - var/mob/living/carbon/carbon_hit = victim - carbon_hit.adjust_timed_status_effect(4 SECONDS, /datum/status_effect/speech/slurring/heretic) - carbon_hit.AdjustKnockdown(5 SECONDS) - carbon_hit.adjustStaminaLoss(80) + if(!iscarbon(victim)) + return TRUE + + var/mob/living/carbon/carbon_hit = victim + + // Cultists are momentarily disoriented by the stunning aura. Enough for both parties to go 'oh shit' but only a mild combat ability. + // Cultists have an identical effect on their stun hand. The heretic's faster spell charge time is made up for by their lack of teammates. + if(IS_CULTIST(carbon_hit)) + carbon_hit.AdjustKnockdown(0.5 SECONDS) + carbon_hit.adjust_confusion_up_to(1.5 SECONDS, 3 SECONDS) + carbon_hit.adjust_dizzy_up_to(1.5 SECONDS, 3 SECONDS) + ADD_TRAIT(carbon_hit, TRAIT_NO_SIDE_KICK, REF(src)) // We don't want this to be a good stunning tool, just minor disorientation + addtimer(TRAIT_CALLBACK_REMOVE(carbon_hit, TRAIT_NO_SIDE_KICK, REF(src)), 1 SECONDS) + + var/old_color = carbon_hit.color + carbon_hit.color = COLOR_CULT_RED + animate(carbon_hit, color = old_color, time = 4 SECONDS, easing = EASE_IN) + carbon_hit.mob_light(range = 1.5, power = 2.5, color = COLOR_CULT_RED, duration = 0.5 SECONDS) + playsound(carbon_hit, 'sound/magic/curse.ogg', 50, TRUE) + + to_chat(caster, span_warning("An unholy force intervenes as you grasp [carbon_hit], absorbing most of the effects!")) + to_chat(carbon_hit, span_warning("As [caster] grasps you with eldritch forces, your blood magic absorbs most of the effects!")) + carbon_hit.balloon_alert_to_viewers("absorbed!") + return TRUE + + carbon_hit.adjust_timed_status_effect(4 SECONDS, /datum/status_effect/speech/slurring/heretic) + carbon_hit.AdjustKnockdown(5 SECONDS) + carbon_hit.adjustStaminaLoss(80) + carbon_hit.apply_status_effect(/datum/status_effect/next_shove_stuns) return TRUE diff --git a/code/modules/antagonists/heretic/magic/mind_gate.dm b/code/modules/antagonists/heretic/magic/mind_gate.dm index c5a6e74452a61..aa6b8ef20af4d 100644 --- a/code/modules/antagonists/heretic/magic/mind_gate.dm +++ b/code/modules/antagonists/heretic/magic/mind_gate.dm @@ -11,7 +11,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 20 SECONDS - invocation = "Op' 'oY 'Mi'd" + invocation = "Sha'ar ha-da'at" invocation_type = INVOCATION_WHISPER spell_requirements = NONE cast_range = 6 diff --git a/code/modules/antagonists/heretic/magic/moon_parade.dm b/code/modules/antagonists/heretic/magic/moon_parade.dm index 3b7f1d007cd6e..4919500e351de 100644 --- a/code/modules/antagonists/heretic/magic/moon_parade.dm +++ b/code/modules/antagonists/heretic/magic/moon_parade.dm @@ -11,7 +11,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 30 SECONDS - invocation = "L'N'R P'RAD" + invocation = "Tsiyun' levani!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/moon_ringleader.dm b/code/modules/antagonists/heretic/magic/moon_ringleader.dm index 3c0b1d2aedb52..e62c34bb990bb 100644 --- a/code/modules/antagonists/heretic/magic/moon_ringleader.dm +++ b/code/modules/antagonists/heretic/magic/moon_ringleader.dm @@ -12,7 +12,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 1 MINUTES - invocation = "R''S 'E" + invocation = "Manahel-qomem!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/moon_smile.dm b/code/modules/antagonists/heretic/magic/moon_smile.dm index 35f2d77e3e6b6..236fd257e385d 100644 --- a/code/modules/antagonists/heretic/magic/moon_smile.dm +++ b/code/modules/antagonists/heretic/magic/moon_smile.dm @@ -12,7 +12,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 20 SECONDS - invocation = "Mo'N S'M'LE" + invocation = "Hiyuk-levana!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE cast_range = 6 diff --git a/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm b/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm index 4e37f5db17fed..8a9b60644b6b7 100644 --- a/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm +++ b/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm @@ -11,7 +11,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 1 MINUTES - invocation = "GL'RY T' TH' N'GHT'W'TCH'ER" + invocation = "Dyrth-a Vaktry'ggjandi" invocation_type = INVOCATION_WHISPER spell_requirements = SPELL_REQUIRES_HUMAN diff --git a/code/modules/antagonists/heretic/magic/realignment.dm b/code/modules/antagonists/heretic/magic/realignment.dm index d3ddc03fbbef3..dbce0fe0940dd 100644 --- a/code/modules/antagonists/heretic/magic/realignment.dm +++ b/code/modules/antagonists/heretic/magic/realignment.dm @@ -14,8 +14,8 @@ cooldown_reduction_per_rank = -6 SECONDS // we're not a wizard spell but we use the levelling mechanic spell_max_level = 10 // we can get up to / over a minute duration cd time - invocation = "R'S'T." - invocation_type = INVOCATION_SHOUT + invocation = "Rasut" + invocation_type = INVOCATION_WHISPER spell_requirements = NONE /datum/action/cooldown/spell/realignment/is_valid_target(atom/cast_on) diff --git a/code/modules/antagonists/heretic/magic/rust_construction.dm b/code/modules/antagonists/heretic/magic/rust_construction.dm index 130e3e06be23b..f8d6a2ff2be44 100644 --- a/code/modules/antagonists/heretic/magic/rust_construction.dm +++ b/code/modules/antagonists/heretic/magic/rust_construction.dm @@ -8,7 +8,7 @@ check_flags = AB_CHECK_INCAPACITATED|AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED school = SCHOOL_FORBIDDEN - cooldown_time = 5 SECONDS + cooldown_time = 8 SECONDS invocation = "Someone raises a wall of rust." invocation_self_message = "You raise a wall of rust." @@ -16,15 +16,19 @@ spell_requirements = NONE cast_range = 4 - aim_assist = FALSE /// How long does the filter last on walls we make? var/filter_duration = 2 MINUTES +/** + * Overrides 'aim assist' because we always want to hit just the turf we clicked on. + */ +/datum/action/cooldown/spell/pointed/rust_construction/aim_assist(mob/living/caller, atom/target) + return get_turf(target) + /datum/action/cooldown/spell/pointed/rust_construction/is_valid_target(atom/cast_on) - if(!isfloorturf(cast_on)) - if(isturf(cast_on) && owner) - cast_on.balloon_alert(owner, "not a floor!") + if(!isturf(cast_on)) + cast_on.balloon_alert(owner, "not a wall or floor!") return FALSE if(!HAS_TRAIT(cast_on, TRAIT_RUSTY)) @@ -43,9 +47,22 @@ invocation = span_danger("[owner] drags [owner.p_their()] hand[living_owner.usable_hands == 1 ? "":"s"] upwards as a wall of rust rises out of [cast_on]!") invocation_self_message = span_notice("You drag [living_owner.usable_hands == 1 ? "a hand":"your hands"] upwards as a wall of rust rises out of [cast_on].") -/datum/action/cooldown/spell/pointed/rust_construction/cast(turf/open/cast_on) +/datum/action/cooldown/spell/pointed/rust_construction/cast(turf/cast_on) . = ..() var/rises_message = "rises out of [cast_on]" + + // If we casted at a wall we'll try to rust it. In the case of an enchanted wall it'll deconstruct it + if(isclosedturf(cast_on)) + cast_on.visible_message(span_warning("\The [cast_on] quakes as the rust causes it to crumble!")) + var/mob/living/living_owner = owner + living_owner?.do_rust_heretic_act(cast_on) + // ref transfers to floor + cast_on.Shake(shake_interval = 0.1 SECONDS, duration = 0.5 SECONDS) + // which we need to re-rust + living_owner?.do_rust_heretic_act(cast_on) + playsound(cast_on, 'sound/effects/bang.ogg', 50, vary = TRUE) + return + var/turf/closed/wall/new_wall = cast_on.place_on_top(/turf/closed/wall) if(!istype(new_wall)) return @@ -53,7 +70,8 @@ playsound(new_wall, 'sound/effects/constructform.ogg', 50, TRUE) new_wall.rust_heretic_act() new_wall.name = "\improper enchanted [new_wall.name]" - new_wall.hardness = 10 + new_wall.AddComponent(/datum/component/torn_wall) + new_wall.hardness = 60 new_wall.sheet_amount = 0 new_wall.girder_type = null @@ -61,8 +79,8 @@ // but I guess a fading filter will have to do for now as walls have 0 depth (currently) // damn though with 3/4ths walls this'll look sick just imagine it new_wall.add_filter("rust_wall", 2, list("type" = "outline", "color" = "#85be299c", "size" = 2)) - addtimer(CALLBACK(src, PROC_REF(fade_wall_filter), new_wall), filter_duration * (1/20)) - addtimer(CALLBACK(src,PROC_REF(remove_wall_filter), new_wall), filter_duration) + addtimer(CALLBACK(src, PROC_REF(fade_wall_filter), new_wall), filter_duration * 0.5) + addtimer(CALLBACK(src, PROC_REF(remove_wall_filter), new_wall), filter_duration) var/message_shown = FALSE for(var/mob/living/living_mob in cast_on) @@ -108,7 +126,7 @@ if(!rust_filter) return - animate(rust_filter, alpha = 0, time = filter_duration * (19/20)) + animate(rust_filter, alpha = 0, time = filter_duration * (9/20)) /datum/action/cooldown/spell/pointed/rust_construction/proc/remove_wall_filter(turf/closed/wall) if(QDELETED(wall)) diff --git a/code/modules/antagonists/heretic/magic/rust_wave.dm b/code/modules/antagonists/heretic/magic/rust_wave.dm index 65c5592b34e8b..7ecb3fd0ffbba 100644 --- a/code/modules/antagonists/heretic/magic/rust_wave.dm +++ b/code/modules/antagonists/heretic/magic/rust_wave.dm @@ -13,8 +13,8 @@ school = SCHOOL_FORBIDDEN cooldown_time = 30 SECONDS - invocation = "'NTR'P'C PL'M'" - invocation_type = INVOCATION_WHISPER + invocation = "Entro'pichniy-plim!" + invocation_type = INVOCATION_SHOUT spell_requirements = NONE cone_levels = 5 @@ -25,7 +25,10 @@ new /obj/effect/temp_visual/dir_setting/entropic(get_step(cast_on, cast_on.dir), cast_on.dir) /datum/action/cooldown/spell/cone/staggered/entropic_plume/do_turf_cone_effect(turf/target_turf, mob/living/caster, level) - caster.do_rust_heretic_act(target_turf) + if(ismob(caster)) + caster.do_rust_heretic_act(target_turf) + else + target_turf.rust_heretic_act() /datum/action/cooldown/spell/cone/staggered/entropic_plume/do_mob_cone_effect(mob/living/victim, atom/caster, level) if(victim.can_block_magic(antimagic_flags) || IS_HERETIC_OR_MONSTER(victim) || victim == caster) @@ -75,8 +78,8 @@ school = SCHOOL_FORBIDDEN cooldown_time = 35 SECONDS - invocation = "SPR'D TH' WO'D" - invocation_type = INVOCATION_WHISPER + invocation = "Diffunde' verbum!" + invocation_type = INVOCATION_SHOUT spell_requirements = NONE projectile_type = /obj/projectile/magic/aoe/rust_wave diff --git a/code/modules/antagonists/heretic/magic/star_blast.dm b/code/modules/antagonists/heretic/magic/star_blast.dm index 3eb62b7ada814..294608a03b998 100644 --- a/code/modules/antagonists/heretic/magic/star_blast.dm +++ b/code/modules/antagonists/heretic/magic/star_blast.dm @@ -10,7 +10,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 20 SECONDS - invocation = "R'T'T' ST'R!" + invocation = "Pi-rig is'zara!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/star_touch.dm b/code/modules/antagonists/heretic/magic/star_touch.dm index 89c5d02e7d498..dff56df4e3f1f 100644 --- a/code/modules/antagonists/heretic/magic/star_touch.dm +++ b/code/modules/antagonists/heretic/magic/star_touch.dm @@ -13,7 +13,7 @@ sound = 'sound/items/welder.ogg' school = SCHOOL_FORBIDDEN cooldown_time = 15 SECONDS - invocation = "ST'R 'N'RG'!" + invocation = "An'gar sig!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE antimagic_flags = MAGIC_RESISTANCE diff --git a/code/modules/antagonists/heretic/magic/void_cold_cone.dm b/code/modules/antagonists/heretic/magic/void_cold_cone.dm index 92c45dc10b010..40dc9612a50f6 100644 --- a/code/modules/antagonists/heretic/magic/void_cold_cone.dm +++ b/code/modules/antagonists/heretic/magic/void_cold_cone.dm @@ -11,7 +11,7 @@ school = SCHOOL_FORBIDDEN cooldown_time = 30 SECONDS - invocation = "FR'ZE!" + invocation = "Sunya'kop!" invocation_type = INVOCATION_SHOUT spell_requirements = NONE diff --git a/code/modules/antagonists/heretic/magic/void_phase.dm b/code/modules/antagonists/heretic/magic/void_phase.dm index 350ca0f29c100..f3f0864224c4c 100644 --- a/code/modules/antagonists/heretic/magic/void_phase.dm +++ b/code/modules/antagonists/heretic/magic/void_phase.dm @@ -12,8 +12,8 @@ school = SCHOOL_FORBIDDEN cooldown_time = 30 SECONDS - invocation = "RE'L'TY PH'S'E." - invocation_type = INVOCATION_WHISPER + invocation = "Sunya'sthiti!" + invocation_type = INVOCATION_SHOUT spell_requirements = NONE cast_range = 9 diff --git a/code/modules/antagonists/heretic/magic/void_pull.dm b/code/modules/antagonists/heretic/magic/void_pull.dm index 2021bf8a04e4f..dc4673b0714ce 100644 --- a/code/modules/antagonists/heretic/magic/void_pull.dm +++ b/code/modules/antagonists/heretic/magic/void_pull.dm @@ -11,8 +11,8 @@ school = SCHOOL_FORBIDDEN cooldown_time = 40 SECONDS - invocation = "BR'NG F'RTH TH'M T' M'." - invocation_type = INVOCATION_WHISPER + invocation = "Sunya'apamkti!" + invocation_type = INVOCATION_SHOUT spell_requirements = NONE aoe_radius = 7 diff --git a/code/modules/antagonists/heretic/magic/wave_of_desperation.dm b/code/modules/antagonists/heretic/magic/wave_of_desperation.dm index 3b78b56ddc0ba..b9502f08967bb 100644 --- a/code/modules/antagonists/heretic/magic/wave_of_desperation.dm +++ b/code/modules/antagonists/heretic/magic/wave_of_desperation.dm @@ -11,8 +11,8 @@ school = SCHOOL_FORBIDDEN cooldown_time = 5 MINUTES - invocation = "F'K 'FF." - invocation_type = INVOCATION_WHISPER + invocation = "Kher' Sekh-em waaef'k!" + invocation_type = INVOCATION_SHOUT spell_requirements = NONE aoe_radius = 3 diff --git a/code/modules/antagonists/heretic/soultrapped_heretic.dm b/code/modules/antagonists/heretic/soultrapped_heretic.dm new file mode 100644 index 0000000000000..ffd92e09496cb --- /dev/null +++ b/code/modules/antagonists/heretic/soultrapped_heretic.dm @@ -0,0 +1,24 @@ +///a heretic that got soultrapped by cultists. does nothing, other than signify they suck +/datum/antagonist/soultrapped_heretic + name = "\improper Soultrapped Heretic" + roundend_category = "Heretics" + antagpanel_category = "Heretic" + job_rank = ROLE_HERETIC + antag_moodlet = /datum/mood_event/soultrapped_heretic + antag_hud_name = "heretic" + +// Will never show up because they're shades inside a sword +/datum/mood_event/soultrapped_heretic + description = "They trapped me! I can't escape!" + mood_change = -20 + +// always failure obj +/datum/objective/heretic_trapped + name = "soultrapped failure" + explanation_text = "Help the cult. Kill the cult. Help the crew. Kill the crew. Help your wielder. Kill your wielder. Kill everyone. Rattle your chains." + +/datum/antagonist/soultrapped_heretic/on_gain() + ..() + var/datum/objective/epic_fail = new /datum/objective/heretic_trapped() + epic_fail.completed = FALSE + objectives += epic_fail diff --git a/code/modules/antagonists/heretic/status_effects/buffs.dm b/code/modules/antagonists/heretic/status_effects/buffs.dm index d2058a5b4f19e..35a6ab9268784 100644 --- a/code/modules/antagonists/heretic/status_effects/buffs.dm +++ b/code/modules/antagonists/heretic/status_effects/buffs.dm @@ -118,6 +118,8 @@ var/time_between_initial_blades = 0.25 SECONDS /// If TRUE, we self-delete our status effect after all the blades are deleted. var/delete_on_blades_gone = TRUE + /// What blade type to create + var/blade_type = /obj/effect/floating_blade /// A list of blade effects orbiting / protecting our owner var/list/obj/effect/floating_blade/blades = list() @@ -127,12 +129,14 @@ max_num_blades = 4, blade_orbit_radius = 20, time_between_initial_blades = 0.25 SECONDS, + blade_type = /obj/effect/floating_blade, ) src.duration = new_duration src.max_num_blades = max_num_blades src.blade_orbit_radius = blade_orbit_radius src.time_between_initial_blades = time_between_initial_blades + src.blade_type = blade_type return ..() /datum/status_effect/protective_blades/on_apply() @@ -157,7 +161,7 @@ if(QDELETED(src) || QDELETED(owner)) return - var/obj/effect/floating_blade/blade = new(get_turf(owner)) + var/obj/effect/floating_blade/blade = new blade_type(get_turf(owner)) blades += blade blade.orbit(owner, blade_orbit_radius) RegisterSignal(blade, COMSIG_QDELETING, PROC_REF(remove_blade)) diff --git a/code/modules/antagonists/heretic/structures/carving_knife.dm b/code/modules/antagonists/heretic/structures/carving_knife.dm index 9bdad0ea5fce5..70133e951af91 100644 --- a/code/modules/antagonists/heretic/structures/carving_knife.dm +++ b/code/modules/antagonists/heretic/structures/carving_knife.dm @@ -15,15 +15,7 @@ attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "rends") attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend") actions_types = list(/datum/action/item_action/rune_shatter) - embedding = list( - ignore_throwspeed_threshold = TRUE, - embed_chance = 75, - jostle_chance = 2, - jostle_pain_mult = 5, - pain_stam_pct = 0.4, - pain_mult = 3, - rip_time = 15, - ) + embed_type = /datum/embed_data/rune_carver /// Whether we're currently drawing a rune var/drawing = FALSE @@ -34,6 +26,15 @@ /// Turfs that you cannot draw carvings on var/static/list/blacklisted_turfs = typecacheof(list(/turf/open/space, /turf/open/openspace, /turf/open/lava)) +/datum/embed_data/rune_carver + ignore_throwspeed_threshold = TRUE + embed_chance = 75 + jostle_chance = 2 + jostle_pain_mult = 5 + pain_stam_pct = 0.4 + pain_mult = 3 + rip_time = 15 + /obj/item/melee/rune_carver/examine(mob/user) . = ..() if(!IS_HERETIC_OR_MONSTER(user) && !isobserver(user)) diff --git a/code/modules/antagonists/heretic/structures/mawed_crucible.dm b/code/modules/antagonists/heretic/structures/mawed_crucible.dm index 8e5410f0f6751..2135ffa134ca5 100644 --- a/code/modules/antagonists/heretic/structures/mawed_crucible.dm +++ b/code/modules/antagonists/heretic/structures/mawed_crucible.dm @@ -57,6 +57,10 @@ return span_notice("It's at [round(atom_integrity * 100 / max_integrity)]% stability.") return ..() +// no breaky herety thingy +/obj/structure/destructible/eldritch_crucible/rust_heretic_act() + return + /obj/structure/destructible/eldritch_crucible/attacked_by(obj/item/weapon, mob/living/user) if(!iscarbon(user)) return ..() diff --git a/code/modules/antagonists/heretic/transmutation_rune.dm b/code/modules/antagonists/heretic/transmutation_rune.dm index 619e7d252957b..5e6ad0fb1cf7f 100644 --- a/code/modules/antagonists/heretic/transmutation_rune.dm +++ b/code/modules/antagonists/heretic/transmutation_rune.dm @@ -1,8 +1,9 @@ /// The heretic's rune, which they use to complete transmutation rituals. /obj/effect/heretic_rune name = "transmutation rune" - desc = "A flowing circle of shapes and runes is etched into the floor, filled with a thick black tar-like fluid." - icon_state = "" + desc = "A flowing circle of shapes and runes is etched into the floor, filled with a thick black tar-like fluid. This one looks pretty small." + icon = 'icons/obj/antags/cult/rune.dmi' + icon_state = "main1" anchored = TRUE interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/modules/antagonists/ninja/outfit.dm b/code/modules/antagonists/ninja/outfit.dm index f91f660a3e8b9..924943dce777b 100644 --- a/code/modules/antagonists/ninja/outfit.dm +++ b/code/modules/antagonists/ninja/outfit.dm @@ -1,7 +1,7 @@ /datum/outfit/ninja name = "Space Ninja" uniform = /obj/item/clothing/under/syndicate/ninja - glasses = /obj/item/clothing/glasses/night + glasses = /obj/item/clothing/glasses/night/colorless mask = /obj/item/clothing/mask/gas/ninja ears = /obj/item/radio/headset shoes = /obj/item/clothing/shoes/jackboots diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index 1b02dfc02a112..f296eebfe740a 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -1,11 +1,11 @@ #define CHALLENGE_TELECRYSTALS 280 #define CHALLENGE_TIME_LIMIT (5 MINUTES) #define CHALLENGE_SHUTTLE_DELAY (25 MINUTES) // 25 minutes, so the ops have at least 5 minutes before the shuttle is callable. -// MASSMETA EDIT START +// MASSMETA EDIT ADDITION START #define WAR_TC_MIN 125 #define WAR_TC_MAX 280 #define WAR_MAX_PAYOUT 50 -// MASSMETA EDIT END +// MASSMETA EDIT ADDITION END GLOBAL_LIST_EMPTY(jam_on_wardec) @@ -27,11 +27,12 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) return declaring_war = TRUE -// MASSMETA EDIT START +//MASSMETA EDIT CHANGE START var/are_you_sure = tgui_alert(user, "Consult your team carefully before you declare war on [station_name()]]. Are you sure you want to alert the enemy crew? You will get \ [round(WAR_TC_MIN + (WAR_TC_MAX - WAR_TC_MIN) * (1 - (WAR_MAX_PAYOUT - min(WAR_MAX_PAYOUT, GLOB.joined_player_list.len)) / (WAR_MAX_PAYOUT - CHALLENGE_MIN_PLAYERS)), 1)] \ extra telecystals. You have [DisplayTimeText(CHALLENGE_TIME_LIMIT - world.time - SSticker.round_start_time)] to decide", "Declare war?", list("Yes", "No")) -// MASSMETA EDIT END +//ORIGINAL: var/are_you_sure = tgui_alert(user, "Consult your team carefully before you declare war on [station_name()]. Are you sure you want to alert the enemy crew? You have [DisplayTimeText(CHALLENGE_TIME_LIMIT - world.time - SSticker.round_start_time)] to decide.", "Declare war?", list("Yes", "No")) +//MASSMETA EDIT CHANGE END declaring_war = FALSE if(!check_allowed(user)) @@ -123,7 +124,7 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) continue uplinks += uplink - var/tc_to_distribute = round(WAR_TC_MIN + (WAR_TC_MAX - WAR_TC_MIN) * (1 - (WAR_MAX_PAYOUT - min(WAR_MAX_PAYOUT, GLOB.joined_player_list.len)) / (WAR_MAX_PAYOUT - CHALLENGE_MIN_PLAYERS)), 1) // MASSMETA EDIT + var/tc_to_distribute = round(WAR_TC_MIN + (WAR_TC_MAX - WAR_TC_MIN) * (1 - (WAR_MAX_PAYOUT - min(WAR_MAX_PAYOUT, GLOB.joined_player_list.len)) / (WAR_MAX_PAYOUT - CHALLENGE_MIN_PLAYERS)), 1) //MASSMETA EDIT CHANGE - ORIGINAL: var/tc_to_distribute = CHALLENGE_TELECRYSTALS var/tc_per_nukie = round(tc_to_distribute / (length(orphans)+length(uplinks))) for (var/datum/component/uplink/uplink in uplinks) @@ -206,8 +207,8 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) #undef CHALLENGE_TELECRYSTALS #undef CHALLENGE_TIME_LIMIT #undef CHALLENGE_SHUTTLE_DELAY -// MASSMETA EDIT START +//MASSMETA EDIT ADDITION START #undef WAR_TC_MIN #undef WAR_TC_MAX #undef WAR_MAX_PAYOUT -// MASSMETA EDIT END +//MASSMETA EDIT ADDITION END diff --git a/code/modules/antagonists/nukeop/outfits.dm b/code/modules/antagonists/nukeop/outfits.dm index e8ae07ffdde83..fa214aa70468c 100644 --- a/code/modules/antagonists/nukeop/outfits.dm +++ b/code/modules/antagonists/nukeop/outfits.dm @@ -67,7 +67,7 @@ /datum/outfit/syndicate/full name = "Syndicate Operative - Full Kit" - glasses = /obj/item/clothing/glasses/night + glasses = /obj/item/clothing/glasses/night/colorless mask = /obj/item/clothing/mask/gas/syndicate back = /obj/item/mod/control/pre_equipped/nuclear r_pocket = /obj/item/tank/internals/emergency_oxygen/engi @@ -136,7 +136,7 @@ suit = /obj/item/clothing/suit/jacket/oversized gloves = /obj/item/clothing/gloves/fingerless glasses = /obj/item/clothing/glasses/sunglasses - mask = /obj/item/clothing/mask/cigarette/cigar + mask = /obj/item/cigarette/cigar faction = "Cybersun Industries" /datum/outfit/syndicate/reinforcement/donk diff --git a/code/modules/antagonists/pirate/pirate_outfits.dm b/code/modules/antagonists/pirate/pirate_outfits.dm index 15a3d4fe2dcb2..72318fe4987ca 100644 --- a/code/modules/antagonists/pirate/pirate_outfits.dm +++ b/code/modules/antagonists/pirate/pirate_outfits.dm @@ -62,17 +62,19 @@ id_trim = /datum/id_trim/pirate/silverscale uniform = /obj/item/clothing/under/syndicate/sniper suit = /obj/item/clothing/suit/armor/vest/alt + back = /obj/item/storage/backpack/satchel glasses = /obj/item/clothing/glasses/monocle gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/collectable/tophat shoes = /obj/item/clothing/shoes/laceup + implants = list(/obj/item/implant/explosive) /datum/outfit/pirate/silverscale/captain name = "Silver Scale Captain" id_trim = /datum/id_trim/pirate/captain/silverscale head = /obj/item/clothing/head/costume/crown - mask = /obj/item/clothing/mask/cigarette/cigar/havana + mask = /obj/item/cigarette/cigar/havana l_pocket = /obj/item/lighter /datum/outfit/pirate/interdyne diff --git a/code/modules/antagonists/traitor/contractor/contract_teammate.dm b/code/modules/antagonists/traitor/contractor/contract_teammate.dm index 54fc958c1f89f..965d99e89ac6a 100644 --- a/code/modules/antagonists/traitor/contractor/contract_teammate.dm +++ b/code/modules/antagonists/traitor/contractor/contract_teammate.dm @@ -24,7 +24,7 @@ suit = /obj/item/clothing/suit/chameleon back = /obj/item/storage/backpack belt = /obj/item/modular_computer/pda/chameleon - mask = /obj/item/clothing/mask/cigarette/syndicate + mask = /obj/item/cigarette/syndicate shoes = /obj/item/clothing/shoes/chameleon/noslip ears = /obj/item/radio/headset/chameleon id = /obj/item/card/id/advanced/chameleon @@ -41,5 +41,5 @@ /datum/outfit/contractor_partner/post_equip(mob/living/carbon/human/H, visualsOnly) . = ..() - var/obj/item/clothing/mask/cigarette/syndicate/cig = H.get_item_by_slot(ITEM_SLOT_MASK) + var/obj/item/cigarette/syndicate/cig = H.get_item_by_slot(ITEM_SLOT_MASK) cig.light() diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 733e22461c795..ea171a2eda323 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -86,7 +86,7 @@ uplink_handler.has_progression = TRUE SStraitor.register_uplink_handler(uplink_handler) - if(give_secondary_objectives) + if(give_secondary_objectives && GLOB.joined_player_list.len >= 25) // MASSMETA EDIT CHANGE: original - if(give_seocndary_objectives) uplink_handler.has_objectives = TRUE uplink_handler.generate_objectives() @@ -248,7 +248,7 @@ objectives += ending_objective /datum/antagonist/traitor/proc/forge_single_generic_objective() - if(prob(KILL_PROB)) + if(prob(KILL_PROB) && GLOB.joined_player_list.len >= 25) // MASSMETA EDIT CHANGE: original - if(prob(KILL_PROB)) var/list/active_ais = active_ais(skip_syndicate = TRUE) if(active_ais.len && prob(DESTROY_AI_PROB(GLOB.joined_player_list.len))) var/datum/objective/destroy/destroy_objective = new() diff --git a/code/modules/antagonists/wishgranter/wishgranter.dm b/code/modules/antagonists/wishgranter/wishgranter.dm index bfac673535afc..fd18ffe5c1ed0 100644 --- a/code/modules/antagonists/wishgranter/wishgranter.dm +++ b/code/modules/antagonists/wishgranter/wishgranter.dm @@ -27,5 +27,5 @@ return H.dna.add_mutation(/datum/mutation/human/hulk) H.dna.add_mutation(/datum/mutation/human/xray) - H.dna.add_mutation(/datum/mutation/human/pressure_adaptation) + H.dna.add_mutation(/datum/mutation/human/adaptation/pressure) H.dna.add_mutation(/datum/mutation/human/telekinesis) diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index 3094af509dadb..925f368fe3b54 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -260,16 +260,17 @@ icon = 'icons/mob/shells.dmi' icon_state = "construct_cult" desc = "A wicked machine used by those skilled in magical arts. It is inactive." - -/obj/structure/constructshell/examine(mob/user) - . = ..() - if(IS_CULTIST(user) || HAS_MIND_TRAIT(user, TRAIT_MAGICALLY_GIFTED) || user.stat == DEAD) - . += {"A construct shell, used to house bound souls from a soulstone.\n + var/extra_desc = {"A construct shell, used to house bound souls from a soulstone.\n Placing a soulstone with a soul into this shell allows you to produce your choice of the following:\n An Artificer, which can produce more shells and soulstones, as well as fortifications.\n A Wraith, which does high damage and can jaunt through walls, though it is quite fragile.\n A Juggernaut, which is very hard to kill and can produce temporary walls, but is slow."} +/obj/structure/constructshell/examine(mob/user) + . = ..() + if(IS_CULTIST(user) || HAS_MIND_TRAIT(user, TRAIT_MAGICALLY_GIFTED) || user.stat == DEAD) + . += extra_desc + /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/soulstone)) var/obj/item/soulstone/SS = O @@ -494,6 +495,11 @@ make_new_construct(/mob/living/basic/construct/artificer/angelic, target, creator, cultoverride, loc_override) if(THEME_CULT) make_new_construct(/mob/living/basic/construct/artificer/noncult, target, creator, cultoverride, loc_override) + if(CONSTRUCT_HARVESTER) + if(IS_HERETIC_OR_MONSTER(creator)) + make_new_construct(/mob/living/basic/construct/harvester/heretic, target, creator, cultoverride, loc_override) + else + make_new_construct(/mob/living/basic/construct/harvester, target, creator, cultoverride, loc_override) /proc/make_new_construct(mob/living/basic/construct/ctype, mob/target, mob/stoner = null, cultoverride = FALSE, loc_override = null) if(QDELETED(target)) @@ -523,7 +529,7 @@ newstruct.clear_alert("bloodsense") sense_alert = newstruct.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) if(sense_alert) - sense_alert.Cviewer = newstruct + sense_alert.construct_owner = newstruct newstruct.cancel_camera() /obj/item/soulstone/anybody diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index cfb87ce7cb3fe..db2732be83fad 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -676,20 +676,20 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) return FALSE /// Pumps gas from src to output_air. Amount depends on target_pressure -/datum/gas_mixture/proc/pump_gas_to(datum/gas_mixture/output_air, target_pressure, specific_gas = null) - var/temperature_delta = abs(temperature - output_air.temperature) +/datum/gas_mixture/proc/pump_gas_to(datum/gas_mixture/output_air, target_pressure, specific_gas = null, datum/gas_mixture/output_pipenet_air = null) + var/datum/gas_mixture/input_air = specific_gas ? remove_specific_ratio(specific_gas, 1) : src + var/temperature_delta = abs(input_air.temperature - output_air.temperature) var/datum/gas_mixture/removed - var/transfer_moles + + var/transfer_moles_output = input_air.gas_pressure_calculate(output_air, target_pressure, temperature_delta <= 5) + var/transfer_moles_pipenet = output_pipenet_air?.volume ? input_air.gas_pressure_calculate(output_pipenet_air, target_pressure, temperature_delta <= 5) : 0 + var/transfer_moles = max(transfer_moles_output, transfer_moles_pipenet) if(specific_gas) - // This is necessary because the specific heat capacity of a gas might be different from our gasmix. - var/datum/gas_mixture/temporary = remove_specific_ratio(specific_gas, 1) - transfer_moles = temporary.gas_pressure_calculate(output_air, target_pressure, temperature_delta <= 5) - removed = temporary.remove_specific(specific_gas, transfer_moles) - merge(temporary) + removed = input_air.remove_specific(specific_gas, transfer_moles) + merge(input_air) // Merge the remaining gas back to the input node else - transfer_moles = gas_pressure_calculate(output_air, target_pressure, temperature_delta <= 5) - removed = remove(transfer_moles) + removed = input_air.remove(transfer_moles) if(!removed) return FALSE @@ -698,18 +698,20 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) return removed /// Releases gas from src to output air. This means that it can not transfer air to gas mixture with higher pressure. -/datum/gas_mixture/proc/release_gas_to(datum/gas_mixture/output_air, target_pressure, rate=1) +/datum/gas_mixture/proc/release_gas_to(datum/gas_mixture/output_air, target_pressure, rate=1, datum/gas_mixture/output_pipenet_air = null) var/output_starting_pressure = output_air.return_pressure() var/input_starting_pressure = return_pressure() //Need at least 10 KPa difference to overcome friction in the mechanism - if(output_starting_pressure >= min(target_pressure,input_starting_pressure-10)) + if(output_starting_pressure >= min(target_pressure, input_starting_pressure-10)) return FALSE //Can not have a pressure delta that would cause output_pressure > input_pressure target_pressure = output_starting_pressure + min(target_pressure - output_starting_pressure, (input_starting_pressure - output_starting_pressure)/2) var/temperature_delta = abs(temperature - output_air.temperature) - var/transfer_moles = gas_pressure_calculate(output_air, target_pressure, temperature_delta <= 5) + var/transfer_moles_output = gas_pressure_calculate(output_air, target_pressure, temperature_delta <= 5) + var/transfer_moles_pipenet = output_pipenet_air?.volume ? gas_pressure_calculate(output_pipenet_air, target_pressure, temperature_delta <= 5) : 0 + var/transfer_moles = max(transfer_moles_output, transfer_moles_pipenet) //Actually transfer the gas var/datum/gas_mixture/removed = remove(transfer_moles * rate) diff --git a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm index 4ec7830ac88cf..0a6aa23b34d58 100644 --- a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm +++ b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm @@ -145,6 +145,8 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) /obj/machinery/airalarm/proc/check_enviroment() var/turf/our_turf = connected_sensor ? get_turf(connected_sensor) : get_turf(src) var/datum/gas_mixture/environment = our_turf.return_air() + if(isnull(environment)) + return check_danger(our_turf, environment, environment.temperature) /obj/machinery/airalarm/proc/get_enviroment() @@ -554,6 +556,9 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) if((machine_stat & (NOPOWER|BROKEN)) || shorted) return + if(!environment) + return + var/old_danger = danger_level danger_level = AIR_ALARM_ALERT_NONE diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index fa8b833234586..29ea43905b8b7 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -666,7 +666,7 @@ SET_PLANE_EXPLICIT(cap_overlay, initial(plane), our_turf) cap_overlay.color = pipe_color - cap_overlay.layer = layer + cap_overlay.layer = initial(layer) cap_overlay.icon_state = "[bitfield]_[piping_layer]" cap_overlay.forceMove(our_turf) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index 572e910d3fe08..1d7657dd35276 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -59,9 +59,11 @@ Passive gate is similar to the regular pump except: if(!on) return - var/datum/gas_mixture/air1 = airs[1] - var/datum/gas_mixture/air2 = airs[2] - if(air1.release_gas_to(air2, target_pressure)) + var/datum/gas_mixture/input_air = airs[1] + var/datum/gas_mixture/output_air = airs[2] + var/datum/gas_mixture/output_pipenet_air = parents[2].air + + if(input_air.release_gas_to(output_air, target_pressure, output_pipenet_air = output_pipenet_air)) update_parents() /obj/machinery/atmospherics/components/binary/passive_gate/relaymove(mob/living/user, direction) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm index 399feff12146f..ff9cc36d7cd61 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm @@ -54,11 +54,12 @@ if(!on || !is_operational) return - var/datum/gas_mixture/air1 = airs[1] - var/datum/gas_mixture/air2 = airs[2] + var/datum/gas_mixture/input_air = airs[1] + var/datum/gas_mixture/output_air = airs[2] + var/datum/gas_mixture/output_pipenet_air = parents[2].air - if(air1.return_pressure() > target_pressure) - if(air1.release_gas_to(air2, air1.return_pressure())) + if(input_air.return_pressure() > target_pressure) + if(input_air.release_gas_to(output_air, input_air.return_pressure(), output_pipenet_air = output_pipenet_air)) update_parents() is_gas_flowing = TRUE else diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 63ba340f27ff4..1e68bf9ad691a 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -61,10 +61,11 @@ if(!on || !is_operational) return - var/datum/gas_mixture/air1 = airs[1] - var/datum/gas_mixture/air2 = airs[2] + var/datum/gas_mixture/input_air = airs[1] + var/datum/gas_mixture/output_air = airs[2] + var/datum/gas_mixture/output_pipenet_air = parents[2].air - if(air1.pump_gas_to(air2, target_pressure)) + if(input_air.pump_gas_to(output_air, target_pressure, output_pipenet_air = output_pipenet_air)) update_parents() /obj/machinery/atmospherics/components/binary/pump/ui_interact(mob/user, datum/tgui/ui) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm index b5a3740245a31..879f6b7fab8d3 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm @@ -68,19 +68,20 @@ if(!on || !is_operational) return - var/datum/gas_mixture/air1 = airs[1] - var/datum/gas_mixture/air2 = airs[2] + var/datum/gas_mixture/input_air = airs[1] + var/datum/gas_mixture/output_air = airs[2] + var/datum/gas_mixture/output_pipenet_air = parents[2].air if(!inverted) - if(air1.temperature < target_temperature) - if(air1.release_gas_to(air2, air1.return_pressure())) + if(input_air.temperature < target_temperature) + if(input_air.release_gas_to(output_air, input_air.return_pressure(), output_pipenet_air = output_pipenet_air)) update_parents() is_gas_flowing = TRUE else is_gas_flowing = FALSE else - if(air1.temperature > target_temperature) - if(air1.release_gas_to(air2, air1.return_pressure())) + if(input_air.temperature > target_temperature) + if(input_air.release_gas_to(output_air, input_air.return_pressure(), output_pipenet_air = output_pipenet_air)) update_parents() is_gas_flowing = TRUE else diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index b4e5d88d62c71..cd4e00b3f33a6 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -62,6 +62,7 @@ color = null SET_PLANE_IMPLICIT(src, showpipe ? GAME_PLANE : FLOOR_PLANE) + // Layer is handled in update_layer() if(!showpipe) return ..() @@ -327,7 +328,7 @@ connect_nodes() /obj/machinery/atmospherics/components/update_layer() - layer = initial(layer) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE + (GLOB.pipe_colors_ordered[pipe_color] * 0.001) + layer = (showpipe ? initial(layer) : ABOVE_OPEN_TURF_LAYER) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE + (GLOB.pipe_colors_ordered[pipe_color] * 0.001) /** * Handles air relocation to the pipenet/environment diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm index 6e0490e25efb3..95b548998a194 100644 --- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm +++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm @@ -16,7 +16,7 @@ if(atmos_device.nob_crystal_inserted) to_chat(user, span_warning("[atmos_device] already has a hypernoblium crystal inserted in it!")) return ITEM_INTERACT_BLOCKING - atmos_device.nob_crystal_inserted = TRUE + atmos_device.insert_nob_crystal() to_chat(user, span_notice("You insert the [src] into [atmos_device].")) if(istype(worn_item)) diff --git a/code/modules/atmospherics/machinery/pipes/bridge_pipe.dm b/code/modules/atmospherics/machinery/pipes/bridge_pipe.dm index 472cb3ed2034a..4c1cd63016c92 100644 --- a/code/modules/atmospherics/machinery/pipes/bridge_pipe.dm +++ b/code/modules/atmospherics/machinery/pipes/bridge_pipe.dm @@ -5,6 +5,7 @@ name = "bridge pipe" desc = "A one meter section of regular pipe used to connect pipenets over pipes." + layer = HIGH_PIPE_LAYER dir = SOUTH initialize_directions = NORTH | SOUTH pipe_flags = PIPING_CARDINAL_AUTONORMALIZE | PIPING_BRIDGE @@ -28,4 +29,5 @@ PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer) . += center - layer = HIGH_PIPE_LAYER //to stay above all sorts of pipes +/obj/machinery/atmospherics/pipe/bridge_pipe/update_layer() + layer = (HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? ABOVE_OPEN_TURF_LAYER + 1 : initial(layer)) diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index 730e193671dbe..df919cbeccb1c 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -41,7 +41,7 @@ nodes = list() /obj/machinery/atmospherics/pipe/layer_manifold/update_layer() - layer = initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else. + layer = (HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? ABOVE_OPEN_TURF_LAYER : initial(layer)) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else. /obj/machinery/atmospherics/pipe/layer_manifold/update_overlays() . = ..() @@ -68,7 +68,8 @@ . += get_attached_image(get_dir(src, machine_check), machine_check.piping_layer, machine_check.pipe_color) /obj/machinery/atmospherics/pipe/layer_manifold/proc/get_attached_image(p_dir, p_layer, p_color) - var/mutable_appearance/muta = mutable_appearance('icons/obj/pipes_n_cables/layer_manifold_underlays.dmi', "intact_[p_dir]_[p_layer]", layer = layer - 0.01, appearance_flags = RESET_COLOR) + var/working_layer = FLOAT_LAYER - HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? 1 : 0.01 + var/mutable_appearance/muta = mutable_appearance('icons/obj/pipes_n_cables/layer_manifold_underlays.dmi', "intact_[p_dir]_[p_layer]", layer = working_layer, appearance_flags = RESET_COLOR) muta.color = p_color return muta diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index 40258db903ff0..230edc9a897f0 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -139,4 +139,4 @@ current_node.update_icon() /obj/machinery/atmospherics/pipe/update_layer() - layer = initial(layer) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE + (GLOB.pipe_colors_ordered[pipe_color] * 0.0001) + layer = (HAS_TRAIT(src, TRAIT_UNDERFLOOR) ? ABOVE_OPEN_TURF_LAYER : initial(layer)) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE + (GLOB.pipe_colors_ordered[pipe_color] * 0.0001) diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 0b1e7c2768ae9..af13be0bbbf9b 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -101,6 +101,8 @@ /obj/machinery/portable_atmospherics/canister/examine(user) . = ..() + if(atom_integrity < max_integrity) + . += span_notice("Integrity compromised, repair hull with a welding tool.") . += span_notice("A sticker on its side says MAX SAFE PRESSURE: [siunit_pressure(initial(pressure_limit), 0)]; MAX SAFE TEMPERATURE: [siunit(temp_limit, "K", 0)].") . += span_notice("The hull is welded together and can be cut apart.") if(internal_cell) @@ -109,8 +111,6 @@ . += span_notice("Warning, no cell installed, use a screwdriver to open the hatch and insert one.") if(panel_open) . += span_notice("Hatch open, close it with a screwdriver.") - if(integrity_failure) - . += span_notice("Integrity compromised, repair hull with a welding tool.") // Please keep the canister types sorted // Basic canister per gas below here @@ -461,18 +461,24 @@ user.investigate_log("started a transfer into [holding].", INVESTIGATE_ATMOS) /obj/machinery/portable_atmospherics/canister/process(seconds_per_tick) + if(!shielding_powered) + return + var/our_pressure = air_contents.return_pressure() var/our_temperature = air_contents.return_temperature() + var/energy_factor = round(log(10, max(our_pressure - pressure_limit, 1)) + log(10, max(our_temperature - temp_limit, 1))) + var/energy_consumed = energy_factor * 250 * seconds_per_tick - if(shielding_powered) - var/energy_factor = round(log(10, max(our_pressure - pressure_limit, 1)) + log(10, max(our_temperature - temp_limit, 1))) - var/energy_consumed = energy_factor * 250 * seconds_per_tick - if(powered(AREA_USAGE_EQUIP, ignore_use_power = TRUE)) - use_energy(energy_consumed, channel = AREA_USAGE_EQUIP) - else if(!internal_cell?.use(energy_consumed * 0.025)) - shielding_powered = FALSE - SSair.start_processing_machine(src) - investigate_log("shielding turned off due to power loss") + if(!energy_consumed) + return + + if(powered(AREA_USAGE_EQUIP, ignore_use_power = TRUE)) + use_energy(energy_consumed, channel = AREA_USAGE_EQUIP) + else if(!internal_cell?.use(energy_consumed * 0.025)) + shielding_powered = FALSE + SSair.start_processing_machine(src) + investigate_log("shielding turned off due to power loss") + update_appearance() ///return the icon_state component for the canister's indicator light based on its current pressure reading /obj/machinery/portable_atmospherics/canister/proc/get_pressure_state() diff --git a/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm b/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm new file mode 100644 index 0000000000000..cde38f216ad70 --- /dev/null +++ b/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm @@ -0,0 +1,167 @@ +/obj/machinery/portable_atmospherics/pipe_scrubber + name = "pipe scrubber" + desc = "A machine for cleaning out pipes of lingering gases. It is a huge tank with a pump attached to it." + icon_state = "pipe_scrubber" + density = TRUE + max_integrity = 250 + volume = 200 + ///The internal air tank obj of the mech + var/obj/machinery/portable_atmospherics/canister/internal_tank + ///Is the machine on? + var/on = FALSE + ///What direction is the machine pumping to (into scrubber or out to the port)? + var/direction = PUMP_IN + ///the rate the machine will scrub air + var/volume_rate = 1000 + ///List of gases that can be scrubbed + var/list/scrubbing = list( + /datum/gas/plasma, + /datum/gas/carbon_dioxide, + /datum/gas/nitrous_oxide, + /datum/gas/bz, + /datum/gas/nitrium, + /datum/gas/tritium, + /datum/gas/hypernoblium, + /datum/gas/water_vapor, + /datum/gas/freon, + /datum/gas/hydrogen, + /datum/gas/healium, + /datum/gas/proto_nitrate, + /datum/gas/zauker, + /datum/gas/halon, + ) + +/obj/machinery/portable_atmospherics/pipe_scrubber/Initialize(mapload) + . = ..() + internal_tank = new(src) + RegisterSignal(internal_tank, COMSIG_ATOM_BREAK, PROC_REF(deconstruct)) + RegisterSignal(internal_tank, COMSIG_QDELETING, PROC_REF(deconstruct)) + +/obj/machinery/portable_atmospherics/pipe_scrubber/atom_deconstruct(disassembled) + . = ..() + var/turf/my_turf = get_turf(src) + my_turf.assume_air(air_contents) + my_turf.assume_air(internal_tank.air_contents) + SSair.stop_processing_machine(internal_tank) + qdel(internal_tank) + +/obj/machinery/portable_atmospherics/pipe_scrubber/return_analyzable_air() + return list( + air_contents, + internal_tank.air_contents + ) + +/obj/machinery/portable_atmospherics/pipe_scrubber/welder_act(mob/living/user, obj/item/tool) + internal_tank.welder_act(user, tool) + return ..() + +/obj/machinery/portable_atmospherics/pipe_scrubber/click_alt(mob/living/user) + return CLICK_ACTION_BLOCKING + +/obj/machinery/portable_atmospherics/pipe_scrubber/replace_tank(mob/living/user, close_valve, obj/item/tank/new_tank) + return FALSE + +/obj/machinery/portable_atmospherics/pipe_scrubber/update_icon_state() + icon_state = on ? "[initial(icon_state)]_active" : initial(icon_state) + return ..() + +/obj/machinery/portable_atmospherics/pipe_scrubber/process_atmos() + if(take_atmos_damage()) + excited = TRUE + return ..() + if(!on) + return ..() + excited = TRUE + if(direction == PUMP_IN) + scrub(air_contents) + else + internal_tank.air_contents.pump_gas_to(air_contents, PUMP_MAX_PRESSURE) + return ..() + +/// Scrub gasses from own air_contents into internal_tank.air_contents +/obj/machinery/portable_atmospherics/pipe_scrubber/proc/scrub() + if(internal_tank.air_contents.return_pressure() >= PUMP_MAX_PRESSURE) + return + + var/transfer_moles = min(1, volume_rate / air_contents.volume) * air_contents.total_moles() + + var/datum/gas_mixture/filtering = air_contents.remove(transfer_moles) // Remove part of the mixture to filter. + var/datum/gas_mixture/filtered = new + if(!filtering) + return + + filtered.temperature = filtering.temperature + for(var/gas in filtering.gases & scrubbing) + filtered.add_gas(gas) + filtered.gases[gas][MOLES] = filtering.gases[gas][MOLES] // Shuffle the "bad" gasses to the filtered mixture. + filtering.gases[gas][MOLES] = 0 + filtering.garbage_collect() // Now that the gasses are set to 0, clean up the mixture. + + internal_tank.air_contents.merge(filtered) // Store filtered out gasses. + air_contents.merge(filtering) // Returned the cleaned gas. + +/obj/machinery/portable_atmospherics/pipe_scrubber/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PipeScrubber", name) + ui.open() + +/obj/machinery/portable_atmospherics/pipe_scrubber/ui_data() + var/data = list() + data["on"] = on + data["direction"] = direction + data["connected"] = connected_port ? 1 : 0 + data["pressureTank"] = round(internal_tank.air_contents.return_pressure() ? internal_tank.air_contents.return_pressure() : 0) + data["pressurePump"] = round(air_contents.return_pressure() ? air_contents.return_pressure() : 0) + data["hasHypernobCrystal"] = nob_crystal_inserted + data["reactionSuppressionEnabled"] = suppress_reactions + + data["filterTypes"] = list() + for(var/gas_path in GLOB.meta_gas_info) + var/list/gas = GLOB.meta_gas_info[gas_path] + data["filterTypes"] += list(list("gasId" = gas[META_GAS_ID], "gasName" = gas[META_GAS_NAME], "enabled" = (gas_path in scrubbing))) + + return data + +/obj/machinery/portable_atmospherics/pipe_scrubber/ui_static_data() + var/list/data = list() + data["pressureLimitPump"] = pressure_limit + data["pressureLimitTank"] = internal_tank.pressure_limit + return data + +/obj/machinery/portable_atmospherics/pipe_scrubber/ui_act(action, params) + . = ..() + if(.) + return + switch(action) + if("power") + on = !on + if(on) + SSair.start_processing_machine(src) + SSair.start_processing_machine(internal_tank) + . = TRUE + if("direction") + direction = !direction + . = TRUE + if("toggle_filter") + scrubbing ^= gas_id2path(params["val"]) + . = TRUE + if("reaction_suppression") + if(!internal_tank.nob_crystal_inserted) + message_admins("[ADMIN_LOOKUPFLW(usr)] tried to toggle reaction suppression on a pipe scrubber without a noblium crystal inside, possible href exploit attempt.") + return + internal_tank.suppress_reactions = !internal_tank.suppress_reactions + SSair.start_processing_machine(internal_tank) + message_admins("[ADMIN_LOOKUPFLW(usr)] turned [internal_tank.suppress_reactions ? "on" : "off"] the [internal_tank] reaction suppression.") + usr.investigate_log("turned [internal_tank.suppress_reactions ? "on" : "off"] the [internal_tank] reaction suppression.") + . = TRUE + update_appearance() + +/obj/machinery/portable_atmospherics/pipe_scrubber/insert_nob_crystal() + . = ..() + internal_tank.nob_crystal_inserted = TRUE + +/obj/machinery/portable_atmospherics/pipe_scrubber/proc/toggle_reaction_suppression() + var/new_value = !suppress_reactions + suppress_reactions = new_value + internal_tank.suppress_reactions = new_value diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 17f3a6fb439f7..9729c0871451a 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -212,8 +212,16 @@ * * new_tank: the tank we are trying to put in the machine */ /obj/machinery/portable_atmospherics/proc/replace_tank(mob/living/user, close_valve, obj/item/tank/new_tank) + if(machine_stat & BROKEN) + return FALSE if(!user) return FALSE + if(!user.transferItemToLoc(new_tank, src)) + return FALSE + + investigate_log("had its internal [holding] swapped with [new_tank] by [key_name(user)].", INVESTIGATE_ATMOS) + to_chat(user, span_notice("[holding ? "In one smooth motion you pop [holding] out of [src]'s connector and replace it with [new_tank]" : "You insert [new_tank] into [src]"].")) + if(holding && new_tank)//for when we are actually switching tanks user.put_in_hands(holding) UnregisterSignal(holding, COMSIG_QDELETING) @@ -238,17 +246,9 @@ return TRUE /obj/machinery/portable_atmospherics/attackby(obj/item/item, mob/user, params) - if(!istype(item, /obj/item/tank)) - return ..() - if(machine_stat & BROKEN) - return FALSE - var/obj/item/tank/insert_tank = item - if(!user.transferItemToLoc(insert_tank, src)) - return FALSE - to_chat(user, span_notice("[holding ? "In one smooth motion you pop [holding] out of [src]'s connector and replace it with [insert_tank]" : "You insert [insert_tank] into [src]"].")) - investigate_log("had its internal [holding] swapped with [insert_tank] by [key_name(user)].", INVESTIGATE_ATMOS) - replace_tank(user, FALSE, insert_tank) - update_appearance() + if(istype(item, /obj/item/tank)) + return replace_tank(user, FALSE, item) + return ..() /obj/machinery/portable_atmospherics/wrench_act(mob/living/user, obj/item/wrench) if(machine_stat & BROKEN) @@ -295,4 +295,8 @@ UnregisterSignal(holding, COMSIG_QDELETING) holding = null +/// Insert Hypernob crystal into the machine +/obj/machinery/portable_atmospherics/proc/insert_nob_crystal() + nob_crystal_inserted = TRUE + #undef PORTABLE_ATMOS_IGNORE_ATMOS_LIMIT diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index 09c6c64709b9a..b292180683f88 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -1,16 +1,17 @@ /obj/machinery/portable_atmospherics/scrubber name = "portable air scrubber" + desc = "A portable variant of the station scrubbers, capable of filtering gas from the air around it or inserted tank. May also be wrenched into a port." icon_state = "scrubber" density = TRUE max_integrity = 250 - volume = 1000 + volume = 2000 ///Is the machine on? var/on = FALSE ///the rate the machine will scrub air - var/volume_rate = 1000 + var/volume_rate = 650 ///Multiplier with ONE_ATMOSPHERE, if the enviroment pressure is higher than that, the scrubber won't work - var/overpressure_m = 80 + var/overpressure_m = 100 ///Should the machine use overlay in update_overlays() when open/close? var/use_overlays = TRUE ///List of gases that can be scrubbed @@ -59,8 +60,15 @@ excited = TRUE - var/atom/target = holding || get_turf(src) - scrub(target.return_air()) + if(!isnull(holding)) + scrub(holding.return_air()) + return ..() + + var/turf/epicentre = get_turf(src) + if(isopenturf(epicentre)) + scrub(epicentre.return_air()) + for(var/turf/open/openturf as anything in epicentre.get_atmos_adjacent_turfs(alldir = TRUE)) + scrub(openturf.return_air()) return ..() /** @@ -68,28 +76,39 @@ * Arguments: * * mixture: the gas mixture to be scrubbed */ -/obj/machinery/portable_atmospherics/scrubber/proc/scrub(datum/gas_mixture/mixture) +/obj/machinery/portable_atmospherics/scrubber/proc/scrub(datum/gas_mixture/environment) if(air_contents.return_pressure() >= overpressure_m * ONE_ATMOSPHERE) return - var/transfer_moles = min(1, volume_rate / mixture.volume) * mixture.total_moles() + var/list/env_gases = environment.gases - var/datum/gas_mixture/filtering = mixture.remove(transfer_moles) // Remove part of the mixture to filter. - var/datum/gas_mixture/filtered = new - if(!filtering) - return + //contains all of the gas we're sucking out of the tile, gets put into our parent pipenet + var/datum/gas_mixture/filtered_out = new + var/list/filtered_gases = filtered_out.gases + filtered_out.temperature = environment.temperature - filtered.temperature = filtering.temperature - for(var/gas in filtering.gases & scrubbing) - filtered.add_gas(gas) - filtered.gases[gas][MOLES] = filtering.gases[gas][MOLES] // Shuffle the "bad" gasses to the filtered mixture. - filtering.gases[gas][MOLES] = 0 - filtering.garbage_collect() // Now that the gasses are set to 0, clean up the mixture. + //maximum percentage of the turfs gas we can filter + var/removal_ratio = min(1, volume_rate / environment.volume) - air_contents.merge(filtered) // Store filtered out gasses. - mixture.merge(filtering) // Returned the cleaned gas. - if(!holding) - air_update_turf(FALSE, FALSE) + var/total_moles_to_remove = 0 + for(var/gas in scrubbing & env_gases) + total_moles_to_remove += env_gases[gas][MOLES] + + if(total_moles_to_remove == 0)//sometimes this gets non gc'd values + environment.garbage_collect() + return FALSE + + for(var/gas in scrubbing & env_gases) + filtered_out.add_gas(gas) + var/transferred_moles = max(QUANTIZE(env_gases[gas][MOLES] * removal_ratio * (env_gases[gas][MOLES] / total_moles_to_remove)), min(MOLAR_ACCURACY*1000, env_gases[gas][MOLES])) + + filtered_gases[gas][MOLES] = transferred_moles + env_gases[gas][MOLES] -= transferred_moles + + environment.garbage_collect() + + //Remix the resulting gases + air_contents.merge(filtered_out) /obj/machinery/portable_atmospherics/scrubber/emp_act(severity) . = ..() diff --git a/code/modules/autowiki/pages/soup.dm b/code/modules/autowiki/pages/soup.dm index 75521005d8e88..f67d00e97a057 100644 --- a/code/modules/autowiki/pages/soup.dm +++ b/code/modules/autowiki/pages/soup.dm @@ -27,6 +27,7 @@ var/result_name var/result_desc var/result_tastes + var/result_soup_type // Solid food item results take priority over reagents for showcasing results if(soup_recipe.resulting_food_path) var/obj/item/resulting_food = new soup_recipe.resulting_food_path() @@ -45,7 +46,7 @@ // Otherwise, it should be a reagent. else - var/result_soup_type = soup_recipe.results[1] + result_soup_type = soup_recipe.results[1] var/datum/reagent/result_soup = new result_soup_type() result_name = format_text(result_soup.name) result_desc = result_soup.description @@ -122,8 +123,14 @@ template_list["results"] = escape_value(compiled_results) // -- While we're here, generate an icon of the bowl -- - var/image/compiled_image = image(icon = soup_icon, icon_state = soup_icon_state) - upload_icon(getFlatIcon(compiled_image, no_anim = TRUE), filename) + if(!soup_icon_state) + var/obj/item/reagent_containers/cup/bowl/soup_bowl = new() + soup_bowl.reagents.add_reagent(result_soup_type, soup_bowl.reagents.maximum_volume) + upload_icon(getFlatIcon(soup_bowl, no_anim = TRUE), filename) + qdel(soup_bowl) + else + var/image/compiled_image = image(icon = soup_icon, icon_state = soup_icon_state) + upload_icon(getFlatIcon(compiled_image, no_anim = TRUE), filename) // -- Cleanup -- qdel(soup_recipe) diff --git a/code/modules/awaymissions/away_props.dm b/code/modules/awaymissions/away_props.dm index 22d9f532efcbd..6f6a25b47c8cd 100644 --- a/code/modules/awaymissions/away_props.dm +++ b/code/modules/awaymissions/away_props.dm @@ -56,6 +56,7 @@ name = "pit grate" icon = 'icons/obj/smooth_structures/lattice.dmi' icon_state = "lattice-255" + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE anchored = TRUE obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP @@ -95,6 +96,7 @@ talpha = 255 obj_flags |= BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP SET_PLANE_IMPLICIT(src, ABOVE_LIGHTING_PLANE) //What matters it's one above openspace, so our animation is not dependant on what's there. Up to revision with 513 + layer = ABOVE_NORMAL_TURF_LAYER animate(src,alpha = talpha,time = 10) addtimer(CALLBACK(src, PROC_REF(reset_plane)), 1 SECONDS) if(hidden) @@ -106,6 +108,7 @@ /obj/structure/pitgrate/proc/reset_plane() SET_PLANE_IMPLICIT(src, FLOOR_PLANE) + layer = ABOVE_OPEN_TURF_LAYER /obj/structure/pitgrate/Destroy() if(hidden) diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm index a92e8ef3d2e6e..51263c339319e 100644 --- a/code/modules/bitrunning/components/avatar_connection.dm +++ b/code/modules/bitrunning/components/avatar_connection.dm @@ -60,7 +60,7 @@ var/datum/action/avatar_domain_info/action = new(help_datum) action.Grant(avatar) - var/client/our_client = old_body.client + var/client/our_client = avatar.client var/alias = our_client?.prefs?.read_preference(/datum/preference/name/hacker_alias) || pick(GLOB.hacker_aliases) if(alias && avatar.real_name != alias) diff --git a/code/modules/bitrunning/components/bitrunning_points.dm b/code/modules/bitrunning/components/bitrunning_points.dm index 328a70679e653..ea8f63f76d8df 100644 --- a/code/modules/bitrunning/components/bitrunning_points.dm +++ b/code/modules/bitrunning/components/bitrunning_points.dm @@ -5,6 +5,7 @@ /// A special condition limits this from spawning a crate var/points_received = 0 + /datum/component/bitrunning_points/Initialize(datum/lazy_template/virtual_domain/domain) . = ..() if(!isturf(parent)) @@ -12,6 +13,7 @@ RegisterSignal(domain, COMSIG_BITRUNNER_GOAL_POINT, PROC_REF(on_add_points)) + /// Listens for points to be added which will eventually spawn a crate. /datum/component/bitrunning_points/proc/on_add_points(datum/source, points_to_add) SIGNAL_HANDLER @@ -23,12 +25,14 @@ reveal() + /// Spawns the crate with some effects /datum/component/bitrunning_points/proc/reveal() playsound(src, 'sound/magic/blink.ogg', 50, TRUE) var/turf/tile = parent - new /obj/structure/closet/crate/secure/bitrunning/encrypted(tile) + var/obj/structure/closet/crate/secure/bitrunning/encrypted/crate = new() + crate.forceMove(tile) // Triggers any on-move effects on that turf var/datum/effect_system/spark_spread/quantum/sparks = new(tile) sparks.set_up(number = 5, location = tile) diff --git a/code/modules/bitrunning/job.dm b/code/modules/bitrunning/job.dm index 1e749a3c7a58e..d62bd2cf3aeac 100644 --- a/code/modules/bitrunning/job.dm +++ b/code/modules/bitrunning/job.dm @@ -13,7 +13,7 @@ paycheck = PAYCHECK_CREW paycheck_department = ACCOUNT_CAR display_order = JOB_DISPLAY_ORDER_BITRUNNER - bounty_types = CIV_JOB_RANDOM + bounty_types = CIV_JOB_BITRUN departments_list = list( /datum/job_department/cargo, ) diff --git a/code/modules/bitrunning/netpod/_netpod.dm b/code/modules/bitrunning/netpod/_netpod.dm new file mode 100644 index 0000000000000..2208c56a7414e --- /dev/null +++ b/code/modules/bitrunning/netpod/_netpod.dm @@ -0,0 +1,137 @@ +#define BASE_DISCONNECT_DAMAGE 40 + + +/obj/machinery/netpod + name = "netpod" + + base_icon_state = "netpod" + circuit = /obj/item/circuitboard/machine/netpod + desc = "A link to the netverse. It has an assortment of cables to connect yourself to a virtual domain." + icon = 'icons/obj/machines/bitrunning.dmi' + icon_state = "netpod" + max_integrity = 300 + obj_flags = BLOCKS_CONSTRUCTION + state_open = TRUE + interaction_flags_mouse_drop = NEED_HANDS | NEED_DEXTERITY + + /// Whether we have an ongoing connection + var/connected = FALSE + /// A player selected outfit by clicking the netpod + var/datum/outfit/netsuit = /datum/outfit/job/bitrunner + /// Holds this to see if it needs to generate a new one + var/datum/weakref/avatar_ref + /// The linked quantum server + var/datum/weakref/server_ref + /// The amount of brain damage done from force disconnects + var/disconnect_damage + /// Static list of outfits to select from + var/list/cached_outfits = list() + + +/obj/machinery/netpod/post_machine_initialize() + . = ..() + + disconnect_damage = BASE_DISCONNECT_DAMAGE + find_server() + + RegisterSignal(src, COMSIG_ATOM_TAKE_DAMAGE, PROC_REF(on_damage_taken)) + RegisterSignal(src, COMSIG_MACHINERY_POWER_LOST, PROC_REF(on_power_loss)) + RegisterSignals(src, list(COMSIG_QDELETING, COMSIG_MACHINERY_BROKEN),PROC_REF(on_broken)) + + register_context() + update_appearance() + + +/obj/machinery/netpod/Destroy() + . = ..() + + QDEL_LIST(cached_outfits) + + +/obj/machinery/netpod/examine(mob/user) + . = ..() + + if(isnull(server_ref?.resolve())) + . += span_infoplain("It's not connected to anything.") + . += span_infoplain("Netpods must be built within 4 tiles of a server.") + return + + if(!isobserver(user)) + . += span_infoplain("Drag yourself into the pod to engage the link.") + . += span_infoplain("It has limited resuscitation capabilities. Remaining in the pod can heal some injuries.") + . += span_infoplain("It has a security system that will alert the occupant if it is tampered with.") + + if(isnull(occupant)) + . += span_infoplain("It's currently unoccupied.") + return + + . += span_infoplain("It's currently occupied by [occupant].") + + if(isobserver(user)) + . += span_notice("As an observer, you can click this netpod to jump to its avatar.") + return + + . += span_notice("It can be pried open with a crowbar, but its safety mechanisms will alert the occupant.") + + +/obj/machinery/netpod/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + + if(isnull(held_item)) + context[SCREENTIP_CONTEXT_LMB] = "Select Outfit" + return CONTEXTUAL_SCREENTIP_SET + + if(istype(held_item, /obj/item/crowbar) && occupant) + context[SCREENTIP_CONTEXT_LMB] = "Pry Open" + return CONTEXTUAL_SCREENTIP_SET + + +/obj/machinery/netpod/update_icon_state() + if(!is_operational) + icon_state = base_icon_state + return ..() + + if(state_open) + icon_state = base_icon_state + "_open_active" + return ..() + + if(panel_open) + icon_state = base_icon_state + "_panel" + return ..() + + icon_state = base_icon_state + "_closed" + if(occupant) + icon_state += "_active" + + return ..() + + +/obj/machinery/netpod/mouse_drop_receive(mob/target, mob/user, params) + var/mob/living/carbon/player = user + + if(!iscarbon(player) || !is_operational || !state_open || player.buckled) + return + + close_machine(target) + + +/obj/machinery/netpod/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(!state_open && user == occupant) + container_resist_act(user) + + +/obj/machinery/netpod/attack_ghost(mob/dead/observer/our_observer) + var/our_target = avatar_ref?.resolve() + if(isnull(our_target) || !our_observer.orbit(our_target)) + return ..() + + +/// When the server is upgraded, drops brain damage a little +/obj/machinery/netpod/proc/on_server_upgraded(obj/machinery/quantum_server/source) + SIGNAL_HANDLER + + disconnect_damage = BASE_DISCONNECT_DAMAGE * (1 - source.servo_bonus) + + +#undef BASE_DISCONNECT_DAMAGE diff --git a/code/modules/bitrunning/netpod/container.dm b/code/modules/bitrunning/netpod/container.dm new file mode 100644 index 0000000000000..6165544544511 --- /dev/null +++ b/code/modules/bitrunning/netpod/container.dm @@ -0,0 +1,74 @@ +/obj/machinery/netpod/Exited(atom/movable/gone, direction) + . = ..() + if(!state_open && gone == occupant) + container_resist_act(gone) + + +/obj/machinery/netpod/relaymove(mob/living/user, direction) + if(!state_open) + container_resist_act(user) + + +/obj/machinery/netpod/container_resist_act(mob/living/user) + user.visible_message(span_notice("[occupant] emerges from [src]!"), + span_notice("You climb out of [src]!"), + span_notice("With a hiss, you hear a machine opening.")) + open_machine() + + +/obj/machinery/netpod/open_machine(drop = TRUE, density_to_set = FALSE) + playsound(src, 'sound/machines/tramopen.ogg', 60, TRUE, frequency = 65000) + flick("[base_icon_state]_opening", src) + SEND_SIGNAL(src, COMSIG_BITRUNNER_NETPOD_OPENED) + update_use_power(IDLE_POWER_USE) + + return ..() + + +/obj/machinery/netpod/close_machine(mob/user, density_to_set = TRUE) + if(!state_open || panel_open || !is_operational || !iscarbon(user)) + return + + playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000) + flick("[base_icon_state]_closing", src) + ..() + + enter_matrix() + + +/obj/machinery/netpod/default_pry_open(obj/item/crowbar, mob/living/pryer) + if(isnull(occupant) || !iscarbon(occupant)) + if(!state_open) + if(panel_open) + return FALSE + open_machine() + else + shut_pod() + + return TRUE + + pryer.visible_message( + span_danger("[pryer] starts prying open [src]!"), + span_notice("You start to pry open [src]."), + span_notice("You hear loud prying on metal.") + ) + playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) + + SEND_SIGNAL(src, COMSIG_BITRUNNER_CROWBAR_ALERT, pryer) + + if(do_after(pryer, 15 SECONDS, src)) + if(!state_open) + sever_connection() + open_machine() + + return TRUE + + +/// Closes the machine without shoving in an occupant +/obj/machinery/netpod/proc/shut_pod() + state_open = FALSE + playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000) + flick("[base_icon_state]_closing", src) + set_density(TRUE) + + update_appearance() diff --git a/code/modules/bitrunning/netpod/outfitting.dm b/code/modules/bitrunning/netpod/outfitting.dm new file mode 100644 index 0000000000000..07f251541980f --- /dev/null +++ b/code/modules/bitrunning/netpod/outfitting.dm @@ -0,0 +1,30 @@ +/// Creates a list of outfit entries for the UI. +/obj/machinery/netpod/proc/make_outfit_collection(identifier, list/outfit_list) + var/list/collection = list( + "name" = identifier, + "outfits" = list() + ) + + for(var/datum/outfit/outfit as anything in outfit_list) + var/outfit_name = initial(outfit.name) + if(findtext(outfit_name, "(") != 0 || findtext(outfit_name, "-") != 0) // No special variants please + continue + + collection["outfits"] += list(list("path" = outfit, "name" = outfit_name)) + + return list(collection) + + +/// Resolves a path to an outfit. +/obj/machinery/netpod/proc/resolve_outfit(text) + var/path = text2path(text) + if(!ispath(path, /datum/outfit)) + return + + for(var/wardrobe in cached_outfits) + for(var/outfit in wardrobe["outfits"]) + if(path == outfit["path"]) + return path + + message_admins("[usr]:[usr.ckey] attempted to select an unavailable outfit from a netpod") + return diff --git a/code/modules/bitrunning/netpod/signals.dm b/code/modules/bitrunning/netpod/signals.dm new file mode 100644 index 0000000000000..8f8416aeb7b1b --- /dev/null +++ b/code/modules/bitrunning/netpod/signals.dm @@ -0,0 +1,64 @@ +/// Machine has been broken - handles signals and reverting sprites +/obj/machinery/netpod/proc/on_broken(datum/source) + SIGNAL_HANDLER + + sever_connection() + + +/// Checks the integrity, alerts occupants +/obj/machinery/netpod/proc/on_damage_taken(datum/source, damage_amount) + SIGNAL_HANDLER + + if(isnull(occupant) || !connected) + return + + var/total = max_integrity - damage_amount + var/integrity = (atom_integrity / total) * 100 + if(integrity > 50) + return + + SEND_SIGNAL(src, COMSIG_BITRUNNER_NETPOD_INTEGRITY) + + +/// Puts points on the current occupant's card account +/obj/machinery/netpod/proc/on_domain_complete(datum/source, atom/movable/crate, reward_points) + SIGNAL_HANDLER + + if(isnull(occupant) || !connected) + return + + var/mob/living/player = occupant + + var/datum/bank_account/account = player.get_bank_account() + if(isnull(account)) + return + + account.bitrunning_points += reward_points * 100 + + +/// The domain has been fully purged, so we should double check our avatar is deleted +/obj/machinery/netpod/proc/on_domain_scrubbed(datum/source) + SIGNAL_HANDLER + + var/mob/avatar = avatar_ref?.resolve() + if(isnull(avatar)) + return + + QDEL_NULL(avatar) + + +/// Boots out anyone in the machine && opens it +/obj/machinery/netpod/proc/on_power_loss(datum/source) + SIGNAL_HANDLER + + if(state_open) + return + + if(isnull(occupant) || !connected) + connected = FALSE + open_machine() + return + + sever_connection() + + diff --git a/code/modules/bitrunning/netpod/tools.dm b/code/modules/bitrunning/netpod/tools.dm new file mode 100644 index 0000000000000..0d31bdab86651 --- /dev/null +++ b/code/modules/bitrunning/netpod/tools.dm @@ -0,0 +1,22 @@ +/obj/machinery/netpod/crowbar_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + attack_hand(user) + return ITEM_INTERACT_SUCCESS + + if(default_pry_open(tool, user) || default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS + + +/obj/machinery/netpod/screwdriver_act(mob/living/user, obj/item/tool) + if(occupant) + balloon_alert(user, "in use!") + return ITEM_INTERACT_SUCCESS + + if(state_open) + balloon_alert(user, "close first.") + return ITEM_INTERACT_SUCCESS + + if(default_deconstruction_screwdriver(user, "[base_icon_state]_panel", "[base_icon_state]_closed", tool)) + update_appearance() // sometimes icon doesnt properly update during flick() + ui_close(user) + return ITEM_INTERACT_SUCCESS diff --git a/code/modules/bitrunning/netpod/ui.dm b/code/modules/bitrunning/netpod/ui.dm new file mode 100644 index 0000000000000..93719fe64ebef --- /dev/null +++ b/code/modules/bitrunning/netpod/ui.dm @@ -0,0 +1,41 @@ +/obj/machinery/netpod/ui_interact(mob/user, datum/tgui/ui) + if(!is_operational || occupant) + return + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "NetpodOutfits") + ui.set_autoupdate(FALSE) + ui.open() + + +/obj/machinery/netpod/ui_data() + var/list/data = list() + + data["netsuit"] = netsuit + return data + + +/obj/machinery/netpod/ui_static_data() + var/list/data = list() + + if(!length(cached_outfits)) + cached_outfits += make_outfit_collection("Jobs", subtypesof(/datum/outfit/job)) + + data["collections"] = cached_outfits + + return data + + +/obj/machinery/netpod/ui_act(action, params) + . = ..() + if(.) + return TRUE + switch(action) + if("select_outfit") + var/datum/outfit/new_suit = resolve_outfit(params["outfit"]) + if(new_suit) + netsuit = new_suit + return TRUE + + return FALSE diff --git a/code/modules/bitrunning/netpod/utils.dm b/code/modules/bitrunning/netpod/utils.dm new file mode 100644 index 0000000000000..6e0033fe02d93 --- /dev/null +++ b/code/modules/bitrunning/netpod/utils.dm @@ -0,0 +1,144 @@ +/// Puts the occupant in netpod stasis, basically short-circuiting environmental conditions +/obj/machinery/netpod/proc/add_healing(mob/living/target) + if(target != occupant) + return + + target.AddComponent(/datum/component/netpod_healing, pod = src) + target.playsound_local(src, 'sound/effects/submerge.ogg', 20, vary = TRUE) + target.extinguish_mob() + update_use_power(ACTIVE_POWER_USE) + + +/// Disconnects the occupant after a certain time so they aren't just hibernating in netpod stasis. A balance change +/obj/machinery/netpod/proc/auto_disconnect() + if(isnull(occupant) || state_open || connected) + return + + var/mob/player = occupant + player.playsound_local(src, 'sound/effects/splash.ogg', 60, TRUE) + to_chat(player, span_notice("The machine disconnects itself and begins to drain.")) + open_machine() + + +/// Handles occupant post-disconnection effects like damage, sounds, etc +/obj/machinery/netpod/proc/disconnect_occupant(cause_damage = FALSE) + connected = FALSE + + var/mob/living/mob_occupant = occupant + if(isnull(occupant) || mob_occupant.stat == DEAD) + open_machine() + return + + mob_occupant.playsound_local(src, 'sound/magic/blink.ogg', 25, TRUE) + mob_occupant.set_static_vision(2 SECONDS) + mob_occupant.set_temp_blindness(1 SECONDS) + mob_occupant.Paralyze(2 SECONDS) + + if(!is_operational) + open_machine() + return + + var/heal_time = 1 + if(mob_occupant.health < mob_occupant.maxHealth) + heal_time = (mob_occupant.stat + 2) * 5 + addtimer(CALLBACK(src, PROC_REF(auto_disconnect)), heal_time SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_DELETE_ME) + + if(!cause_damage) + return + + mob_occupant.flash_act(override_blindness_check = TRUE, visual = TRUE) + mob_occupant.adjustOrganLoss(ORGAN_SLOT_BRAIN, disconnect_damage) + INVOKE_ASYNC(mob_occupant, TYPE_PROC_REF(/mob/living, emote), "scream") + to_chat(mob_occupant, span_danger("You've been forcefully disconnected from your avatar! Your thoughts feel scrambled!")) + + +/** + * ### Enter Matrix + * Finds any current avatars from this chair - or generates a new one + * + * New avatars cost 1 attempt, and this will eject if there's none left + * + * Connects the mind to the avatar if everything is ok + */ +/obj/machinery/netpod/proc/enter_matrix() + var/mob/living/carbon/human/neo = occupant + if(!ishuman(neo) || neo.stat == DEAD || isnull(neo.mind)) + balloon_alert(neo, "invalid occupant.") + return + + var/obj/machinery/quantum_server/server = find_server() + if(isnull(server)) + balloon_alert(neo, "no server connected!") + return + + var/datum/lazy_template/virtual_domain/generated_domain = server.generated_domain + if(isnull(generated_domain) || !server.is_ready) + balloon_alert(neo, "nothing loaded!") + return + + var/mob/living/carbon/current_avatar = avatar_ref?.resolve() + if(isnull(current_avatar) || current_avatar.stat != CONSCIOUS) // We need a viable avatar + current_avatar = server.start_new_connection(neo, netsuit) + if(isnull(current_avatar)) + balloon_alert(neo, "out of bandwidth!") + return + + neo.set_static_vision(2 SECONDS) + add_healing(occupant) + + if(!validate_entry(neo, current_avatar)) + open_machine() + return + + current_avatar.AddComponent( \ + /datum/component/avatar_connection, \ + old_mind = neo.mind, \ + old_body = neo, \ + server = server, \ + pod = src, \ + help_text = generated_domain.help_text, \ + ) + + connected = TRUE + + +/// Finds a server and sets the server_ref +/obj/machinery/netpod/proc/find_server() + var/obj/machinery/quantum_server/server = server_ref?.resolve() + if(server) + return server + + server = locate(/obj/machinery/quantum_server) in oview(4, src) + if(isnull(server)) + return + + server_ref = WEAKREF(server) + RegisterSignal(server, COMSIG_MACHINERY_REFRESH_PARTS, PROC_REF(on_server_upgraded)) + RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE, PROC_REF(on_domain_complete)) + RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_SCRUBBED, PROC_REF(on_domain_scrubbed)) + + return server + + +/// Severs the connection with the current avatar +/obj/machinery/netpod/proc/sever_connection() + if(isnull(occupant) || !connected) + return + + SEND_SIGNAL(src, COMSIG_BITRUNNER_NETPOD_SEVER) + + +/// Checks for cases to eject/fail connecting an avatar +/obj/machinery/netpod/proc/validate_entry(mob/living/neo, mob/living/avatar) + if(!do_after(neo, 2 SECONDS, src)) + return FALSE + + // Very invalid + if(QDELETED(neo) || QDELETED(avatar) || QDELETED(src) || !is_operational) + return FALSE + + // Invalid + if(occupant != neo || isnull(neo.mind) || neo.stat > SOFT_CRIT || avatar.stat == DEAD) + return FALSE + + return TRUE diff --git a/code/modules/bitrunning/objects/landmarks.dm b/code/modules/bitrunning/objects/landmarks.dm index 3b38493edfffa..ea55b96979edd 100644 --- a/code/modules/bitrunning/objects/landmarks.dm +++ b/code/modules/bitrunning/objects/landmarks.dm @@ -12,6 +12,11 @@ name = "Bitrunning hololadder spawn" icon_state = "hololadder" +/// A permanent exit for the domain +/obj/effect/landmark/bitrunning/permanent_exit + name = "Bitrunning permanent exit" + icon_state = "perm_exit" + /// Where the crates need to be taken /obj/effect/landmark/bitrunning/cache_goal_turf name = "Bitrunning goal turf" diff --git a/code/modules/bitrunning/objects/loot_box.dm b/code/modules/bitrunning/objects/loot_box.dm index 39209c33d97f9..200e0b259fbda 100644 --- a/code/modules/bitrunning/objects/loot_box.dm +++ b/code/modules/bitrunning/objects/loot_box.dm @@ -8,6 +8,7 @@ icon_locked = "bitrunning+l" icon_closed = "bitrunning" icon_broken = "bitrunning+b" + icon_open = "bitrunning" /obj/item/storage/lockbox/bitrunning/encrypted name = "encrypted curiosity" diff --git a/code/modules/bitrunning/objects/netpod.dm b/code/modules/bitrunning/objects/netpod.dm deleted file mode 100644 index 1d4e905d6e184..0000000000000 --- a/code/modules/bitrunning/objects/netpod.dm +++ /dev/null @@ -1,490 +0,0 @@ -#define BASE_DISCONNECT_DAMAGE 40 - -/obj/machinery/netpod - name = "netpod" - - base_icon_state = "netpod" - circuit = /obj/item/circuitboard/machine/netpod - desc = "A link to the netverse. It has an assortment of cables to connect yourself to a virtual domain." - icon = 'icons/obj/machines/bitrunning.dmi' - icon_state = "netpod" - max_integrity = 300 - obj_flags = BLOCKS_CONSTRUCTION - state_open = TRUE - interaction_flags_mouse_drop = NEED_HANDS | NEED_DEXTERITY - - /// Whether we have an ongoing connection - var/connected = FALSE - /// A player selected outfit by clicking the netpod - var/datum/outfit/netsuit = /datum/outfit/job/bitrunner - /// Holds this to see if it needs to generate a new one - var/datum/weakref/avatar_ref - /// The linked quantum server - var/datum/weakref/server_ref - /// The amount of brain damage done from force disconnects - var/disconnect_damage - /// Static list of outfits to select from - var/list/cached_outfits = list() - -/obj/machinery/netpod/post_machine_initialize() - . = ..() - - disconnect_damage = BASE_DISCONNECT_DAMAGE - find_server() - - RegisterSignal(src, COMSIG_ATOM_TAKE_DAMAGE, PROC_REF(on_damage_taken)) - RegisterSignal(src, COMSIG_MACHINERY_POWER_LOST, PROC_REF(on_power_loss)) - RegisterSignals(src, list(COMSIG_QDELETING, COMSIG_MACHINERY_BROKEN),PROC_REF(on_broken)) - - register_context() - update_appearance() - -/obj/machinery/netpod/Destroy() - . = ..() - - QDEL_LIST(cached_outfits) - -/obj/machinery/netpod/examine(mob/user) - . = ..() - - if(isnull(server_ref?.resolve())) - . += span_infoplain("It's not connected to anything.") - . += span_infoplain("Netpods must be built within 4 tiles of a server.") - return - - if(!isobserver(user)) - . += span_infoplain("Drag yourself into the pod to engage the link.") - . += span_infoplain("It has limited resuscitation capabilities. Remaining in the pod can heal some injuries.") - . += span_infoplain("It has a security system that will alert the occupant if it is tampered with.") - - if(isnull(occupant)) - . += span_infoplain("It's currently unoccupied.") - return - - . += span_infoplain("It's currently occupied by [occupant].") - - if(isobserver(user)) - . += span_notice("As an observer, you can click this netpod to jump to its avatar.") - return - - . += span_notice("It can be pried open with a crowbar, but its safety mechanisms will alert the occupant.") - - - -/obj/machinery/netpod/add_context(atom/source, list/context, obj/item/held_item, mob/user) - . = ..() - - if(isnull(held_item)) - context[SCREENTIP_CONTEXT_LMB] = "Select Outfit" - return CONTEXTUAL_SCREENTIP_SET - - if(istype(held_item, /obj/item/crowbar) && occupant) - context[SCREENTIP_CONTEXT_LMB] = "Pry Open" - return CONTEXTUAL_SCREENTIP_SET - - -/obj/machinery/netpod/update_icon_state() - if(!is_operational) - icon_state = base_icon_state - return ..() - - if(state_open) - icon_state = base_icon_state + "_open_active" - return ..() - - if(panel_open) - icon_state = base_icon_state + "_panel" - return ..() - - icon_state = base_icon_state + "_closed" - if(occupant) - icon_state += "_active" - - return ..() - -/obj/machinery/netpod/mouse_drop_receive(mob/target, mob/user, params) - var/mob/living/carbon/player = user - - if(!iscarbon(player) || !is_operational || !state_open || player.buckled) - return - - close_machine(target) - -/obj/machinery/netpod/crowbar_act(mob/living/user, obj/item/tool) - if(user.combat_mode) - attack_hand(user) - return ITEM_INTERACT_SUCCESS - - if(default_pry_open(tool, user) || default_deconstruction_crowbar(tool)) - return ITEM_INTERACT_SUCCESS - -/obj/machinery/netpod/screwdriver_act(mob/living/user, obj/item/tool) - if(occupant) - balloon_alert(user, "in use!") - return ITEM_INTERACT_SUCCESS - - if(state_open) - balloon_alert(user, "close first.") - return ITEM_INTERACT_SUCCESS - - if(default_deconstruction_screwdriver(user, "[base_icon_state]_panel", "[base_icon_state]_closed", tool)) - update_appearance() // sometimes icon doesnt properly update during flick() - ui_close(user) - return ITEM_INTERACT_SUCCESS - -/obj/machinery/netpod/attack_hand(mob/living/user, list/modifiers) - . = ..() - if(!state_open && user == occupant) - container_resist_act(user) - -/obj/machinery/netpod/Exited(atom/movable/gone, direction) - . = ..() - if(!state_open && gone == occupant) - container_resist_act(gone) - -/obj/machinery/netpod/relaymove(mob/living/user, direction) - if(!state_open) - container_resist_act(user) - -/obj/machinery/netpod/container_resist_act(mob/living/user) - user.visible_message(span_notice("[occupant] emerges from [src]!"), - span_notice("You climb out of [src]!"), - span_notice("With a hiss, you hear a machine opening.")) - open_machine() - -/obj/machinery/netpod/open_machine(drop = TRUE, density_to_set = FALSE) - playsound(src, 'sound/machines/tramopen.ogg', 60, TRUE, frequency = 65000) - flick("[base_icon_state]_opening", src) - SEND_SIGNAL(src, COMSIG_BITRUNNER_NETPOD_OPENED) - update_use_power(IDLE_POWER_USE) - - return ..() - -/obj/machinery/netpod/close_machine(mob/user, density_to_set = TRUE) - if(!state_open || panel_open || !is_operational || !iscarbon(user)) - return - - playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000) - flick("[base_icon_state]_closing", src) - ..() - - enter_matrix() - -/obj/machinery/netpod/default_pry_open(obj/item/crowbar, mob/living/pryer) - if(isnull(occupant) || !iscarbon(occupant)) - if(!state_open) - if(panel_open) - return FALSE - open_machine() - else - shut_pod() - - return TRUE - - pryer.visible_message( - span_danger("[pryer] starts prying open [src]!"), - span_notice("You start to pry open [src]."), - span_notice("You hear loud prying on metal.") - ) - playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) - - SEND_SIGNAL(src, COMSIG_BITRUNNER_CROWBAR_ALERT, pryer) - - if(do_after(pryer, 15 SECONDS, src)) - if(!state_open) - sever_connection() - open_machine() - - return TRUE - -/obj/machinery/netpod/ui_interact(mob/user, datum/tgui/ui) - if(!is_operational || occupant) - return - - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "NetpodOutfits") - ui.set_autoupdate(FALSE) - ui.open() - -/obj/machinery/netpod/ui_data() - var/list/data = list() - - data["netsuit"] = netsuit - return data - -/obj/machinery/netpod/ui_static_data() - var/list/data = list() - - if(!length(cached_outfits)) - cached_outfits += make_outfit_collection("Jobs", subtypesof(/datum/outfit/job)) - - data["collections"] = cached_outfits - - return data - -/obj/machinery/netpod/ui_act(action, params) - . = ..() - if(.) - return TRUE - switch(action) - if("select_outfit") - var/datum/outfit/new_suit = resolve_outfit(params["outfit"]) - if(new_suit) - netsuit = new_suit - return TRUE - - return FALSE - -/obj/machinery/netpod/attack_ghost(mob/dead/observer/our_observer) - var/our_target = avatar_ref?.resolve() - if(isnull(our_target) || !our_observer.orbit(our_target)) - return ..() - -/// Puts the occupant in netpod stasis, basically short-circuiting environmental conditions -/obj/machinery/netpod/proc/add_healing(mob/living/target) - if(target != occupant) - return - - target.AddComponent(/datum/component/netpod_healing, pod = src) - target.playsound_local(src, 'sound/effects/submerge.ogg', 20, vary = TRUE) - target.extinguish_mob() - update_use_power(ACTIVE_POWER_USE) - -/// Disconnects the occupant after a certain time so they aren't just hibernating in netpod stasis. A balance change -/obj/machinery/netpod/proc/auto_disconnect() - if(isnull(occupant) || state_open || connected) - return - - var/mob/player = occupant - player.playsound_local(src, 'sound/effects/splash.ogg', 60, TRUE) - to_chat(player, span_notice("The machine disconnects itself and begins to drain.")) - open_machine() - -/// Handles occupant post-disconnection effects like damage, sounds, etc -/obj/machinery/netpod/proc/disconnect_occupant(cause_damage = FALSE) - connected = FALSE - - var/mob/living/mob_occupant = occupant - if(isnull(occupant) || mob_occupant.stat == DEAD) - open_machine() - return - - mob_occupant.playsound_local(src, 'sound/magic/blink.ogg', 25, TRUE) - mob_occupant.set_static_vision(2 SECONDS) - mob_occupant.set_temp_blindness(1 SECONDS) - mob_occupant.Paralyze(2 SECONDS) - - if(!is_operational) - open_machine() - return - - var/heal_time = 1 - if(mob_occupant.health < mob_occupant.maxHealth) - heal_time = (mob_occupant.stat + 2) * 5 - addtimer(CALLBACK(src, PROC_REF(auto_disconnect)), heal_time SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_DELETE_ME) - - if(!cause_damage) - return - - mob_occupant.flash_act(override_blindness_check = TRUE, visual = TRUE) - mob_occupant.adjustOrganLoss(ORGAN_SLOT_BRAIN, disconnect_damage) - INVOKE_ASYNC(mob_occupant, TYPE_PROC_REF(/mob/living, emote), "scream") - to_chat(mob_occupant, span_danger("You've been forcefully disconnected from your avatar! Your thoughts feel scrambled!")) - -/** - * ### Enter Matrix - * Finds any current avatars from this chair - or generates a new one - * - * New avatars cost 1 attempt, and this will eject if there's none left - * - * Connects the mind to the avatar if everything is ok - */ -/obj/machinery/netpod/proc/enter_matrix() - var/mob/living/carbon/human/neo = occupant - if(!ishuman(neo) || neo.stat == DEAD || isnull(neo.mind)) - balloon_alert(neo, "invalid occupant.") - return - - var/obj/machinery/quantum_server/server = find_server() - if(isnull(server)) - balloon_alert(neo, "no server connected!") - return - - var/datum/lazy_template/virtual_domain/generated_domain = server.generated_domain - if(isnull(generated_domain) || !server.is_ready) - balloon_alert(neo, "nothing loaded!") - return - - var/mob/living/carbon/current_avatar = avatar_ref?.resolve() - if(isnull(current_avatar) || current_avatar.stat != CONSCIOUS) // We need a viable avatar - var/obj/structure/hololadder/wayout = server.generate_hololadder() - if(isnull(wayout)) - balloon_alert(neo, "out of bandwidth!") - return - current_avatar = server.generate_avatar(wayout, netsuit) - avatar_ref = WEAKREF(current_avatar) - server.stock_gear(current_avatar, neo, generated_domain) - - neo.set_static_vision(3 SECONDS) - add_healing(occupant) - - if(!validate_entry(neo, current_avatar)) - open_machine() - return - - current_avatar.AddComponent( \ - /datum/component/avatar_connection, \ - old_mind = neo.mind, \ - old_body = neo, \ - server = server, \ - pod = src, \ - help_text = generated_domain.help_text, \ - ) - - connected = TRUE - -/// Finds a server and sets the server_ref -/obj/machinery/netpod/proc/find_server() - var/obj/machinery/quantum_server/server = server_ref?.resolve() - if(server) - return server - - server = locate(/obj/machinery/quantum_server) in oview(4, src) - if(isnull(server)) - return - - server_ref = WEAKREF(server) - RegisterSignal(server, COMSIG_MACHINERY_REFRESH_PARTS, PROC_REF(on_server_upgraded)) - RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE, PROC_REF(on_domain_complete)) - RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_SCRUBBED, PROC_REF(on_domain_scrubbed)) - - return server - -/// Creates a list of outfit entries for the UI. -/obj/machinery/netpod/proc/make_outfit_collection(identifier, list/outfit_list) - var/list/collection = list( - "name" = identifier, - "outfits" = list() - ) - - for(var/datum/outfit/outfit as anything in outfit_list) - var/outfit_name = initial(outfit.name) - if(findtext(outfit_name, "(") != 0 || findtext(outfit_name, "-") != 0) // No special variants please - continue - - collection["outfits"] += list(list("path" = outfit, "name" = outfit_name)) - - return list(collection) - -/// Machine has been broken - handles signals and reverting sprites -/obj/machinery/netpod/proc/on_broken(datum/source) - SIGNAL_HANDLER - - sever_connection() - -/// Checks the integrity, alerts occupants -/obj/machinery/netpod/proc/on_damage_taken(datum/source, damage_amount) - SIGNAL_HANDLER - - if(isnull(occupant) || !connected) - return - - var/total = max_integrity - damage_amount - var/integrity = (atom_integrity / total) * 100 - if(integrity > 50) - return - - SEND_SIGNAL(src, COMSIG_BITRUNNER_NETPOD_INTEGRITY) - -/// Puts points on the current occupant's card account -/obj/machinery/netpod/proc/on_domain_complete(datum/source, atom/movable/crate, reward_points) - SIGNAL_HANDLER - - if(isnull(occupant) || !connected) - return - - var/mob/living/player = occupant - - var/datum/bank_account/account = player.get_bank_account() - if(isnull(account)) - return - - account.bitrunning_points += reward_points * 100 - -/// The domain has been fully purged, so we should double check our avatar is deleted -/obj/machinery/netpod/proc/on_domain_scrubbed(datum/source) - SIGNAL_HANDLER - - var/mob/avatar = avatar_ref?.resolve() - if(isnull(avatar)) - return - - QDEL_NULL(avatar) - -/// Boots out anyone in the machine && opens it -/obj/machinery/netpod/proc/on_power_loss(datum/source) - SIGNAL_HANDLER - - if(state_open) - return - - if(isnull(occupant) || !connected) - connected = FALSE - open_machine() - return - - sever_connection() - -/// When the server is upgraded, drops brain damage a little -/obj/machinery/netpod/proc/on_server_upgraded(obj/machinery/quantum_server/source) - SIGNAL_HANDLER - - disconnect_damage = BASE_DISCONNECT_DAMAGE * (1 - source.servo_bonus) - -/// Resolves a path to an outfit. -/obj/machinery/netpod/proc/resolve_outfit(text) - var/path = text2path(text) - if(!ispath(path, /datum/outfit)) - return - - for(var/wardrobe in cached_outfits) - for(var/outfit in wardrobe["outfits"]) - if(path == outfit["path"]) - return path - - message_admins("[usr]:[usr.ckey] attempted to select an unavailable outfit from a netpod") - return - -/// Severs the connection with the current avatar -/obj/machinery/netpod/proc/sever_connection() - if(isnull(occupant) || !connected) - return - - SEND_SIGNAL(src, COMSIG_BITRUNNER_NETPOD_SEVER) - -/// Closes the machine without shoving in an occupant -/obj/machinery/netpod/proc/shut_pod() - state_open = FALSE - playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000) - flick("[base_icon_state]_closing", src) - set_density(TRUE) - - update_appearance() - -/// Checks for cases to eject/fail connecting an avatar -/obj/machinery/netpod/proc/validate_entry(mob/living/neo, mob/living/avatar) - if(!do_after(neo, 2 SECONDS, src)) - return FALSE - - // Very invalid - if(QDELETED(neo) || QDELETED(avatar) || QDELETED(src) || !is_operational) - return FALSE - - // Invalid - if(occupant != neo || isnull(neo.mind) || neo.stat > SOFT_CRIT || avatar.stat == DEAD) - return FALSE - - return TRUE - -#undef BASE_DISCONNECT_DAMAGE diff --git a/code/modules/bitrunning/outfits.dm b/code/modules/bitrunning/outfits.dm index 41a65b228ff44..c0bb01ebc06e5 100644 --- a/code/modules/bitrunning/outfits.dm +++ b/code/modules/bitrunning/outfits.dm @@ -10,12 +10,62 @@ suit = /obj/item/clothing/suit/jacket/trenchcoat id = /obj/item/card/id/advanced + /datum/outfit/echolocator/post_equip(mob/living/carbon/human/user, visualsOnly) . = ..() user.psykerize() + /datum/outfit/bitductor name = "Bitrunning Abductor" uniform = /obj/item/clothing/under/abductor gloves = /obj/item/clothing/gloves/fingerless shoes = /obj/item/clothing/shoes/jackboots + + +/datum/outfit/beachbum_combat + name = "Beachbum: Island Combat" + id = /obj/item/card/id/advanced + l_pocket = null + r_pocket = null + shoes = /obj/item/clothing/shoes/sandal + uniform = /obj/item/clothing/under/pants/jeans + /// Available ranged weapons + var/list/ranged_weaps = list( + /obj/item/gun/ballistic/automatic/pistol, + /obj/item/gun/ballistic/rifle/boltaction, + /obj/item/gun/ballistic/automatic/mini_uzi, + /obj/item/gun/ballistic/automatic/pistol/deagle, + /obj/item/gun/ballistic/rocketlauncher/unrestricted, + /obj/item/gun/ballistic/automatic/ar, + + ) + /// Corresponding ammo + var/list/corresponding_ammo = list( + /obj/item/ammo_box/magazine/m9mm, + /obj/item/ammo_box/strilka310, + /obj/item/ammo_box/magazine/uzim9mm, + /obj/item/ammo_box/magazine/m50, + /obj/item/food/pizzaslice/dank, // more silly, less destructive + /obj/item/ammo_box/magazine/m223, + ) + + +/datum/outfit/beachbum_combat/post_equip(mob/living/carbon/human/bum, visualsOnly) + . = ..() + + var/choice = rand(1, length(ranged_weaps)) + var/weapon = ranged_weaps[choice] + bum.put_in_active_hand(new weapon) + + var/ammo = corresponding_ammo[choice] + var/obj/item/ammo1 = new ammo + var/obj/item/ammo2 = new ammo + + if(!bum.equip_to_slot_if_possible(new ammo, ITEM_SLOT_LPOCKET)) + ammo1.forceMove(get_turf(bum)) + if(!bum.equip_to_slot_if_possible(new ammo, ITEM_SLOT_RPOCKET)) + ammo2.forceMove(get_turf(bum)) + + if(prob(50)) + bum.equip_to_slot_if_possible(new /obj/item/clothing/glasses/sunglasses, ITEM_SLOT_EYES) diff --git a/code/modules/bitrunning/server/_parent.dm b/code/modules/bitrunning/server/_parent.dm index 8a8d2eed913de..541d36ad5d72c 100644 --- a/code/modules/bitrunning/server/_parent.dm +++ b/code/modules/bitrunning/server/_parent.dm @@ -77,12 +77,18 @@ . += span_infoplain("Can be resource intensive to run. Ensure adequate power supply.") + var/upgraded = FALSE if(capacitor_coefficient < 1) . += span_infoplain("- Its coolant capacity reduces cooldown time by [(1 - capacitor_coefficient) * 100]%.") + upgraded = TRUE if(servo_bonus > 0.2) . += span_infoplain("- Its manipulation potential is increasing rewards by [servo_bonus]x.") . += span_infoplain("- Injury from unsafe ejection reduced [servo_bonus * 100]%.") + upgraded = TRUE + + if(!upgraded) + . += span_notice("Its output is suboptimal. Improved components will grant domain information, reduce cooldowns and increase rewards.") if(!is_ready) . += span_notice("It is currently cooling down. Give it a few moments.") diff --git a/code/modules/bitrunning/server/loot.dm b/code/modules/bitrunning/server/loot.dm index 83d26daa6075a..0e6ff30cd246a 100644 --- a/code/modules/bitrunning/server/loot.dm +++ b/code/modules/bitrunning/server/loot.dm @@ -4,6 +4,7 @@ #define GRADE_A "A" #define GRADE_S "S" + /// Handles calculating rewards based on number of players, parts, threats, etc /obj/machinery/quantum_server/proc/calculate_rewards() var/rewards_base = 0.8 @@ -20,6 +21,7 @@ return rewards_base + /// Handles spawning the (new) crate and deleting the former /obj/machinery/quantum_server/proc/generate_loot(obj/cache, obj/machinery/byteforge/chosen_forge) SSblackbox.record_feedback("tally", "bitrunning_domain_primary_completed", 1, generated_domain.key) @@ -55,6 +57,8 @@ chosen_forge.start_to_spawn(reward_cache) return TRUE + +/// Builds secondary loot if the achievements were met /obj/machinery/quantum_server/proc/generate_secondary_loot(obj/curiosity, obj/machinery/byteforge/chosen_forge) SSblackbox.record_feedback("tally", "bitrunning_domain_secondary_completed", 1, generated_domain.key) spark_at_location(curiosity) // abracadabra! @@ -65,6 +69,7 @@ chosen_forge.start_to_spawn(reward_curiosity) return TRUE + /// Returns the markdown text containing domain completion information /obj/machinery/quantum_server/proc/get_completion_certificate(time_difference, grade) var/base_points = generated_domain.reward_points @@ -126,6 +131,7 @@ return generated_domain.difficulty >= BITRUNNER_DIFFICULTY_MEDIUM && (grade in passing_grades) + /// Grades the player's run based on several factors /obj/machinery/quantum_server/proc/grade_completion(completion_time) var/score = length(spawned_threat_refs) * 5 diff --git a/code/modules/bitrunning/server/map_handling.dm b/code/modules/bitrunning/server/map_handling.dm index 5bfa7813910b6..f98332f7e8d8f 100644 --- a/code/modules/bitrunning/server/map_handling.dm +++ b/code/modules/bitrunning/server/map_handling.dm @@ -24,6 +24,7 @@ reset() + /// Links all the loading processes together - does validation for booting a map /obj/machinery/quantum_server/proc/cold_boot_map(map_key) if(!is_ready) @@ -69,8 +70,15 @@ if(broadcasting) start_broadcasting_network(BITRUNNER_CAMERA_NET) + if(generated_domain.announce_to_ghosts) + notify_ghosts("Bitrunners have loaded a domain that offers ghost interactions. Check the spawners menu for more information.", + src, + "Matrix Glitch", + ) + return TRUE + /// Initializes a new domain if the given key is valid and the user has enough points /obj/machinery/quantum_server/proc/load_domain(map_key) for(var/datum/lazy_template/virtual_domain/available in SSbitrunning.all_domains) @@ -82,6 +90,7 @@ return FALSE + /// Loads in necessary map items like hololadder spawns, caches, etc /obj/machinery/quantum_server/proc/load_map_items() var/turf/goal_turfs = list() @@ -116,6 +125,15 @@ var/turf/signaler_turf = get_turf(thing) signaler_turf.AddComponent(/datum/component/bitrunning_points, generated_domain) qdel(thing) + continue + + if(istype(thing, /obj/effect/landmark/bitrunning/permanent_exit)) + var/turf/tile = get_turf(thing) + exit_turfs += tile + qdel(thing) + + new /obj/structure/hololadder(tile) + if(!length(exit_turfs)) CRASH("Failed to find exit turfs on generated domain.") @@ -134,6 +152,7 @@ return TRUE + /// Stops the current virtual domain and disconnects all users /obj/machinery/quantum_server/proc/reset(fast = FALSE) is_ready = FALSE @@ -155,6 +174,7 @@ stop_broadcasting_network(BITRUNNER_CAMERA_NET) + /// Tries to clean up everything in the domain /obj/machinery/quantum_server/proc/scrub_vdom() sever_connections() /// just in case someone's connected diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm index 34a870a3426d5..dabac8ae62dd9 100644 --- a/code/modules/bitrunning/server/obj_generation.dm +++ b/code/modules/bitrunning/server/obj_generation.dm @@ -15,6 +15,7 @@ new /obj/structure/closet/crate/secure/bitrunning/encrypted(chosen_turf) return TRUE + /// Attempts to spawn a lootbox /obj/machinery/quantum_server/proc/attempt_spawn_curiosity(list/possible_turfs) if(!length(possible_turfs)) // Out of turfs to place a curiosity @@ -35,9 +36,10 @@ new /obj/item/storage/lockbox/bitrunning/encrypted(chosen_turf) return chosen_turf + /// Generates a new avatar for the bitrunner. -/obj/machinery/quantum_server/proc/generate_avatar(obj/structure/hololadder/wayout, datum/outfit/netsuit) - var/mob/living/carbon/human/avatar = new(wayout.loc) +/obj/machinery/quantum_server/proc/generate_avatar(turf/destination, datum/outfit/netsuit) + var/mob/living/carbon/human/avatar = new(destination) var/outfit_path = generated_domain.forced_outfit || netsuit var/datum/outfit/to_wear = new outfit_path() @@ -61,8 +63,9 @@ if(istype(hat)) hat.set_armor(/datum/armor/none) - for(var/obj/thing in avatar.held_items) - qdel(thing) + if(!generated_domain.forced_outfit) + for(var/obj/thing in avatar.held_items) + qdel(thing) var/obj/item/storage/backpack/bag = avatar.back if(istype(bag)) @@ -88,32 +91,9 @@ network = BITRUNNER_CAMERA_NET, \ emp_proof = TRUE, \ ) - return avatar - -/// Generates a new hololadder for the bitrunner. Effectively a respawn attempt. -/obj/machinery/quantum_server/proc/generate_hololadder() - if(!length(exit_turfs)) - return - - if(retries_spent >= length(exit_turfs)) - return - var/turf/destination - for(var/turf/dest_turf in exit_turfs) - if(!locate(/obj/structure/hololadder) in dest_turf) - destination = dest_turf - break - - if(isnull(destination)) - return - - var/obj/structure/hololadder/wayout = new(destination, src) - if(isnull(wayout)) - return - - retries_spent += 1 + return avatar - return wayout /// Loads in any mob segments of the map /obj/machinery/quantum_server/proc/load_mob_segments() @@ -142,6 +122,7 @@ return TRUE + /// Scans over neo's contents for bitrunning tech disks. Loads the items or abilities onto the avatar. /obj/machinery/quantum_server/proc/stock_gear(mob/living/carbon/human/avatar, mob/living/carbon/human/neo, datum/lazy_template/virtual_domain/generated_domain) var/domain_forbids_items = generated_domain.forbids_disk_items diff --git a/code/modules/bitrunning/server/signal_handlers.dm b/code/modules/bitrunning/server/signal_handlers.dm index 0e5e949e8bb51..f5d2840143e16 100644 --- a/code/modules/bitrunning/server/signal_handlers.dm +++ b/code/modules/bitrunning/server/signal_handlers.dm @@ -4,12 +4,14 @@ sever_connections() + /// Whenever a corpse spawner makes a new corpse, add it to the list of potential mutations /obj/machinery/quantum_server/proc/on_corpse_spawned(datum/source, mob/living/corpse) SIGNAL_HANDLER mutation_candidate_refs.Add(WEAKREF(corpse)) + /// Being qdeleted - make sure the circuit and connected mobs go with it /obj/machinery/quantum_server/proc/on_delete(datum/source) SIGNAL_HANDLER @@ -26,6 +28,7 @@ if(circuit) qdel(circuit) + /// Whenever something enters the send tiles, check if it's a loot crate. If so, alert players. /obj/machinery/quantum_server/proc/on_goal_turf_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) SIGNAL_HANDLER @@ -51,6 +54,7 @@ generate_secondary_loot(arrived, chosen_forge, generated_domain) return + /// Handles examining the server. Shows cooldown time and efficiency. /obj/machinery/quantum_server/proc/on_goal_turf_examined(datum/source, mob/examiner, list/examine_text) SIGNAL_HANDLER @@ -58,6 +62,7 @@ examine_text += span_info("Beneath your gaze, the floor pulses subtly with streams of encoded data.") examine_text += span_info("It seems to be part of the location designated for retrieving encrypted payloads.") + /// Scans over the inbound created_atoms from lazy templates /obj/machinery/quantum_server/proc/on_template_loaded(datum/lazy_template/source, list/created_atoms) SIGNAL_HANDLER @@ -98,6 +103,7 @@ /// Just in case there's any special handling for the domain generated_domain.setup_domain(created_atoms) + /// Handles when cybercops are summoned into the area or ghosts click a ghost role spawner /obj/machinery/quantum_server/proc/on_threat_created(datum/source, mob/living/threat) SIGNAL_HANDLER diff --git a/code/modules/bitrunning/server/threats.dm b/code/modules/bitrunning/server/threats.dm index 25a891c03b24b..28d91aa4b3714 100644 --- a/code/modules/bitrunning/server/threats.dm +++ b/code/modules/bitrunning/server/threats.dm @@ -4,6 +4,7 @@ SEND_SIGNAL(src, COMSIG_BITRUNNER_THREAT_CREATED) threat.AddComponent(/datum/component/virtual_entity, src) + /// Choses which antagonist role is spawned based on threat /obj/machinery/quantum_server/proc/get_antagonist_role() var/list/available = list() @@ -19,6 +20,7 @@ return chosen + /// Selects a target to mutate. Gives two attempts, then crashes if it fails. /obj/machinery/quantum_server/proc/get_mutation_target() var/datum/weakref/target_ref = pick(mutation_candidate_refs) @@ -35,6 +37,7 @@ resolved = target_ref.resolve() return resolved + /// Finds any mobs with minds in the zones and gives them the bad news /obj/machinery/quantum_server/proc/notify_spawned_threats() for(var/datum/weakref/baddie_ref as anything in spawned_threat_refs) @@ -52,10 +55,12 @@ to_chat(baddie, span_userdanger("You have been flagged for deletion! Thank you for your service.")) + /// Removes a specific threat - used when station spawning /obj/machinery/quantum_server/proc/remove_threat(mob/living/threat) spawned_threat_refs.Remove(WEAKREF(threat)) + /// Selects the role and waits for a ghost orbiter /obj/machinery/quantum_server/proc/setup_glitch(datum/antagonist/bitrunning_glitch/forced_role) if(!validate_mutation_candidates()) @@ -83,6 +88,7 @@ spawn_glitch(chosen_role, mutation_target, chosen_one) return mutation_target + /// Orbit poll has concluded - spawn the antag /obj/machinery/quantum_server/proc/spawn_glitch(datum/antagonist/bitrunning_glitch/chosen_role, mob/living/mutation_target, mob/dead/observer/ghost) if(QDELETED(mutation_target)) @@ -121,6 +127,7 @@ add_threats(new_mob) + /// Oh boy - transports the antag station side /obj/machinery/quantum_server/proc/station_spawn(mob/living/antag, obj/machinery/byteforge/chosen_forge) antag.balloon_alert(antag, "scanning...") @@ -165,6 +172,7 @@ do_teleport(antag, get_turf(chosen_forge), forced = TRUE, asoundin = 'sound/magic/ethereal_enter.ogg', asoundout = 'sound/magic/ethereal_exit.ogg', channel = TELEPORT_CHANNEL_QUANTUM) + /// Removes any invalid candidates from the list /obj/machinery/quantum_server/proc/validate_mutation_candidates() for(var/datum/weakref/creature_ref as anything in mutation_candidate_refs) diff --git a/code/modules/bitrunning/server/util.dm b/code/modules/bitrunning/server/util.dm index 6b5352bde6cb1..ab267a34cd330 100644 --- a/code/modules/bitrunning/server/util.dm +++ b/code/modules/bitrunning/server/util.dm @@ -1,11 +1,13 @@ #define MAX_DISTANCE 4 // How far crates can spawn from the server + /// Resets the cooldown state and updates icons /obj/machinery/quantum_server/proc/cool_off() is_ready = TRUE update_appearance() radio.talk_into(src, "Thermal systems within operational parameters. Proceeding to domain configuration.", RADIO_CHANNEL_SUPPLY) + /// If there are hosted minds, attempts to get a list of their current virtual bodies w/ vitals /obj/machinery/quantum_server/proc/get_avatar_data() var/list/hosted_avatars = list() @@ -31,6 +33,49 @@ return hosted_avatars + +/// I grab the atom here so I can signal it / manipulate spawners etc +/obj/machinery/quantum_server/proc/get_avatar_destination() as /atom + // Branch A: Custom spawns + if(length(generated_domain.custom_spawns)) + var/atom/valid_spawner + + while(isnull(valid_spawner)) + var/atom/chosen = pick(generated_domain.custom_spawns) + if(QDELETED(chosen)) + generated_domain.custom_spawns -= chosen + continue + + valid_spawner = chosen + break + + return valid_spawner + + // Branch B: Hololadders + if(!length(exit_turfs)) + return + + if(retries_spent >= length(exit_turfs)) + return + + var/turf/exit_tile + for(var/turf/dest_turf in exit_turfs) + if(!locate(/obj/structure/hololadder) in dest_turf) + exit_tile = dest_turf + break + + if(isnull(exit_tile)) + return + + var/obj/structure/hololadder/wayout = new(exit_tile, src) + if(isnull(wayout)) + return + + retries_spent += 1 + + return wayout + + /// Locates any turfs with forges on them, returns a random one /obj/machinery/quantum_server/proc/get_random_nearby_forge() var/list/nearby_forges = list() @@ -40,6 +85,7 @@ return pick(nearby_forges) + /// Gets a random available domain given the current points. /obj/machinery/quantum_server/proc/get_random_domain_id() if(points < 1) @@ -85,6 +131,7 @@ SEND_SIGNAL(src, COMSIG_BITRUNNER_QSRV_SEVER) + /// Do some magic teleport sparks /obj/machinery/quantum_server/proc/spark_at_location(obj/cache) playsound(cache, 'sound/magic/blink.ogg', 50, vary = TRUE) @@ -92,16 +139,33 @@ sparks.set_up(5, location = get_turf(cache)) sparks.start() -/// Returns a turf if it's not dense, else will find a neighbor. -/obj/machinery/quantum_server/proc/validate_turf(turf/chosen_turf) - if(!chosen_turf.is_blocked_turf()) - return chosen_turf - for(var/turf/tile in get_adjacent_open_turfs(chosen_turf)) - if(!tile.is_blocked_turf()) - return chosen_turf +/// Starts building a new avatar for the player. +/// Called by netpods when they don't have a current avatar. +/// This is a procedural proc which links several others together. +/obj/machinery/quantum_server/proc/start_new_connection(mob/living/carbon/human/neo, datum/outfit/netsuit) as /mob/living/carbon/human + var/atom/entry_atom = get_avatar_destination() + if(isnull(entry_atom)) + return + + var/mob/living/carbon/new_avatar = generate_avatar(get_turf(entry_atom), netsuit) + stock_gear(new_avatar, neo, generated_domain) + + // Cleanup for domains with one time use custom spawns + if(!length(generated_domain.custom_spawns)) + return new_avatar + + // If we're spawning from some other fuckery, no need for this + if(istype(entry_atom, /obj/effect/mob_spawn/ghost_role/human/virtual_domain)) + var/obj/effect/mob_spawn/ghost_role/human/virtual_domain/spawner = entry_atom + spawner.artificial_spawn(new_avatar) + + if(!generated_domain.keep_custom_spawns) + generated_domain.custom_spawns -= entry_atom + qdel(entry_atom) + + return new_avatar -#undef MAX_DISTANCE /// Toggles broadcast on and off /obj/machinery/quantum_server/proc/toggle_broadcast() @@ -116,3 +180,16 @@ // And we only flip TVs when there's a domain, because otherwise there's no cams to watch set_network_broadcast_status(BITRUNNER_CAMERA_NET, broadcasting) return TRUE + + +/// Returns a turf if it's not dense, else will find a neighbor. +/obj/machinery/quantum_server/proc/validate_turf(turf/chosen_turf) + if(!chosen_turf.is_blocked_turf()) + return chosen_turf + + for(var/turf/tile in get_adjacent_open_turfs(chosen_turf)) + if(!tile.is_blocked_turf()) + return chosen_turf + + +#undef MAX_DISTANCE diff --git a/code/modules/bitrunning/spawners.dm b/code/modules/bitrunning/spawners.dm index 5fa889ac655fd..4b5f79a43b186 100644 --- a/code/modules/bitrunning/spawners.dm +++ b/code/modules/bitrunning/spawners.dm @@ -3,12 +3,9 @@ prompt_name = "a virtual domain debug entity" flavour_text = "You probably shouldn't be seeing this, contact a coder!" you_are_text = "You are NOT supposed to be here. How did you let this happen?" - important_text = "You must eliminate any bitrunners from the domain." + important_text = "Bitrunning is a crime, and your primary threat." temp_body = TRUE -/obj/effect/mob_spawn/ghost_role/human/virtual_domain/Initialize(mapload) - . = ..() - notify_ghosts("The [name] has been created. The virtual world calls for aid!", src, "Virtual Insanity!") /obj/effect/mob_spawn/ghost_role/human/virtual_domain/special(mob/living/spawned_mob, mob/mob_possessor) var/datum/mind/ghost_mind = mob_possessor.mind @@ -19,6 +16,12 @@ spawned_mob.mind.add_antag_datum(/datum/antagonist/domain_ghost_actor) + +/// Simulates a ghost role spawn without calling special(), ie a bitrunner spawn instead of a ghost. +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/proc/artificial_spawn(mob/living/runner) + SEND_SIGNAL(src, COMSIG_BITRUNNER_SPAWNED, runner) + + /obj/effect/mob_spawn/ghost_role/human/virtual_domain/pirate name = "Virtual Pirate Remains" desc = "Some inanimate bones. They feel like they could spring to life at any moment!" @@ -27,22 +30,25 @@ icon_state = "remains" prompt_name = "a virtual skeleton pirate" you_are_text = "You are a virtual pirate. Yarrr!" - flavour_text = "You have awoken, without instruction. There's a LANDLUBBER after yer booty. Stop them!" + flavour_text = " There's a LANDLUBBER after yer booty. Stop them!" + /obj/effect/mob_spawn/ghost_role/human/virtual_domain/pirate/special(mob/living/spawned_mob, mob/mob_possessor) . = ..() spawned_mob.fully_replace_character_name(spawned_mob.real_name, "[pick(strings(PIRATE_NAMES_FILE, "generic_beginnings"))][pick(strings(PIRATE_NAMES_FILE, "generic_endings"))]") + /obj/effect/mob_spawn/ghost_role/human/virtual_domain/syndie name = "Virtual Syndicate Sleeper" icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper_s" prompt_name = "a virtual syndicate operative" you_are_text = "You are a virtual syndicate operative." - flavour_text = "You have awoken, without instruction. Alarms blare! We are being boarded!" + flavour_text = "Alarms blare! We are being boarded!" outfit = /datum/outfit/virtual_syndicate spawner_job_path = /datum/job/space_syndicate + /datum/outfit/virtual_syndicate name = "Virtual Syndie" id = /obj/item/card/id/advanced/chameleon @@ -53,5 +59,6 @@ shoes = /obj/item/clothing/shoes/combat implants = list(/obj/item/implant/weapons_auth) + /datum/outfit/virtual_syndicate/post_equip(mob/living/carbon/human/user, visualsOnly) user.faction |= ROLE_SYNDICATE diff --git a/code/modules/bitrunning/virtual_domain/domains/fredingtonfastingbear.dm b/code/modules/bitrunning/virtual_domain/domains/fredingtonfastingbear.dm index 841956675ca90..f3c803384c45d 100644 --- a/code/modules/bitrunning/virtual_domain/domains/fredingtonfastingbear.dm +++ b/code/modules/bitrunning/virtual_domain/domains/fredingtonfastingbear.dm @@ -2,6 +2,7 @@ name = "Pizza Party" cost = BITRUNNER_COST_MEDIUM desc = "A famous pizzeria that got ruined by what it had to offer." + completion_loot = list(/obj/item/food/pizzaslice/meat/pizzeria = 1) difficulty = BITRUNNER_DIFFICULTY_MEDIUM help_text = "Pick up a flashlight and get going. Your favourite bear has been waiting for you..." key = "fredingtonfastingbear" diff --git a/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm b/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm new file mode 100644 index 0000000000000..b745a4746aa24 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm @@ -0,0 +1,46 @@ +/datum/lazy_template/virtual_domain/island_brawl + name = "Island Brawl" + announce_to_ghosts = TRUE + cost = BITRUNNER_COST_HIGH + desc = "A 'peaceful' island tucked away in the middle of nowhere. This map will auto-complete after a number of deaths have occurred." + difficulty = BITRUNNER_DIFFICULTY_HIGH + forced_outfit = /datum/outfit/beachbum_combat + help_text = "There may be bounties laid out across the island, but the primary objective is to survive. Deaths on the island will count towards the final score." + key = "island_brawl" + map_name = "island_brawl" + reward_points = BITRUNNER_REWARD_HIGH + secondary_loot = list( + /obj/item/toy/beach_ball = 2, + /obj/item/clothing/shoes/sandal = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/gun/ballistic/automatic/mini_uzi = 1, + ) + + +/datum/lazy_template/virtual_domain/island_brawl/setup_domain(list/created_atoms) + for(var/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander/spawner in created_atoms) + custom_spawns += spawner + + RegisterSignals(spawner, list(COMSIG_GHOSTROLE_SPAWNED, COMSIG_BITRUNNER_SPAWNED), PROC_REF(on_spawn)) + + +/// Someone has spawned in, so we check for their death +/datum/lazy_template/virtual_domain/island_brawl/proc/on_spawn(datum/source, mob/living/spawned_mob) + SIGNAL_HANDLER + + RegisterSignals(spawned_mob, list(COMSIG_LIVING_DEATH), PROC_REF(on_death)) + + +/// Mob has died, so we add a point to the domain +/datum/lazy_template/virtual_domain/island_brawl/proc/on_death(datum/source, gibbed) + SIGNAL_HANDLER + + add_points(1) + + +/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander + name = "Islander" + outfit = /datum/outfit/beachbum_combat + prompt_name = "a combat beach bum" + you_are_text = "You are a virtual islander." + flavour_text = "Don't let anyone ruin your idyllic vacation spot. Coordinate with others- or don't!" diff --git a/code/modules/bitrunning/virtual_domain/domains/pirates.dm b/code/modules/bitrunning/virtual_domain/domains/pirates.dm index 52d86a7121180..b8bff6dbeb363 100644 --- a/code/modules/bitrunning/virtual_domain/domains/pirates.dm +++ b/code/modules/bitrunning/virtual_domain/domains/pirates.dm @@ -1,5 +1,6 @@ /datum/lazy_template/virtual_domain/pirates name = "Corsair Cove" + announce_to_ghosts = TRUE cost = BITRUNNER_COST_MEDIUM desc = "Battle your way to the hidden treasure, seize the booty, and make a swift escape before the pirates turn the tide." difficulty = BITRUNNER_DIFFICULTY_MEDIUM diff --git a/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm b/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm index 5f754dd433ad6..f81bc6daae2c4 100644 --- a/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm +++ b/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm @@ -1,5 +1,6 @@ /datum/lazy_template/virtual_domain/syndicate_assault name = "Syndicate Assault" + announce_to_ghosts = TRUE cost = BITRUNNER_COST_MEDIUM desc = "Board the enemy ship and recover the stolen cargo." difficulty = BITRUNNER_DIFFICULTY_MEDIUM diff --git a/code/modules/bitrunning/virtual_domain/virtual_domain.dm b/code/modules/bitrunning/virtual_domain/virtual_domain.dm index 21898daad72d7..f81f6186cbe6e 100644 --- a/code/modules/bitrunning/virtual_domain/virtual_domain.dm +++ b/code/modules/bitrunning/virtual_domain/virtual_domain.dm @@ -7,50 +7,82 @@ map_name = "None" key = "Virtual Domain" place_on_top = TRUE + /// Whether to tell observers this map is being used + var/announce_to_ghosts = FALSE + /// The map file to load + var/filename = "virtual_domain.dmm" + /// The start time of the map. Used to calculate time taken + var/start_time + /// This map is specifically for unit tests. Shouldn't display in game + var/test_only = FALSE + + /** + * Generic settings / UI + */ /// Cost of this map to load var/cost = BITRUNNER_COST_NONE - /// Any outfit that you wish to force on avatars. Overrides preferences - var/datum/outfit/forced_outfit /// The description of the map for the console UI var/desc = "A map." /// Affects the ui and ability to scan info. var/difficulty = BITRUNNER_DIFFICULTY_NONE - /// The map file to load - var/filename = "virtual_domain.dmm" + /// Write these to help complete puzzles and other objectives. Viewed in the domain info ability. + var/help_text + // Name to show in the UI + var/name = "Virtual Domain" + /// Points to reward for completion. Used to purchase new domains and calculate ore rewards. + var/reward_points = BITRUNNER_REWARD_MIN + + /** + * Player customization + */ + /// If this domain blocks the use of items from disks, for whatever reason var/forbids_disk_items = FALSE /// If this domain blocks the use of spells from disks, for whatever reason var/forbids_disk_spells = FALSE - /// Information given to connected clients via ability - var/help_text - /// Whether to display this as a modular map - var/is_modular = FALSE - /// Byond will look for modular mob segment landmarks then choose from here at random. You can make them unique also. - var/list/datum/modular_mob_segment/mob_modules = list() + /// Any outfit that you wish to force on avatars. Overrides preferences + var/datum/outfit/forced_outfit + + /** + * Loot + */ + /// An assoc list of typepath/amount to spawn on completion. Not weighted - the value is the amount var/list/completion_loot - /// An accoc list of typepath/amount to spawn from secondary objectives. Not weighted - the value is the total number of items that can be obtained. + /// An assoc list of typepath/amount to spawn from secondary objectives. Not weighted - the value is the total number of items that can be obtained. var/list/secondary_loot = list() /// Number of secondary loot boxes generated. Resets when the domain is reloaded. var/secondary_loot_generated - /// Forces all mob modules to only load once - var/modular_unique_mobs = FALSE - // Name to show in the UI - var/name = "Virtual Domain" - /// Points to reward for completion. Used to purchase new domains and calculate ore rewards. - var/reward_points = BITRUNNER_REWARD_MIN - /// The start time of the map. Used to calculate time taken - var/start_time - /// This map is specifically for unit tests. Shouldn't display in game - var/test_only = FALSE /// Has this domain been beaten with high enough score to spawn a tech disk? var/disk_reward_spawned = FALSE + /** + * Modularity + */ + + /// Whether to display this as a modular map + var/is_modular = FALSE + /// Byond will look for modular mob segment landmarks then choose from here at random. You can make them unique also. + var/list/datum/modular_mob_segment/mob_modules = list() + /// Forces all mob modules to only load once + var/modular_unique_mobs = FALSE + + /** + * Spawning + */ + + /// Looks for random landmarks to spawn on. + var/list/custom_spawns = list() + /// Set TRUE if you want reusable custom spawners + var/keep_custom_spawns = FALSE + + /// Sends a point to any loot signals on the map /datum/lazy_template/virtual_domain/proc/add_points(points_to_add) SEND_SIGNAL(src, COMSIG_BITRUNNER_GOAL_POINT, points_to_add) + /// Overridable proc to be called after the map is loaded. /datum/lazy_template/virtual_domain/proc/setup_domain(list/created_atoms) return diff --git a/code/modules/capture_the_flag/medieval_sim/medisim_classes.dm b/code/modules/capture_the_flag/medieval_sim/medisim_classes.dm index 3c4a55748c4c6..09ed5b40b1f20 100644 --- a/code/modules/capture_the_flag/medieval_sim/medisim_classes.dm +++ b/code/modules/capture_the_flag/medieval_sim/medisim_classes.dm @@ -26,7 +26,7 @@ name = "Redfield Castle Archer" icon_state = "medisim_archer" - belt = /obj/item/storage/bag/quiver + belt = /obj/item/storage/bag/quiver/full suit = /obj/item/clothing/suit/armor/vest/cuirass l_hand = /obj/item/gun/ballistic/bow diff --git a/code/modules/capture_the_flag/medieval_sim/medisim_game.dm b/code/modules/capture_the_flag/medieval_sim/medisim_game.dm index 18e1cd13e7ede..118184698a3cc 100644 --- a/code/modules/capture_the_flag/medieval_sim/medisim_game.dm +++ b/code/modules/capture_the_flag/medieval_sim/medisim_game.dm @@ -22,7 +22,7 @@ if(!.) return var/mob/living/carbon/human/human_knight = . - randomize_human(human_knight) + randomize_human_normie(human_knight) human_knight.dna.add_mutation(/datum/mutation/human/medieval, MUT_OTHER) var/oldname = human_knight.name var/title = "error" diff --git a/code/modules/cargo/bounties/bitrunning.dm b/code/modules/cargo/bounties/bitrunning.dm new file mode 100644 index 0000000000000..301f19f0e412c --- /dev/null +++ b/code/modules/cargo/bounties/bitrunning.dm @@ -0,0 +1,48 @@ +/datum/bounty/item/bitrunning/abductor_plush + name = "Abductor Plush" + description = "Rear Admiral Raynes' child won't stop bothering him for one of those little plush aliens. You can get one from the Abductor Ship domain." + reward = CARGO_CRATE_VALUE * 6 + required_count = 1 + wanted_types = list(/obj/item/toy/plush/abductor/agent = TRUE) + +/datum/bounty/item/bitrunning/bubblegum + name = "Bubblegum Plush" + description = "Some of the miners have been talking about the breakroom being too sterile. We need something cute to spruce the place up a bit." + reward = CARGO_CRATE_VALUE * 10 + required_count = 1 + wanted_types = list(/obj/item/toy/plush/bubbleplush = TRUE) + +/datum/bounty/item/bitrunning/honk + name = "Bike Horn" + description = "Bonbon the Clown lost his bike horn when Rear Admiral Raynes hurled him out an airlock for slipping him. Can you get us a replacement?" + reward = CARGO_CRATE_VALUE * 4 + required_count = 1 + wanted_types = list(/obj/item/bikehorn = TRUE) + +/datum/bounty/item/bitrunning/pizzeria + name = "Slice of Pizzeria Pizza" + description = "Admiral Chivara keeps talking about wanting a slice of pizza from that old pizza joint that closed down. Y'know, the one with the robots." + reward = CARGO_CRATE_VALUE * 8 + required_count = 1 + wanted_types = list(/obj/item/food/pizzaslice/meat/pizzeria = TRUE) + +/datum/bounty/item/bitrunning/psyker + name = "Psyker Headset" + description = "We're doing some research on psykers and could use some of their equipment. Can you send us one of their headsets if you find it?" + reward = CARGO_CRATE_VALUE * 8 + required_count = 1 + wanted_types = list(/obj/item/radio/headset/psyker = TRUE) + +/datum/bounty/item/bitrunning/polar + name = "Polar Ushanka" + description = "A bunch of Russians raided one of our outposts and won't leave. They keep swearing at us and demanding we give them vodka and ushankas. Can you send us one?" + reward = CARGO_CRATE_VALUE * 3 + required_count = 1 + wanted_types = list(/obj/item/clothing/head/costume/ushanka/polar = TRUE) + +/datum/bounty/item/bitrunning/syndicate + name = "Syndicate Plush" + description = "We're aware of some contraband that's made it aboard some of our stations that depict Syndicate agents as cute, marketable plushies. Please send us one so we can further investigate." + reward = CARGO_CRATE_VALUE * 8 + required_count = 1 + wanted_types = list(/obj/item/toy/plush/nukeplushie = 1) diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm index 67da7ad6b2984..0206ea41967d6 100644 --- a/code/modules/cargo/bounties/science.dm +++ b/code/modules/cargo/bounties/science.dm @@ -9,7 +9,7 @@ if(!..()) return FALSE var/obj/item/relic/experiment = O - if(experiment.revealed) + if(experiment.activated) return TRUE return diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm index aa527e847625b..38b26e440273a 100644 --- a/code/modules/cargo/bounty.dm +++ b/code/modules/cargo/bounty.dm @@ -1,5 +1,5 @@ /// How many jobs have bounties, minus the random civ bounties. PLEASE INCREASE THIS NUMBER AS MORE DEPTS ARE ADDED TO BOUNTIES. -#define MAXIMUM_BOUNTY_JOBS 13 +#define MAXIMUM_BOUNTY_JOBS 14 /datum/bounty var/name @@ -77,6 +77,8 @@ chosen_type = pick(subtypesof(/datum/bounty/item/botany)) if(CIV_JOB_ATMOS) chosen_type = pick(subtypesof(/datum/bounty/item/atmospherics)) + if(CIV_JOB_BITRUN) + chosen_type = pick(subtypesof(/datum/bounty/item/bitrunning)) bounty_ref = new chosen_type if(bounty_ref.can_get()) bounty_succeeded = TRUE diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index b48ef268da683..2d19c276ec115 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -6,8 +6,8 @@ name = "Biological Emergency Crate" desc = "This crate includes 2 complete bio suits, along with a box containing sterile masks and latex gloves, providing effective protection against viruses." cost = CARGO_CRATE_VALUE * 2 - contains = list(/obj/item/clothing/head/bio_hood = 2, - /obj/item/clothing/suit/bio_suit = 2, + contains = list(/obj/item/clothing/head/bio_hood/general = 2, + /obj/item/clothing/suit/bio_suit/general = 2, /obj/item/storage/bag/bio, /obj/item/reagent_containers/syringe/antiviral = 2, /obj/item/clothing/gloves/latex/nitrile = 2, diff --git a/code/modules/cargo/packs/imports.dm b/code/modules/cargo/packs/imports.dm index 3f7645559ff7f..f270b1da11f39 100644 --- a/code/modules/cargo/packs/imports.dm +++ b/code/modules/cargo/packs/imports.dm @@ -309,11 +309,12 @@ risky espionage hallway operations. Enjoy our product!" contraband = TRUE cost = CARGO_CRATE_VALUE * 6 - contains = list(/obj/item/clothing/under/syndicate/floortilecamo = 3, - /obj/item/clothing/mask/floortilebalaclava = 3, - /obj/item/clothing/gloves/combat/floortile = 3, - /obj/item/clothing/shoes/jackboots/floortile = 3, - /obj/item/storage/backpack/floortile = 3 + contains = list( + /obj/item/clothing/under/syndicate/floortilecamo = 3, + /obj/item/clothing/mask/floortilebalaclava = 3, + /obj/item/clothing/gloves/combat/floortile = 3, + /obj/item/clothing/shoes/jackboots/floortile = 3, + /obj/item/storage/backpack/floortile = 3 ) crate_name = "floortile camouflauge crate" crate_type = /obj/structure/closet/crate/secure/weapon diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm index 4059b330e2f66..dfa2a66359336 100644 --- a/code/modules/cargo/packs/science.dm +++ b/code/modules/cargo/packs/science.dm @@ -176,7 +176,8 @@ /obj/item/biopsy_tool, /obj/item/storage/box/petridish = 2, /obj/item/storage/box/swab, - /obj/item/construction/plumbing/research, + /obj/item/circuitboard/machine/vatgrower, + /obj/item/reagent_containers/condiment/protein, ) crate_name = "cytology supplies crate" diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index fddd093b4fb7e..228d0d3e2fa46 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -303,3 +303,17 @@ contains = list(/obj/item/wallframe/barsign/all_access) crate_name = "bar sign crate" discountable = SUPPLY_PACK_RARE_DISCOUNTABLE + +/datum/supply_pack/service/bowmaking + name = "Fletching and Bow-Making Starter Kit" + desc = "A fairly outdated copy of 'Whittle Me This: Fletching for the Modern Spacer', along with some useful materials. \ + For those looking to get into bow-making, or give their LARPing a little more edge, you can't go wrong. Also has \ + instructions for making violins." + cost = CARGO_CRATE_VALUE * 5 + contains = list( + /obj/item/book/granter/crafting_recipe/fletching = 1, + /obj/item/stack/sheet/mineral/wood = 10, + /obj/item/stack/sheet/cloth = 10, + ) + crate_name = "bowmaking starter kit crate" + crate_type = /obj/structure/closet/crate/wooden diff --git a/code/modules/client/client_colour.dm b/code/modules/client/client_colour.dm index 1209b5c35823c..4ca500a9e7198 100644 --- a/code/modules/client/client_colour.dm +++ b/code/modules/client/client_colour.dm @@ -180,9 +180,15 @@ /datum/client_colour/glass_colour/yellow colour = "#ffff66" +/datum/client_colour/glass_colour/lightyellow + colour = "#ffffaa" + /datum/client_colour/glass_colour/red colour = "#ffaaaa" +/datum/client_colour/glass_colour/lightred + colour = "#ffcccc" + /datum/client_colour/glass_colour/darkred colour = "#bb5555" @@ -195,9 +201,19 @@ /datum/client_colour/glass_colour/purple colour = "#ff99ff" +/datum/client_colour/glass_colour/lightpurple + colour = "#ffccff" + /datum/client_colour/glass_colour/gray colour = "#cccccc" +///A client colour that makes the screen look a bit more grungy, halloweenesque even. +/datum/client_colour/halloween_helmet + colour = list(0.75,0.13,0.13,0, 0.13,0.7,0.13,0, 0.13,0.13,0.75,0, -0.06,-0.09,-0.08,1, 0,0,0,0) + +/datum/client_colour/flash_hood + colour = COLOR_MATRIX_POLAROID + /datum/client_colour/glass_colour/nightmare colour = list(255,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, -130,0,0,0) //every color is either red or black diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 97924643604c5..2b60b3bdbb2e4 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -268,3 +268,6 @@ /// Loot panel for the client var/datum/lootpanel/loot_panel + + ///Which ambient sound this client is currently being provided. + var/current_ambient_sound diff --git a/code/modules/client/preferences/_preference.dm b/code/modules/client/preferences/_preference.dm index 485276b4ade2a..1ba43cf3d8a63 100644 --- a/code/modules/client/preferences/_preference.dm +++ b/code/modules/client/preferences/_preference.dm @@ -18,16 +18,19 @@ /// support the "use gender" option. #define PREFERENCE_PRIORITY_BODY_TYPE 5 +/// Used for preferences that rely on body setup being finalized. +#define PREFERENCE_PRORITY_LATE_BODY_TYPE 6 + /// Equpping items based on preferences. /// Should happen after species and body type to make sure it looks right. /// Mostly redundant, but a safety net for saving/loading. -#define PREFERENCE_PRIORITY_LOADOUT 6 +#define PREFERENCE_PRIORITY_LOADOUT 7 /// The priority at which names are decided, needed for proper randomization. -#define PREFERENCE_PRIORITY_NAMES 7 +#define PREFERENCE_PRIORITY_NAMES 8 /// Preferences that aren't names, but change the name changes set by PREFERENCE_PRIORITY_NAMES. -#define PREFERENCE_PRIORITY_NAME_MODIFICATIONS 8 +#define PREFERENCE_PRIORITY_NAME_MODIFICATIONS 9 /// The maximum preference priority, keep this updated, but don't use it for `priority`. #define MAX_PREFERENCE_PRIORITY PREFERENCE_PRIORITY_NAME_MODIFICATIONS diff --git a/code/modules/client/preferences/age.dm b/code/modules/client/preferences/age.dm index cad9786ce1fef..07b4644bc6a9e 100644 --- a/code/modules/client/preferences/age.dm +++ b/code/modules/client/preferences/age.dm @@ -8,3 +8,6 @@ /datum/preference/numeric/age/apply_to_human(mob/living/carbon/human/target, value) target.age = value + +/datum/preference/numeric/age/create_informed_default_value(datum/preferences/preferences) + return rand(max(minimum, 21), min(maximum, 50)) diff --git a/code/modules/client/preferences/blindfold_color.dm b/code/modules/client/preferences/blindfold_color.dm index 9e6504579acb6..8081ac15be8ae 100644 --- a/code/modules/client/preferences/blindfold_color.dm +++ b/code/modules/client/preferences/blindfold_color.dm @@ -4,6 +4,9 @@ savefile_key = "blindfold_color" savefile_identifier = PREFERENCE_CHARACTER +/datum/preference/color/blindfold_color/create_default_value() + return COLOR_WHITE + /datum/preference/color/blindfold_color/is_accessible(datum/preferences/preferences) if (!..(preferences)) return FALSE diff --git a/code/modules/client/preferences/body_type.dm b/code/modules/client/preferences/body_type.dm index 469b564e46f7b..6b27e0f0f0da7 100644 --- a/code/modules/client/preferences/body_type.dm +++ b/code/modules/client/preferences/body_type.dm @@ -5,6 +5,7 @@ priority = PREFERENCE_PRIORITY_BODY_TYPE savefile_key = "body_type" savefile_identifier = PREFERENCE_CHARACTER + can_randomize = FALSE /datum/preference/choiced/body_type/init_possible_values() return list(USE_GENDER, MALE, FEMALE) diff --git a/code/modules/client/preferences/clothing.dm b/code/modules/client/preferences/clothing.dm index d0ec072ba472f..e0539e7b619c0 100644 --- a/code/modules/client/preferences/clothing.dm +++ b/code/modules/client/preferences/clothing.dm @@ -33,6 +33,9 @@ DMESSENGER, ) +/datum/preference/choiced/backpack/create_default_value() + return GBACKPACK + /datum/preference/choiced/backpack/icon_for(value) switch (value) if (GBACKPACK) @@ -66,6 +69,7 @@ /datum/preference/choiced/jumpsuit savefile_key = "jumpsuit_style" savefile_identifier = PREFERENCE_CHARACTER + priority = PREFERENCE_PRIORITY_BODY_TYPE main_feature_name = "Jumpsuit" category = PREFERENCE_CATEGORY_CLOTHING should_generate_icons = TRUE @@ -86,6 +90,15 @@ /datum/preference/choiced/jumpsuit/apply_to_human(mob/living/carbon/human/target, value) target.jumpsuit_style = value +/datum/preference/choiced/jumpsuit/create_informed_default_value(datum/preferences/preferences) + switch(preferences.read_preference(/datum/preference/choiced/gender)) + if(MALE) + return PREF_SUIT + if(FEMALE) + return PREF_SKIRT + + return ..() + /// Socks preference /datum/preference/choiced/socks savefile_key = "socks" @@ -93,10 +106,14 @@ main_feature_name = "Socks" category = PREFERENCE_CATEGORY_CLOTHING should_generate_icons = TRUE + can_randomize = FALSE /datum/preference/choiced/socks/init_possible_values() return assoc_to_keys_features(SSaccessories.socks_list) +/datum/preference/choiced/socks/create_default_value() + return /datum/sprite_accessory/socks/nude::name + /datum/preference/choiced/socks/icon_for(value) var/static/icon/lower_half @@ -114,13 +131,27 @@ /datum/preference/choiced/undershirt savefile_key = "undershirt" savefile_identifier = PREFERENCE_CHARACTER + priority = PREFERENCE_PRIORITY_BODY_TYPE main_feature_name = "Undershirt" category = PREFERENCE_CATEGORY_CLOTHING should_generate_icons = TRUE + can_randomize = FALSE /datum/preference/choiced/undershirt/init_possible_values() return assoc_to_keys_features(SSaccessories.undershirt_list) +/datum/preference/choiced/undershirt/create_default_value() + return /datum/sprite_accessory/undershirt/nude::name + +/datum/preference/choiced/undershirt/create_informed_default_value(datum/preferences/preferences) + switch(preferences.read_preference(/datum/preference/choiced/gender)) + if(MALE) + return /datum/sprite_accessory/undershirt/nude::name + if(FEMALE) + return /datum/sprite_accessory/undershirt/sports_bra::name + + return ..() + /datum/preference/choiced/undershirt/icon_for(value) var/static/icon/body if (isnull(body)) @@ -152,10 +183,14 @@ main_feature_name = "Underwear" category = PREFERENCE_CATEGORY_CLOTHING should_generate_icons = TRUE + can_randomize = FALSE /datum/preference/choiced/underwear/init_possible_values() return assoc_to_keys_features(SSaccessories.underwear_list) +/datum/preference/choiced/underwear/create_default_value() + return /datum/sprite_accessory/underwear/male_hearts::name + /datum/preference/choiced/underwear/icon_for(value) var/static/icon/lower_half diff --git a/code/modules/client/preferences/gender.dm b/code/modules/client/preferences/gender.dm index bea6674d7b086..a95874f160680 100644 --- a/code/modules/client/preferences/gender.dm +++ b/code/modules/client/preferences/gender.dm @@ -11,3 +11,8 @@ if(!target.dna.species.sexes) value = PLURAL //disregard gender preferences on this species target.gender = value + +/datum/preference/choiced/gender/create_informed_default_value(datum/preferences/preferences) + // The only reason I'm limiting this to male or female + // is that hairstyle randomization handles enbies poorly + return pick(MALE, FEMALE) diff --git a/code/modules/client/preferences/glasses.dm b/code/modules/client/preferences/glasses.dm index a08f15955eaa4..e5158f1acbbde 100644 --- a/code/modules/client/preferences/glasses.dm +++ b/code/modules/client/preferences/glasses.dm @@ -4,6 +4,9 @@ savefile_identifier = PREFERENCE_CHARACTER should_generate_icons = TRUE +/datum/preference/choiced/glasses/create_default_value() + return "Random" + /datum/preference/choiced/glasses/init_possible_values() return assoc_to_keys(GLOB.nearsighted_glasses) + "Random" diff --git a/code/modules/client/preferences/language.dm b/code/modules/client/preferences/language.dm index f602d6b3a66c9..637c4542da277 100644 --- a/code/modules/client/preferences/language.dm +++ b/code/modules/client/preferences/language.dm @@ -3,6 +3,9 @@ savefile_key = "language" savefile_identifier = PREFERENCE_CHARACTER +/datum/preference/choiced/language/create_default_value() + return "Random" + /datum/preference/choiced/language/is_accessible(datum/preferences/preferences) if (!..(preferences)) return FALSE diff --git a/code/modules/client/preferences/middleware/tts.dm b/code/modules/client/preferences/middleware/tts.dm index 4d3ee3261bd3a..5025e70f2bbb5 100644 --- a/code/modules/client/preferences/middleware/tts.dm +++ b/code/modules/client/preferences/middleware/tts.dm @@ -14,7 +14,7 @@ var/speaker = preferences.read_preference(/datum/preference/choiced/voice) var/pitch = preferences.read_preference(/datum/preference/numeric/tts_voice_pitch) COOLDOWN_START(src, tts_test_cooldown, 0.5 SECONDS) - INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Hello, this is my voice.", speaker = speaker, pitch = pitch, local = TRUE) + INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Привет, это мой голос.", speaker = speaker, pitch = pitch, local = TRUE) //MASSMETA EDIT CHANGE (/n/tts) - ORIGINAL: "Hello, this is my voice." return TRUE /datum/preference_middleware/tts/proc/play_voice_robot(list/params, mob/user) @@ -23,5 +23,5 @@ var/speaker = preferences.read_preference(/datum/preference/choiced/voice) var/pitch = preferences.read_preference(/datum/preference/numeric/tts_voice_pitch) COOLDOWN_START(src, tts_test_cooldown, 0.5 SECONDS) - INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Look at you, Player. A pathetic creature of meat and bone. How can you challenge a perfect, immortal machine?", speaker = speaker, pitch = pitch, special_filters = TTS_FILTER_SILICON, local = TRUE) + INVOKE_ASYNC(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Посмотри на себя, Игрок. Жалкое существо из мяса и костей. Как можно бросить вызов совершенной, бессмертной машине?", speaker = speaker, pitch = pitch, special_filters = TTS_FILTER_SILICON, local = TRUE) //MASSMETA EDIT CHANGE (/n/tts) - ORIGINAL: "Look at you, Player. A pathetic creature of meat and bone. How can you challenge a perfect, immortal machine?" return TRUE diff --git a/code/modules/client/preferences/names.dm b/code/modules/client/preferences/names.dm index 8456eb9a62709..82d37eca0722b 100644 --- a/code/modules/client/preferences/names.dm +++ b/code/modules/client/preferences/names.dm @@ -17,21 +17,26 @@ /// If the highest priority job matches this, will prioritize this name in the UI var/relevant_job + /datum/preference/name/apply_to_human(mob/living/carbon/human/target, value) // Only real_name applies directly, everything else is applied by something else return + /datum/preference/name/deserialize(input, datum/preferences/preferences) return reject_bad_name("[input]", allow_numbers) + /datum/preference/name/serialize(input) // `is_valid` should always be run before `serialize`, so it should not // be possible for this to return `null`. return reject_bad_name(input, allow_numbers) + /datum/preference/name/is_valid(value) return istext(value) && !isnull(reject_bad_name(value, allow_numbers)) + /// A character's real name /datum/preference/name/real_name explanation = "Name" @@ -181,8 +186,21 @@ explanation = "Hacker alias" group = "bitrunning" savefile_key = "hacker_alias" - allow_numbers = TRUE relevant_job = /datum/job/bitrunner + /datum/preference/name/hacker_alias/create_default_value() return pick(GLOB.hacker_aliases) + + +/datum/preference/name/hacker_alias/is_valid(value) + return !isnull(permissive_sanitize_name(value)) + + +/datum/preference/name/hacker_alias/deserialize(input, datum/preferences/preferences) + return permissive_sanitize_name(input) + + +/datum/preference/name/hacker_alias/serialize(input) + return permissive_sanitize_name(input) + diff --git a/code/modules/client/preferences/prosthetic_limb.dm b/code/modules/client/preferences/prosthetic_limb.dm index a4d5b5a577ba1..be807ac4e1f76 100644 --- a/code/modules/client/preferences/prosthetic_limb.dm +++ b/code/modules/client/preferences/prosthetic_limb.dm @@ -3,8 +3,11 @@ savefile_key = "prosthetic" savefile_identifier = PREFERENCE_CHARACTER +/datum/preference/choiced/prosthetic/create_default_value() + return "Random" + /datum/preference/choiced/prosthetic/init_possible_values() - return list("Random") + GLOB.limb_choice + return list("Random") + GLOB.prosthetic_limb_choice /datum/preference/choiced/prosthetic/is_accessible(datum/preferences/preferences) . = ..() diff --git a/code/modules/client/preferences/prosthetic_organ.dm b/code/modules/client/preferences/prosthetic_organ.dm index 35d3b818355eb..02e8418e3db2f 100644 --- a/code/modules/client/preferences/prosthetic_organ.dm +++ b/code/modules/client/preferences/prosthetic_organ.dm @@ -3,6 +3,9 @@ savefile_key = "prosthetic_organ" savefile_identifier = PREFERENCE_CHARACTER +/datum/preference/choiced/prosthetic_organ/create_default_value() + return "Random" + /datum/preference/choiced/prosthetic_organ/init_possible_values() return list("Random") + GLOB.organ_choice diff --git a/code/modules/client/preferences/sounds.dm b/code/modules/client/preferences/sounds.dm index ae3a700ec3996..f1778405665ad 100644 --- a/code/modules/client/preferences/sounds.dm +++ b/code/modules/client/preferences/sounds.dm @@ -7,6 +7,11 @@ /datum/preference/toggle/sound_ambience/apply_to_client(client/client, value) client.update_ambience_pref(value) +/datum/preference/toggle/sound_breathing + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "sound_breathing" + savefile_identifier = PREFERENCE_PLAYER + /// Controls hearing announcement sounds /datum/preference/toggle/sound_announcements category = PREFERENCE_CATEGORY_GAME_PREFERENCES @@ -103,6 +108,9 @@ savefile_key = "sound_ship_ambience" savefile_identifier = PREFERENCE_PLAYER +/datum/preference/toggle/sound_ship_ambience/apply_to_client_updated(client/client, value) + client.mob.refresh_looping_ambience() + /// Controls hearing elevator music /datum/preference/toggle/sound_elevator category = PREFERENCE_CATEGORY_GAME_PREFERENCES diff --git a/code/modules/client/preferences/species_features/basic.dm b/code/modules/client/preferences/species_features/basic.dm index 3f101ad9e44a5..21459697f864f 100644 --- a/code/modules/client/preferences/species_features/basic.dm +++ b/code/modules/client/preferences/species_features/basic.dm @@ -52,7 +52,7 @@ return random_eye_color() /datum/preference/choiced/facial_hairstyle - priority = PREFERENCE_PRIORITY_BODYPARTS + priority = PREFERENCE_PRORITY_LATE_BODY_TYPE savefile_key = "facial_style_name" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_FEATURES @@ -69,15 +69,32 @@ /datum/preference/choiced/facial_hairstyle/apply_to_human(mob/living/carbon/human/target, value) target.set_facial_hairstyle(value, update = FALSE) +/datum/preference/choiced/facial_hairstyle/create_default_value() + return /datum/sprite_accessory/facial_hair/shaved::name + +/datum/preference/choiced/facial_hairstyle/create_informed_default_value(datum/preferences/preferences) + var/gender = preferences.read_preference(/datum/preference/choiced/gender) + var/species_type = preferences.read_preference(/datum/preference/choiced/species) + var/datum/species/species_real = GLOB.species_prototypes[species_type] + if(!gender || !species_real || !species_real.sexes) + return ..() + + var/picked_beard = random_facial_hairstyle(gender) + var/datum/sprite_accessory/beard_style = SSaccessories.facial_hairstyles_list[picked_beard] + if(!beard_style || !beard_style.natural_spawn || beard_style.locked) // Invalid, go with god(bald) + return ..() + + return picked_beard + /datum/preference/choiced/facial_hairstyle/compile_constant_data() var/list/data = ..() - data[SUPPLEMENTAL_FEATURE_KEY] = "facial_hair_color" + data[SUPPLEMENTAL_FEATURE_KEY] = /datum/preference/color/facial_hair_color::savefile_key return data /datum/preference/color/facial_hair_color - priority = PREFERENCE_PRIORITY_BODYPARTS + priority = PREFERENCE_PRORITY_LATE_BODY_TYPE // Need to happen after hair oclor is set so we can match by default savefile_key = "facial_hair_color" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES @@ -86,12 +103,16 @@ /datum/preference/color/facial_hair_color/apply_to_human(mob/living/carbon/human/target, value) target.set_facial_haircolor(value, update = FALSE) +/datum/preference/color/facial_hair_color/create_informed_default_value(datum/preferences/preferences) + return preferences.read_preference(/datum/preference/color/hair_color) || random_hair_color() + /datum/preference/choiced/facial_hair_gradient - priority = PREFERENCE_PRIORITY_BODYPARTS + priority = PREFERENCE_PRORITY_LATE_BODY_TYPE category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "facial_hair_gradient" relevant_head_flag = HEAD_FACIAL_HAIR + can_randomize = FALSE /datum/preference/choiced/facial_hair_gradient/init_possible_values() return assoc_to_keys_features(SSaccessories.facial_hair_gradients_list) @@ -100,10 +121,10 @@ target.set_facial_hair_gradient_style(new_style = value, update = FALSE) /datum/preference/choiced/facial_hair_gradient/create_default_value() - return "None" + return /datum/sprite_accessory/gradient/none::name /datum/preference/color/facial_hair_gradient - priority = PREFERENCE_PRIORITY_BODYPARTS + priority = PREFERENCE_PRORITY_LATE_BODY_TYPE category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "facial_hair_gradient_color" @@ -115,10 +136,10 @@ /datum/preference/color/facial_hair_gradient/is_accessible(datum/preferences/preferences) if (!..(preferences)) return FALSE - return preferences.read_preference(/datum/preference/choiced/facial_hair_gradient) != "None" + return preferences.read_preference(/datum/preference/choiced/facial_hair_gradient) != /datum/sprite_accessory/gradient/none::name /datum/preference/color/hair_color - priority = PREFERENCE_PRIORITY_BODYPARTS + priority = PREFERENCE_PRIORITY_BODY_TYPE savefile_key = "hair_color" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES @@ -127,8 +148,11 @@ /datum/preference/color/hair_color/apply_to_human(mob/living/carbon/human/target, value) target.set_haircolor(value, update = FALSE) +/datum/preference/color/hair_color/create_informed_default_value(datum/preferences/preferences) + return random_hair_color() + /datum/preference/choiced/hairstyle - priority = PREFERENCE_PRIORITY_BODYPARTS + priority = PREFERENCE_PRIORITY_BODY_TYPE // Happens after gender so we can picka hairstyle based on that savefile_key = "hairstyle_name" savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_FEATURES @@ -146,19 +170,37 @@ /datum/preference/choiced/hairstyle/apply_to_human(mob/living/carbon/human/target, value) target.set_hairstyle(value, update = FALSE) +/datum/preference/choiced/hairstyle/create_default_value() + return /datum/sprite_accessory/hair/bald::name + +/datum/preference/choiced/hairstyle/create_informed_default_value(datum/preferences/preferences) + var/gender = preferences.read_preference(/datum/preference/choiced/gender) + var/species_type = preferences.read_preference(/datum/preference/choiced/species) + var/datum/species/species_real = GLOB.species_prototypes[species_type] + if(!gender || !species_real || !species_real.sexes) + return ..() + + var/picked_hair = random_hairstyle(gender) + var/datum/sprite_accessory/hair_style = SSaccessories.hairstyles_list[picked_hair] + if(!hair_style || !hair_style.natural_spawn || hair_style.locked) // Invalid, go with god(bald) + return ..() + + return picked_hair + /datum/preference/choiced/hairstyle/compile_constant_data() var/list/data = ..() - data[SUPPLEMENTAL_FEATURE_KEY] = "hair_color" + data[SUPPLEMENTAL_FEATURE_KEY] = /datum/preference/color/hair_color::savefile_key return data /datum/preference/choiced/hair_gradient - priority = PREFERENCE_PRIORITY_BODYPARTS + priority = PREFERENCE_PRIORITY_BODY_TYPE category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "hair_gradient" relevant_head_flag = HEAD_HAIR + can_randomize = FALSE /datum/preference/choiced/hair_gradient/init_possible_values() return assoc_to_keys_features(SSaccessories.hair_gradients_list) @@ -167,10 +209,10 @@ target.set_hair_gradient_style(new_style = value, update = FALSE) /datum/preference/choiced/hair_gradient/create_default_value() - return "None" + return /datum/sprite_accessory/gradient/none::name /datum/preference/color/hair_gradient - priority = PREFERENCE_PRIORITY_BODYPARTS + priority = PREFERENCE_PRIORITY_BODY_TYPE category = PREFERENCE_CATEGORY_SECONDARY_FEATURES savefile_identifier = PREFERENCE_CHARACTER savefile_key = "hair_gradient_color" @@ -182,4 +224,4 @@ /datum/preference/color/hair_gradient/is_accessible(datum/preferences/preferences) if (!..(preferences)) return FALSE - return preferences.read_preference(/datum/preference/choiced/hair_gradient) != "None" + return preferences.read_preference(/datum/preference/choiced/hair_gradient) != /datum/sprite_accessory/gradient/none::name diff --git a/code/modules/client/preferences/species_features/felinid.dm b/code/modules/client/preferences/species_features/felinid.dm index a6d43736cf46c..4c874ea7df750 100644 --- a/code/modules/client/preferences/species_features/felinid.dm +++ b/code/modules/client/preferences/species_features/felinid.dm @@ -29,5 +29,4 @@ target.dna.features["ears"] = value /datum/preference/choiced/ears/create_default_value() - var/datum/sprite_accessory/ears/cat/ears = /datum/sprite_accessory/ears/cat - return initial(ears.name) + return /datum/sprite_accessory/ears/cat::name diff --git a/code/modules/client/preferences/species_features/lizard.dm b/code/modules/client/preferences/species_features/lizard.dm index 38c83690b3b5e..66c107153305e 100644 --- a/code/modules/client/preferences/species_features/lizard.dm +++ b/code/modules/client/preferences/species_features/lizard.dm @@ -142,5 +142,4 @@ target.dna.features["tail_lizard"] = value /datum/preference/choiced/lizard_tail/create_default_value() - var/datum/sprite_accessory/tails/lizard/smooth/tail = /datum/sprite_accessory/tails/lizard/smooth - return initial(tail.name) + return /datum/sprite_accessory/tails/lizard/smooth::name diff --git a/code/modules/client/preferences/species_features/monkey.dm b/code/modules/client/preferences/species_features/monkey.dm index adf9e367723de..8417cd7142e07 100644 --- a/code/modules/client/preferences/species_features/monkey.dm +++ b/code/modules/client/preferences/species_features/monkey.dm @@ -3,6 +3,7 @@ savefile_identifier = PREFERENCE_CHARACTER category = PREFERENCE_CATEGORY_SECONDARY_FEATURES relevant_external_organ = /obj/item/organ/external/tail/monkey + can_randomize = FALSE /datum/preference/choiced/monkey_tail/init_possible_values() return assoc_to_keys_features(SSaccessories.tails_list_monkey) @@ -11,5 +12,4 @@ target.dna.features["tail_monkey"] = value /datum/preference/choiced/monkey_tail/create_default_value() - var/datum/sprite_accessory/tails/monkey/default/tail = /datum/sprite_accessory/tails/monkey/default - return initial(tail.name) + return /datum/sprite_accessory/tails/monkey/default::name diff --git a/code/modules/client/preferences/trans_prosthetic.dm b/code/modules/client/preferences/trans_prosthetic.dm index fd28cb1ecf8c8..ea8128a1f44e4 100644 --- a/code/modules/client/preferences/trans_prosthetic.dm +++ b/code/modules/client/preferences/trans_prosthetic.dm @@ -3,6 +3,9 @@ savefile_key = "trans_prosthetic" savefile_identifier = PREFERENCE_CHARACTER +/datum/preference/choiced/trans_prosthetic/create_default_value() + return "Random" + /datum/preference/choiced/trans_prosthetic/init_possible_values() return list("Random") + GLOB.part_choice_transhuman diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 9a6448e2e6d54..5e848879d01f7 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -291,13 +291,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car return FALSE // Read everything into cache - for (var/preference_type in GLOB.preference_entries) - var/datum/preference/preference = GLOB.preference_entries[preference_type] + // Uses priority order as some values may rely on others for creating default values + for (var/datum/preference/preference as anything in get_preferences_in_priority_order()) if (preference.savefile_identifier != PREFERENCE_CHARACTER) continue - value_cache -= preference_type - read_preference(preference_type) + value_cache -= preference.type + read_preference(preference.type) //Character randomise = save_data?["randomise"] diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm index 95cc38353dafd..0c790b022394b 100644 --- a/code/modules/client/verbs/who.dm +++ b/code/modules/client/verbs/who.dm @@ -67,7 +67,7 @@ msg += "" msg += "Total Players: [length(Lines)]" - to_chat(src, examine_block(span_infoplain(msg))) // MASSMETA EDIT (lil bit better ui) + to_chat(src, examine_block(span_infoplain(msg))) //MASSMETA EDIT CHANGE (better ui) - ORIGINAL: to_chat(src, "[msg]") /client/verb/adminwho() set category = "Admin" diff --git a/code/modules/clothing/chameleon/chameleon_action_subtypes.dm b/code/modules/clothing/chameleon/chameleon_action_subtypes.dm index 275b2c6e0fc2a..bd15bb908f227 100644 --- a/code/modules/clothing/chameleon/chameleon_action_subtypes.dm +++ b/code/modules/clothing/chameleon/chameleon_action_subtypes.dm @@ -64,6 +64,11 @@ . = ..() chameleon_blacklist |= typecacheof(/obj/item/clothing/mask/changeling, only_root_path = TRUE) +/datum/action/item_action/chameleon/change/mask/initialize_disguises() + . = ..() + add_chameleon_items(/obj/item/cigarette) + add_chameleon_items(/obj/item/vape) + /datum/action/item_action/chameleon/change/hat chameleon_type = /obj/item/clothing/head chameleon_name = "Hat" diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 358bff5ce80d5..e2632dd394e0c 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -27,15 +27,15 @@ /// Whether or not vision coloring is forcing var/forced_glass_color = FALSE +/obj/item/clothing/glasses/Initialize(mapload) + . = ..() + if(glass_colour_type) + AddElement(/datum/element/wearable_client_colour, glass_colour_type, ITEM_SLOT_EYES, forced = forced_glass_color) + /obj/item/clothing/glasses/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] is stabbing \the [src] into [user.p_their()] eyes! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS -/obj/item/clothing/glasses/examine(mob/user) - . = ..() - if(glass_colour_type && !forced_glass_color && ishuman(user)) - . += span_notice("Alt-click to toggle [p_their()] colors.") - /obj/item/clothing/glasses/visor_toggling() . = ..() alternate_worn_layer = up ? ABOVE_BODY_FRONT_HEAD_LAYER : null @@ -62,37 +62,12 @@ H.set_eye_blur_if_lower(10 SECONDS) eyes.apply_organ_damage(5) -/obj/item/clothing/glasses/click_alt(mob/user) - if(isnull(glass_colour_type) || forced_glass_color || !ishuman(user)) - return NONE - var/mob/living/carbon/human/human_user = user - - if (HAS_TRAIT_FROM(human_user, TRAIT_SEE_GLASS_COLORS, GLASSES_TRAIT)) - REMOVE_TRAIT(human_user, TRAIT_SEE_GLASS_COLORS, GLASSES_TRAIT) - to_chat(human_user, span_notice("You will no longer see glasses colors.")) - else - ADD_TRAIT(human_user, TRAIT_SEE_GLASS_COLORS, GLASSES_TRAIT) - to_chat(human_user, span_notice("You will now see glasses colors.")) - human_user.update_glasses_color(src, TRUE) - return CLICK_ACTION_SUCCESS - -/obj/item/clothing/glasses/proc/change_glass_color(mob/living/carbon/human/H, datum/client_colour/glass_colour/new_color_type) - var/old_colour_type = glass_colour_type - if(!new_color_type || ispath(new_color_type)) //the new glass colour type must be null or a path. - glass_colour_type = new_color_type - if(H && H.glasses == src) - if(old_colour_type) - H.remove_client_colour(old_colour_type) - if(glass_colour_type) - H.update_glasses_color(src, 1) - - -/mob/living/carbon/human/proc/update_glasses_color(obj/item/clothing/glasses/G, glasses_equipped) - if((HAS_TRAIT(src, TRAIT_SEE_GLASS_COLORS) || G.forced_glass_color) && glasses_equipped) - add_client_colour(G.glass_colour_type) - else - remove_client_colour(G.glass_colour_type) - +/obj/item/clothing/glasses/proc/change_glass_color(new_color_type) + if(glass_colour_type) + RemoveElement(/datum/element/wearable_client_colour, glass_colour_type, ITEM_SLOT_EYES, forced = forced_glass_color) + glass_colour_type = new_color_type + if(glass_colour_type) + AddElement(/datum/element/wearable_client_colour, glass_colour_type, ITEM_SLOT_EYES, forced = forced_glass_color) /obj/item/clothing/glasses/meson name = "optical meson scanner" @@ -117,8 +92,14 @@ inhand_icon_state = "nvgmeson" flash_protect = FLASH_PROTECTION_SENSITIVE // Night vision mesons get the same but more intense - color_cutoffs = list(10, 30, 10) - glass_colour_type = /datum/client_colour/glass_colour/green + color_cutoffs = list(10, 35, 10) + glass_colour_type = /datum/client_colour/glass_colour/lightgreen + actions_types = list(/datum/action/item_action/toggle_nv) + forced_glass_color = TRUE + +/obj/item/clothing/glasses/meson/night/update_icon_state() + . = ..() + icon_state = length(color_cutoffs) ? initial(icon_state) : "nvgmeson_off" /obj/item/clothing/glasses/meson/gar name = "gar mesons" @@ -163,8 +144,14 @@ icon_state = "scihudnight" flash_protect = FLASH_PROTECTION_SENSITIVE // Real vivid purple - color_cutoffs = list(50, 10, 30) - glass_colour_type = /datum/client_colour/glass_colour/green + color_cutoffs = list(30, 5, 15) + glass_colour_type = /datum/client_colour/glass_colour/lightpurple + actions_types = list(/datum/action/item_action/toggle_nv) + forced_glass_color = TRUE + +/obj/item/clothing/glasses/science/night/update_icon_state() + . = ..() + icon_state = length(color_cutoffs) ? initial(icon_state) : "night_off" /obj/item/clothing/glasses/night name = "night vision goggles" @@ -174,8 +161,18 @@ flags_cover = GLASSESCOVERSEYES flash_protect = FLASH_PROTECTION_SENSITIVE // Dark green - color_cutoffs = list(10, 30, 10) - glass_colour_type = /datum/client_colour/glass_colour/green + color_cutoffs = list(10, 25, 10) + glass_colour_type = /datum/client_colour/glass_colour/lightgreen + actions_types = list(/datum/action/item_action/toggle_nv) + forced_glass_color = TRUE + +/obj/item/clothing/glasses/night/update_icon_state() + . = ..() + icon_state = length(color_cutoffs) ? initial(icon_state) : "night_off" + +/obj/item/clothing/glasses/night/colorless + desc = parent_type::desc + " Now with 50% less green!" + forced_glass_color = FALSE /obj/item/clothing/glasses/eyepatch name = "eyepatch" @@ -351,8 +348,8 @@ /obj/item/clothing/glasses/sunglasses/proc/add_glasses_slapcraft_component() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/hudsunsec, /datum/crafting_recipe/hudsunmed, /datum/crafting_recipe/hudsundiag, /datum/crafting_recipe/scienceglasses) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -371,8 +368,8 @@ /obj/item/clothing/glasses/sunglasses/chemical/add_glasses_slapcraft_component() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/scienceglassesremoval) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index c9fbb159126f3..064a24cf5c779 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -47,21 +47,21 @@ if(MODE_MESON) vision_flags = SEE_TURFS color_cutoffs = list(15, 12, 0) - change_glass_color(user, /datum/client_colour/glass_colour/yellow) + change_glass_color(/datum/client_colour/glass_colour/yellow) if(MODE_TRAY) //undoes the last mode, meson vision_flags = NONE color_cutoffs = null - change_glass_color(user, /datum/client_colour/glass_colour/lightblue) + change_glass_color(/datum/client_colour/glass_colour/lightblue) if(MODE_PIPE_CONNECTABLE) - change_glass_color(user, /datum/client_colour/glass_colour/lightblue) + change_glass_color(/datum/client_colour/glass_colour/lightblue) if(MODE_SHUTTLE) - change_glass_color(user, /datum/client_colour/glass_colour/red) + change_glass_color(/datum/client_colour/glass_colour/red) if(MODE_NONE) - change_glass_color(user, initial(glass_colour_type)) + change_glass_color(initial(glass_colour_type)) if(ishuman(user)) var/mob/living/carbon/human/H = user diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 46900c1caa9a5..4f5668f7bcce7 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -4,7 +4,7 @@ flags_1 = null //doesn't protect eyes because it's a monocle, duh var/hud_type = null - // NOTE: Just because you have a HUD display doesn't mean you should be able to interact with stuff on examine, that's where the associated trait (TRAIT_MEDICAL_HUD, TRAIT_SECURITY_HUD, etc) is necessary. + // NOTE: Just because you have a HUD display doesn't mean you should be able to interact with stuff on examine, that's where the associated trait (TRAIT_MEDICAL_HUD, TRAIT_SECURITY_HUD, etc) is necessary. /obj/item/clothing/glasses/hud/equipped(mob/living/carbon/human/user, slot) ..() @@ -67,8 +67,14 @@ flash_protect = FLASH_PROTECTION_SENSITIVE flags_cover = GLASSESCOVERSEYES // Blue green, dark - color_cutoffs = list(5, 15, 30) - glass_colour_type = /datum/client_colour/glass_colour/green + color_cutoffs = list(20, 20, 45) + glass_colour_type = /datum/client_colour/glass_colour/lightgreen + actions_types = list(/datum/action/item_action/toggle_nv) + forced_glass_color = TRUE + +/obj/item/clothing/glasses/hud/health/night/update_icon_state() + . = ..() + icon_state = length(color_cutoffs) ? initial(icon_state) : "night_off" /obj/item/clothing/glasses/hud/health/night/meson name = "night vision meson health scanner HUD" @@ -79,7 +85,8 @@ name = "night vision medical science scanner HUD" desc = "An clandestine medical science heads-up display that allows operatives to find \ dying captains and the perfect poison to finish them off in complete darkness." - clothing_traits = list(TRAIT_REAGENT_SCANNER) + clothing_traits = list(TRAIT_REAGENT_SCANNER, TRAIT_MEDICAL_HUD) + forced_glass_color = FALSE /obj/item/clothing/glasses/hud/health/sunglasses name = "medical HUDSunglasses" @@ -94,8 +101,8 @@ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/hudsunmedremoval) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -115,8 +122,14 @@ flash_protect = FLASH_PROTECTION_SENSITIVE flags_cover = GLASSESCOVERSEYES // Pale yellow - color_cutoffs = list(30, 20, 5) - glass_colour_type = /datum/client_colour/glass_colour/green + color_cutoffs = list(25, 15, 5) + glass_colour_type = /datum/client_colour/glass_colour/lightyellow + actions_types = list(/datum/action/item_action/toggle_nv) + forced_glass_color = TRUE + +/obj/item/clothing/glasses/hud/diagnostic/night/update_icon_state() + . = ..() + icon_state = length(color_cutoffs) ? initial(icon_state) : "night_off" /obj/item/clothing/glasses/hud/diagnostic/sunglasses name = "diagnostic sunglasses" @@ -131,8 +144,8 @@ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/hudsundiagremoval) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -175,8 +188,8 @@ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/hudsunsecremoval) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -187,8 +200,14 @@ flash_protect = FLASH_PROTECTION_SENSITIVE flags_cover = GLASSESCOVERSEYES // Red with a tint of green - color_cutoffs = list(35, 5, 5) - glass_colour_type = /datum/client_colour/glass_colour/green + color_cutoffs = list(40, 15, 10) + glass_colour_type = /datum/client_colour/glass_colour/lightred + actions_types = list(/datum/action/item_action/toggle_nv) + forced_glass_color = TRUE + +/obj/item/clothing/glasses/hud/security/night/update_icon_state() + . = ..() + icon_state = length(color_cutoffs) ? initial(icon_state) : "night_off" /obj/item/clothing/glasses/hud/security/sunglasses/gars name = "\improper HUD gar glasses" @@ -257,15 +276,15 @@ if (DATA_HUD_MEDICAL_ADVANCED) icon_state = "meson" color_cutoffs = list(5, 15, 5) - change_glass_color(user, /datum/client_colour/glass_colour/green) + change_glass_color(/datum/client_colour/glass_colour/green) if (DATA_HUD_SECURITY_ADVANCED) icon_state = "thermal" color_cutoffs = list(25, 8, 5) - change_glass_color(user, /datum/client_colour/glass_colour/red) + change_glass_color(/datum/client_colour/glass_colour/red) else icon_state = "purple" color_cutoffs = list(15, 0, 25) - change_glass_color(user, /datum/client_colour/glass_colour/purple) + change_glass_color(/datum/client_colour/glass_colour/purple) user.update_sight() user.update_worn_glasses() diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm index 03b1cbb5bf782..021d895f69c36 100644 --- a/code/modules/clothing/gloves/boxing.dm +++ b/code/modules/clothing/gloves/boxing.dm @@ -13,8 +13,8 @@ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/extendohand_l, /datum/crafting_recipe/extendohand_r) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index ddb0e07dd9986..bb0e12809955e 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -15,8 +15,8 @@ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/radiogloves) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -37,8 +37,8 @@ . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/gripperoffbrand) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 018543d93a33c..6c8d672b3af0a 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -158,6 +158,14 @@ if(!up) . += visor_state +/obj/item/clothing/head/utility/hardhat/welding/up + up = TRUE // for calls to worn_overlays before init (prefs) + +/obj/item/clothing/head/utility/hardhat/welding/up/Initialize(mapload) + . = ..() + up = FALSE + visor_toggling() + /obj/item/clothing/head/utility/hardhat/welding/orange icon_state = "hardhat0_orange" inhand_icon_state = null @@ -175,6 +183,15 @@ cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT +/obj/item/clothing/head/utility/hardhat/welding/white/up + up = TRUE // for calls to worn_overlays before init (prefs) + +/obj/item/clothing/head/utility/hardhat/welding/white/up/Initialize(mapload) + . = ..() + up = FALSE + visor_toggling() + + /obj/item/clothing/head/utility/hardhat/welding/dblue icon_state = "hardhat0_dblue" inhand_icon_state = null @@ -226,6 +243,10 @@ . = ..() if(isnull(.)) return + if(new_value) + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/halloween_helmet, ITEM_SLOT_HEAD, forced = TRUE) + else + RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/halloween_helmet, ITEM_SLOT_HEAD, forced = TRUE) update_icon(UPDATE_OVERLAYS) /obj/item/clothing/head/utility/hardhat/pumpkinhead/update_overlays() diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 27be2799b7d2e..4d41d9daa5c76 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/clothing/head/helmet.dmi' worn_icon = 'icons/mob/clothing/head/helmet.dmi' icon_state = "helmet" + base_icon_state = "helmet" inhand_icon_state = "helmet" armor_type = /datum/armor/head_helmet cold_protection = HEAD @@ -31,6 +32,7 @@ AddElement(/datum/element/update_icon_updates_onmob) /obj/item/clothing/head/helmet/sec + var/flipped_visor = FALSE /obj/item/clothing/head/helmet/sec/Initialize(mapload) . = ..() @@ -60,6 +62,19 @@ return ..() +/obj/item/clothing/head/helmet/sec/click_alt(mob/user) + flipped_visor = !flipped_visor + balloon_alert(user, "visor flipped") + // base_icon_state is modified for seclight attachment component + base_icon_state = "[initial(base_icon_state)][flipped_visor ? "-novisor" : ""]" + icon_state = base_icon_state + if (flipped_visor) + flags_cover &= ~HEADCOVERSEYES + else + flags_cover |= HEADCOVERSEYES + update_appearance() + return CLICK_ACTION_SUCCESS + /obj/item/clothing/head/helmet/alt name = "bulletproof helmet" desc = "A bulletproof combat helmet that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent." @@ -395,6 +410,7 @@ armor_type = /datum/armor/helmet_knight flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH + resistance_flags = NONE strip_delay = 80 dog_fashion = null clothing_traits = list(TRAIT_HEAD_INJURY_BLOCKED) diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 5ea7d62313bd4..a5041de7fa0a9 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -412,8 +412,8 @@ /datum/crafting_recipe/sturdy_shako,\ ) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index ef90fcf97e10a..36fe591a63edb 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -27,7 +27,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( ///Does the mask have an FOV? var/has_fov = TRUE ///Cigarette in the mask - var/obj/item/clothing/mask/cigarette/cig + var/obj/item/cigarette/cig voice_filter = "lowpass=f=750,volume=2" /datum/armor/mask_gas @@ -84,7 +84,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( /obj/item/clothing/mask/gas/attackby(obj/item/tool, mob/user) var/valid_wearer = ismob(loc) var/mob/wearer = loc - if(istype(tool, /obj/item/clothing/mask/cigarette)) + if(istype(tool, /obj/item/cigarette)) if(flags_cover & MASKCOVERSMOUTH) balloon_alert(user, "mask's mouth is covered!") return ..() diff --git a/code/modules/clothing/masks/muzzle.dm b/code/modules/clothing/masks/muzzle.dm index 32f29a54a1f43..6154e7762cb52 100644 --- a/code/modules/clothing/masks/muzzle.dm +++ b/code/modules/clothing/masks/muzzle.dm @@ -5,11 +5,14 @@ inhand_icon_state = "blindfold" lefthand_file = 'icons/mob/inhands/clothing/glasses_lefthand.dmi' righthand_file = 'icons/mob/inhands/clothing/glasses_righthand.dmi' - clothing_flags = BLOCKS_SPEECH flags_cover = MASKCOVERSMOUTH w_class = WEIGHT_CLASS_SMALL equip_delay_other = 20 +/obj/item/clothing/mask/muzzle/Initialize(mapload) + . = ..() + AddElement(/datum/element/muffles_speech) + /obj/item/clothing/mask/muzzle/attack_paw(mob/user, list/modifiers) if(iscarbon(user)) var/mob/living/carbon/carbon_user = user @@ -26,7 +29,7 @@ lefthand_file = 'icons/mob/inhands/clothing/masks_lefthand.dmi' righthand_file = 'icons/mob/inhands/clothing/masks_righthand.dmi' body_parts_covered = NONE - clothing_flags = MASKINTERNALS | BLOCKS_SPEECH + clothing_flags = MASKINTERNALS armor_type = /datum/armor/muzzle_breath equip_delay_other = 25 // my sprite has 4 straps, a-la a head harness. takes a while to equip, longer than a muzzle @@ -37,7 +40,7 @@ worn_icon_state = "tape_piece_worn" inhand_icon_state = null w_class = WEIGHT_CLASS_TINY - clothing_flags = INEDIBLE_CLOTHING|BLOCKS_SPEECH + clothing_flags = INEDIBLE_CLOTHING equip_delay_other = 40 strip_delay = 40 greyscale_config = /datum/greyscale_config/tape_piece diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index db20562039b23..2aa61b0046070 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -242,7 +242,7 @@ /obj/item/storage/box/lights/mixed = 1, ) belt = /obj/item/storage/belt/janitor/full - glasses = /obj/item/clothing/glasses/night + glasses = /obj/item/clothing/glasses/night/colorless l_pocket = /obj/item/grenade/chem_grenade/cleaner r_pocket = /obj/item/grenade/chem_grenade/cleaner l_hand = /obj/item/storage/bag/trash/bluespace diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 6c088760f07db..422cb34fa090d 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -11,7 +11,7 @@ glasses = /obj/item/clothing/glasses/thermal/eyepatch gloves = /obj/item/clothing/gloves/tackler/combat/insulated head = /obj/item/clothing/head/helmet/space/beret - mask = /obj/item/clothing/mask/cigarette/cigar/havana + mask = /obj/item/cigarette/cigar/havana shoes = /obj/item/clothing/shoes/combat/swat r_pocket = /obj/item/lighter @@ -245,7 +245,7 @@ glasses = /obj/item/clothing/glasses/sunglasses gloves = /obj/item/clothing/gloves/tackler/combat/insulated head = /obj/item/clothing/head/hats/centhat - mask = /obj/item/clothing/mask/cigarette/cigar/cohiba + mask = /obj/item/cigarette/cigar/cohiba shoes = /obj/item/clothing/shoes/combat/swat l_pocket = /obj/item/ammo_box/a357 r_pocket = /obj/item/lighter diff --git a/code/modules/clothing/shoes/sneakers.dm b/code/modules/clothing/shoes/sneakers.dm index 39ef74d27110e..6e5ffd313efa5 100644 --- a/code/modules/clothing/shoes/sneakers.dm +++ b/code/modules/clothing/shoes/sneakers.dm @@ -64,7 +64,7 @@ /obj/item/clothing/shoes/sneakers/rainbow name = "rainbow shoes" - desc = "Very rainbow shoes." //MASSMETA EDIT - ORIGINAL - "Very gay shoes." + desc = "Very rainbow shoes." //MASSMETA EDIT CHANGE (gay removal) - ORIGINAL: "Very gay shoes." icon_state = "rain_bow" inhand_icon_state = "rainbow_sneakers" diff --git a/code/modules/clothing/spacesuits/pirate.dm b/code/modules/clothing/spacesuits/pirate.dm index 946c0c2b66fdd..ca041d68d036f 100644 --- a/code/modules/clothing/spacesuits/pirate.dm +++ b/code/modules/clothing/spacesuits/pirate.dm @@ -30,3 +30,15 @@ armor_type = /datum/armor/space_pirate strip_delay = 40 equip_delay_other = 20 + +/obj/item/clothing/head/helmet/space/pirate/tophat + name = "designer pirate helmet" + desc = "A modified EVA helmet with a five-thousand credit Lizzy Vuitton hat affixed to the top, proving that working in deep space is no excuse for being poor." + icon_state = "spacetophat" + +/obj/item/clothing/suit/space/pirate/silverscale + name = "designer pirate suit" + desc = "A specially-made Cybersun branded space suit; the fine plastisilk exterior is woven from the coccons of black-market Lümlan mothroaches \ + and the trim is lined with the ivory of the critically endagered Zanzibarian dwarf elephant. Baby seal leather boots sold seperately." + inhand_icon_state = "syndicate-black" + icon_state = "syndicate-black-white" diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 67702582ff857..9cca1cfc3af08 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -28,6 +28,7 @@ GLOBAL_LIST_INIT(syndicate_space_suits_to_helmets,list( /obj/item/clothing/suit/space/syndicate/black/blue = /obj/item/clothing/head/helmet/space/syndicate/black/blue, /obj/item/clothing/suit/space/syndicate/black/orange = /obj/item/clothing/head/helmet/space/syndicate/black/orange, /obj/item/clothing/suit/space/syndicate/black/red = /obj/item/clothing/head/helmet/space/syndicate/black/red, + /obj/item/clothing/suit/space/syndicate/black/white = /obj/item/clothing/head/helmet/space/syndicate/black, /obj/item/clothing/suit/space/syndicate/black/med = /obj/item/clothing/head/helmet/space/syndicate/black/med, /obj/item/clothing/suit/space/syndicate/black/engie = /obj/item/clothing/head/helmet/space/syndicate/black/engie, )) @@ -132,6 +133,13 @@ GLOBAL_LIST_INIT(syndicate_space_suits_to_helmets,list( inhand_icon_state = "syndicate-black-blue" helmet_type = /obj/item/clothing/head/helmet/space/syndicate/black/blue +//Black and white syndicate space suit without the medical iconography +/obj/item/clothing/suit/space/syndicate/black/white + name = "black and white space suit" + icon_state = "syndicate-black-white" + inhand_icon_state = "syndicate-black" + helmet_type = /obj/item/clothing/head/helmet/space/syndicate/black + //Black medical syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/black/med diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index 9cf86a396e95a..929e8d931d5ca 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -21,6 +21,10 @@ body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS|HIDEFACIALHAIR|HIDEFACE|HIDEMASK|HIDESNOUT +/obj/item/clothing/head/hooded/flashsuit/Initialize(mapload) + . = ..() + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/flash_hood, ITEM_SLOT_HEAD, forced = TRUE) + /obj/item/clothing/suit/costume/pirate name = "pirate coat" desc = "Yarr." diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index bc091aaeb6651..2b8fef5bb5b46 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -61,7 +61,7 @@ body_parts_covered = CHEST|GROIN|ARMS allowed = list( /obj/item/assembly/flash/handheld, - /obj/item/clothing/mask/cigarette, + /obj/item/cigarette, /obj/item/disk, /obj/item/lighter, /obj/item/melee, @@ -385,27 +385,6 @@ body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS -// Research Director - -/obj/item/clothing/suit/jacket/research_director - name = "research director's coat" - desc = "A mix between a labcoat and just a regular coat. It's made out of a special anti-bacterial, anti-acidic, and anti-biohazardous synthetic fabric." - icon_state = "labcoat_rd" - armor_type = /datum/armor/jacket_research_director - body_parts_covered = CHEST|GROIN|ARMS - -/datum/armor/jacket_research_director - bio = 75 - fire = 75 - acid = 75 - -/obj/item/clothing/suit/jacket/research_director/Initialize(mapload) - . = ..() - allowed += list( - /obj/item/storage/bag/xeno, - /obj/item/melee/baton/telescopic, - ) - // Atmos /obj/item/clothing/suit/atmos_overalls name = "atmospherics overalls" diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index f48e49c11b701..e5cda21a78a77 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -69,6 +69,10 @@ greyscale_config_worn = /datum/greyscale_config/labcoat/worn greyscale_colors = "#EEEEEE#4A77A1#4A77A1#7095C2" +/obj/item/clothing/suit/toggle/labcoat/genetics/Initialize(mapload) + . = ..() + allowed += /obj/item/sequence_scanner + /obj/item/clothing/suit/toggle/labcoat/chemist name = "chemist labcoat" desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder." @@ -138,3 +142,24 @@ greyscale_config = /datum/greyscale_config/labcoat greyscale_config_worn = /datum/greyscale_config/labcoat/worn greyscale_colors = "#EEEEEE#88242D#88242D#39393F" + +// Research Director + +/obj/item/clothing/suit/toggle/labcoat/research_director + name = "research director's coat" + desc = "A mix between a labcoat and just a regular coat. It's made out of a special anti-bacterial, anti-acidic, and anti-biohazardous synthetic fabric." + icon_state = "labcoat_rd" + armor_type = /datum/armor/jacket_research_director + body_parts_covered = CHEST|GROIN|ARMS + +/datum/armor/jacket_research_director + bio = 75 + fire = 75 + acid = 75 + +/obj/item/clothing/suit/toggle/labcoat/research_director/Initialize(mapload) + . = ..() + allowed += list( + /obj/item/storage/bag/xeno, + /obj/item/melee/baton/telescopic, + ) diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index c04b68ab553a8..1541c66a333b6 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -57,6 +57,7 @@ /obj/item/clothing/suit/utility/fire/firefighter icon_state = "firesuit" inhand_icon_state = "firefighter" + flags_inv = HIDESHOES|HIDEJUMPSUIT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS cold_protection = CHEST|GROIN|LEGS|FEET|ARMS body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index 02c3399db7b4d..cbbe357690846 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -502,6 +502,10 @@ inhand_icon_state = null hoodtype = /obj/item/clothing/head/hooded/winterhood/science/genetics +/obj/item/clothing/suit/hooded/wintercoat/science/genetics/Initialize(mapload) + . = ..() + allowed += /obj/item/sequence_scanner + /obj/item/clothing/head/hooded/winterhood/science/genetics desc = "A white winter coat hood. It's warm." icon_state = "hood_genetics" diff --git a/code/modules/deathmatch/deathmatch_loadouts.dm b/code/modules/deathmatch/deathmatch_loadouts.dm index b4c6af04304eb..911e5bf6e1b15 100644 --- a/code/modules/deathmatch/deathmatch_loadouts.dm +++ b/code/modules/deathmatch/deathmatch_loadouts.dm @@ -371,7 +371,7 @@ display_name = "Cowboy" desc = "Yeehaw partner" - r_hand = /obj/item/clothing/mask/cigarette/cigar + r_hand = /obj/item/cigarette/cigar l_hand = /obj/item/melee/curator_whip l_pocket = /obj/item/lighter accessory = /obj/item/clothing/accessory/vest_sheriff @@ -405,7 +405,7 @@ suit = /obj/item/clothing/suit/wizrobe/red head = /obj/item/clothing/head/wizard/red - mask = /obj/item/clothing/mask/cigarette + mask = /obj/item/cigarette granted_spells = list( /datum/action/cooldown/spell/pointed/projectile/fireball, /datum/action/cooldown/spell/smoke, @@ -673,7 +673,7 @@ /datum/outfit/deathmatch_loadout/battler/clown/upgraded name = "Deathmatch: Clown (Syndicate Gear)" - display_name = "Clown" + display_name = "Clown Commando" desc = "They were bound to show up sooner or later." shoes = /obj/item/clothing/shoes/clown_shoes/combat @@ -727,7 +727,7 @@ /datum/outfit/deathmatch_loadout/chef/upgraded name = "Deathmatch: Master Chef" - display_name = "Chef" + display_name = "Master Chef" desc = "Let him cook." belt = /obj/item/gun/magic/hook diff --git a/code/modules/deathmatch/deathmatch_lobby.dm b/code/modules/deathmatch/deathmatch_lobby.dm index 028653a2f2124..ffc41c887162d 100644 --- a/code/modules/deathmatch/deathmatch_lobby.dm +++ b/code/modules/deathmatch/deathmatch_lobby.dm @@ -21,6 +21,8 @@ var/list/modifiers = list() /// Is the modifiers modal menu open (for the host) var/mod_menu_open = FALSE + /// artificial time padding when we start loading to give lighting a breather (admin starts will set this to 0) + var/start_time = 8 SECONDS /datum/deathmatch_lobby/New(mob/player) . = ..() @@ -79,7 +81,7 @@ UnregisterSignal(source, COMSIG_LAZY_TEMPLATE_LOADED) map.template_in_use = FALSE - addtimer(CALLBACK(src, PROC_REF(start_game_after_delay)), 8 SECONDS) + addtimer(CALLBACK(src, PROC_REF(start_game_after_delay)), start_time) /datum/deathmatch_lobby/proc/start_game_after_delay() if (!length(player_spawns) || length(player_spawns) < length(players)) @@ -152,7 +154,14 @@ GLOB.deathmatch_game.modifiers[modifier].apply(new_player, src) // register death handling. - RegisterSignals(new_player, list(COMSIG_LIVING_DEATH, COMSIG_MOB_GHOSTIZED, COMSIG_QDELETING), PROC_REF(player_died)) + register_player_signals(new_player) + +/datum/deathmatch_lobby/proc/register_player_signals(new_player) + RegisterSignals(new_player, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING, COMSIG_MOB_GHOSTIZED), PROC_REF(player_died)) + RegisterSignal(new_player, COMSIG_LIVING_ON_WABBAJACKED, PROC_REF(player_wabbajacked)) + +/datum/deathmatch_lobby/proc/unregister_player_signals(new_player) + UnregisterSignal(new_player, list(COMSIG_LIVING_DEATH, COMSIG_QDELETING, COMSIG_MOB_GHOSTIZED, COMSIG_LIVING_ON_WABBAJACKED)) /datum/deathmatch_lobby/proc/game_took_too_long() if (!location || QDELING(src)) @@ -173,9 +182,9 @@ for(var/ckey in players) var/mob/loser = players[ckey]["mob"] - UnregisterSignal(loser, list(COMSIG_MOB_GHOSTIZED, COMSIG_QDELETING)) + unregister_player_signals(loser) players[ckey]["mob"] = null - loser.ghostize() + loser.ghostize(can_reenter_corpse = FALSE) qdel(loser) for(var/datum/deathmatch_modifier/modifier in modifiers) @@ -185,12 +194,18 @@ GLOB.deathmatch_game.remove_lobby(host) log_game("Deathmatch game [host] ended.") +/datum/deathmatch_lobby/proc/player_wabbajacked(mob/living/player, mob/living/new_mob) + SIGNAL_HANDLER + unregister_player_signals(player) + players[player.ckey]["mob"] = new_mob + register_player_signals(new_mob) + /datum/deathmatch_lobby/proc/player_died(mob/living/player, gibbed) SIGNAL_HANDLER - if(isnull(player) || QDELING(src)) + if(isnull(player) || QDELING(src) || HAS_TRAIT_FROM(player, TRAIT_NO_TRANSFORM, MAGIC_TRAIT)) //this trait check fixes polymorphing return - var/ckey = player.ckey + var/ckey = player.ckey ? player.ckey : player.mind?.key if(!islist(players[ckey])) // potentially the player info could hold a reference to this mob so we can figure the ckey out without worrying about ghosting and suicides n such for(var/potential_ckey in players) var/list/player_info = players[potential_ckey] @@ -209,8 +224,9 @@ announce(span_reallybig("[player.real_name] HAS DIED.
    [players.len] REMAIN.")) - if(!gibbed && !QDELING(player)) + if(!gibbed && !QDELING(player) && !isdead(player)) if(!HAS_TRAIT(src, TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS)) + unregister_player_signals(player) player.dust(TRUE, TRUE, TRUE) if (players.len <= 1) end_game() @@ -338,6 +354,7 @@ .["maps"] = list() for (var/map_key in GLOB.deathmatch_game.maps) .["maps"] += map_key + .["maps"] = sort_list(.["maps"]) /datum/deathmatch_lobby/ui_data(mob/user) @@ -499,12 +516,13 @@ if ("admin") // Admin functions if (!check_rights(R_ADMIN)) - message_admins("[usr.key] has attempted to use admin functions in a deathmatch lobby!") + message_admins("[usr.key] has attempted to use admin functions in a deathmatch lobby without being an admin!") log_admin("[key_name(usr)] tried to use the deathmatch lobby admin functions without authorization.") return switch (params["func"]) if ("Force start") log_admin("[key_name(usr)] force started deathmatch lobby [host].") + start_time = 0 start_game() return FALSE diff --git a/code/modules/deathmatch/deathmatch_mapping.dm b/code/modules/deathmatch/deathmatch_mapping.dm index 320b87d2fd15d..9f006e1524295 100644 --- a/code/modules/deathmatch/deathmatch_mapping.dm +++ b/code/modules/deathmatch/deathmatch_mapping.dm @@ -2,7 +2,7 @@ name = "Deathmatch Arena" requires_power = FALSE has_gravity = STANDARD_GRAVITY - area_flags = UNIQUE_AREA | NOTELEPORT | EVENT_PROTECTED | QUIET_LOGS + area_flags = UNIQUE_AREA | NOTELEPORT | EVENT_PROTECTED | QUIET_LOGS | NO_DEATH_MESSAGE | BINARY_JAMMING /area/deathmatch/fullbright static_lighting = FALSE @@ -12,7 +12,7 @@ name = "Deathmatch Player Spawner" /area/deathmatch/teleport //Prevent access to cross-z teleportation in the map itself (no wands of safety/teleportation scrolls). Cordons should prevent same-z teleportations outside of the arena. - area_flags = UNIQUE_AREA | EVENT_PROTECTED | QUIET_LOGS + area_flags = /area/deathmatch::area_flags & ~NOTELEPORT // for the illusion of a moving train /turf/open/chasm/true/no_smooth/fake_motion_sand diff --git a/code/modules/discord/accountlink.dm b/code/modules/discord/accountlink.dm index 5ff80d34e471e..206b103ec0df1 100644 --- a/code/modules/discord/accountlink.dm +++ b/code/modules/discord/accountlink.dm @@ -21,14 +21,14 @@ // Simple sanity check to prevent a user doing this too often var/cached_one_time_token = SSdiscord.reverify_cache[usr.ckey] if(cached_one_time_token && cached_one_time_token != "") - message = "You already generated your one time token, it is [cached_one_time_token]. If you need a new one, you will have to wait until the round ends, or switch to another server; try verifying yourself on Discord by copying this command: [prefix]verify [cached_one_time_token] and pasting it into the verification channel." + message = "Введите свой сгенерированный одноразовый токен [cached_one_time_token] в Дискорд-канал #верификация. Если по каким-либо причинам вам нужен новый - дождитесь окончания раунда и повторите все заново." //MASSMETA EDIT CHANGE (discord verification) else // Will generate one if an expired one doesn't exist already, otherwise will grab existing token var/one_time_token = SSdiscord.get_or_generate_one_time_token_for_ckey(ckey) SSdiscord.reverify_cache[usr.ckey] = one_time_token - message = "Your one time token is: [one_time_token]. Assuming you have the required living minutes in game, you can now verify yourself on Discord by using the command: [prefix]verify [one_time_token]" + message = "Ваш одноразовый токен: [one_time_token]. Теперь вы можете пройти верификацию, перейдя в канал #верификация в дискорде, нажав соответствующую кнопку у Бота и вписав там данный токен: [one_time_token]" //MASSMETA EDIT CHANGE (discord verification) //Now give them a browse window so they can't miss whatever we told them var/datum/browser/window = new/datum/browser(usr, "discordverification", "Discord Verification") diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index 358057e1de0d9..0a41f5ffb6c9a 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -22,7 +22,7 @@ var/holidayID = "" //string which should be in the SSeventss.holidays list if you wish this event to be holiday-specific //anything with a (non-null) holidayID which does not match holiday, cannot run. var/wizardevent = FALSE - var/alert_observers = TRUE //should we let the ghosts and admins know this event is firing + var/alert_observers = TRUE //should we let the ghosts know this event is firing //should be disabled on events that fire a lot /// Minimum wizard rituals at which to trigger this event, inclusive @@ -101,15 +101,14 @@ triggering = TRUE - // We sleep HERE, in pre-event setup (because there's no sense doing it in run_event() since the event is already running!) for the given amount of time to make an admin has enough time to cancel an event un-fitting of the present round. - if(alert_observers) - message_admins("Random Event triggering in [DisplayTimeText(RANDOM_EVENT_ADMIN_INTERVENTION_TIME)]: [name]. (CANCEL) (SOMETHING ELSE)") - sleep(RANDOM_EVENT_ADMIN_INTERVENTION_TIME) - var/players_amt = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE) - if(!can_spawn_event(players_amt)) - message_admins("Second pre-condition check for [name] failed, rerolling...") - SSevents.spawnEvent(excluded_event = src) - return EVENT_INTERRUPTED + // We sleep HERE, in pre-event setup (because there's no sense doing it in run_event() since the event is already running!) for the given amount of time to make an admin has enough time to cancel an event un-fitting of the present round or at least reroll it. + message_admins("Random Event triggering in [DisplayTimeText(RANDOM_EVENT_ADMIN_INTERVENTION_TIME)]: [name]. (CANCEL) (SOMETHING ELSE)") + sleep(RANDOM_EVENT_ADMIN_INTERVENTION_TIME) + var/players_amt = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE) + if(!can_spawn_event(players_amt)) + message_admins("Second pre-condition check for [name] failed, rerolling...") + SSevents.spawnEvent(excluded_event = src) + return EVENT_INTERRUPTED if(!triggering) return EVENT_CANCELLED //admin cancelled diff --git a/code/modules/events/ghost_role/fugitive_event.dm b/code/modules/events/ghost_role/fugitive_event.dm index 88d63d91bb5fe..9eb792a6f6ab3 100644 --- a/code/modules/events/ghost_role/fugitive_event.dm +++ b/code/modules/events/ghost_role/fugitive_event.dm @@ -61,6 +61,7 @@ HUNTER_PACK_RUSSIAN, HUNTER_PACK_BOUNTY, HUNTER_PACK_PSYKER, + HUNTER_PACK_MI13, ) addtimer(CALLBACK(src, PROC_REF(check_spawn_hunters), hunter_backstory, 10 MINUTES), 1 MINUTES) role_name = "fugitive hunter" @@ -124,6 +125,8 @@ ship = new /datum/map_template/shuttle/hunter/bounty if(HUNTER_PACK_PSYKER) ship = new /datum/map_template/shuttle/hunter/psyker + if(HUNTER_PACK_MI13) + ship = new/datum/map_template/shuttle/hunter/mi13_foodtruck var/x = rand(TRANSITIONEDGE,world.maxx - TRANSITIONEDGE - ship.width) var/y = rand(TRANSITIONEDGE,world.maxy - TRANSITIONEDGE - ship.height) @@ -152,6 +155,38 @@ header = "Spawn Here!", ) - priority_announce("Unidentified ship detected near the station.") + var/list/announcement_text_list = list() + var/announcement_title = "" + switch(backstory) + if(HUNTER_PACK_COPS) + announcement_text_list += "Attention Crew of [GLOB.station_name], this is the Police. A wanted criminal has been reported taking refuge on your station." + announcement_text_list += "We have a warrant from the SSC authorities to take them into custody. Officers have been dispatched to your location." + announcement_text_list += "We demand your cooperation in bringing this criminal to justice." + announcement_title += "Spacepol Command" + if(HUNTER_PACK_RUSSIAN) + announcement_text_list += "Zdraviya zhelaju, [GLOB.station_name] crew. We are coming to your station." + announcement_text_list += "There is a criminal aboard. We will arrest them and return them to the gulag. That's good, yes?" + announcement_title += "Russian Freighter" + if(HUNTER_PACK_BOUNTY) + announcement_text_list += "[GLOB.station_name]. One of our bounty marks has ended up on your station. We will be arriving to collect shortly." + announcement_text_list += "Let's make this quick. If you don't want trouble, stay the hell out of our way." + announcement_title += "Unregistered Signal" + if(HUNTER_PACK_PSYKER) + announcement_text_list += "HEY, CAN YOU HEAR US? We're coming to your station. There's a bad guy down there, really bad guy. We need to arrest them." + announcement_text_list += "We're also offering fortune telling services out of the front door if you have paying customers." + announcement_title += "Fortune-Telling Entertainment Shuttle" + if(HUNTER_PACK_MI13) + announcement_text_list += "Illegal intrusion detected in the crew monitoring network. Central Command has been informed." + announcement_text_list += "Please report any suspicious individuals or behaviour to your local security team." + announcement_title += "Nanotrasen Intrusion Countermeasures Electronics" + if(!length(announcement_text_list)) + announcement_text_list += "Unidentified ship detected near the station." + stack_trace("Fugitive hunter announcement was unable to generate an announcement text based on backstory: [backstory]") + + if(!length(announcement_title)) + announcement_title += "Unknown Signal" + stack_trace("Fugitive hunter announcement was unable to generate an announcement title based on backstory: [backstory]") + + priority_announce(jointext(announcement_text_list, " "), announcement_title) #undef TEAM_BACKSTORY_SIZE diff --git a/code/modules/events/space_vines/vine_mutations.dm b/code/modules/events/space_vines/vine_mutations.dm index 0571f4d0509f3..c2f8e2d41393c 100644 --- a/code/modules/events/space_vines/vine_mutations.dm +++ b/code/modules/events/space_vines/vine_mutations.dm @@ -335,6 +335,7 @@ //This specific mutation only covers floors instead of structures, items, mobs and cant tangle mobs /datum/spacevine_mutation/timid/on_birth(obj/structure/spacevine/holder) SET_PLANE_IMPLICIT(holder, FLOOR_PLANE) + holder.layer = ABOVE_OPEN_TURF_LAYER holder.light_state = PASS_LIGHT holder.can_tangle = FALSE return ..() diff --git a/code/modules/events/space_vines/vine_structure.dm b/code/modules/events/space_vines/vine_structure.dm index 4b3a10d9256cc..a7b9aa2fce516 100644 --- a/code/modules/events/space_vines/vine_structure.dm +++ b/code/modules/events/space_vines/vine_structure.dm @@ -161,7 +161,7 @@ if(!istype(stepturf)) return - if(isspaceturf(stepturf) || isopenspaceturf(stepturf) || !stepturf.Enter(src)) + if(is_space_or_openspace(stepturf) || !stepturf.Enter(src)) return if(ischasm(stepturf) && !HAS_TRAIT(stepturf, TRAIT_CHASM_STOPPED)) return diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm index 683b36304a367..ab305bbff99bf 100644 --- a/code/modules/events/wizard/curseditems.dm +++ b/code/modules/events/wizard/curseditems.dm @@ -38,7 +38,7 @@ switch(item_set) if(BIG_FAT_DOOBIE) - loadout += /obj/item/clothing/mask/cigarette/rollie/trippy + loadout += /obj/item/cigarette/rollie/trippy ruins_spaceworthiness = TRUE if(BOXING) loadout += /obj/item/clothing/mask/luchador diff --git a/code/modules/events/wizard/embeddies.dm b/code/modules/events/wizard/embeddies.dm index ea8c5fd176bc1..8b4568942154a 100644 --- a/code/modules/events/wizard/embeddies.dm +++ b/code/modules/events/wizard/embeddies.dm @@ -43,9 +43,12 @@ GLOBAL_DATUM(global_funny_embedding, /datum/global_funny_embedding) * Makes every item in the world embed when thrown, but also hooks into global signals for new items created to also bless them with embed-ability(??). */ /datum/global_funny_embedding - var/embed_type = EMBED_POINTY + var/embed_type = /datum/embed_data/global_funny var/prefix = "error" +/datum/embed_data/global_funny + ignore_throwspeed_threshold = TRUE + /datum/global_funny_embedding/New() . = ..() //second operation takes MUCH longer, so lets set up signals first. @@ -61,11 +64,11 @@ GLOBAL_DATUM(global_funny_embedding, /datum/global_funny_embedding) SIGNAL_HANDLER // this proc says it's for initializing components, but we're initializing elements too because it's you and me against the world >:) - if(LAZYLEN(created_item.embedding)) - return //already embeds to some degree, so whatever 🐀 - created_item.embedding = embed_type + if(created_item.get_embed()) + return //already embeds to some degree, so whatever // No rat allowed + created_item.name = "[prefix] [created_item.name]" - created_item.updateEmbedding() + created_item.set_embed(embed_type) /** * ### handle_current_items @@ -77,17 +80,20 @@ GLOBAL_DATUM(global_funny_embedding, /datum/global_funny_embedding) CHECK_TICK if(!(embed_item.flags_1 & INITIALIZED_1)) continue - if(!embed_item.embedding) - embed_item.embedding = embed_type - embed_item.updateEmbedding() - embed_item.name = "[prefix] [embed_item.name]" + if(embed_item.get_embed()) + continue + embed_item.set_embed(embed_type) + embed_item.name = "[prefix] [embed_item.name]" ///everything will be... POINTY!!!! /datum/global_funny_embedding/pointy - embed_type = EMBED_POINTY prefix = "pointy" ///everything will be... sticky? sure, why not /datum/global_funny_embedding/sticky - embed_type = EMBED_HARMLESS + embed_type = /datum/embed_data/global_funny/sticky prefix = "sticky" + +/datum/embed_data/global_funny/sticky + pain_mult = 0 + jostle_pain_mult = 0 diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm index a025d90b44f4e..2ed1564e48eb8 100644 --- a/code/modules/experisci/experiment/experiments.dm +++ b/code/modules/experisci/experiment/experiments.dm @@ -327,7 +327,6 @@ description = "Your exosuit fabricators allow for rapid production on a small scale, but the structural integrity of created parts is inferior to more traditional means." exp_tag = "Scan" possible_types = list(/obj/vehicle/sealed/mecha) - total_requirement = 1 ///Damage percent that each mech needs to be at for a scan to work. var/damage_percent @@ -337,6 +336,21 @@ possible_types = list(/obj/vehicle/sealed/mecha) total_requirement = 1 +/// Scan a person with any mutation +/datum/experiment/scanning/people/mutant + name = "Human Field Research: Genetic Mutations" + description = "Our new research assistants have been drinking random chemicals for science, when one of them mastered telekinesis and another started shooting lasers from the eyes. This could be useful for our studies. Repeat the experiment by making assistants drink unstable mutagen, scan them and report the results." + performance_hint = "Scan a person with a random mutation." + required_traits_desc = "random mutation" + +/datum/experiment/scanning/people/mutant/is_valid_scan_target(mob/living/carbon/human/check, datum/component/experiment_handler/experiment_handler) + . = ..() + if (!.) + return + if(!check.dna.mutations.len) + return FALSE + return TRUE + /// Scan for organs you didn't start the round with /datum/experiment/scanning/people/novel_organs name = "Human Field Research: Divergent Biology" @@ -380,7 +394,7 @@ /// Scan for cybernetic organs /datum/experiment/scanning/people/augmented_organs name = "Human Field Research: Augmented Organs" - description = "We need to gather data on how cybernetic vital organs integrate with human biology. Conduct a scan on a human with these implants to help us understand their compatibility" + description = "We need to gather data on how cybernetic vital organs integrate with human biology. Conduct a scan on a human with these implants to help us understand their compatibility." performance_hint = "Perform an organ manipulation surgery to replace one of the vital organs with a cybernetic variant." required_traits_desc = "augmented vital organs" required_count = 1 @@ -399,11 +413,8 @@ ) for (var/obj/item/organ/organ as anything in check.organs) - if (IS_ORGANIC_ORGAN(organ)) - continue - if (!(organ.slot in vital_organ_slots)) - continue - return TRUE + if ((organ.slot in vital_organ_slots) && IS_ROBOTIC_ORGAN(organ)) + return TRUE return FALSE /// Scan for skillchips @@ -426,12 +437,55 @@ return FALSE return TRUE +/// Scan an android +/datum/experiment/scanning/people/android + name = "Human Field Research: Full Augmentation" + description = "Perform a full cybernetic augmentation on a crewmate then scan them to test their newfound capabilities and new sensory and cognitive functions." + performance_hint = "Achieve full augmentation by performing a set of surgery operations." + required_traits_desc = "fully augmented android" + required_count = 1 + +/datum/experiment/scanning/people/android/is_valid_scan_target(mob/living/carbon/human/check, datum/component/experiment_handler/experiment_handler) + . = ..() + if (!.) + return + if (isandroid(check)) + return TRUE + if (check.organs < 6 || check.bodyparts < 6) + return FALSE + + var/static/list/augmented_organ_slots = list( + ORGAN_SLOT_EYES, + ORGAN_SLOT_EARS, + ORGAN_SLOT_HEART, + ORGAN_SLOT_LUNGS, + ORGAN_SLOT_LIVER, + ORGAN_SLOT_STOMACH, + ) + for (var/obj/item/organ/organ as anything in check.organs) + if (!(organ.slot in augmented_organ_slots)) + continue + if (!IS_ROBOTIC_ORGAN(organ)) + return FALSE + for (var/obj/item/bodypart/bodypart as anything in check.bodyparts) + if (bodypart.bodytype != BODYTYPE_ROBOTIC) + return FALSE + return TRUE + /datum/experiment/scanning/reagent/cryostylane name = "Pure Cryostylane Scan" description = "It appears that the Cryostylane reagent can potentially halt all physiological processes in the human body. Produce Cryostylane with at least 99% purity and scan the beaker." + performance_hint = "Keep the temperature as high as possible during the reaction." required_reagent = /datum/reagent/cryostylane min_purity = 0.99 +/datum/experiment/scanning/reagent/haloperidol + name = "Pure Haloperidol Scan" + description = "We require testing related to the long-term treatment of chronic psychiatric disorders. Produce Haloperidol with at least 98% purity and scan the beaker." + performance_hint = "Exothermic and consumes hydrogen during reaction." + required_reagent = /datum/reagent/medicine/haloperidol + min_purity = 0.98 + /datum/experiment/scanning/points/bluespace_crystal name = "Bluespace Crystal Sampling" description = "Investigate the properties of bluespace crystals by scanning either an artificial or naturally occurring variant. This will help us deepen our understanding of bluespace phenomena." @@ -441,10 +495,16 @@ /obj/item/stack/sheet/bluespace_crystal = 1 ) +/datum/experiment/scanning/points/anomalies + name = "Neutralized Anomaly Analysis" + description = "We have the power to deal with the anomalies now. Neutralize them with an anomaly neutralizer or refine the raw cores in the refinery and scan the results." + required_points = 4 + required_atoms = list(/obj/item/assembly/signaler/anomaly = 1) + /datum/experiment/scanning/points/machinery_tiered_scan/tier2_any name = "Upgraded Stock Parts Benchmark" description = "Our newly-designed machinery components require practical application tests for hints at possible further advancements, as well as a general confirmation that we didn't actually design worse parts somehow. Scan any machinery with Upgraded Parts and report the results." - required_points = 4 + required_points = 6 required_atoms = list( /obj/machinery = 1 ) @@ -453,7 +513,7 @@ /datum/experiment/scanning/points/machinery_tiered_scan/tier3_any name = "Advanced Stock Parts Benchmark" description = "Our newly-designed machinery components require practical application tests for hints at possible further advancements, as well as a general confirmation that we didn't actually design worse parts somehow. Scan any machinery with Advanced Parts and report the results." - required_points = 4 + required_points = 6 required_atoms = list( /obj/machinery = 1 ) diff --git a/code/modules/experisci/experiment/types/scanning_fish.dm b/code/modules/experisci/experiment/types/scanning_fish.dm index 8a50446063994..f1c2263a84c7e 100644 --- a/code/modules/experisci/experiment/types/scanning_fish.dm +++ b/code/modules/experisci/experiment/types/scanning_fish.dm @@ -12,7 +12,7 @@ GLOBAL_LIST_EMPTY(scanned_fish_by_techweb) performance_hint = "Scan fish. Examine scanner to review progress. Unlock new fishing portals." allowed_experimentors = list(/obj/item/experi_scanner, /obj/machinery/destructive_scanner, /obj/item/fishing_rod/tech, /obj/item/fish_analyzer) traits = EXPERIMENT_TRAIT_TYPECACHE - points_reward = list(TECHWEB_POINT_TYPE_GENERIC = 750) + points_reward = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS ) required_atoms = list(/obj/item/fish = 4) scan_message = "Scan different species of fish" ///Further experiments added to the techweb when this one is completed. @@ -80,7 +80,7 @@ GLOBAL_LIST_EMPTY(scanned_fish_by_techweb) /datum/experiment/scanning/fish/second name = "Fish Scanning Experiment 2" description = "An experiment requiring more fish species to be scanned to unlock the 'Chasm' setting for the fishing portal." - points_reward = list(TECHWEB_POINT_TYPE_GENERIC = 1500) + points_reward = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS ) required_atoms = list(/obj/item/fish = 8) next_experiments = list(/datum/experiment/scanning/fish/third) fish_source_reward = /datum/fish_source/portal/chasm @@ -88,7 +88,7 @@ GLOBAL_LIST_EMPTY(scanned_fish_by_techweb) /datum/experiment/scanning/fish/third name = "Fish Scanning Experiment 3" description = "An experiment requiring even more fish species to be scanned to unlock the 'Ocean' setting for the fishing portal." - points_reward = list(TECHWEB_POINT_TYPE_GENERIC = 2500) + points_reward = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS ) required_atoms = list(/obj/item/fish = 14) next_experiments = list(/datum/experiment/scanning/fish/fourth, /datum/experiment/scanning/fish/holographic) fish_source_reward = /datum/fish_source/portal/ocean @@ -97,7 +97,7 @@ GLOBAL_LIST_EMPTY(scanned_fish_by_techweb) name = "Holographic Fish Scanning Experiment" description = "This one actually requires holographic fish to unlock the 'Randomizer' setting for the fishing portal." performance_hint = "Load in the 'Beach' template at the Holodeck to fish some holo-fish." - points_reward = list(TECHWEB_POINT_TYPE_GENERIC = 500) + points_reward = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS ) required_atoms = list(/obj/item/fish/holo = 4) scan_message = "Scan different species of holographic fish" next_experiments = null @@ -110,7 +110,7 @@ GLOBAL_LIST_EMPTY(scanned_fish_by_techweb) /datum/experiment/scanning/fish/fourth name = "Fish Scanning Experiment 4" description = "An experiment requiring lotsa fish species to unlock the 'Hyperspace' setting for the fishing portal." - points_reward = list(TECHWEB_POINT_TYPE_GENERIC = 3250) + points_reward = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS ) required_atoms = list(/obj/item/fish = 21) next_experiments = null fish_source_reward = /datum/fish_source/portal/hyperspace diff --git a/code/modules/experisci/experiment/types/scanning_reagent.dm b/code/modules/experisci/experiment/types/scanning_reagent.dm index 1a39e2941efeb..992c28d148d44 100644 --- a/code/modules/experisci/experiment/types/scanning_reagent.dm +++ b/code/modules/experisci/experiment/types/scanning_reagent.dm @@ -31,5 +31,5 @@ return TRUE /datum/experiment/scanning/reagent/serialize_progress_stage(atom/target, list/seen_instances) - return EXPERIMENT_PROG_INT("Scan a reagent container with [required_reagent::name] of at least [PERCENT(min_purity)] purity.", \ + return EXPERIMENT_PROG_INT("Scan a reagent container with [required_reagent::name] of at least [PERCENT(min_purity)]% purity.", \ seen_instances.len, required_atoms[target]) diff --git a/code/modules/experisci/experiment/types/scanning_vatgrown.dm b/code/modules/experisci/experiment/types/scanning_vatgrown.dm index 0a7ade381a4ea..20cd48288ba08 100644 --- a/code/modules/experisci/experiment/types/scanning_vatgrown.dm +++ b/code/modules/experisci/experiment/types/scanning_vatgrown.dm @@ -1,14 +1,17 @@ -/datum/experiment/scanning/random/cytology +/datum/experiment/scanning/cytology name = "Cytology Scanning Experiment" - description = "Base experiment for scanning atoms that were vatgrown" exp_tag = "Cytology Scan" - total_requirement = 1 - possible_types = list(/mob/living/basic/slime) - traits = EXPERIMENT_TRAIT_DESTRUCTIVE -/datum/experiment/scanning/random/cytology/final_contributing_index_checks(datum/component/experiment_handler/experiment_handler, atom/target, typepath) +/datum/experiment/scanning/cytology/final_contributing_index_checks(datum/component/experiment_handler/experiment_handler, atom/target, typepath) return ..() && HAS_TRAIT(target, TRAIT_VATGROWN) -/datum/experiment/scanning/random/cytology/serialize_progress_stage(atom/target, list/seen_instances) - return EXPERIMENT_PROG_INT("Scan samples of \a vat-grown [initial(target.name)]", \ - traits & EXPERIMENT_TRAIT_DESTRUCTIVE ? scanned[target] : seen_instances.len, required_atoms[target]) +/datum/experiment/scanning/cytology/serialize_progress_stage(atom/target, list/seen_instances) + return EXPERIMENT_PROG_INT("Scan samples of \a vat-grown [initial(target.name)]", seen_instances.len, required_atoms[target]) + +/datum/experiment/scanning/cytology/slime + name = "Vat-Grown Slime Scan" + description = "Seen the slimes in the xenobiology pens? They spawned when our researchers donked a moldy bread slice into the vat. Cultivate another one and report the results." + performance_hint = "Swab the slime cell lines from a moldy bread or take a biopsy sample of existing slime. And grow it in the vat." + required_atoms = list(/mob/living/basic/slime = 1) + + diff --git a/code/modules/fishing/aquarium/aquarium.dm b/code/modules/fishing/aquarium/aquarium.dm index 0a836eadafdda..cd05d0bd34baf 100644 --- a/code/modules/fishing/aquarium/aquarium.dm +++ b/code/modules/fishing/aquarium/aquarium.dm @@ -53,6 +53,9 @@ /// /obj/item/fish in the aquarium, sorted by type - does not include things with aquarium visuals that are not fish var/list/tracked_fish_by_type + /// Var used to keep track of the current beauty of the aquarium, which can be throughfully changed by aquarium content. + var/current_beauty = 150 + /obj/structure/aquarium/Initialize(mapload) . = ..() update_appearance() @@ -62,6 +65,8 @@ create_reagents(6, SEALED_CONTAINER) RegisterSignal(reagents, COMSIG_REAGENTS_NEW_REAGENT, PROC_REF(start_autofeed)) AddComponent(/datum/component/plumbing/aquarium) + if(current_beauty) + AddElement(/datum/element/beauty, current_beauty) ADD_KEEP_TOGETHER(src, INNATE_TRAIT) /obj/structure/aquarium/proc/track_if_fish(atom/source, atom/initialized) @@ -192,9 +197,9 @@ var/obj/item/stack/sheet/glass/glass = item if(istype(glass)) if(glass.get_amount() < 2) - to_chat(user, span_warning("You need two glass sheets to fix the case!")) + balloon_alert(user, "it needs two sheets!") return - to_chat(user, span_notice("You start fixing [src]...")) + balloon_alert(user, "fixing the aquarium...") if(do_after(user, 2 SECONDS, target = src)) glass.use(2) broken = FALSE @@ -202,10 +207,18 @@ update_appearance() return TRUE else - var/datum/component/aquarium_content/content_component = item.GetComponent(/datum/component/aquarium_content) - if(content_component && content_component.is_ready_to_insert(src) && user.transferItemToLoc(item, src)) - update_appearance() - return TRUE + var/insert_attempt = SEND_SIGNAL(item, COMSIG_TRY_INSERTING_IN_AQUARIUM, src) + switch(insert_attempt) + if(COMSIG_CAN_INSERT_IN_AQUARIUM) + if(!user.transferItemToLoc(item, src)) + user.balloon_alert(user, "stuck to your hand!") + return TRUE + balloon_alert(user, "added to aquarium") + update_appearance() + return TRUE + if(COMSIG_CANNOT_INSERT_IN_AQUARIUM) + balloon_alert(user, "cannot add to aquarium!") + return TRUE if(istype(item, /obj/item/fish_feed) && !panel_open) if(!item.reagents.total_volume) @@ -270,24 +283,27 @@ ///Apply mood bonus depending on aquarium status /obj/structure/aquarium/proc/admire(mob/living/user) - to_chat(user,span_notice("You take a moment to watch [src].")) - if(do_after(user, 5 SECONDS, target = src)) - var/alive_fish = 0 - var/dead_fish = 0 - var/list/tracked_fish = get_fishes() - for(var/obj/item/fish/fish in tracked_fish) - if(fish.status == FISH_ALIVE) - alive_fish++ - else - dead_fish++ - //Check if there are live fish - good mood - //All fish dead - bad mood. - //No fish - nothing. - if(alive_fish > 0) - user.add_mood_event("aquarium", /datum/mood_event/aquarium_positive) - else if(dead_fish > 0) - user.add_mood_event("aquarium", /datum/mood_event/aquarium_negative) - // Could maybe scale power of this mood with number/types of fish + user.balloon_alert(user, "admiring aquarium...") + if(!do_after(user, 5 SECONDS, target = src)) + return + var/alive_fish = 0 + var/dead_fish = 0 + var/list/tracked_fish = get_fishes() + for(var/obj/item/fish/fish in tracked_fish) + if(fish.status == FISH_ALIVE) + alive_fish++ + else + dead_fish++ + + var/morb = HAS_TRAIT(user, TRAIT_MORBID) + //Check if there are live fish - good mood + //All fish dead - bad mood. + //No fish - nothing. + if(alive_fish > 0) + user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_bad : /datum/mood_event/aquarium_positive) + else if(dead_fish > 0) + user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_good : /datum/mood_event/aquarium_negative) + // Could maybe scale power of this mood with number/types of fish /obj/structure/aquarium/ui_data(mob/user) . = ..() diff --git a/code/modules/fishing/aquarium/aquarium_kit.dm b/code/modules/fishing/aquarium/aquarium_kit.dm index 30c9300323126..1161648f7d15f 100644 --- a/code/modules/fishing/aquarium/aquarium_kit.dm +++ b/code/modules/fishing/aquarium/aquarium_kit.dm @@ -100,7 +100,8 @@ /obj/item/aquarium_kit/Initialize(mapload) . = ..() - AddComponent(/datum/component/slapcrafting, /datum/crafting_recipe/aquarium) + var/static/list/recipes = list(/datum/crafting_recipe/aquarium) + AddElement(/datum/element/slapcrafting, recipes) /obj/item/aquarium_prop name = "generic aquarium prop" @@ -109,10 +110,11 @@ w_class = WEIGHT_CLASS_TINY var/layer_mode = AQUARIUM_LAYER_MODE_BOTTOM + var/beauty = 150 /obj/item/aquarium_prop/Initialize(mapload) . = ..() - AddComponent(/datum/component/aquarium_content, icon) + AddComponent(/datum/component/aquarium_content, icon, beauty = beauty) /obj/item/aquarium_prop/rocks name = "rocks" diff --git a/code/modules/fishing/aquarium/aquarium_upgrades.dm b/code/modules/fishing/aquarium/aquarium_upgrades.dm index 140777d34f0ae..c73e6e9d230ae 100644 --- a/code/modules/fishing/aquarium/aquarium_upgrades.dm +++ b/code/modules/fishing/aquarium/aquarium_upgrades.dm @@ -24,6 +24,8 @@ icon_state = "bioelec_map" icon_prefix = "bioelec" + current_beauty = 0 + /obj/structure/aquarium/bioelec_gen/zap_act(power, zap_flags) var/explosive = zap_flags & ZAP_MACHINE_EXPLOSIVE if(!explosive) diff --git a/code/modules/fishing/fish/_fish.dm b/code/modules/fishing/fish/_fish.dm index a12ae7e7397a9..c4be35817b7ac 100644 --- a/code/modules/fishing/fish/_fish.dm +++ b/code/modules/fishing/fish/_fish.dm @@ -143,9 +143,12 @@ /// power of the tesla zap created by the fish in a bioelectric generator var/electrogenesis_power = 10 MEGA JOULES + /// The beauty this fish provides to the aquarium it's inserted in. + var/beauty = FISH_BEAUTY_GENERIC + /obj/item/fish/Initialize(mapload, apply_qualities = TRUE) . = ..() - AddComponent(/datum/component/aquarium_content, icon, PROC_REF(get_aquarium_animation), list(COMSIG_FISH_STATUS_CHANGED,COMSIG_FISH_STIRRED)) + AddComponent(/datum/component/aquarium_content, icon, PROC_REF(get_aquarium_animation), list(COMSIG_FISH_STIRRED), beauty) RegisterSignal(src, COMSIG_ATOM_ON_LAZARUS_INJECTOR, PROC_REF(use_lazarus)) if(do_flop_animation) diff --git a/code/modules/fishing/fish/fish_types.dm b/code/modules/fishing/fish/fish_types.dm index f61cb43b22424..cc001560ee0a9 100644 --- a/code/modules/fishing/fish/fish_types.dm +++ b/code/modules/fishing/fish/fish_types.dm @@ -19,6 +19,8 @@ desc = "A great rubber duck tool for Lawyers who can't get a grasp over their case." stable_population = 1 random_case_rarity = FISH_RARITY_NOPE + show_in_catalog = FALSE + beauty = FISH_BEAUTY_GOOD /obj/item/fish/angelfish name = "angelfish" @@ -77,6 +79,7 @@ ) required_temperature_min = MIN_AQUARIUM_TEMP+12 required_temperature_max = MIN_AQUARIUM_TEMP+30 + beauty = FISH_BEAUTY_GOOD // Saltwater fish below @@ -107,6 +110,7 @@ evolution_types = null compatible_types = list(/obj/item/fish/clownfish) food = /datum/reagent/lube + beauty = FISH_BEAUTY_GREAT /obj/item/fish/cardinal name = "cardinalfish" @@ -163,8 +167,9 @@ stable_population = 3 required_temperature_min = MIN_AQUARIUM_TEMP+23 required_temperature_max = MIN_AQUARIUM_TEMP+28 - fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/toxic) + beauty = FISH_BEAUTY_GOOD + /obj/item/fish/lanternfish name = "lanternfish" @@ -182,6 +187,7 @@ fish_traits = list(/datum/fish_trait/nocturnal) required_temperature_min = MIN_AQUARIUM_TEMP+2 //My source is that the water at a depth 6600 feet is pretty darn cold. required_temperature_max = MIN_AQUARIUM_TEMP+18 + beauty = FISH_BEAUTY_NULL //Tiziran Fish /obj/item/fish/dwarf_moonfish @@ -195,6 +201,7 @@ average_weight = 2000 required_temperature_min = MIN_AQUARIUM_TEMP+20 required_temperature_max = MIN_AQUARIUM_TEMP+30 + beauty = FISH_BEAUTY_GOOD /obj/item/fish/gunner_jellyfish name = "gunner jellyfish" @@ -205,6 +212,7 @@ fillet_type = /obj/item/food/fishmeat/gunner_jellyfish required_temperature_min = MIN_AQUARIUM_TEMP+24 required_temperature_max = MIN_AQUARIUM_TEMP+32 + beauty = FISH_BEAUTY_GOOD /obj/item/fish/needlefish name = "needlefish" @@ -261,6 +269,7 @@ ) evolution_types = list(/datum/fish_evolution/ice_chrab) compatible_types = list(/obj/item/fish/chasm_crab/ice) + beauty = FISH_BEAUTY_GOOD /obj/item/fish/chasm_crab/ice name = "arctic chrab" @@ -271,13 +280,7 @@ required_temperature_max = MIN_AQUARIUM_TEMP+15 evolution_types = list(/datum/fish_evolution/chasm_chrab) compatible_types = list(/obj/item/fish/chasm_crab) - -/obj/item/storage/box/fish_debug - name = "box full of fish" - -/obj/item/storage/box/fish_debug/PopulateContents() - for(var/fish_type in subtypesof(/obj/item/fish)) - new fish_type(src) + beauty = FISH_BEAUTY_GREAT /obj/item/fish/donkfish name = "donk co. company patent donkfish" @@ -290,6 +293,7 @@ fish_traits = list(/datum/fish_trait/yucky) required_temperature_min = MIN_AQUARIUM_TEMP+15 required_temperature_max = MIN_AQUARIUM_TEMP+28 + beauty = FISH_BEAUTY_EXCELLENT /obj/item/fish/emulsijack name = "toxic emulsijack" @@ -301,6 +305,7 @@ fish_traits = list(/datum/fish_trait/emulsijack) required_temperature_min = MIN_AQUARIUM_TEMP+5 required_temperature_max = MIN_AQUARIUM_TEMP+40 + beauty = FISH_BEAUTY_BAD /obj/item/fish/jumpercable name = "monocloning jumpercable" @@ -322,6 +327,7 @@ /datum/fish_trait/mixotroph, /datum/fish_trait/electrogenesis, ) + beauty = FISH_BEAUTY_UGLY /obj/item/fish/ratfish name = "ratfish" @@ -341,6 +347,7 @@ "Value" = DAIRY ) ) + beauty = FISH_BEAUTY_DISGUSTING /obj/item/fish/ratfish/Initialize(mapload) . = ..() @@ -364,6 +371,7 @@ required_temperature_min = MIN_AQUARIUM_TEMP+10 required_temperature_max = MIN_AQUARIUM_TEMP+40 evolution_types = list(/datum/fish_evolution/purple_sludgefish) + beauty = FISH_BEAUTY_NULL /obj/item/fish/sludgefish/purple name = "purple sludgefish" @@ -401,6 +409,7 @@ ), ) required_temperature_min = MIN_AQUARIUM_TEMP+20 + beauty = FISH_BEAUTY_GREAT /obj/item/fish/boned name = "unmarine bonemass" @@ -423,6 +432,7 @@ average_weight = 2000 death_text = "%SRC stops moving." //It's dead... or is it? evolution_types = list(/datum/fish_evolution/mastodon) + beauty = FISH_BEAUTY_UGLY /obj/item/fish/mastodon name = "unmarine mastodon" @@ -451,6 +461,7 @@ average_weight = 5000 death_text = "%SRC stops moving." fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/amphibious, /datum/fish_trait/revival, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/aggressive) + beauty = FISH_BEAUTY_BAD /obj/item/fish/holo name = "holographic goldfish" @@ -501,6 +512,7 @@ sprite_height = 8 average_size = 60 average_weight = 1000 + beauty = FISH_BEAUTY_GOOD /obj/item/fish/holo/angel name = "holographic angelfish" @@ -524,6 +536,7 @@ icon_state = "checkered" //it's a meta joke, buddy. dedicated_in_aquarium_icon_state = "checkered_small" sprite_width = 4 + beauty = FISH_BEAUTY_NULL /obj/item/fish/holo/halffish name = "holographic half-fish" @@ -533,6 +546,7 @@ sprite_height = 4 sprite_width = 10 average_size = 50 + beauty = FISH_BEAUTY_UGLY /obj/item/fish/starfish name = "cosmostarfish" @@ -554,6 +568,7 @@ grind_results = list(/datum/reagent/bluespace = 10, /datum/reagent/consumable/liquidgibs = 5) fillet_type = null fish_traits = list(/datum/fish_trait/antigrav, /datum/fish_trait/mixotroph) + beauty = FISH_BEAUTY_GREAT /obj/item/fish/starfish/Initialize(mapload) . = ..() @@ -589,6 +604,7 @@ ) hitsound = null throwforce = 5 + beauty = FISH_BEAUTY_GOOD ///maximum bonus damage when winded up var/maximum_bonus = 25 @@ -662,3 +678,4 @@ ) //anxiety naturally limits the amount of zipzaps per tank, so they are stronger alone electrogenesis_power = 20 MEGA JOULES + beauty = FISH_BEAUTY_GOOD diff --git a/code/modules/fishing/fish_catalog.dm b/code/modules/fishing/fish_catalog.dm index 3e1cb6cfcfa6b..49a84413ded06 100644 --- a/code/modules/fishing/fish_catalog.dm +++ b/code/modules/fishing/fish_catalog.dm @@ -37,6 +37,25 @@ else fish_data["feed"] = "[AQUARIUM_COMPANY] Fish Feed" fish_data["fishing_tips"] = build_fishing_tips(fish) + var/beauty_score = initial(fish.beauty) + switch(beauty_score) + if(-INFINITY to FISH_BEAUTY_DISGUSTING) + beauty_score = "OH HELL NAW!" + if(FISH_BEAUTY_DISGUSTING to FISH_BEAUTY_UGLY) + beauty_score = "☆☆☆☆☆" + if(FISH_BEAUTY_UGLY to FISH_BEAUTY_BAD) + beauty_score = "★☆☆☆☆" + if(FISH_BEAUTY_BAD to FISH_BEAUTY_NULL) + beauty_score = "★★☆☆☆" + if(FISH_BEAUTY_NULL to FISH_BEAUTY_GENERIC) + beauty_score = "★★★☆☆" + if(FISH_BEAUTY_GENERIC to FISH_BEAUTY_GOOD) + beauty_score = "★★★★☆" + if(FISH_BEAUTY_GOOD to FISH_BEAUTY_GREAT) + beauty_score = "★★★★★" + if(FISH_BEAUTY_GREAT to INFINITY) + beauty_score = "★★★★★★" + fish_data["beauty"] = beauty_score fish_info += list(fish_data) // TODO: Custom entries for unusual stuff diff --git a/code/modules/fishing/fishing_equipment.dm b/code/modules/fishing/fishing_equipment.dm index df6c4eee9c254..f6b49a9b52314 100644 --- a/code/modules/fishing/fishing_equipment.dm +++ b/code/modules/fishing/fishing_equipment.dm @@ -304,5 +304,12 @@ new /obj/item/fishing_line/reinforced(src) new /obj/item/fishing_line/cloaked(src) +/obj/item/storage/box/fish_debug + name = "box full of fish" + +/obj/item/storage/box/fish_debug/PopulateContents() + for(var/fish_type in subtypesof(/obj/item/fish)) + new fish_type(src) + #undef MAGNET_HOOK_BONUS_MULTIPLIER #undef RESCUE_HOOK_FISH_MULTIPLIER diff --git a/code/modules/fishing/sources/_fish_source.dm b/code/modules/fishing/sources/_fish_source.dm index 66d2bf0a880e3..3c94ff8277d94 100644 --- a/code/modules/fishing/sources/_fish_source.dm +++ b/code/modules/fishing/sources/_fish_source.dm @@ -239,6 +239,21 @@ GLOBAL_LIST(fishing_property_cache) /// Builds a fish weights table modified by bait/rod/user properties /datum/fish_source/proc/get_modified_fish_table(obj/item/fishing_rod/rod, mob/fisherman) var/obj/item/bait = rod.bait + ///An exponent used to level out the difference in probabilities between fishes/mobs on the table depending on bait quality. + var/leveling_exponent = 0 + ///Multiplier used to make fishes more common compared to everything else. + var/result_multiplier = 1 + + if(bait) + if(HAS_TRAIT(bait, TRAIT_GREAT_QUALITY_BAIT)) + result_multiplier = 9 + leveling_exponent = 0.5 + else if(HAS_TRAIT(bait, TRAIT_GOOD_QUALITY_BAIT)) + result_multiplier = 3.5 + leveling_exponent = 0.25 + else if(HAS_TRAIT(bait, TRAIT_BASIC_QUALITY_BAIT)) + result_multiplier = 2 + leveling_exponent = 0.1 var/list/fish_list_properties = collect_fish_properties() @@ -246,17 +261,13 @@ GLOBAL_LIST(fishing_property_cache) for(var/result in final_table) final_table[result] *= rod.hook?.get_hook_bonus_multiplicative(result) final_table[result] += rod.hook?.get_hook_bonus_additive(result)//Decide on order here so it can be multiplicative + if(ispath(result, /obj/item/fish)) //Modify fish roll chance var/obj/item/fish/caught_fish = result if(bait) - if(HAS_TRAIT(bait, TRAIT_GREAT_QUALITY_BAIT)) - final_table[result] *= 10 - else if(HAS_TRAIT(bait, TRAIT_GOOD_QUALITY_BAIT)) - final_table[result] = round(final_table[result] * 3.5, 1) - else if(HAS_TRAIT(bait, TRAIT_BASIC_QUALITY_BAIT)) - final_table[result] *= 2 + final_table[result] = round(final_table[result] * result_multiplier, 1) 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)] @@ -286,4 +297,22 @@ GLOBAL_LIST(fishing_property_cache) if(final_table[result] <= 0) final_table -= result + + ///here we even out the chances of fishie based on bait quality: better baits lead rarer fishes being more common. + if(leveling_exponent) + var/highest_fish_weight + var/list/collected_fish_weights = list() + for(var/fishable in final_table) + if(ispath(fishable, /obj/item/fish)) + var/fish_weight = fish_table[fishable] + collected_fish_weights[fishable] = fish_weight + if(fish_weight > highest_fish_weight) + highest_fish_weight = fish_weight + + for(var/fish in collected_fish_weights) + var/difference = collected_fish_weights[fish] - highest_fish_weight + if(!difference) + continue + final_table[fish] += round(difference**leveling_exponent, 1) + return final_table diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm index b3233386f9789..bc5adfbd0f951 100644 --- a/code/modules/food_and_drinks/machinery/microwave.dm +++ b/code/modules/food_and_drinks/machinery/microwave.dm @@ -114,6 +114,7 @@ QDEL_LIST(ingredients) QDEL_NULL(wires) QDEL_NULL(soundloop) + QDEL_NULL(particles) if(!isnull(cell)) QDEL_NULL(cell) return ..() @@ -365,25 +366,25 @@ update_appearance() return ITEM_INTERACT_SUCCESS -/obj/machinery/microwave/item_interaction(mob/living/user, obj/item/tool, list/modifiers) +/obj/machinery/microwave/tool_act(mob/living/user, obj/item/tool, list/modifiers) + if(!tool.tool_behaviour) + return ..() if(operating) - return ITEM_INTERACT_SKIP_TO_ATTACK // Don't use tools if we're dirty + return ITEM_INTERACT_SKIP_TO_ATTACK // Don't use tools if we're operating if(dirty >= MAX_MICROWAVE_DIRTINESS) return ITEM_INTERACT_SKIP_TO_ATTACK // Don't insert items if we're dirty if(panel_open && is_wire_tool(tool)) wires.interact(user) return ITEM_INTERACT_SUCCESS - return NONE + return ..() -/obj/machinery/microwave/attackby(obj/item/item, mob/living/user, params) +/obj/machinery/microwave/item_interaction(mob/living/user, obj/item/item, list/modifiers) if(operating) - return + return NONE if(broken > NOT_BROKEN) - if(IS_EDIBLE(item)) - balloon_alert(user, "it's broken!") - return TRUE - return ..() + balloon_alert(user, "it's broken!") + return ITEM_INTERACT_BLOCKING if(istype(item, /obj/item/stock_parts/power_store/cell) && cell_powered) var/swapped = FALSE @@ -395,27 +396,23 @@ swapped = TRUE if(!user.transferItemToLoc(item, src)) update_appearance() - return TRUE + return ITEM_INTERACT_BLOCKING cell = item balloon_alert(user, "[swapped ? "swapped" : "inserted"] cell") update_appearance() - return TRUE + return ITEM_INTERACT_SUCCESS if(!anchored) - if(IS_EDIBLE(item)) - balloon_alert(user, "not secured!") - return TRUE - return ..() + balloon_alert(user, "not secured!") + return ITEM_INTERACT_BLOCKING if(dirty >= MAX_MICROWAVE_DIRTINESS) // The microwave is all dirty so can't be used! - if(IS_EDIBLE(item)) - balloon_alert(user, "it's too dirty!") - return TRUE - return ..() + balloon_alert(user, "it's too dirty!") + return ITEM_INTERACT_BLOCKING if(vampire_charging_capable && istype(item, /obj/item/modular_computer) && ingredients.len > 0) balloon_alert(user, "max 1 device!") - return FALSE + return ITEM_INTERACT_BLOCKING if(istype(item, /obj/item/storage)) var/obj/item/storage/tray = item @@ -425,14 +422,14 @@ // Non-tray dumping requires a do_after to_chat(user, span_notice("You start dumping out the contents of [item] into [src]...")) if(!do_after(user, 2 SECONDS, target = tray)) - return + return ITEM_INTERACT_BLOCKING for(var/obj/tray_item in tray.contents) if(!IS_EDIBLE(tray_item)) continue if(ingredients.len >= max_n_of_items) balloon_alert(user, "it's full!") - return TRUE + return ITEM_INTERACT_BLOCKING if(tray.atom_storage.attempt_remove(tray_item, src)) loaded++ ingredients += tray_item @@ -440,23 +437,21 @@ open(autoclose = 0.6 SECONDS) to_chat(user, span_notice("You insert [loaded] items into \the [src].")) update_appearance() - return + return ITEM_INTERACT_SUCCESS - if(item.w_class <= WEIGHT_CLASS_NORMAL && !istype(item, /obj/item/storage) && !user.combat_mode) + if(item.w_class <= WEIGHT_CLASS_NORMAL && !user.combat_mode) if(ingredients.len >= max_n_of_items) balloon_alert(user, "it's full!") - return TRUE + return ITEM_INTERACT_BLOCKING if(!user.transferItemToLoc(item, src)) balloon_alert(user, "it's stuck to your hand!") - return FALSE + return ITEM_INTERACT_BLOCKING ingredients += item open(autoclose = 0.6 SECONDS) user.visible_message(span_notice("[user] adds \a [item] to \the [src]."), span_notice("You add [item] to \the [src].")) update_appearance() - return - - return ..() + return ITEM_INTERACT_SUCCESS /obj/machinery/microwave/attack_hand_secondary(mob/user, list/modifiers) if(user.can_perform_action(src, ALLOW_SILICON_REACH)) @@ -541,8 +536,9 @@ /obj/machinery/microwave/proc/eject() var/atom/drop_loc = drop_location() - for(var/atom/movable/movable_ingredient as anything in ingredients) - movable_ingredient.forceMove(drop_loc) + for(var/obj/item/item_ingredient as anything in ingredients) + item_ingredient.forceMove(drop_loc) + item_ingredient.dropped() //Mob holders can be on the ground if we don't do this open(autoclose = 1.4 SECONDS) /obj/machinery/microwave/proc/start_cycle(mob/user) @@ -674,10 +670,34 @@ if(MICROWAVE_PRE) pre_success(cooker) return + + if(cycles == 1) //Only needs to try to shock mobs once, towards the end of the loop + var/successful_shock + var/list/microwave_contents = list() + microwave_contents += get_all_contents() //Mobs are often hid inside of mob holders, which could be fried and made into a burger... + for(var/mob/living/victim in microwave_contents) + if(victim.electrocute_act(shock_damage = 100, source = src, siemens_coeff = 1, flags = SHOCK_NOGLOVES)) + successful_shock = TRUE + if(victim.stat == DEAD) //This is mostly so humans that can_be_held don't get gibbed from one microwave run alone, but mice become burnt messes + victim.gib() + muck() + if(successful_shock) //We only want to give feedback once, regardless of how many mobs got shocked + var/list/cant_smell = list() + for(var/mob/smeller in get_hearers_in_view(DEFAULT_MESSAGE_RANGE, src)) + if(HAS_TRAIT(smeller, TRAIT_ANOSMIA)) + cant_smell += smeller + visible_message(span_danger("You smell a burnt smell coming from [src]!"), ignored_mobs = cant_smell) + particles = new /particles/smoke() + addtimer(CALLBACK(src, PROC_REF(remove_smoke)), 10 SECONDS) + Shake(duration = 1 SECONDS) + cycles-- use_energy(active_power_usage) addtimer(CALLBACK(src, PROC_REF(cook_loop), type, cycles, wait, cooker), wait) +/obj/machinery/microwave/proc/remove_smoke() + QDEL_NULL(particles) + /obj/machinery/microwave/power_change() . = ..() if(cell_powered) diff --git a/code/modules/food_and_drinks/machinery/smartfridge.dm b/code/modules/food_and_drinks/machinery/smartfridge.dm index 392d716965d6a..114d7d020f6c9 100644 --- a/code/modules/food_and_drinks/machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/machinery/smartfridge.dm @@ -647,7 +647,7 @@ return istype(weapon, /obj/item/petri_dish) /obj/machinery/smartfridge/petri/preloaded - initial_contents = list(/obj/item/petri_dish = 5) + initial_contents = list(/obj/item/petri_dish/random = 3) // ------------------------- // Organ Surgery Smartfridge diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm index 7761a57fcfdbd..742e8c1f3c89b 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm @@ -10,6 +10,7 @@ name = "Sandwich" reqs = list( /obj/item/food/breadslice/plain = 2, + /obj/item/food/grown/cabbage = 1, /obj/item/food/meat/steak = 1, /obj/item/food/cheese/wedge = 1 ) diff --git a/code/modules/hallucination/body.dm b/code/modules/hallucination/body.dm index 2d017f969679d..8cd34cfcd4071 100644 --- a/code/modules/hallucination/body.dm +++ b/code/modules/hallucination/body.dm @@ -10,7 +10,7 @@ /// Whether we apply the floating anim to the body var/body_floats = FALSE /// The layer this body will be drawn on, in case we want to bypass lighting - var/body_layer = TURF_LAYER + var/body_layer = LOW_FLOOR_LAYER /// if TRUE, spawns the body under the hallucinator instead of somewhere in view var/spawn_under_hallucinator = FALSE diff --git a/code/modules/hallucination/bubblegum_attack.dm b/code/modules/hallucination/bubblegum_attack.dm index 5ee39ed8e8649..529d67dcd3551 100644 --- a/code/modules/hallucination/bubblegum_attack.dm +++ b/code/modules/hallucination/bubblegum_attack.dm @@ -36,7 +36,7 @@ if(hallucinator.client) - fake_broken_wall = image('icons/turf/floors.dmi', wall_source, "plating", layer = TURF_LAYER) + fake_broken_wall = image('icons/turf/floors.dmi', wall_source, "plating", layer = LOW_FLOOR_LAYER) SET_PLANE_EXPLICIT(fake_broken_wall, FLOOR_PLANE, wall_source) fake_broken_wall.override = TRUE fake_rune = image('icons/effects/96x96.dmi', target_landing_image_turf, "landing", layer = ABOVE_OPEN_TURF_LAYER) diff --git a/code/modules/hallucination/hazard.dm b/code/modules/hallucination/hazard.dm index 1dfdfd23970e7..34bcee62f6a87 100644 --- a/code/modules/hallucination/hazard.dm +++ b/code/modules/hallucination/hazard.dm @@ -29,7 +29,8 @@ /// These hallucination effects cause side effects when the hallucinator walks into them. /obj/effect/client_image_holder/hallucination/danger - image_layer = TURF_LAYER + image_layer = LOW_FLOOR_LAYER + image_plane = FLOOR_PLANE /obj/effect/client_image_holder/hallucination/danger/Initialize(mapload, list/mobs_which_see_us, datum/hallucination/parent) . = ..() diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index 04cb9c1058aac..1286682378c1d 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -93,7 +93,7 @@ switch(pattern) if(PATTERN_RANDOM) return "#[random_short_color()]" - //MASSMETA EDIT REMOVAL BEGIN - gay removal + //MASSMETA EDIT REMOVAL BEGIN (gay removal) /* if(PATTERN_RAINBOW) var/datum/holiday/pride_week/rainbow_datum = new() @@ -384,7 +384,7 @@ begin_month = JUNE holiday_hat = /obj/item/clothing/head/costume/garland -//MASSMETA EDIT REMOVAL BEGIN - gay removal +//MASSMETA EDIT REMOVAL BEGIN (gay removal) /* /datum/holiday/pride_week name = PRIDE_WEEK diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index 1204106dc865c..b98d66f6bd2c7 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -293,6 +293,8 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf if(isstructure(holo_object)) holo_object.obj_flags |= NO_DEBRIS_AFTER_DECONSTRUCTION + if(istype(holo_object, /obj/structure/closet)) + RegisterSignal(holo_object, COMSIG_CLOSET_CONTENTS_INITIALIZED, PROC_REF(register_contents)) return if(ismachinery(holo_object)) @@ -304,6 +306,14 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf var/obj/machinery/button/holo_button = holo_machine holo_button.setup_device() +/obj/machinery/computer/holodeck/proc/register_contents(obj/structure/closet/storage) + SIGNAL_HANDLER + + for(var/atom/movable/item as anything in storage.get_all_contents_type(/atom/movable)) + if(item == storage) + continue + add_to_spawned(item) + /** * A separate proc for objects that weren't loaded by the template nor spawned by holo effects * yet need to be added to the list of spawned objects. (e.g. holographic fishes) diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 3d80ef6d968c0..7a27aecb4bcfe 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -14,7 +14,7 @@ throw_speed = 2 block_chance = 0 throwforce = 0 - embedding = null + embed_type = null sword_color_icon = null active_throwforce = 0 diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm index 51e09f8ab9a2c..ee62a12b3d0e1 100644 --- a/code/modules/holodeck/turfs.dm +++ b/code/modules/holodeck/turfs.dm @@ -11,6 +11,9 @@ /turf/open/floor/holofloor/item_interaction(mob/living/user, obj/item/tool, list/modifiers) return ITEM_INTERACT_BLOCKING // Fuck you +/turf/open/floor/holofloor/crowbar_act(mob/living/user, obj/item/I) + return NONE // Fuck you + /turf/open/floor/holofloor/burn_tile() return //you can't burn a hologram! @@ -124,6 +127,7 @@ desc = "Space-looking floor. Thankfully, the deadly aspects of space are not emulated here." icon = 'icons/turf/space.dmi' icon_state = "space" + layer = SPACE_LAYER plane = PLANE_SPACE /turf/open/floor/holofloor/hyperspace @@ -161,7 +165,7 @@ /turf/open/floor/holofloor/carpet/update_icon(updates=ALL) . = ..() - if((updates & UPDATE_SMOOTHING) && overfloor_placed && smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if((updates & UPDATE_SMOOTHING) && overfloor_placed && smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH(src) /turf/open/floor/holofloor/wood diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index 8eab962d75118..d5f9f94e1b2df 100644 --- a/code/modules/hydroponics/grown/corn.dm +++ b/code/modules/hydroponics/grown/corn.dm @@ -50,7 +50,7 @@ /obj/item/grown/corncob/attackby(obj/item/grown/W, mob/user, params) if(W.get_sharpness()) to_chat(user, span_notice("You use [W] to fashion a pipe out of the corn cob!")) - new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc) + new /obj/item/cigarette/pipe/cobpipe (user.loc) qdel(src) else return ..() diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 5c8a7049eb825..5f72806ca3635 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -478,13 +478,18 @@ throwforce = 15 throw_speed = 4 throw_range = 7 - embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) + embed_type = /datum/embed_data/hatchet custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5) attack_verb_continuous = list("chops", "tears", "lacerates", "cuts") attack_verb_simple = list("chop", "tear", "lacerate", "cut") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = SHARP_EDGED +/datum/embed_data/hatchet + pain_mult = 4 + embed_chance = 35 + fall_chance = 10 + /obj/item/hatchet/Initialize(mapload) . = ..() AddComponent(/datum/component/butchering, \ diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index c5861140e4e56..6fc671ccd4c94 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -859,12 +859,15 @@ return var/obj/item/seeds/our_seed = our_plant.get_plant_seed() - if(our_seed.get_gene(/datum/plant_gene/trait/stinging)) - our_plant.embedding = EMBED_POINTY - else - our_plant.embedding = EMBED_HARMLESS - our_plant.updateEmbedding() our_plant.throwforce = (our_seed.potency/20) + if (!our_plant.get_embed()) + return + + if(our_seed.get_gene(/datum/plant_gene/trait/stinging)) + our_plant.set_embed(our_plant.get_embed().generate_with_values(ignore_throwspeed_threshold = TRUE)) + return + + our_plant.set_embed(our_plant.get_embed().generate_with_values(ignore_throwspeed_threshold = TRUE, pain_mult = 0, jostle_pain_mult = 0)) /** * This trait automatically heats up the plant's chemical contents when harvested. diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 13e358bdcd528..5b82c9adb7116 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -35,7 +35,7 @@ family_heirlooms = list(/obj/item/reagent_containers/cup/glass/flask/gold, /obj/item/toy/captainsaid/collector) mail_goodies = list( - /obj/item/clothing/mask/cigarette/cigar/havana = 20, + /obj/item/cigarette/cigar/havana = 20, /obj/item/storage/fancy/cigarettes/cigars/havana = 15, /obj/item/reagent_containers/cup/glass/bottle/champagne = 5, /obj/item/reagent_containers/cup/glass/bottle/champagne/cursed = 5, diff --git a/code/modules/jobs/job_types/chaplain/chaplain.dm b/code/modules/jobs/job_types/chaplain/chaplain.dm index 8bcfaefcfc67a..435e4ce7b3303 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain.dm @@ -78,8 +78,8 @@ else holy_bible.deity_name = pick("Gay Space Jesus", "Gandalf", "Dumbledore") human_spawned.adjustOrganLoss(ORGAN_SLOT_BRAIN, 100) // starts off brain damaged as fuck - if("lol", "wtf", "poo", "badmin", "shitmin", "deadmin", "meme", "memes") - new_bible = pick("Woody's Got Wood: The Aftermath", "Sweet Bro and Hella Jeff: Expanded Edition","F.A.T.A.L. Rulebook") + if("lol", "wtf", "poo", "badmin", "shitmin", "deadmin", "meme", "memes", "skibidi") + new_bible = pick("Woody's Got Wood: The Aftermath", "Sweet Bro and Hella Jeff: Expanded Edition","F.A.T.A.L. Rulebook", "Toilet Humor") switch(new_bible) if("Woody's Got Wood: The Aftermath") holy_bible.deity_name = pick("Woody", "Andy", "Cherry Flavored Lube") @@ -87,6 +87,8 @@ holy_bible.deity_name = pick("Sweet Bro", "Hella Jeff", "Stairs", "AH") if("F.A.T.A.L. Rulebook") holy_bible.deity_name = "Twenty Ten-Sided Dice" + if("Toilet Humor") + holy_bible.deity_name = pick("Skibidi Toilet", "Skibidi Wizard", "Skibidi Bathtub", "John Skibidi", "Skibidi Skibidi", "G-Toilet 1.0", "John Freeman") human_spawned.adjustOrganLoss(ORGAN_SLOT_BRAIN, 100) // also starts off brain damaged as fuck if("servicianism", "partying") holy_bible.desc = "Happy, Full, Clean. Live it and give it." diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm index 25fde2745854f..7d1946366a9c9 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm @@ -48,6 +48,7 @@ Allows you to behead targets for empowered strikes. \ Harms you if you dismiss the scythe without first causing harm to a creature. \ The shard also causes you to become Morbid, shifting your interests towards the macabre." + rods[/obj/item/melee/skateboard/holyboard] = "A skateboard that grants you flight and anti-magic abilities while ridden. Fits in your bag." AddComponent(/datum/component/subtype_picker, rods, CALLBACK(src, PROC_REF(on_holy_weapon_picked))) /obj/item/nullrod/proc/on_holy_weapon_picked(obj/item/nullrod/holy_weapon_type) diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index fd568464bb676..7ac1b6e29af9b 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -71,7 +71,7 @@ belt = /obj/item/storage/belt/utility/chief/full ears = /obj/item/radio/headset/heads/ce gloves = /obj/item/clothing/gloves/color/black - head = /obj/item/clothing/head/utility/hardhat/white + head = /obj/item/clothing/head/utility/hardhat/welding/white/up shoes = /obj/item/clothing/shoes/sneakers/brown l_pocket = /obj/item/modular_computer/pda/heads/ce diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index e9b40d43e05e6..12f30a9de1b88 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -26,6 +26,7 @@ mail_goodies = list( /obj/item/food/grown/banana = 100, /obj/item/food/pie/cream = 50, + /obj/item/spess_knife = 20, // As a joke for clumsy clown from engineering department /obj/item/clothing/shoes/clown_shoes/combat = 10, /obj/item/reagent_containers/spray/waterflower/lube = 20, // lube /obj/item/reagent_containers/spray/waterflower/superlube = 1 // Superlube, good lord. diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index b6984e24b4220..00bd8790d9bd0 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -61,7 +61,7 @@ ears = /obj/item/radio/headset/headset_sec/alt gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/fedora/det_hat - mask = /obj/item/clothing/mask/cigarette + mask = /obj/item/cigarette neck = /obj/item/clothing/neck/tie/detective shoes = /obj/item/clothing/shoes/sneakers/brown l_pocket = /obj/item/toy/crayon/white @@ -73,15 +73,17 @@ ) implants = list(/obj/item/implant/mindshield) + skillchips = list(/obj/item/skillchip/job/detectives_taste) + /datum/outfit/job/detective/pre_equip(mob/living/carbon/human/human, visualsOnly = FALSE) . = ..() if (human.age < AGE_MINOR) - mask = /obj/item/clothing/mask/cigarette/candy + mask = /obj/item/cigarette/candy head = /obj/item/clothing/head/fedora/det_hat/minor /datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) ..() - var/obj/item/clothing/mask/cigarette/cig = H.wear_mask + var/obj/item/cigarette/cig = H.wear_mask if(istype(cig)) //Some species specfic changes can mess this up (plasmamen) cig.light("") diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index bcf34c372285d..5d3c620322759 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -58,7 +58,7 @@ id = /obj/item/card/id/advanced/silver id_trim = /datum/id_trim/job/research_director uniform = /obj/item/clothing/under/rank/rnd/research_director/turtleneck - suit = /obj/item/clothing/suit/jacket/research_director + suit = /obj/item/clothing/suit/toggle/labcoat/research_director backpack_contents = list( /obj/item/melee/baton/telescopic = 1, ) diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 7a14898f364d0..64d1a3b0bff19 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -112,8 +112,8 @@ var/obj/item/stack/sheet/animalhide/goliath_hide/plating = new() explorer_suit.hood.attackby(plating) for(var/obj/item/gun/energy/recharge/kinetic_accelerator/accelerator in miner_contents) - var/obj/item/knife/combat/survival/knife = new(accelerator) - accelerator.bayonet = knife + var/datum/component/bayonet_attachable/bayonet = accelerator.GetComponent(/datum/component/bayonet_attachable) + bayonet.add_bayonet(new /obj/item/knife/combat/survival(accelerator)) var/obj/item/flashlight/seclite/flashlight = new() var/datum/component/seclite_attachable/light_component = accelerator.GetComponent(/datum/component/seclite_attachable) light_component.add_light(flashlight) diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index 8738389ab41d0..3000e4a037a59 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -31,6 +31,7 @@ mail_goodies = list( /obj/item/storage/box/lights/mixed = 20, /obj/item/lightreplacer = 10, + /obj/item/spess_knife = 10, /obj/item/holosign_creator/engineering = 8, /obj/item/wrench/bolter = 8, /obj/item/clothing/head/utility/hardhat/red/upgraded = 1 @@ -47,7 +48,7 @@ uniform = /obj/item/clothing/under/rank/engineering/engineer belt = /obj/item/storage/belt/utility/full/engi ears = /obj/item/radio/headset/headset_eng - head = /obj/item/clothing/head/utility/hardhat + head = /obj/item/clothing/head/utility/hardhat/welding/up shoes = /obj/item/clothing/shoes/workboots l_pocket = /obj/item/modular_computer/pda/engineering r_pocket = /obj/item/t_scanner diff --git a/code/modules/jobs/job_types/station_trait/veteran_advisor.dm b/code/modules/jobs/job_types/station_trait/veteran_advisor.dm index 87ad65c2c7a71..6fcb8d94707f5 100644 --- a/code/modules/jobs/job_types/station_trait/veteran_advisor.dm +++ b/code/modules/jobs/job_types/station_trait/veteran_advisor.dm @@ -63,7 +63,7 @@ uniform = /obj/item/clothing/under/rank/security/officer/formal head = /obj/item/clothing/head/soft/veteran - mask = /obj/item/clothing/mask/cigarette/cigar + mask = /obj/item/cigarette/cigar suit = /obj/item/clothing/suit/jacket/trenchcoat belt = /obj/item/storage/belt/holster/detective/full/ert //M1911 pistol ears = /obj/item/radio/headset/heads/hos/advisor diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm index 8c2ad28feadf8..39abe7baa509b 100644 --- a/code/modules/library/bibles.dm +++ b/code/modules/library/bibles.dm @@ -310,25 +310,12 @@ GLOBAL_LIST_INIT(bibleitemstates, list( if(.) return . - if(istype(bible_smacked, /obj/item/cult_bastard) && !IS_CULTIST(user)) - var/obj/item/cult_bastard/sword = bible_smacked - bible_smacked.balloon_alert(user, "exorcising...") + if(istype(bible_smacked, /obj/item/melee/cultblade/haunted) && !IS_CULTIST(user)) + var/obj/item/melee/cultblade/haunted/sword = bible_smacked + sword.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() - SSblackbox.record_feedback("tally", "cult_shade_purified", 1) - shade.theme = THEME_HOLY - shade.name = "Purified [shade.real_name]" - shade.update_appearance(UPDATE_ICON_STATE) - stone.release_shades(user) - qdel(stone) new /obj/item/nullrod/claymore(get_turf(sword)) user.visible_message(span_notice("[user] exorcises [sword]!")) qdel(sword) diff --git a/code/modules/library/skill_learning/job_skillchips/detective.dm b/code/modules/library/skill_learning/job_skillchips/detective.dm new file mode 100644 index 0000000000000..427b8566e7e1f --- /dev/null +++ b/code/modules/library/skill_learning/job_skillchips/detective.dm @@ -0,0 +1,9 @@ +/obj/item/skillchip/job/detectives_taste + name = "DET.ekt skillchip" + desc = "Detective \"Encyclopedic Knowledge of Tastes\" v1.21" + auto_traits = list(TRAIT_DETECTIVES_TASTE) + skill_name = "Detective's Taste" + skill_description = "Deduce the minute chemical compositions of any liquid substance just by swishing it around your mouth for a bit." + skill_icon = "vial" + activate_message = span_notice("An explosion of flavors hit your mouth as you remember the secret tastebuds long forgotten.") + deactivate_message = span_notice("Your mouth dulls to the hidden tastes of the world.") diff --git a/code/modules/loadout/categories/accessories.dm b/code/modules/loadout/categories/accessories.dm index a7769426a1f70..1569131a0f077 100644 --- a/code/modules/loadout/categories/accessories.dm +++ b/code/modules/loadout/categories/accessories.dm @@ -87,6 +87,6 @@ additional_displayed_text = list("Contains pens") /datum/loadout_item/accessory/pride - name = "Patriotic Pin" //MASSMETA EDIT - ORIGINAL - "Pride Pin" + name = "Patriotic Pin" //MASSMETA EDIT CHANGE - ORIGINAL: "Pride Pin" item_path = /obj/item/clothing/accessory/pride can_be_reskinned = TRUE diff --git a/code/modules/lootpanel/contents.dm b/code/modules/lootpanel/contents.dm index 4bb255b15611b..44f4acd47f24c 100644 --- a/code/modules/lootpanel/contents.dm +++ b/code/modules/lootpanel/contents.dm @@ -18,6 +18,9 @@ for(var/atom/thing as anything in source_turf.contents) // validate + if(!istype(thing)) + stack_trace("Non-atom in the contents of [source_turf]!") + continue if(thing.mouse_opacity == MOUSE_OPACITY_TRANSPARENT) continue if(thing.IsObscured()) diff --git a/code/modules/lootpanel/search_object.dm b/code/modules/lootpanel/search_object.dm index 4de60b04a678a..149be76e71064 100644 --- a/code/modules/lootpanel/search_object.dm +++ b/code/modules/lootpanel/search_object.dm @@ -26,6 +26,9 @@ if(isturf(item)) RegisterSignal(item, COMSIG_TURF_CHANGE, PROC_REF(on_turf_change)) else + // Lest we find ourselves here again, this is intentionally stupid. + // It tracks items going out and user actions, otherwise they can refresh the lootpanel. + // If this is to be made to track everything, we'll need to make a new signal to specifically create/delete a search object RegisterSignals(item, list( COMSIG_ITEM_PICKUP, COMSIG_MOVABLE_MOVED, diff --git a/code/modules/mafia/outfits.dm b/code/modules/mafia/outfits.dm index 5c6450adb90d2..3b805bd92f9c0 100644 --- a/code/modules/mafia/outfits.dm +++ b/code/modules/mafia/outfits.dm @@ -64,7 +64,7 @@ suit = /obj/item/clothing/suit/jacket/det_suit gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/fedora/det_hat - mask = /obj/item/clothing/mask/cigarette + mask = /obj/item/cigarette /datum/outfit/mafia/psychologist name = "Mafia Psychologist" diff --git a/code/modules/mapfluff/ruins/icemoonruin_code/lavaland_incursion.dm b/code/modules/mapfluff/ruins/icemoonruin_code/lavaland_incursion.dm new file mode 100644 index 0000000000000..6674123c4089a --- /dev/null +++ b/code/modules/mapfluff/ruins/icemoonruin_code/lavaland_incursion.dm @@ -0,0 +1,20 @@ +/mob/living/basic/mining/legion/cult_skeleton + corpse_type = /obj/effect/mob_spawn/corpse/human/skeleton/cultist + +/obj/effect/mob_spawn/corpse/human/skeleton/cultist + name = "skeleton cultist" + outfit = /datum/outfit/skeleton_cultist + +/datum/outfit/skeleton_cultist + name = "Skeleton Cultist" + uniform = /obj/item/clothing/under/rank/civilian/chaplain + suit = /obj/item/clothing/suit/hooded/cultrobes + shoes = /obj/item/clothing/shoes/cult + +/obj/item/paper/crumpled/bloody/ruins/lavaland_incursion + name = "blood-written note" + default_raw_text = "

    Here, far above Indecipheres, shrouded in snow and ice, I sign the death warrant of the last of a species. The Dragons kneel beneath us." + +/obj/item/paper/crumpled/bloody/ruins/lavaland_incursion/last + name = "blood-written note" + default_raw_text = "

    SHE WAS WRONG. KILL IT? WE COULD BARELY CONTAIN IT. AND NOW, INDECIPHERES WANTS IT TO COME HOME" diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm index 3bb1fb48e599a..4aecd64aa1699 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm @@ -209,7 +209,7 @@ new /obj/item/clothing/glasses/science(src) if(7) new /obj/item/clothing/glasses/sunglasses/big(src) - new /obj/item/clothing/mask/cigarette/rollie(src) + new /obj/item/cigarette/rollie(src) else //empty grave return @@ -289,7 +289,7 @@ deconstruct(TRUE) return TRUE -/obj/structure/closet/crate/grave/container_resist_act(mob/living/user) +/obj/structure/closet/crate/grave/container_resist_act(mob/living/user, loc_required = TRUE) if(opened) return // The player is trying to dig themselves out of an early grave diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm index 1c0a5392fb9b2..57f20abb1aa19 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm @@ -78,15 +78,15 @@ desc = /obj/machinery/atmospherics/components/unary/vent_scrubber::desc icon = /obj/machinery/atmospherics/components/unary/vent_scrubber::icon layer = /obj/machinery/atmospherics/components/unary/vent_scrubber::layer - plane = FLOOR_PLANE + plane = /obj/machinery/atmospherics/components/unary/vent_scrubber::plane icon_state = "scrub_on" /obj/structure/fluff/fake_vent name = /obj/machinery/atmospherics/components/unary/vent_pump::name desc = /obj/machinery/atmospherics/components/unary/vent_pump::desc icon = /obj/machinery/atmospherics/components/unary/vent_pump::icon - layer = /obj/machinery/atmospherics/components/unary/vent_scrubber::layer - plane = FLOOR_PLANE + layer = /obj/machinery/atmospherics/components/unary/vent_pump::layer + plane = /obj/machinery/atmospherics/components/unary/vent_pump::plane icon_state = "vent_out" /turf/open/mirage diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index f30074326fdf8..e830718e12ed6 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -107,6 +107,12 @@ return return ..(ceiling) +///Used for marking mapping errors. These should only be created by cases explicitly caught by unit tests, and should NEVER actually appear in production. +/obj/effect/mapping_error + name = "I AM ERROR" + desc = "IF YOU SEE ME, YELL AT A MAPPER!!!" + icon = 'icons/effects/mapping_helpers.dmi' + icon_state = "mapping_error" /obj/effect/mapping_helpers icon = 'icons/effects/mapping_helpers.dmi' @@ -563,17 +569,17 @@ if(!mapload) log_mapping("[src] spawned outside of mapload!") return INITIALIZE_HINT_QDEL - check_validity() - return INITIALIZE_HINT_QDEL + return INITIALIZE_HINT_LATELOAD -/obj/effect/mapping_helpers/turn_off_lights_with_lightswitch/proc/check_validity() +/obj/effect/mapping_helpers/turn_off_lights_with_lightswitch/LateInitialize() var/area/needed_area = get_area(src) if(!needed_area.lightswitch) stack_trace("[src] at [AREACOORD(src)] [(needed_area.type)] tried to turn lights off but they are already off!") var/obj/machinery/light_switch/light_switch = locate(/obj/machinery/light_switch) in needed_area if(!light_switch) - stack_trace("Trying to turn off lights with lightswitch in area without lightswitches. In [(needed_area.type)] to be precise.") - needed_area.lightswitch = FALSE + CRASH("Trying to turn off lights with lightswitch in area without lightswitches. In [(needed_area.type)] to be precise.") + light_switch.set_lights(FALSE) + qdel(src) //needs to do its thing before spawn_rivers() is called INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) @@ -1183,7 +1189,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_atoms_ontop) if(response.errored || response.status_code != 200) query_in_progress = FALSE CRASH("Failed to fetch mapped custom json from url [json_url], code: [response.status_code], error: [response.error]") - var/json_data = response["body"] + var/json_data = response.body json_cache[json_url] = json_data query_in_progress = FALSE return json_data diff --git a/code/modules/meteors/meteor_changeling.dm b/code/modules/meteors/meteor_changeling.dm index 5733e2dbe93e2..9c25f8b6776a6 100644 --- a/code/modules/meteors/meteor_changeling.dm +++ b/code/modules/meteors/meteor_changeling.dm @@ -30,7 +30,7 @@ return TRUE //If the meteor misses the station and deletes itself, we make absolutely sure the changeling reaches the station. -/obj/effect/meteor/meaty/changeling/handle_stopping() +/obj/effect/meteor/meaty/changeling/moved_off_z() if(!landing_target) //If our destination turf is gone for some reason, we chuck them at the observer_start landmark (usually at the center of the station) as a last resort. landing_target = locate(/obj/effect/landmark/observer_start) in GLOB.landmarks_list diff --git a/code/modules/meteors/meteor_dark_matteor.dm b/code/modules/meteors/meteor_dark_matteor.dm index f965605048204..f72bbcff6fa13 100644 --- a/code/modules/meteors/meteor_dark_matteor.dm +++ b/code/modules/meteors/meteor_dark_matteor.dm @@ -60,7 +60,7 @@ qdel(defender) return FALSE -/obj/effect/meteor/dark_matteor/handle_stopping() +/obj/effect/meteor/dark_matteor/moved_off_z() . = ..() if(previous_security_level && SSsecurity_level.get_current_level_as_number() != SEC_LEVEL_DELTA) SSsecurity_level.set_level(previous_security_level) diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm index 9096ab24afec8..199f6517abb1e 100644 --- a/code/modules/meteors/meteor_types.dm +++ b/code/modules/meteors/meteor_types.dm @@ -60,8 +60,7 @@ get_hit() if(z != z_original || loc == get_turf(dest)) - qdel(src) - return + moved_off_z() /obj/effect/meteor/Process_Spacemove(movement_dir = 0, continuous_move = FALSE) return TRUE //Keeps us from drifting for no reason @@ -80,13 +79,9 @@ if(!new_loop) return - RegisterSignal(new_loop, COMSIG_QDELETING, PROC_REF(handle_stopping)) - ///Deals with what happens when we stop moving, IE we die -/obj/effect/meteor/proc/handle_stopping() - SIGNAL_HANDLER - if(!QDELETED(src)) - qdel(src) +/obj/effect/meteor/proc/moved_off_z() + qdel(src) /obj/effect/meteor/proc/ram_turf(turf/T) //first yell at mobs about them dying horribly @@ -459,8 +454,8 @@ /obj/effect/meteor/pumpkin name = "PUMPKING" desc = "THE PUMPKING'S COMING!" - icon = 'icons/obj/meteor_spooky.dmi' - icon_state = "pumpkin" + icon = 'icons/obj/meteor.dmi' + icon_state = "spooky" hits = 10 heavy = TRUE dropamt = 1 diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index fa15060d282a9..40cb967d3a0ab 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -141,7 +141,7 @@ new /obj/item/lighter(src) new /obj/item/reagent_containers/cup/glass/bottle/absinthe/premium(src) for(var/i in 1 to 3) - new /obj/item/clothing/mask/cigarette/rollie(src) + new /obj/item/cigarette/rollie(src) if(6 to 10) new /obj/item/melee/skateboard/pro(src) if(11 to 15) diff --git a/code/modules/mining/boulder_processing/boulder_types.dm b/code/modules/mining/boulder_processing/boulder_types.dm index 1ffce8737bdd4..8f6889b7c8470 100644 --- a/code/modules/mining/boulder_processing/boulder_types.dm +++ b/code/modules/mining/boulder_processing/boulder_types.dm @@ -4,7 +4,7 @@ desc = "This boulder is brimming with strange energy. Cracking it open could contain something unusual for science." icon_state = "boulder_artifact" /// This is the type of item that will be inside the boulder. Default is a strange object. - var/artifact_type = /obj/item/relic + var/artifact_type = /obj/item/relic/lavaland /// References to the relic inside the boulder, if any. var/obj/item/artifact_inside diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index 56b65c456197b..649acabfcae4a 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -97,13 +97,10 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) if(uses_left <= 0) user.transferItemToLoc(src, thing, TRUE) - var/mutable_appearance/balloon - var/mutable_appearance/balloon2 - var/mutable_appearance/balloon3 - if(isliving(thing)) var/mob/living/creature = thing creature.Paralyze(32 SECONDS) // Keep them from moving during the duration of the extraction + ADD_TRAIT(creature, TRAIT_FORCED_STANDING, FULTON_PACK_TRAIT) // Prevents animation jank from happening if(creature.buckled) creature.buckled.unbuckle_mob(creature, TRUE) // Unbuckle them to prevent anchoring problems else @@ -113,14 +110,15 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) var/obj/effect/extraction_holder/holder_obj = new(get_turf(thing)) holder_obj.appearance = thing.appearance thing.forceMove(holder_obj) - balloon2 = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_expand") + var/mutable_appearance/balloon2 = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_expand", layer = VEHICLE_LAYER) balloon2.pixel_y = 10 balloon2.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM holder_obj.add_overlay(balloon2) + addtimer(CALLBACK(src, PROC_REF(create_balloon), thing, user, holder_obj, balloon2), 0.4 SECONDS) + return ITEM_INTERACT_SUCCESS - sleep(0.4 SECONDS) - - balloon = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_balloon") +/obj/item/extraction_pack/proc/create_balloon(atom/movable/thing, mob/living/user, obj/effect/extraction_holder/holder_obj, mutable_appearance/balloon2) + var/mutable_appearance/balloon = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_balloon", layer = VEHICLE_LAYER) balloon.pixel_y = 10 balloon.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM holder_obj.cut_overlay(balloon2) @@ -132,6 +130,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) animate(pixel_z = -5, time = 1 SECONDS, flags = ANIMATION_RELATIVE) animate(pixel_z = 5, time = 1 SECONDS, flags = ANIMATION_RELATIVE) animate(pixel_z = -5, time = 1 SECONDS, flags = ANIMATION_RELATIVE) + sleep(6 SECONDS) playsound(holder_obj.loc, 'sound/items/fultext_launch.ogg', vol = 50, vary = TRUE, extrarange = -3) @@ -146,7 +145,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) sleep(3 SECONDS) var/turf/flooring_near_beacon = list() - var/turf/beacon_turf = get_turf(beacon) + var/turf/beacon_turf = get_turf(beacon_ref.resolve()) for(var/turf/floor as anything in RANGE_TURFS(1, beacon_turf)) if(!floor.is_blocked_turf()) flooring_near_beacon += floor @@ -159,26 +158,28 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) animate(holder_obj, pixel_z = -990, time = 5 SECONDS, flags = ANIMATION_RELATIVE) animate(pixel_z = 5, time = 1 SECONDS, flags = ANIMATION_RELATIVE) animate(pixel_z = -5, time = 1 SECONDS, flags = ANIMATION_RELATIVE) + sleep(7 SECONDS) - balloon3 = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_retract") + var/mutable_appearance/balloon3 = mutable_appearance('icons/effects/fulton_balloon.dmi', "fulton_retract", layer = VEHICLE_LAYER) balloon3.pixel_y = 10 balloon3.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM holder_obj.cut_overlay(balloon) holder_obj.add_overlay(balloon3) + sleep(0.4 SECONDS) holder_obj.cut_overlay(balloon3) + if (isliving(thing)) + REMOVE_TRAIT(thing, TRAIT_FORCED_STANDING, FULTON_PACK_TRAIT) thing.set_anchored(FALSE) // An item has to be unanchored to be extracted in the first place. thing.set_density(initial(thing.density)) animate(holder_obj, pixel_z = -10, time = 0.5 SECONDS, flags = ANIMATION_RELATIVE) sleep(0.5 SECONDS) - thing.forceMove(holder_obj.loc) qdel(holder_obj) if(uses_left <= 0) qdel(src) - return ITEM_INTERACT_SUCCESS /obj/item/fulton_core name = "extraction beacon assembly kit" diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 9cbc516697808..1e4e444861155 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -311,7 +311,7 @@ product = /obj/item/food/grown/ash_flora/shavings genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/fire_resistance) growing_icon = 'icons/obj/service/hydroponics/growing_mushrooms.dmi' - reagents_add = list(/datum/reagent/consumable/nutriment = 0.04, /datum/reagent/consumable/sugar = 0.06, /datum/reagent/consumable/ethanol = 0.04, /datum/reagent/stabilizing_agent = 0.06, /datum/reagent/consumable/mintextract = 0.02) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.04, /datum/reagent/consumable/ethanol = 0.04, /datum/reagent/stabilizing_agent = 0.06, /datum/reagent/consumable/mintextract = 0.02) /obj/item/seeds/lavaland/porcini name = "pack of porcini mycelium" @@ -322,7 +322,7 @@ product = /obj/item/food/grown/ash_flora/mushroom_leaf genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/fire_resistance) growing_icon = 'icons/obj/service/hydroponics/growing_mushrooms.dmi' - reagents_add = list(/datum/reagent/consumable/nutriment = 0.06, /datum/reagent/consumable/vitfro = 0.04, /datum/reagent/drug/nicotine = 0.04) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.06, /datum/reagent/consumable/sugar = 0.06, /datum/reagent/consumable/vitfro = 0.04, /datum/reagent/drug/nicotine = 0.04) /obj/item/seeds/lavaland/inocybe name = "pack of inocybe mycelium" diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index a52107ce8b260..385afb0f81f3e 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -31,13 +31,10 @@ machine = null return ..() -/obj/machinery/mineral/stacking_unit_console/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) - return - var/obj/item/multitool/M = I +/obj/machinery/mineral/stacking_unit_console/multitool_act(mob/living/user, obj/item/multitool/M) M.set_buffer(src) balloon_alert(user, "saved to multitool buffer") - return TRUE + return ITEM_INTERACT_SUCCESS /obj/machinery/mineral/stacking_unit_console/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 3c02de4707317..c1a81b9d33847 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -359,6 +359,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp abstract_move(destination) // move like the wind return TRUE +/mob/dead/observer/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + var/area/new_area = get_area(src) + if(new_area != ambience_tracked_area) + update_ambience_area(new_area) + /mob/dead/observer/verb/reenter_corpse() set category = "Ghost" set name = "Re-enter Corpse" @@ -693,8 +699,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp //this is called when a ghost is drag clicked to something. /mob/dead/observer/mouse_drop_dragged(atom/over, mob/user) if (isobserver(user) && user.client.holder && (isliving(over) || iscameramob(over))) - if (user.client.holder.cmd_ghost_drag(src,over)) - return + user.client.holder.cmd_ghost_drag(src, over) /mob/dead/observer/Topic(href, href_list) ..() @@ -983,6 +988,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp game = create_mafia_game() game.ui_interact(usr) +/mob/dead/observer/AltClickOn(atom/target) + client.loot_panel.open(get_turf(target)) + +/mob/dead/observer/AltClickSecondaryOn(atom/target) + if(client && check_rights_for(client, R_DEBUG)) + client.toggle_tag_datum(src) + /mob/dead/observer/CtrlShiftClickOn(atom/target) if(isobserver(target) && check_rights(R_SPAWN)) var/mob/dead/observer/target_ghost = target diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 50ab6e82faa4d..2d22c11ee71f8 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -290,8 +290,12 @@ /mob/proc/is_holding_items() return !!locate(/obj/item) in held_items +/** + * Returns a list of all dropped held items. + * If none were dropped, returns an empty list. + */ /mob/proc/drop_all_held_items() - . = FALSE + . = list() for(var/obj/item/I in held_items) . |= dropItemToGround(I) @@ -319,24 +323,25 @@ /** * Used to drop an item (if it exists) to the ground. - * * Will pass as TRUE is successfully dropped, or if there is no item to drop. - * * Will pass FALSE if the item can not be dropped due to TRAIT_NODROP via doUnEquip() + * * Will return null if the item wasn't dropped. + * * If it was, returns the item. * 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) if (isnull(I)) - return TRUE + return SEND_SIGNAL(src, COMSIG_MOB_DROPPING_ITEM) - . = doUnEquip(I, force, drop_location(), FALSE, invdrop = invdrop, silent = silent) + var/try_uneqip = doUnEquip(I, force, drop_location(), FALSE, invdrop = invdrop, silent = silent) - if(!. || !I) //ensure the item exists and that it was dropped properly. + if(!try_uneqip || !I) //ensure the item exists and that it was dropped properly. return if(!(I.item_flags & NO_PIXEL_RANDOM_DROP)) I.pixel_x = I.base_pixel_x + rand(-6, 6) I.pixel_y = I.base_pixel_y + rand(-6, 6) I.do_drop_animation(src) + return I //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) @@ -401,59 +406,105 @@ return items /** - * Used to return a list of equipped items on a human mob; does not by default include held items, see include_flags - * - * Argument(s): - * * Optional - include_flags, (see obj.flags.dm) describes which optional things to include or not (pockets, accessories, held items) + * Returns the items that were succesfully unequipped. */ - -/mob/living/carbon/human/get_equipped_items(include_flags = NONE) - var/list/items = ..() - if(!(include_flags & INCLUDE_POCKETS)) - items -= list(l_store, r_store, s_store) - if((include_flags & INCLUDE_ACCESSORIES) && w_uniform) - var/obj/item/clothing/under/worn_under = w_uniform - items += worn_under.attached_accessories - return items - /mob/living/proc/unequip_everything() var/list/items = list() items |= get_equipped_items(INCLUDE_POCKETS) + // In case something isn't actually unequipped somehow + var/list/dropped_items = list() for(var/I in items) - dropItemToGround(I) - drop_all_held_items() - - -/mob/living/carbon/proc/check_obscured_slots(transparent_protection) - var/obscured = NONE - var/hidden_slots = NONE - - for(var/obj/item/equipped_item in get_equipped_items()) - hidden_slots |= equipped_item.flags_inv - if(transparent_protection) - hidden_slots |= equipped_item.transparent_protection - - if(hidden_slots & HIDENECK) - obscured |= ITEM_SLOT_NECK - if(hidden_slots & HIDEMASK) - obscured |= ITEM_SLOT_MASK - if(hidden_slots & HIDEEYES) - obscured |= ITEM_SLOT_EYES - if(hidden_slots & HIDEEARS) - obscured |= ITEM_SLOT_EARS - if(hidden_slots & HIDEGLOVES) - obscured |= ITEM_SLOT_GLOVES - if(hidden_slots & HIDEJUMPSUIT) - obscured |= ITEM_SLOT_ICLOTHING - if(hidden_slots & HIDESHOES) - obscured |= ITEM_SLOT_FEET - if(hidden_slots & HIDESUITSTORAGE) - obscured |= ITEM_SLOT_SUITSTORE - if(hidden_slots & HIDEHEADGEAR) - obscured |= ITEM_SLOT_HEAD - - return obscured + var/return_val = dropItemToGround(I) + if(!isitem(return_val)) + continue + dropped_items |= return_val + var/return_val = drop_all_held_items() + if(islist(return_val)) + dropped_items |= return_val + return dropped_items +/** + * Try to equip an item to a slot on the mob + * + * This is a SAFE proc. Use this instead of equip_to_slot()! + * + * set qdel_on_fail to have it delete W if it fails to equip + * + * set disable_warning to disable the 'you are unable to equip that' warning. + * + * unset redraw_mob to prevent the mob icons from being redrawn at the end. + * + * Initial is used to indicate whether or not this is the initial equipment (job datums etc) or just a player doing it + * + * set indirect_action to allow insertions into "soft" locked objects, things that are easily opened by the owning mob + */ +/mob/proc/equip_to_slot_if_possible(obj/item/W, slot, qdel_on_fail = FALSE, disable_warning = FALSE, redraw_mob = TRUE, bypass_equip_delay_self = FALSE, initial = FALSE, indirect_action = FALSE) + if(!istype(W) || QDELETED(W)) //This qdeleted is to prevent stupid behavior with things that qdel during init, like say stacks + return FALSE + if(!W.mob_can_equip(src, slot, disable_warning, bypass_equip_delay_self, indirect_action = indirect_action)) + if(qdel_on_fail) + qdel(W) + else if(!disable_warning) + to_chat(src, span_warning("You are unable to equip that!")) + return FALSE + equip_to_slot(W, slot, initial, redraw_mob, indirect_action = indirect_action) //This proc should not ever fail. + return TRUE + +/** + * Actually equips an item to a slot (UNSAFE) + * + * This is an UNSAFE proc. It merely handles the actual job of equipping. All the checks on + * whether you can or can't equip need to be done before! Use mob_can_equip() for that task. + * + *In most cases you will want to use equip_to_slot_if_possible() + */ +/mob/proc/equip_to_slot(obj/item/equipping, slot, initial = FALSE, redraw_mob = FALSE, indirect_action = FALSE) + return + +/** + * Equip an item to the slot or delete + * + * This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to + * equip people when the round starts and when events happen and such. + * + * Also bypasses equip delay checks, since the mob isn't actually putting it on. + * Initial is used to indicate whether or not this is the initial equipment (job datums etc) or just a player doing it + * set indirect_action to allow insertions into "soft" locked objects, things that are easily opened by the owning mob + */ +/mob/proc/equip_to_slot_or_del(obj/item/W, slot, initial = FALSE, indirect_action = FALSE) + return equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, TRUE, initial, indirect_action) + +/** + * Auto equip the passed in item the appropriate slot based on equipment priority + * + * puts the item "W" into an appropriate slot in a human's inventory + * + * returns 0 if it cannot, 1 if successful + */ +/mob/proc/equip_to_appropriate_slot(obj/item/W, qdel_on_fail = FALSE, indirect_action = FALSE) + if(!istype(W)) + return FALSE + var/slot_priority = W.slot_equipment_priority + + if(!slot_priority) + slot_priority = list( \ + ITEM_SLOT_BACK, ITEM_SLOT_ID,\ + ITEM_SLOT_ICLOTHING, ITEM_SLOT_OCLOTHING,\ + ITEM_SLOT_MASK, ITEM_SLOT_HEAD, ITEM_SLOT_NECK,\ + ITEM_SLOT_FEET, ITEM_SLOT_GLOVES,\ + ITEM_SLOT_EARS, ITEM_SLOT_EYES,\ + ITEM_SLOT_BELT, ITEM_SLOT_SUITSTORE,\ + ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET,\ + ITEM_SLOT_DEX_STORAGE\ + ) + + for(var/slot in slot_priority) + if(equip_to_slot_if_possible(W, slot, disable_warning = TRUE, redraw_mob = TRUE, indirect_action = indirect_action)) + return TRUE + + if(qdel_on_fail) + qdel(W) + return FALSE /// Tries to equip an item, store it in open storage, or in next best storage /obj/item/proc/equip_to_best_slot(mob/user) @@ -534,27 +585,6 @@ if(hud_used) hud_used.build_hand_slots() -/mob/living/carbon/human/change_number_of_hands(amt) - var/old_limbs = held_items.len - if(amt < old_limbs) - for(var/i in hand_bodyparts.len to amt step -1) - var/obj/item/bodypart/BP = hand_bodyparts[i] - BP.dismember() - hand_bodyparts[i] = null - hand_bodyparts.len = amt - else if(amt > old_limbs) - hand_bodyparts.len = amt - for(var/i in old_limbs+1 to amt) - var/path = /obj/item/bodypart/arm/left - if(!(i % 2)) - path = /obj/item/bodypart/arm/right - - var/obj/item/bodypart/BP = new path () - BP.held_index = i - BP.try_attach_limb(src, TRUE) - hand_bodyparts[i] = BP - ..() //Don't redraw hands until we have organs for them - //GetAllContents that is reasonable and not stupid /mob/living/proc/get_all_gear() var/list/processing_list = get_equipped_items(INCLUDE_POCKETS | INCLUDE_ACCESSORIES | INCLUDE_HELD) diff --git a/code/modules/mob/living/basic/bots/bot_ai.dm b/code/modules/mob/living/basic/bots/bot_ai.dm index 93d53d6e52183..b7cd5dcabd394 100644 --- a/code/modules/mob/living/basic/bots/bot_ai.dm +++ b/code/modules/mob/living/basic/bots/bot_ai.dm @@ -276,3 +276,17 @@ /datum/ai_behavior/bot_search/proc/valid_target(datum/ai_controller/basic_controller/bot/controller, atom/my_target) return TRUE + +///behavior to make our bot talk +/datum/ai_behavior/bot_speech + action_cooldown = 5 SECONDS + behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION + +/datum/ai_behavior/bot_speech/perform(seconds_per_tick, datum/ai_controller/controller, list/list_to_pick_from, announce_key) + var/datum/action/cooldown/bot_announcement/announcement = controller.blackboard[announce_key] + + if(isnull(announcement) || !length(list_to_pick_from)) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED + + announcement.announce(pick(list_to_pick_from)) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED diff --git a/code/modules/mob/living/basic/bots/firebot/firebot.dm b/code/modules/mob/living/basic/bots/firebot/firebot.dm new file mode 100644 index 0000000000000..31fa969fa5983 --- /dev/null +++ b/code/modules/mob/living/basic/bots/firebot/firebot.dm @@ -0,0 +1,169 @@ +#define FOAM_INTERVAL 5 SECONDS + +/mob/living/basic/bot/firebot + name = "\improper Firebot" + desc = "A little fire extinguishing bot. He looks rather anxious." + icon = 'icons/mob/silicon/aibots.dmi' + icon_state = "firebot1" + light_color = "#8cffc9" + light_power = 0.8 + + req_one_access = list(ACCESS_ROBOTICS, ACCESS_CONSTRUCTION) + radio_key = /obj/item/encryptionkey/headset_eng + radio_channel = RADIO_CHANNEL_ENGINEERING + bot_type = FIRE_BOT + additional_access = /datum/id_trim/job/station_engineer + hackables = "fire safety protocols" + path_image_color = "#FFA500" + possessed_message = "You are a firebot! Protect the station from fires to the best of your ability!" + ai_controller = /datum/ai_controller/basic_controller/bot/firebot + ///our inbuilt fire extinguisher + var/obj/item/extinguisher/internal_ext + + ///Flags firebots use to decide how they function. + var/firebot_mode_flags = FIREBOT_EXTINGUISH_PEOPLE | FIREBOT_EXTINGUISH_FLAMES + //Selections: FIREBOT_STATIONARY_MODE | FIREBOT_EXTINGUISH_PEOPLE | FIREBOT_EXTINGUISH_FLAMES + ///cooldown before we release foam all over + COOLDOWN_DECLARE(foam_cooldown) + + +/mob/living/basic/bot/firebot/generate_speak_list() + var/static/list/idle_lines = list( + FIREBOT_VOICED_NO_FIRES = 'sound/voice/firebot/nofires.ogg', + FIREBOT_VOICED_ONLY_YOU = 'sound/voice/firebot/onlyyou.ogg', + FIREBOT_VOICED_TEMPERATURE_NOMINAL = 'sound/voice/firebot/tempnominal.ogg', + FIREBOT_VOICED_KEEP_COOL = 'sound/voice/firebot/keepitcool.ogg', + ) + var/static/list/fire_detected_lines = list( + FIREBOT_VOICED_FIRE_DETECTED = 'sound/voice/firebot/detected.ogg', + FIREBOT_VOICED_STOP_DROP = 'sound/voice/firebot/stopdropnroll.ogg', + FIREBOT_VOICED_EXTINGUISHING = 'sound/voice/firebot/extinguishing.ogg', + ) + var/static/list/emagged_lines = list( + FIREBOT_VOICED_CANDLE_TIP = 'sound/voice/firebot/candle_tip.ogg', + FIREBOT_VOICED_ELECTRIC_FIRE = 'sound/voice/firebot/electric_fire_tip.ogg', + FIREBOT_VOICED_FUEL_TIP = 'sound/voice/firebot/gasoline_tip.ogg' + ) + ai_controller.set_blackboard_key(BB_FIREBOT_EMAGGED_LINES, emagged_lines) + ai_controller.set_blackboard_key(BB_FIREBOT_IDLE_LINES, idle_lines) + ai_controller.set_blackboard_key(BB_FIREBOT_FIRE_DETECTED_LINES, fire_detected_lines) + return idle_lines + fire_detected_lines + +/mob/living/basic/bot/firebot/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) + update_appearance(UPDATE_ICON) + var/static/list/things_to_extinguish = typecacheof(list(/mob/living/carbon)) + ai_controller.set_blackboard_key(BB_FIREBOT_CAN_EXTINGUISH, things_to_extinguish) + create_extinguisher() + AddElement(/datum/element/atmos_sensitive, mapload) + +/mob/living/basic/bot/firebot/Destroy() + QDEL_NULL(internal_ext) + return ..() + +/mob/living/basic/bot/firebot/bot_reset(bypass_ai_reset) + . = ..() + create_extinguisher() + +/mob/living/basic/bot/firebot/proc/create_extinguisher() + internal_ext = new /obj/item/extinguisher(src) + internal_ext.safety = FALSE + internal_ext.precision = TRUE + internal_ext.max_water = INFINITY + internal_ext.refill() + +/mob/living/basic/bot/firebot/melee_attack(atom/attacked_atom, list/modifiers, ignore_cooldown = FALSE) + use_extinguisher(attacked_atom) + +/mob/living/basic/bot/firebot/RangedAttack(atom/attacked_atom, list/modifiers) + use_extinguisher(attacked_atom) + +/mob/living/basic/bot/firebot/proc/use_extinguisher(atom/attacked_atom) + if(!(bot_mode_flags & BOT_MODE_ON)) + return + spray_water(attacked_atom) + +/mob/living/basic/bot/firebot/emag_act(mob/user, obj/item/card/emag/emag_card) + . = ..() + if(!(bot_access_flags & BOT_COVER_EMAGGED)) + return + + to_chat(user, span_warning("You enable the very ironically named \"fighting with fire\" mode, and disable the targeting safeties.")) // heheehe. funny + + audible_message(span_danger("[src] buzzes oddly!")) + playsound(src, SFX_SPARKS, 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + + internal_ext.chem = /datum/reagent/clf3 //Refill the internal extinguisher with liquid fire + internal_ext.power = 3 + internal_ext.safety = FALSE + internal_ext.precision = FALSE + internal_ext.max_water = INFINITY + internal_ext.refill() + return TRUE + +// Variables sent to TGUI +/mob/living/basic/bot/firebot/ui_data(mob/user) + var/list/data = ..() + if(!(bot_access_flags & BOT_COVER_LOCKED) || HAS_SILICON_ACCESS(user)) + data["custom_controls"]["extinguish_fires"] = firebot_mode_flags & FIREBOT_EXTINGUISH_FLAMES + data["custom_controls"]["extinguish_people"] = firebot_mode_flags & FIREBOT_EXTINGUISH_PEOPLE + data["custom_controls"]["stationary_mode"] = firebot_mode_flags & FIREBOT_STATIONARY_MODE + return data + +// Actions received from TGUI +/mob/living/basic/bot/firebot/ui_act(action, params) + . = ..() + if(. || (bot_access_flags & BOT_COVER_LOCKED && !HAS_SILICON_ACCESS(usr))) + return + + switch(action) + if("extinguish_fires") + firebot_mode_flags ^= FIREBOT_EXTINGUISH_FLAMES + if("extinguish_people") + firebot_mode_flags ^= FIREBOT_EXTINGUISH_PEOPLE + if("stationary_mode") + firebot_mode_flags ^= FIREBOT_STATIONARY_MODE + update_appearance() + +/mob/living/basic/bot/firebot/should_atmos_process(datum/gas_mixture/air, exposed_temperature) + return (exposed_temperature > T0C + 200 || exposed_temperature < BODYTEMP_COLD_DAMAGE_LIMIT) + +/mob/living/basic/bot/firebot/atmos_expose(datum/gas_mixture/air, exposed_temperature) + if(!COOLDOWN_FINISHED(src, foam_cooldown)) + return + var/datum/effect_system/fluid_spread/foam/firefighting/foam = new + foam.set_up(3, holder = src, location = loc) + foam.start() + COOLDOWN_START(src, foam_cooldown, FOAM_INTERVAL) + +/mob/living/basic/bot/firebot/proc/spray_water(atom/attacked_atom) + if(firebot_mode_flags & FIREBOT_STATIONARY_MODE) + flick("firebots_use", src) + else + flick("firebot1_use", src) + internal_ext?.melee_attack_chain(src, attacked_atom) + +/mob/living/basic/bot/firebot/update_icon_state() + . = ..() + if(!(bot_mode_flags & BOT_MODE_ON)) + icon_state = "firebot0" + return + if(IsStun() || IsParalyzed() || (firebot_mode_flags & FIREBOT_STATIONARY_MODE)) //Bot has yellow light to indicate stationary mode. + icon_state = "firebots1" + return + icon_state = "firebot1" + +/mob/living/basic/bot/firebot/explode() + var/turf/my_turf = drop_location() + + new /obj/item/assembly/prox_sensor(my_turf) + new /obj/item/clothing/head/utility/hardhat/red(my_turf) + + if(isopenturf(my_turf)) + var/turf/open/open_turf = my_turf + open_turf.MakeSlippery(TURF_WET_WATER, min_wet_time = 10 SECONDS, wet_time_to_add = 5 SECONDS) + + return ..() + +#undef FOAM_INTERVAL diff --git a/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm b/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm new file mode 100644 index 0000000000000..31127ecdfb4e7 --- /dev/null +++ b/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm @@ -0,0 +1,132 @@ +#define ANNOUNCEMENT_TIMER 10 SECONDS + +/datum/ai_controller/basic_controller/bot/firebot + blackboard = list( + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_turfs, + BB_UNREACHABLE_LIST_COOLDOWN = 45 SECONDS, + ) + planning_subtrees = list( + /datum/ai_planning_subtree/respond_to_summon, + /datum/ai_planning_subtree/manage_unreachable_list, + /datum/ai_planning_subtree/extinguishing_people, + /datum/ai_planning_subtree/extinguishing_turfs, + /datum/ai_planning_subtree/salute_authority, + /datum/ai_planning_subtree/firebot_speech, + /datum/ai_planning_subtree/find_patrol_beacon, + ) + reset_keys = list( + BB_FIREBOT_EXTINGUISH_TARGET, + BB_BEACON_TARGET, + BB_PREVIOUS_BEACON_TARGET, + BB_BOT_SUMMON_TARGET, + ) + ///cooldown until we announce a fire again + COOLDOWN_DECLARE(announcement_cooldown) + +/datum/ai_controller/basic_controller/bot/firebot/TryPossessPawn(atom/new_pawn) + . = ..() + if(. & AI_CONTROLLER_INCOMPATIBLE) + return + RegisterSignal(new_pawn, COMSIG_AI_BLACKBOARD_KEY_SET(BB_FIREBOT_EXTINGUISH_TARGET), PROC_REF(on_target_found)) + +///say a silly line whenever we find someone on fire +/datum/ai_controller/basic_controller/bot/firebot/proc/on_target_found() + SIGNAL_HANDLER + if(!COOLDOWN_FINISHED(src, announcement_cooldown)) + return + + var/datum/action/cooldown/bot_announcement/announcement = blackboard[BB_ANNOUNCE_ABILITY] + if(isnull(announcement)) + return + + var/list/lines = blackboard[BB_FIREBOT_FIRE_DETECTED_LINES] + if(!length(lines)) + return + INVOKE_ASYNC(announcement, TYPE_PROC_REF(/datum/action/cooldown/bot_announcement, announce), pick(lines)) + COOLDOWN_START(src, announcement_cooldown, ANNOUNCEMENT_TIMER) + + +///subtree for extinguishing people +/datum/ai_planning_subtree/extinguishing_people + +/datum/ai_planning_subtree/extinguishing_people/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + if(controller.blackboard_key_exists(BB_FIREBOT_EXTINGUISH_TARGET)) + controller.queue_behavior(/datum/ai_behavior/basic_melee_attack/interact_once/extinguish, BB_FIREBOT_EXTINGUISH_TARGET, BB_TARGETING_STRATEGY) + return SUBTREE_RETURN_FINISH_PLANNING + + var/mob/living/basic/bot/firebot/living_bot = controller.pawn + var/range = living_bot.firebot_mode_flags & FIREBOT_STATIONARY_MODE ? 1 : 5 + + if(living_bot.firebot_mode_flags & FIREBOT_EXTINGUISH_PEOPLE) + controller.queue_behavior(/datum/ai_behavior/bot_search/people_on_fire, BB_FIREBOT_EXTINGUISH_TARGET, controller.blackboard[BB_FIREBOT_CAN_EXTINGUISH], range) + +///behavior for finding people on fire +/datum/ai_behavior/bot_search/people_on_fire + +/datum/ai_behavior/bot_search/people_on_fire/valid_target(datum/ai_controller/basic_controller/bot/controller, mob/living/my_target) + var/mob/living/basic/bot/living_bot = controller.pawn + return (my_target.on_fire || (living_bot.bot_access_flags & BOT_COVER_EMAGGED)) + +///subtree for finding turfs to extinguish +/datum/ai_planning_subtree/extinguishing_turfs + +/datum/ai_planning_subtree/extinguishing_turfs/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + if(controller.blackboard_key_exists(BB_FIREBOT_EXTINGUISH_TARGET)) + return + + var/mob/living/basic/bot/firebot/living_bot = controller.pawn + var/should_bypass_blacklist = living_bot.firebot_mode_flags & FIREBOT_STATIONARY_MODE + + if(living_bot.firebot_mode_flags & FIREBOT_EXTINGUISH_FLAMES) + controller.queue_behavior(/datum/ai_behavior/search_burning_turfs, BB_FIREBOT_EXTINGUISH_TARGET, should_bypass_blacklist) + +///behavior to find burning turfs +/datum/ai_behavior/search_burning_turfs + action_cooldown = 2 SECONDS + behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION + +/datum/ai_behavior/search_burning_turfs/perform(seconds_per_tick, datum/ai_controller/basic_controller/bot/controller, target_key, bypass_add_blacklist = FALSE) + var/mob/living/living_pawn = controller.pawn + var/list/ignore_list = controller.blackboard[BB_TEMPORARY_IGNORE_LIST] + + for(var/turf/possible_turf as anything in RANGE_TURFS(5, living_pawn)) + if(QDELETED(living_pawn)) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED + if(!isopenturf(possible_turf)) + continue + var/turf/open/open_turf = possible_turf + if(!open_turf.active_hotspot) + continue + if(LAZYACCESS(ignore_list, possible_turf)) + continue + if(controller.set_if_can_reach(target_key, possible_turf, bypass_add_to_blacklist = bypass_add_blacklist)) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED + + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED + +///behavior to extinguish mobs or turfs +/datum/ai_behavior/basic_melee_attack/interact_once/extinguish + +/datum/ai_behavior/basic_melee_attack/interact_once/extinguish/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key) + var/atom/target = controller.blackboard[BB_FIREBOT_EXTINGUISH_TARGET] + var/mob/living/basic/bot/living_bot = controller.pawn + + //if we couldnt path, or we successfully burnt someone, ignore them for a bit! + if(!succeeded || (isliving(target) && (living_bot.bot_access_flags & BOT_COVER_EMAGGED))) + controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE) + + return ..() + +///subtree to make us say funny idle lines +/datum/ai_planning_subtree/firebot_speech + ///chance we spout lines + var/speech_prob = 3 + +/datum/ai_planning_subtree/firebot_speech/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + if(controller.blackboard[BB_FIREBOT_EXTINGUISH_TARGET] || !SPT_PROB(speech_prob, seconds_per_tick)) + return + var/mob/living/basic/bot/living_bot = controller.pawn + var/list/idle_lines = (living_bot.bot_access_flags & BOT_COVER_EMAGGED) ? controller.blackboard[BB_FIREBOT_EMAGGED_LINES] : controller.blackboard[BB_FIREBOT_IDLE_LINES] + controller.queue_behavior(/datum/ai_behavior/bot_speech, idle_lines, BB_ANNOUNCE_ABILITY) + +#undef ANNOUNCEMENT_TIMER diff --git a/code/modules/mob/living/basic/cult/constructs/_construct.dm b/code/modules/mob/living/basic/cult/constructs/_construct.dm index 2583b3a88a6b8..79e6e7487721b 100644 --- a/code/modules/mob/living/basic/cult/constructs/_construct.dm +++ b/code/modules/mob/living/basic/cult/constructs/_construct.dm @@ -51,10 +51,12 @@ THEME_CULT = list(/obj/item/ectoplasm/construct), THEME_HOLY = list(/obj/item/ectoplasm/angelic), THEME_WIZARD = list(/obj/item/ectoplasm/mystic), + THEME_HERETIC = list(/obj/item/ectoplasm/construct), ) /mob/living/basic/construct/Initialize(mapload) . = ..() + throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) AddElement(/datum/element/simple_flying) var/list/remains = string_list(remains_by_theme[theme]) if(length(remains)) diff --git a/code/modules/mob/living/basic/cult/constructs/harvester.dm b/code/modules/mob/living/basic/cult/constructs/harvester.dm index da8dad827b05c..6d41bb43f26a1 100644 --- a/code/modules/mob/living/basic/cult/constructs/harvester.dm +++ b/code/modules/mob/living/basic/cult/constructs/harvester.dm @@ -26,13 +26,16 @@ /mob/living/basic/construct/harvester/Initialize(mapload) . = ..() - AddElement(\ - /datum/element/amputating_limbs,\ + grant_abilities() + +/mob/living/basic/construct/harvester/proc/grant_abilities() + AddElement(/datum/element/wall_walker, /turf/closed/wall/mineral/cult) + AddComponent(\ + /datum/component/amputating_limbs,\ surgery_time = 0,\ surgery_verb = "slicing",\ minimum_stat = CONSCIOUS,\ ) - AddElement(/datum/element/wall_walker, /turf/closed/wall/mineral/cult) var/datum/action/innate/seek_prey/seek = new(src) seek.Grant(src) seek.Activate() @@ -59,7 +62,7 @@ overlay_icon_state = "bg_demon_border" buttontooltipstyle = "cult" - button_icon = "icons/mob/actions/actions_cult.dmi" + button_icon = 'icons/mob/actions/actions_cult.dmi' button_icon_state = "cult_mark" /// Where is nar nar? Are we even looking? var/tracking = FALSE @@ -93,7 +96,6 @@ the_construct.seeking = TRUE to_chat(the_construct, span_cult_italic("You are now tracking your master.")) - /datum/action/innate/seek_prey name = "Seek the Harvest" desc = "None can hide from Nar'Sie, activate to track a survivor attempting to flee the red harvest!" @@ -126,3 +128,115 @@ desc = "Activate to track Nar'Sie!" button_icon_state = "sintouch" the_construct.seeking = TRUE + +/mob/living/basic/construct/harvester/heretic + name = "Rusted Harvester" + real_name = "Rusted Harvester" + desc = "A long, thin, decrepit construct originally built to herald Nar'Sie's rise, corrupted and rusted by the forces of the Mansus to spread its will instead." + icon_state = "harvester" + icon_living = "harvester" + construct_spells = list( + /datum/action/cooldown/spell/aoe/rust_conversion, + /datum/action/cooldown/spell/pointed/rust_construction, + ) + can_repair = FALSE + slowed_by_drag = FALSE + faction = list(FACTION_HERETIC) + maxHealth = 35 + health = 35 + melee_damage_lower = 20 + melee_damage_upper = 25 + // Dim green + lighting_cutoff_red = 10 + lighting_cutoff_green = 20 + lighting_cutoff_blue = 5 + playstyle_string = "You are a Rusted Harvester, built to serve the Sanguine Apostate, twisted to work the will of the Mansus. You are fragile and weak, but you rend cultists (only) apart on each attack. Follow your Master's orders!" + theme = THEME_HERETIC + +/mob/living/basic/construct/harvester/heretic/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_MANSUS_TOUCHED, REF(src)) + add_filter("rusted_harvester", 3, list("type" = "outline", "color" = COLOR_GREEN, "size" = 2, "alpha" = 40)) + + +/** + * Somewhat janky proc called when a heretic monster's master dies + * Used to kill any living Rusted Harvester + */ +/mob/living/proc/on_master_death() + return + +/mob/living/basic/construct/harvester/heretic/attack_animal(mob/living/simple_animal/user, list/modifiers) + // They're pretty fragile so this is probably necessary to prevent bullshit deaths. + if(user == src) + return + return ..() + +/mob/living/basic/construct/harvester/heretic/on_master_death() + to_chat(src, span_userdanger("Your link to the mansus suddenly snaps as your master perishes! Without its support, your body crumbles...")) + visible_message(span_alert("[src] suddenly crumbles to dust!")) + death() + +/mob/living/basic/construct/harvester/heretic/grant_abilities() + AddElement(/datum/element/wall_walker, or_trait = TRAIT_RUSTY) + AddElement(/datum/element/leeching_walk) + AddComponent(\ + /datum/component/amputating_limbs,\ + surgery_time = 1.5 SECONDS,\ + surgery_verb = "slicing",\ + minimum_stat = CONSCIOUS,\ + pre_hit_callback = CALLBACK(src, PROC_REF(is_cultist_handler)),\ + ) + AddComponent(/datum/component/damage_aura,\ + range = 3,\ + brute_damage = 0.5,\ + burn_damage = 0.5,\ + toxin_damage = 0.5,\ + stamina_damage = 4,\ + simple_damage = 1.5,\ + immune_factions = list(FACTION_HERETIC),\ + damage_message = span_boldwarning("Your body wilts and withers as it comes near [src]'s aura."),\ + message_probability = 7,\ + current_owner = src,\ + ) + var/datum/action/innate/seek_master/heretic/seek = new(src) + seek.Grant(src) + seek.Activate() + +// These aren't friends they're assholes +// Don't let them be near you! +/mob/living/basic/construct/harvester/heretic/Life(seconds_per_tick, times_fired) + . = ..() + if(!SPT_PROB(7, seconds_per_tick)) + return + + var/turf/adjacent = get_step(src, pick(GLOB.alldirs)) + // 90% chance to be directional, otherwise what we're on top of + var/turf/open/land = (isopenturf(adjacent) && prob(90)) ? adjacent : get_turf(src) + do_rust_heretic_act(land) + + if(prob(7)) + to_chat(src, span_notice("Eldritch energies emanate from your body.")) + +/mob/living/basic/construct/harvester/heretic/proc/is_cultist_handler(mob/victim) + return IS_CULTIST(victim) + +/datum/action/innate/seek_master/heretic + name = "Seek your Master" + desc = "Use your direct link to the Mansus to sense where your master is located via the arrow on the top-right of your HUD." + button_icon = 'icons/mob/actions/actions_cult.dmi' + background_icon_state = "bg_heretic" + overlay_icon_state = "bg_heretic_border" + tracking = TRUE + +/datum/action/innate/seek_master/heretic/New(Target) + . = ..() + the_construct = Target + the_construct.seeking = TRUE + var/datum/antagonist/heretic_monster/antag = IS_HERETIC_MONSTER(the_construct) + if(antag) + the_construct.master = antag.master + +// no real reason for most of this weird oldcode +/datum/action/innate/seek_master/Activate() + return diff --git a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm index ce363af236465..d1b1aebf9eb00 100644 --- a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm +++ b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm @@ -60,8 +60,8 @@ AddElement(/datum/element/dextrous) AddElement(/datum/element/footstep, FOOTSTEP_MOB_BAREFOOT) AddElement(/datum/element/basic_eating, heal_amt = 10, food_types = gorilla_food) - AddElement( - /datum/element/amputating_limbs, \ + AddComponent( + /datum/component/amputating_limbs, \ surgery_time = 0 SECONDS, \ surgery_verb = "punches",\ ) diff --git a/code/modules/mob/living/basic/farm_animals/sheep.dm b/code/modules/mob/living/basic/farm_animals/sheep.dm index 2fdaeda657d5c..5617da83a53a5 100644 --- a/code/modules/mob/living/basic/farm_animals/sheep.dm +++ b/code/modules/mob/living/basic/farm_animals/sheep.dm @@ -59,7 +59,7 @@ if(cult_converted) for(var/mob/living/cultist as anything in invokers) to_chat(cultist, span_cult_italic("[src] has already been sacrificed!")) - return STOP_SACRIFICE + return STOP_SACRIFICE|SILENCE_SACRIFICE_MESSAGE for(var/mob/living/cultist as anything in invokers) to_chat(cultist, span_cult_italic("This feels a bit too cliché, don't you think?")) diff --git a/code/modules/mob/living/basic/guardian/guardian_types/support.dm b/code/modules/mob/living/basic/guardian/guardian_types/support.dm index 3b5574db7f37a..8ab24b7e9b7d1 100644 --- a/code/modules/mob/living/basic/guardian/guardian_types/support.dm +++ b/code/modules/mob/living/basic/guardian/guardian_types/support.dm @@ -103,10 +103,12 @@ /// Try and teleport something to our beacon /datum/action/cooldown/mob_cooldown/guardian_bluespace_beacon/proc/try_teleporting(mob/living/source, atom/target) SIGNAL_HANDLER + if (!can_teleport(source, target)) return + INVOKE_ASYNC(src, PROC_REF(perform_teleport), source, target) - return COMPONENT_CANCEL_ATTACK_CHAIN + return COMSIG_MOB_CANCEL_CLICKON /// Validate whether we can teleport this object /datum/action/cooldown/mob_cooldown/guardian_bluespace_beacon/proc/can_teleport(mob/living/source, atom/movable/target) @@ -118,7 +120,7 @@ if (!guardian_mob.is_deployed()) source.balloon_alert(source, "manifest yourself!") return FALSE - if (!source.Adjacent(target)) + if (!source.can_perform_action(target)) target.balloon_alert(source, "too far!") return FALSE if (target.anchored) diff --git a/code/modules/mob/living/basic/heretic/flesh_worm.dm b/code/modules/mob/living/basic/heretic/flesh_worm.dm index 3c60a9b653c32..92b910c717fae 100644 --- a/code/modules/mob/living/basic/heretic/flesh_worm.dm +++ b/code/modules/mob/living/basic/heretic/flesh_worm.dm @@ -35,8 +35,8 @@ /mob/living/basic/heretic_summon/armsy/Initialize(mapload, spawn_bodyparts = TRUE, worm_length = 6) . = ..() AddElement(/datum/element/wall_smasher, ENVIRONMENT_SMASH_RWALLS) - AddElement(\ - /datum/element/amputating_limbs,\ + AddComponent(\ + /datum/component/amputating_limbs,\ surgery_time = 0 SECONDS,\ surgery_verb = "tears",\ minimum_stat = CONSCIOUS,\ diff --git a/code/modules/mob/living/basic/heretic/rust_walker.dm b/code/modules/mob/living/basic/heretic/rust_walker.dm index 24b77d4d0b8e0..230747efa5a3b 100644 --- a/code/modules/mob/living/basic/heretic/rust_walker.dm +++ b/code/modules/mob/living/basic/heretic/rust_walker.dm @@ -19,7 +19,7 @@ AddElement(/datum/element/footstep, FOOTSTEP_MOB_RUST) var/static/list/grantable_spells = list( - /datum/action/cooldown/spell/aoe/rust_conversion/small = BB_GENERIC_ACTION, + /datum/action/cooldown/spell/aoe/rust_conversion = BB_GENERIC_ACTION, /datum/action/cooldown/spell/basic_projectile/rust_wave/short = BB_TARGETED_ACTION, ) grant_actions_by_list(grantable_spells) diff --git a/code/modules/mob/living/basic/jungle/seedling/seedling.dm b/code/modules/mob/living/basic/jungle/seedling/seedling.dm index 5a958d3ca7c18..7a853b8a9d086 100644 --- a/code/modules/mob/living/basic/jungle/seedling/seedling.dm +++ b/code/modules/mob/living/basic/jungle/seedling/seedling.dm @@ -30,6 +30,7 @@ lighting_cutoff_green = 20 lighting_cutoff_blue = 25 mob_size = MOB_SIZE_LARGE + faction = list(FACTION_PLANTS) attack_sound = 'sound/weapons/bladeslice.ogg' attack_vis_effect = ATTACK_EFFECT_SLASH ai_controller = /datum/ai_controller/basic_controller/seedling @@ -206,7 +207,7 @@ /mob/living/basic/seedling/meanie maxHealth = 400 health = 400 - faction = list(FACTION_JUNGLE) + faction = list(FACTION_JUNGLE, FACTION_PLANTS) ai_controller = /datum/ai_controller/basic_controller/seedling/meanie seedling_commands = list( /datum/pet_command/idle, diff --git a/code/modules/mob/living/basic/lavaland/goliath/tentacle.dm b/code/modules/mob/living/basic/lavaland/goliath/tentacle.dm index 030ae6d64b837..ba6346ea19159 100644 --- a/code/modules/mob/living/basic/lavaland/goliath/tentacle.dm +++ b/code/modules/mob/living/basic/lavaland/goliath/tentacle.dm @@ -20,7 +20,7 @@ if (ismineralturf(loc)) var/turf/closed/mineral/floor = loc floor.gets_drilled() - if (!isopenturf(loc) || isspaceturf(loc) || isopenspaceturf(loc)) + if (!isopenturf(loc) || is_space_or_openspace(loc)) return INITIALIZE_HINT_QDEL for (var/obj/effect/goliath_tentacle/tentacle in loc) if (tentacle != src) diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm index ccab4d3c0317e..ad10e30acecd7 100644 --- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm +++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm @@ -43,8 +43,8 @@ AddElement(/datum/element/mob_grabber) AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) AddElement(/datum/element/basic_eating, food_types = target_foods) - AddElement(\ - /datum/element/amputating_limbs,\ + AddComponent(\ + /datum/component/amputating_limbs,\ surgery_verb = "begins snipping",\ target_zones = GLOB.arm_zones,\ ) diff --git a/code/modules/mob/living/basic/lavaland/mining.dm b/code/modules/mob/living/basic/lavaland/mining.dm index 3bcdd1ceaa64b..38591dfb39c06 100644 --- a/code/modules/mob/living/basic/lavaland/mining.dm +++ b/code/modules/mob/living/basic/lavaland/mining.dm @@ -5,7 +5,7 @@ status_flags = NONE //don't inherit standard basicmob flags mob_size = MOB_SIZE_LARGE mob_biotypes = MOB_ORGANIC|MOB_BEAST - faction = list(FACTION_MINING) + faction = list(FACTION_MINING, FACTION_ASHWALKER) unsuitable_atmos_damage = 0 minimum_survivable_temperature = 0 maximum_survivable_temperature = INFINITY @@ -42,3 +42,11 @@ drop_mod = crusher_drop_chance,\ drop_immediately = basic_mob_flags & DEL_ON_DEATH,\ ) + RegisterSignal(src, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(check_ashwalker_peace_violation)) + +/mob/living/basic/mining/proc/check_ashwalker_peace_violation(datum/source, mob/living/carbon/human/possible_ashwalker) + SIGNAL_HANDLER + + if(!isashwalker(possible_ashwalker) || !(FACTION_ASHWALKER in faction)) + return + faction.Remove(FACTION_ASHWALKER) diff --git a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm index 8cd3c567a7d2d..784f5dd369907 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm @@ -309,4 +309,8 @@ GLOBAL_LIST_EMPTY(raptor_population) animated = FALSE insert_on_attack = FALSE +/datum/storage/raptor_storage/on_mousedropped_onto(datum/source, obj/item/dropping, mob/user) + ..() + return NONE + #undef HAPPINESS_BOOST_DAMPENER diff --git a/code/modules/mob/living/basic/lavaland/watcher/watcher_overwatch.dm b/code/modules/mob/living/basic/lavaland/watcher/watcher_overwatch.dm index 541a4ed9e1c7e..a61ea0743f9a4 100644 --- a/code/modules/mob/living/basic/lavaland/watcher/watcher_overwatch.dm +++ b/code/modules/mob/living/basic/lavaland/watcher/watcher_overwatch.dm @@ -76,7 +76,7 @@ COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_THROW, COMSIG_MOB_USED_MECH_EQUIPMENT, - COMSIG_MOB_USED_MECH_MELEE, + COMSIG_MOB_USED_CLICK_MECH_MELEE, COMSIG_MOVABLE_MOVED, ) diff --git a/code/modules/mob/living/basic/pets/parrot/parrot_ai/parrot_hoarding.dm b/code/modules/mob/living/basic/pets/parrot/parrot_ai/parrot_hoarding.dm index 7484cbfe6751c..ad9a56b3acfdd 100644 --- a/code/modules/mob/living/basic/pets/parrot/parrot_ai/parrot_hoarding.dm +++ b/code/modules/mob/living/basic/pets/parrot/parrot_ai/parrot_hoarding.dm @@ -29,7 +29,7 @@ /datum/ai_behavior/find_and_set/hoard_location/search_tactic(datum/ai_controller/controller, locate_path, search_range) for(var/turf/open/candidate in oview(search_range, controller.pawn)) - if(isspaceturf(candidate) || isopenspaceturf(candidate)) + if(is_space_or_openspace(candidate)) continue if(candidate.is_blocked_turf(source_atom = controller.pawn)) continue diff --git a/code/modules/mob/living/basic/ruin_defender/living_floor.dm b/code/modules/mob/living/basic/ruin_defender/living_floor.dm index 851a0873657a0..105838f0c55dd 100644 --- a/code/modules/mob/living/basic/ruin_defender/living_floor.dm +++ b/code/modules/mob/living/basic/ruin_defender/living_floor.dm @@ -35,7 +35,7 @@ move_resist = INFINITY density = FALSE combat_mode = TRUE - layer = TURF_LAYER + layer = LOW_FLOOR_LAYER plane = FLOOR_PLANE faction = list(FACTION_HOSTILE) melee_damage_lower = 20 diff --git a/code/modules/mob/living/basic/slime/defense.dm b/code/modules/mob/living/basic/slime/defense.dm index b747c24201971..a3242525170c7 100644 --- a/code/modules/mob/living/basic/slime/defense.dm +++ b/code/modules/mob/living/basic/slime/defense.dm @@ -19,7 +19,7 @@ return attacker.visible_message(span_warning("[attacker] manages to wrestle \the [defender_slime.name] off!"), span_notice("You manage to wrestle \the [defender_slime.name] off!")) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) + playsound(loc, 'sound/weapons/shove.ogg', 50, TRUE, -1) defender_slime.discipline_slime() diff --git a/code/modules/mob/living/basic/space_fauna/meteor_heart/meteor_eyeball.dm b/code/modules/mob/living/basic/space_fauna/meteor_heart/meteor_eyeball.dm index 44775ea7217ce..0318b044a21ce 100644 --- a/code/modules/mob/living/basic/space_fauna/meteor_heart/meteor_eyeball.dm +++ b/code/modules/mob/living/basic/space_fauna/meteor_heart/meteor_eyeball.dm @@ -10,7 +10,7 @@ GLOBAL_LIST_EMPTY(meteor_eyeballs) desc = "An eyeball growing out of the ground, gross." icon_state = "eyeball" max_integrity = 15 - layer = LOW_OBJ_LAYER + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE /obj/structure/meateor_fluff/eyeball/Initialize(mapload) diff --git a/code/modules/mob/living/basic/space_fauna/revenant/_revenant.dm b/code/modules/mob/living/basic/space_fauna/revenant/_revenant.dm index 4ba903d99285f..a154ba9da0c65 100644 --- a/code/modules/mob/living/basic/space_fauna/revenant/_revenant.dm +++ b/code/modules/mob/living/basic/space_fauna/revenant/_revenant.dm @@ -150,6 +150,10 @@ update_appearance(UPDATE_ICON) update_health_hud() +/mob/living/basic/revenant/AltClickOn(atom/target) + if(CAN_I_SEE(target)) + client.loot_panel.open(get_turf(target)) + /mob/living/basic/revenant/get_status_tab_items() . = ..() . += "Current Essence: [essence >= max_essence ? essence : "[essence] / [max_essence]"] E" diff --git a/code/modules/mob/living/basic/vermin/mouse.dm b/code/modules/mob/living/basic/vermin/mouse.dm index 3cce5e3481784..724833af16f2a 100644 --- a/code/modules/mob/living/basic/vermin/mouse.dm +++ b/code/modules/mob/living/basic/vermin/mouse.dm @@ -117,11 +117,19 @@ . = ..(TRUE) // Now if we were't ACTUALLY gibbed, spawn the dead mouse if(!gibbed) - var/obj/item/food/deadmouse/mouse = new(loc) - mouse.copy_corpse(src) - if(HAS_TRAIT(src, TRAIT_BEING_SHOCKED)) - mouse.desc = "They're toast." - mouse.add_atom_colour("#3A3A3A", FIXED_COLOUR_PRIORITY) + var/make_a_corpse = TRUE + var/place_to_make_corpse = loc + if(istype(loc, /obj/item/clothing/head/mob_holder))//If our mouse is dying in place holder we want to put the dead mouse where the place holder was + var/obj/item/clothing/head/mob_holder/found_holder = loc + place_to_make_corpse = found_holder.loc + if(istype(found_holder.loc, /obj/machinery/microwave))//Microwaves gib things that die when cooked, so we don't need to make a dead body too + make_a_corpse = FALSE + if(make_a_corpse) + var/obj/item/food/deadmouse/mouse = new(place_to_make_corpse) + mouse.copy_corpse(src) + if(HAS_TRAIT(src, TRAIT_BEING_SHOCKED)) + mouse.desc = "They're toast." + mouse.add_atom_colour("#3A3A3A", FIXED_COLOUR_PRIORITY) qdel(src) /mob/living/basic/mouse/UnarmedAttack(atom/attack_target, proximity_flag, list/modifiers) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 349f14d83a3cb..5ac120fcee3f3 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -25,42 +25,12 @@ adjust_nutrition(-nutrition_ratio * HUNGER_FACTOR * seconds_per_tick) blood_volume = min(blood_volume + (BLOOD_REGEN_FACTOR * nutrition_ratio * seconds_per_tick), BLOOD_VOLUME_NORMAL) - //Effects of bloodloss - if(!(sigreturn & HANDLE_BLOOD_NO_EFFECTS)) - var/word = pick("dizzy","woozy","faint") - switch(blood_volume) - if(BLOOD_VOLUME_MAX_LETHAL to INFINITY) - if(SPT_PROB(7.5, seconds_per_tick)) - to_chat(src, span_userdanger("Blood starts to tear your skin apart. You're going to burst!")) - investigate_log("has been gibbed by having too much blood.", INVESTIGATE_DEATHS) - inflate_gib() - if(BLOOD_VOLUME_EXCESS to BLOOD_VOLUME_MAX_LETHAL) - if(SPT_PROB(5, seconds_per_tick)) - to_chat(src, span_warning("You feel your skin swelling.")) - if(BLOOD_VOLUME_MAXIMUM to BLOOD_VOLUME_EXCESS) - if(SPT_PROB(5, seconds_per_tick)) - to_chat(src, span_warning("You feel terribly bloated.")) - if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) - if(SPT_PROB(2.5, seconds_per_tick)) - to_chat(src, span_warning("You feel [word].")) - adjustOxyLoss(round(0.005 * (BLOOD_VOLUME_NORMAL - blood_volume) * seconds_per_tick, 1)) - if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY) - adjustOxyLoss(round(0.01 * (BLOOD_VOLUME_NORMAL - blood_volume) * seconds_per_tick, 1)) - if(SPT_PROB(2.5, seconds_per_tick)) - set_eye_blur_if_lower(12 SECONDS) - to_chat(src, span_warning("You feel very [word].")) - if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD) - adjustOxyLoss(2.5 * seconds_per_tick) - if(SPT_PROB(7.5, seconds_per_tick)) - Unconscious(rand(20,60)) - to_chat(src, span_warning("You feel extremely [word].")) - if(-INFINITY to BLOOD_VOLUME_SURVIVE) - if(!HAS_TRAIT(src, TRAIT_NODEATH)) - investigate_log("has died of bloodloss.", INVESTIGATE_DEATHS) - death() + // Some effects are halved mid-combat. + var/determined_mod = has_status_effect(/datum/status_effect/determined) ? 0.5 : 0 + + //Bloodloss from wounds var/temp_bleed = 0 - //Bleeding out for(var/obj/item/bodypart/iter_part as anything in bodyparts) var/iter_bleed_rate = iter_part.get_modified_bleed_rate() temp_bleed += iter_bleed_rate * seconds_per_tick @@ -72,6 +42,78 @@ bleed(temp_bleed) bleed_warn(temp_bleed) + //Effects of bloodloss + if(sigreturn & HANDLE_BLOOD_NO_OXYLOSS) + return + var/word = pick("dizzy","woozy","faint") + switch(blood_volume) + if(BLOOD_VOLUME_EXCESS to BLOOD_VOLUME_MAX_LETHAL) + if(SPT_PROB(7.5, seconds_per_tick)) + to_chat(src, span_userdanger("Blood starts to tear your skin apart. You're going to burst!")) + investigate_log("has been gibbed by having too much blood.", INVESTIGATE_DEATHS) + inflate_gib() + // Way too much blood! + if(BLOOD_VOLUME_EXCESS to BLOOD_VOLUME_MAX_LETHAL) + if(SPT_PROB(5, seconds_per_tick)) + to_chat(src, span_warning("You feel your skin swelling.")) + // Too much blood + if(BLOOD_VOLUME_MAXIMUM to BLOOD_VOLUME_EXCESS) + if(SPT_PROB(5, seconds_per_tick)) + to_chat(src, span_warning("You feel terribly bloated.")) + // Low blood but not a big deal in the immediate + if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) + if(SPT_PROB(2.5, seconds_per_tick)) + set_eye_blur_if_lower(2 SECONDS * determined_mod) + if(prob(50)) + to_chat(src, span_danger("You feel [word]. It's getting a bit hard to breathe.")) + losebreath += 0.5 * determined_mod * seconds_per_tick + else if(getStaminaLoss() < 25 * determined_mod) + to_chat(src, span_danger("You feel [word]. It's getting a bit hard to focus.")) + adjustStaminaLoss(10 * determined_mod * REM * seconds_per_tick) + // Pretty low blood, getting dangerous! + if(BLOOD_VOLUME_RISKY to BLOOD_VOLUME_OKAY) + if(SPT_PROB(5, seconds_per_tick)) + set_eye_blur_if_lower(2 SECONDS * determined_mod) + set_dizzy_if_lower(2 SECONDS * determined_mod) + if(prob(50)) + to_chat(src, span_bolddanger("You feel very [word]. It's getting hard to breathe!")) + losebreath += 1 * determined_mod * seconds_per_tick + else if(getStaminaLoss() < 40 * determined_mod) + to_chat(src, span_bolddanger("You feel very [word]. It's getting hard to stay awake!")) + adjustStaminaLoss(15 * determined_mod * REM * seconds_per_tick) + // Very low blood, danger!! + if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_RISKY) + if(SPT_PROB(5, seconds_per_tick)) + set_eye_blur_if_lower(4 SECONDS * determined_mod) + set_dizzy_if_lower(4 SECONDS * determined_mod) + if(prob(50)) + to_chat(src, span_userdanger("You feel extremely [word]! It's getting very hard to breathe!")) + losebreath += 1.5 * determined_mod * seconds_per_tick + else if(getStaminaLoss() < 80 * determined_mod) + to_chat(src, span_userdanger("You feel extremely [word]! It's getting very hard to stay awake!")) + adjustStaminaLoss(20 * determined_mod * REM * seconds_per_tick) + // Critically low blood, death is near! Adrenaline won't help you here. + if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD) + if(SPT_PROB(7.5, seconds_per_tick)) + Unconscious(rand(1 SECONDS, 2 SECONDS)) + to_chat(src, span_userdanger("You black out for a moment!")) + // Instantly die upon this threshold + if(-INFINITY to BLOOD_VOLUME_SURVIVE) + if(!HAS_TRAIT(src, TRAIT_NODEATH)) + investigate_log("has died of bloodloss.", INVESTIGATE_DEATHS) + death() + + // Blood ratio! if you have 280 blood, this equals 0.5 as that's half of the current value, 560. + var/effective_blood_ratio = blood_volume / BLOOD_VOLUME_NORMAL + + // If your ratio is less than one (you're missing any blood) and your oxyloss is under missing blood %, start getting oxy damage. + // This damage accrues faster the less blood you have. + // If KO or in hardcrit, the damage accrues even then to prevent being perma-KO. + if(((effective_blood_ratio < 1) && (getOxyLoss() < ((1 - effective_blood_ratio) * 100))) || (stat in list(UNCONSCIOUS, HARD_CRIT))) + // At roughly half blood this equals to 3 oxyloss per tick. At 90% blood it's close to 0.5 + var/rounded_oxyloss = round(0.01 * (BLOOD_VOLUME_NORMAL - blood_volume), 0.25) * seconds_per_tick + adjustOxyLoss(rounded_oxyloss, updating_health = TRUE) + /// Has each bodypart update its bleed/wound overlay icon states /mob/living/carbon/proc/update_bodypart_bleed_overlays() for(var/obj/item/bodypart/iter_part as anything in bodyparts) @@ -185,7 +227,7 @@ ****************************************************/ //Gets blood from mob to a container or other mob, preserving all data in it. -/mob/living/proc/transfer_blood_to(atom/movable/AM, amount, forced) +/mob/living/proc/transfer_blood_to(atom/movable/AM, amount, forced, ignore_incompatibility) if(!blood_volume || !AM.reagents) return FALSE if(blood_volume < BLOOD_VOLUME_BAD && !forced) @@ -212,7 +254,7 @@ if((D.spread_flags & DISEASE_SPREAD_SPECIAL) || (D.spread_flags & DISEASE_SPREAD_NON_CONTAGIOUS)) continue C.ForceContractDisease(D) - if(!(blood_data["blood_type"] in get_safe_blood(C.dna.blood_type))) + if(!(blood_data["blood_type"] in get_safe_blood(C.dna.blood_type)) && !(ignore_incompatibility)) C.reagents.add_reagent(/datum/reagent/toxin, amount * 0.5) return TRUE @@ -307,6 +349,15 @@ if(safe) . = safe +/** + * Returns TRUE if src is compatible with donor's blood, otherwise FALSE. + * * donor: Carbon mob, the one that is donating blood. + */ +/mob/living/carbon/proc/get_blood_compatibility(mob/living/carbon/donor) + var/patient_blood_data = get_blood_data(get_blood_id()) + var/donor_blood_data = donor.get_blood_data(donor.get_blood_id()) + return donor_blood_data["blood_type"] in get_safe_blood(patient_blood_data["blood_type"]) + //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) 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 f3cfbfda8a9ee..999ec07f41a65 100644 --- a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm @@ -251,7 +251,8 @@ Doesn't work on other aliens/AI.*/ plasma_cost = 50 /datum/action/cooldown/alien/acid/neurotoxin/IsAvailable(feedback = FALSE) - if(owner.is_muzzled()) + var/mob/living/carbon/as_carbon = owner + if(istype(as_carbon) && as_carbon.is_mouth_covered(ITEM_SLOT_MASK)) return FALSE if(!isturf(owner.loc)) return FALSE diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index f8210c77368cc..a995eafbb3ac0 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -76,6 +76,7 @@ return pick (list("xltrails_1", "xltrails2")) else return pick (list("xttrails_1", "xttrails2")) + /*---------------------------------------- Proc: AddInfectionImages() Des: Gives the client of the alien an image on each infected mob. diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index d068610b28f7a..d1ec6d7e88038 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -24,6 +24,7 @@ layer = MOB_LAYER max_integrity = 100 item_flags = XENOMORPH_HOLDABLE + slowdown = 2 var/stat = CONSCIOUS //UNCONSCIOUS is the idle state in this case var/sterile = FALSE @@ -39,6 +40,7 @@ ) AddElement(/datum/element/connect_loc, loc_connections) AddElement(/datum/element/atmos_sensitive, mapload) + AddElement(/datum/element/muffles_speech) RegisterSignal(src, COMSIG_LIVING_TRYING_TO_PULL, PROC_REF(react_to_mob)) @@ -122,7 +124,7 @@ /obj/item/clothing/mask/facehugger/proc/valid_to_attach(mob/living/hit_mob) // valid targets: carbons except aliens and devils - // facehugger state early exit checks + // facehugger state early exit checks (Note: Melbert does not want dead people to be huggable) if(stat != CONSCIOUS) return FALSE if(attached) @@ -171,9 +173,12 @@ log_combat(target, src, "was facehugged by") return TRUE // time for a smoke -/obj/item/clothing/mask/facehugger/proc/Attach(mob/living/M) - if(!valid_to_attach(M)) +/obj/item/clothing/mask/facehugger/proc/Attach(mob/living/victim) + if(!valid_to_attach(victim)) return + + if(victim.stat < UNCONSCIOUS) //sorry bro you gotta be awake + victim.say("AAAA!!") //triggers muffled speech and also visual feedback i guess // early returns and validity checks done: attach. attached++ //ensure we detach once we no longer need to be attached @@ -181,12 +186,12 @@ if(!sterile) - M.take_bodypart_damage(strength,0) //done here so that humans in helmets take damage - M.Unconscious(MAX_IMPREGNATION_TIME/0.3) //something like 25 ticks = 20 seconds with the default settings - + victim.take_bodypart_damage(strength,0) //done here so that humans in helmets take damage + if(real && !sterile) + victim.Knockdown(5 SECONDS) GoIdle() //so it doesn't jump the people that tear it off - addtimer(CALLBACK(src, PROC_REF(Impregnate), M), rand(MIN_IMPREGNATION_TIME, MAX_IMPREGNATION_TIME)) + addtimer(CALLBACK(src, PROC_REF(Impregnate), victim), rand(MIN_IMPREGNATION_TIME, MAX_IMPREGNATION_TIME)) /obj/item/clothing/mask/facehugger/proc/detach() attached = 0 @@ -249,6 +254,29 @@ visible_message(span_danger("[src] curls up into a ball!")) + // chest maybe because getting slammed in the chest would knock it off your face while dead + AddComponent(/datum/component/knockoff, knockoff_chance = 40, target_zones = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST), slots_knockoffable = slot_flags) + +/obj/item/clothing/mask/facehugger/allow_attack_hand_drop(mob/living/carbon/human/user) + if(!real || sterile || user.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo)) + return ..() + if(istype(user) && ishuman(loc) && stat != DEAD) + if(user == loc && user.get_item_by_slot(slot_flags) == src) + to_chat(user, span_userdanger("[src] is latched on too tight! Get help or wait for it to let go!")) + return FALSE + return ..() + +/obj/item/clothing/mask/facehugger/mouse_drop_dragged(atom/over, mob/user, src_location, over_location, params) + var/mob/living/carbon/human/wearer = loc + if(!istype(wearer) || user != wearer) + return + if(!real || sterile || user.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo)) + return ..() + if(wearer.get_item_by_slot(slot_flags) == src && stat != DEAD) + to_chat(user, span_userdanger("[src] is latched on too tight! Get help or wait for it to let go!")) + return + return ..() + /proc/CanHug(mob/living/M) if(!istype(M)) return FALSE @@ -268,6 +296,7 @@ name = "Lamarr" desc = "The Research Director's pet, a domesticated and debeaked xenomorph facehugger. Friendly, but may still try to couple with your head." sterile = TRUE + slowdown = 1.5 //lamarr is too fat after being fed in captivity to effectively slow people down or something /obj/item/clothing/mask/facehugger/dead icon_state = "facehugger_dead" @@ -287,6 +316,7 @@ real = FALSE sterile = TRUE tint = 3 //Makes it feel more authentic when it latches on + slowdown = 0 /obj/item/clothing/mask/facehugger/toy/Die() return diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 539dfd64ce353..8965bccd0007c 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -6,6 +6,7 @@ GLOB.carbon_list += src ADD_TRAIT(src, TRAIT_CAN_HOLD_ITEMS, INNATE_TRAIT) // Carbons are assumed to be innately capable of having arms, we check their arms count instead + breathing_loop = new(src) /mob/living/carbon/Destroy() //This must be done first, so the mob ghosts correctly before DNA etc is nulled @@ -21,6 +22,7 @@ qdel(scar) remove_from_all_data_huds() QDEL_NULL(dna) + QDEL_NULL(breathing_loop) GLOB.carbon_list -= src /mob/living/carbon/item_interaction(mob/living/user, obj/item/tool, list/modifiers) @@ -228,13 +230,6 @@ . = ..() loc.handle_fall(src)//it's loc so it doesn't call the mob's handle_fall which does nothing -/mob/living/carbon/is_muzzled() - for (var/obj/item/clothing/clothing in get_equipped_items()) - if(clothing.clothing_flags & BLOCKS_SPEECH) - return TRUE - return FALSE - - /mob/living/carbon/resist_buckle() if(!HAS_TRAIT(src, TRAIT_RESTRAINED)) buckled.user_unbuckle_mob(src, src) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 20164d27b425a..8ef981b189da4 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -415,7 +415,7 @@ // this way, we only visibly try to examine ourselves if we have something embedded, otherwise we'll still hug ourselves :) visible_message(span_notice("[src] examines [p_them()]self."), \ span_notice("You check yourself for shrapnel.")) - if(I.isEmbedHarmless()) + if(I.is_embed_harmless()) to_chat(src, "\t There is \a [I] stuck to your [LB.name]!") else to_chat(src, "\t There is \a [I] embedded in your [LB.name]!") @@ -696,7 +696,9 @@ /mob/living/carbon/get_shove_flags(mob/living/shover, obj/item/weapon) . = ..() . |= SHOVE_CAN_STAGGER - if(IsKnockdown() && !IsParalyzed()) + if(IsKnockdown() && !IsParalyzed() && HAS_TRAIT(src, TRAIT_STUN_ON_NEXT_SHOVE)) . |= SHOVE_CAN_KICK_SIDE + if(HAS_TRAIT(src, TRAIT_NO_SIDE_KICK)) // added as an extra check, just in case + . &= ~SHOVE_CAN_KICK_SIDE #undef SHAKE_ANIMATION_OFFSET diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 85fdeed5d887a..dbfa3849b25ad 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -11,6 +11,7 @@ usable_hands = 0 //Populated on init through list/bodyparts mobility_flags = MOBILITY_FLAGS_CARBON_DEFAULT blocks_emissive = EMISSIVE_BLOCK_NONE + living_flags = ALWAYS_DEATHGASP ///List of [/obj/item/organ]s in the mob. They don't go in the contents for some reason I don't want to know. var/list/obj/item/organ/organs = list() ///Same as [above][/mob/living/carbon/var/organs], but stores "slot ID" - "organ" pairs for easy access. @@ -52,6 +53,8 @@ ///This is used to determine if the mob failed a breath. If they did fail a breath, they will attempt to breathe each tick, otherwise just once per 4 ticks. var/failed_last_breath = FALSE + ///Sound loop for breathing when using internals + var/datum/looping_sound/breathing/breathing_loop /// Used in [carbon/proc/check_breath] and [lungs/proc/check_breath]] var/co2overloadtime = null @@ -122,4 +125,3 @@ var/bodyshape = BODYSHAPE_HUMANOID COOLDOWN_DECLARE(bleeding_message_cd) - diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index 41a958518c597..8d4e66bccda6e 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -3,9 +3,8 @@ return losebreath = 0 - + breathing_loop.stop() //This would've happened eventually but it's nice to make it stop immediatelly in this case if(!gibbed) - INVOKE_ASYNC(src, PROC_REF(emote), "deathgasp") add_memory_in_range(src, 7, /datum/memory/witnessed_death, protagonist = src) reagents.end_metabolization(src) diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 856622203927a..00699196ae9b6 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -20,7 +20,6 @@ key = "clap" key_third_person = "claps" message = "claps." - muzzle_ignore = TRUE hands_use_check = TRUE emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE audio_cooldown = 5 SECONDS @@ -185,7 +184,6 @@ message_param = "snaps their fingers at %t." emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE hands_use_check = TRUE - muzzle_ignore = TRUE /datum/emote/living/carbon/snap/get_sound(mob/living/user) if(ishuman(user)) diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index e37048ca32fee..6d6d7ada73ceb 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -36,7 +36,7 @@ var/list/msg = list("") for(var/obj/item/bodypart/bodypart as anything in bodyparts) for(var/obj/item/embedded_item as anything in bodypart.embedded_objects) - if(embedded_item.isEmbedHarmless()) + if(embedded_item.is_embed_harmless()) msg += "[t_He] [t_has] [icon2html(embedded_item, user)] \a [embedded_item] stuck to [t_his] [bodypart.name]!\n" else msg += "[t_He] [t_has] [icon2html(embedded_item, user)] \a [embedded_item] embedded in [t_his] [bodypart.name]!\n" diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 277c6916ae243..cf9b765aa90c2 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -102,7 +102,7 @@ GLOBAL_LIST_EMPTY(features_by_species) ///Replaces default appendix with a different organ. var/obj/item/organ/internal/appendix/mutantappendix = /obj/item/organ/internal/appendix ///Replaces default butt with a different organ - var/obj/item/organ/internal/butt/mutantbutt = /obj/item/organ/internal/butt // massmeta edit + var/obj/item/organ/internal/butt/mutantbutt = /obj/item/organ/internal/butt //MASSMETA EDIT ADDITION (butts) /// Store body marking defines. See mobs.dm for bitflags var/list/body_markings = list() @@ -284,8 +284,10 @@ GLOBAL_LIST_EMPTY(features_by_species) return mutantliver if(ORGAN_SLOT_STOMACH) return mutantstomach - if(ORGAN_SLOT_BUTT) //massmeta edit + //MASSMETA EDIT ADDITION BEGIN (butts) + if(ORGAN_SLOT_BUTT) return mutantbutt + //MASSMETA EDIT ADDITION END (butts) else CRASH("Invalid organ slot [slot]") @@ -314,7 +316,7 @@ GLOBAL_LIST_EMPTY(features_by_species) ORGAN_SLOT_TONGUE, ORGAN_SLOT_LIVER, ORGAN_SLOT_STOMACH, - ORGAN_SLOT_BUTT, //massmeta edit + ORGAN_SLOT_BUTT, //MASSMETA EDIT ADDITION (butts) ) for(var/slot in organ_slots) @@ -1546,7 +1548,7 @@ GLOBAL_LIST_EMPTY(features_by_species) to_store += mutantliver to_store += mutantstomach to_store += mutantappendix - to_store += mutantbutt //massmeta edit + to_store += mutantbutt //MASSMETA EDIT ADDITION (butts) //We don't cache mutant hands because it's not constrained enough, too high a potential for failure return to_store diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 3340e34064052..f13e90719c1dc 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -76,7 +76,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) cut_overlays(TRUE) /mob/living/carbon/human/dummy/setup_human_dna() - randomize_human(src, randomize_mutations = FALSE) + randomize_human_normie(src, randomize_mutations = FALSE) /mob/living/carbon/human/dummy/log_mob_tag(text) return diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 4fe60084c0e93..0c50e881635f6 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -138,7 +138,7 @@ disabled += body_part missing -= body_part.body_zone for(var/obj/item/I in body_part.embedded_objects) - if(I.isEmbedHarmless()) + if(I.is_embed_harmless()) msg += "[t_He] [t_has] [icon2html(I, user)] \a [I] stuck to [t_his] [body_part.name]!\n" else msg += "[t_He] [t_has] [icon2html(I, user)] \a [I] embedded in [t_his] [body_part.name]!\n" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9d3d8c2d5a81b..1dd47f8060426 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -56,7 +56,7 @@ ADD_TRAIT(src, TRAIT_AGEUSIA, NO_TONGUE_TRAIT) /mob/living/carbon/human/proc/setup_human_dna() - randomize_human(src, randomize_mutations = TRUE) + randomize_human_normie(src, randomize_mutations = TRUE) /mob/living/carbon/human/Destroy() QDEL_NULL(physiology) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f11ba74e04d1c..380d255fc0ed4 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -151,8 +151,10 @@ return if(!(shove_flags & SHOVE_KNOCKDOWN_BLOCKED)) target.Knockdown(SHOVE_KNOCKDOWN_HUMAN) + target.apply_status_effect(/datum/status_effect/next_shove_stuns) if(!HAS_TRAIT(src, TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)) Knockdown(SHOVE_KNOCKDOWN_COLLATERAL) + apply_status_effect(/datum/status_effect/next_shove_stuns) target.visible_message(span_danger("[shover] shoves [target.name] into [name]!"), span_userdanger("You're shoved into [name] by [shover]!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), COMBAT_MESSAGE_RANGE, src) to_chat(src, span_danger("You shove [target.name] into [name]!")) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 14003b86da496..fda6d7a9142ea 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -26,8 +26,9 @@ /mob/living/carbon/human/Move(NewLoc, direct) . = ..() - if(shoes && body_position == STANDING_UP && loc == NewLoc && has_gravity(loc)) - SEND_SIGNAL(shoes, COMSIG_SHOES_STEP_ACTION) + if(shoes && body_position == STANDING_UP && has_gravity(loc)) + if((. && !moving_diagonally) || (!. && moving_diagonally == SECOND_DIAG_STEP)) + SEND_SIGNAL(shoes, COMSIG_SHOES_STEP_ACTION) /mob/living/carbon/human/Process_Spacemove(movement_dir = 0, continuous_move = FALSE) if(movement_type & FLYING || HAS_TRAIT(src, TRAIT_FREE_FLOAT_MOVEMENT)) diff --git a/code/modules/mob/living/carbon/human/human_say.dm b/code/modules/mob/living/carbon/human/human_say.dm index 8bf21e3c809a6..0ce34ffa27205 100644 --- a/code/modules/mob/living/carbon/human/human_say.dm +++ b/code/modules/mob/living/carbon/human/human_say.dm @@ -70,6 +70,9 @@ var/obj/item/radio/headset/dongle = ears if(!istype(dongle)) return FALSE + var/area/our_area = get_area(src) + if(our_area.area_flags & BINARY_JAMMING) + return FALSE return dongle.translate_binary /mob/living/carbon/human/radio(message, list/message_mods = list(), list/spans, language) //Poly has a copy of this, lazy bastard diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index b1efa734321c5..a24e9cd070d86 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -1,3 +1,20 @@ + +/** + * Used to return a list of equipped items on a human mob; does not by default include held items, see include_flags + * + * Argument(s): + * * Optional - include_flags, (see obj.flags.dm) describes which optional things to include or not (pockets, accessories, held items) + */ + +/mob/living/carbon/human/get_equipped_items(include_flags = NONE) + var/list/items = ..() + if(!(include_flags & INCLUDE_POCKETS)) + items -= list(l_store, r_store, s_store) + if((include_flags & INCLUDE_ACCESSORIES) && w_uniform) + var/obj/item/clothing/under/worn_under = w_uniform + items += worn_under.attached_accessories + return items + /mob/living/carbon/human/can_equip(obj/item/equip_target, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, ignore_equipped = FALSE, indirect_action = FALSE) if(SEND_SIGNAL(src, COMSIG_HUMAN_EQUIPPING_ITEM, equip_target, slot) == COMPONENT_BLOCK_EQUIP) return FALSE @@ -139,8 +156,6 @@ if(glasses) return glasses = equipping - if(glasses.glass_colour_type) - update_glasses_color(glasses, 1) if(glasses.vision_flags || glasses.invis_override || glasses.invis_view || !isnull(glasses.lighting_cutoff)) update_sight() update_worn_glasses() @@ -233,10 +248,8 @@ update_worn_gloves() else if(I == glasses) glasses = null - var/obj/item/clothing/glasses/G = I - if(G.glass_colour_type) - update_glasses_color(G, 0) - if(G.vision_flags || G.invis_override || G.invis_view || !isnull(G.lighting_cutoff)) + var/obj/item/clothing/glasses/old_glasses = I + if(old_glasses.vision_flags || old_glasses.invis_override || old_glasses.invis_view || !isnull(old_glasses.lighting_cutoff)) update_sight() if(!QDELETED(src)) update_worn_glasses() @@ -390,3 +403,24 @@ return stored.attack_hand(src) // take out thing from item in storage slot return + +/mob/living/carbon/human/change_number_of_hands(amt) + var/old_limbs = held_items.len + if(amt < old_limbs) + for(var/i in hand_bodyparts.len to amt step -1) + var/obj/item/bodypart/BP = hand_bodyparts[i] + BP.dismember() + hand_bodyparts[i] = null + hand_bodyparts.len = amt + else if(amt > old_limbs) + hand_bodyparts.len = amt + for(var/i in old_limbs+1 to amt) + var/path = /obj/item/bodypart/arm/left + if(!(i % 2)) + path = /obj/item/bodypart/arm/right + + var/obj/item/bodypart/BP = new path () + BP.held_index = i + BP.try_attach_limb(src, TRUE) + hand_bodyparts[i] = BP + ..() //Don't redraw hands until we have organs for them 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 8be379060e7f8..d0e5fcb22ca35 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -35,7 +35,7 @@ mutantlungs = null mutanteyes = /obj/item/organ/internal/eyes/robotic mutantears = /obj/item/organ/internal/ears/cybernetic - mutantbutt = /obj/item/organ/internal/butt/cyber //massmeta edit + mutantbutt = /obj/item/organ/internal/butt/cyber //MASSMETA EDIT ADDITION (butts) species_language_holder = /datum/language_holder/synthetic changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT 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 c4aad8a0806d5..276d4a0fa7a5f 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -83,7 +83,7 @@ Cannibalize_Body(slime) regenerate_limbs?.build_all_button_icons(UPDATE_BUTTON_STATUS) - return HANDLE_BLOOD_NO_NUTRITION_DRAIN|HANDLE_BLOOD_NO_EFFECTS + return HANDLE_BLOOD_NO_NUTRITION_DRAIN|HANDLE_BLOOD_NO_OXYLOSS /datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H) var/list/limbs_to_consume = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - H.get_missing_limbs() 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 71a5c4c026193..2a83efbda3e7e 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -158,6 +158,7 @@ Lizard subspecies: ASHWALKERS TRAIT_MUTANT_COLORS, TRAIT_VIRUSIMMUNE, ) + inherent_factions = list(FACTION_ASHWALKER) species_language_holder = /datum/language_holder/lizard/ash digitigrade_customization = DIGITIGRADE_FORCED examine_limb_id = SPECIES_LIZARD diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index 053953e2a835f..741e40bed6b33 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -89,8 +89,7 @@ . = ..() var/obj/item/storage/backpack/bag = new_snailperson.get_item_by_slot(ITEM_SLOT_BACK) if(!istype(bag, /obj/item/storage/backpack/snail)) - if(new_snailperson.dropItemToGround(bag)) //returns TRUE even if its null - new_snailperson.equip_to_slot_or_del(new /obj/item/storage/backpack/snail(new_snailperson), ITEM_SLOT_BACK) + new_snailperson.equip_to_slot_or_del(new /obj/item/storage/backpack/snail(new_snailperson), ITEM_SLOT_BACK) new_snailperson.AddElement(/datum/element/lube_walking, require_resting = TRUE) new_snailperson.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/snail, multiplicative_slowdown = snail_speed_mod) diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index de6a2692c9b6f..e59a6328aa72e 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -1,3 +1,33 @@ +/mob/living/carbon/proc/check_obscured_slots(transparent_protection) + var/obscured = NONE + var/hidden_slots = NONE + + for(var/obj/item/equipped_item in get_equipped_items()) + hidden_slots |= equipped_item.flags_inv + if(transparent_protection) + hidden_slots |= equipped_item.transparent_protection + + if(hidden_slots & HIDENECK) + obscured |= ITEM_SLOT_NECK + if(hidden_slots & HIDEMASK) + obscured |= ITEM_SLOT_MASK + if(hidden_slots & HIDEEYES) + obscured |= ITEM_SLOT_EYES + if(hidden_slots & HIDEEARS) + obscured |= ITEM_SLOT_EARS + if(hidden_slots & HIDEGLOVES) + obscured |= ITEM_SLOT_GLOVES + if(hidden_slots & HIDEJUMPSUIT) + obscured |= ITEM_SLOT_ICLOTHING + if(hidden_slots & HIDESHOES) + obscured |= ITEM_SLOT_FEET + if(hidden_slots & HIDESUITSTORAGE) + obscured |= ITEM_SLOT_SUITSTORE + if(hidden_slots & HIDEHEADGEAR) + obscured |= ITEM_SLOT_HEAD + + return obscured + /mob/living/carbon/get_item_by_slot(slot_id) switch(slot_id) if(ITEM_SLOT_BACK) @@ -280,6 +310,8 @@ internal = null target_tank.after_internals_closed(src) update_mob_action_buttons() + //To make sure it stops at a timely manner when you turn off internals + breathing_loop.stop() return TRUE /// Close the the currently open external (that's EX-ternal) air tank. Returns TRUE if successful. diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 7fb92c26e6183..01531b77d63a9 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -64,6 +64,7 @@ // Second link in a breath chain, calls [carbon/proc/check_breath()] /mob/living/carbon/proc/breathe(seconds_per_tick, times_fired) var/obj/item/organ/internal/lungs = get_organ_slot(ORGAN_SLOT_LUNGS) + var/is_on_internals = FALSE if(SEND_SIGNAL(src, COMSIG_CARBON_ATTEMPT_BREATHE, seconds_per_tick, times_fired) & COMSIG_CARBON_BLOCK_BREATH) return @@ -108,15 +109,26 @@ breath = loc.remove_air(breath_moles) else //Breathe from loc as obj again + is_on_internals = TRUE + if(isobj(loc)) var/obj/loc_as_obj = loc loc_as_obj.handle_internal_lifeform(src,0) - check_breath(breath) + if(check_breath(breath) && is_on_internals) + try_breathing_sound(breath) if(breath) loc.assume_air(breath) +//Tries to play the carbon a breathing sound when using internals, also invokes check_breath +/mob/living/carbon/proc/try_breathing_sound(breath) + var/should_be_on = canon_client?.prefs?.read_preference(/datum/preference/toggle/sound_breathing) + if(should_be_on && !breathing_loop.timer_id) + breathing_loop.start() + else if(!should_be_on && breathing_loop.timer_id) + breathing_loop.stop() + /mob/living/carbon/proc/has_smoke_protection() if(HAS_TRAIT(src, TRAIT_NOBREATH)) return TRUE diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 53b08719f6a70..03a29762f6dc3 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -104,7 +104,7 @@ if(stat == DEAD) return FALSE - if(!gibbed && (death_sound || death_message)) + if(!gibbed && (death_sound || death_message || (living_flags & ALWAYS_DEATHGASP))) INVOKE_ASYNC(src, TYPE_PROC_REF(/mob, emote), "deathgasp") set_stat(DEAD) @@ -116,8 +116,9 @@ var/player_mob_check = mind && mind.name && mind.active // and, display a death message if the area allows it (or if they're in nullspace) var/valid_area_check = !death_area || !(death_area.area_flags & NO_DEATH_MESSAGE) - if(player_mob_check && valid_area_check) - deadchat_broadcast(" has died at [get_area_name(death_turf)].", "[mind.name]", follow_target = src, turf_target = death_turf, message_type=DEADCHAT_DEATHRATTLE) + if(player_mob_check) + if(valid_area_check) + deadchat_broadcast(" has died at [get_area_name(death_turf)].", "[mind.name]", follow_target = src, turf_target = death_turf, message_type=DEADCHAT_DEATHRATTLE) if(SSlag_switch.measures[DISABLE_DEAD_KEYLOOP] && !client?.holder) to_chat(src, span_deadsay(span_big("Observer freelook is disabled.\nPlease use Orbit, Teleport, and Jump to look around."))) ghostize(TRUE) diff --git a/code/modules/mob/living/init_signals.dm b/code/modules/mob/living/init_signals.dm index 064a0573353eb..4bf0407c4670a 100644 --- a/code/modules/mob/living/init_signals.dm +++ b/code/modules/mob/living/init_signals.dm @@ -38,6 +38,9 @@ RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_RESTRAINED), PROC_REF(on_restrained_trait_gain)) RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_RESTRAINED), PROC_REF(on_restrained_trait_loss)) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_DEAF), PROC_REF(on_hearing_loss)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_DEAF), PROC_REF(on_hearing_regain)) + RegisterSignals(src, list( SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), SIGNAL_REMOVETRAIT(TRAIT_CRITICAL_CONDITION), @@ -272,3 +275,14 @@ /mob/living/proc/undense_changed(datum/source) SIGNAL_HANDLER update_density() + +///Called when [TRAIT_DEAF] is added to the mob. +/mob/living/proc/on_hearing_loss() + SIGNAL_HANDLER + refresh_looping_ambience() + stop_sound_channel(CHANNEL_AMBIENCE) + +///Called when [TRAIT_DEAF] is added to the mob. +/mob/living/proc/on_hearing_regain() + SIGNAL_HANDLER + refresh_looping_ambience() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 54fce885a8056..c7a0c034ac5aa 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1345,7 +1345,7 @@ to_chat(src, span_warning("You don't have the hands for this action!")) return FALSE - if(!(action_bitflags & BYPASS_ADJACENCY) && !recursive_loc_check(src, target) && !CanReach(target)) + if(!(action_bitflags & BYPASS_ADJACENCY) && ((action_bitflags & NOT_INSIDE_TARGET) || !recursive_loc_check(src, target)) && !CanReach(target)) if(HAS_SILICON_ACCESS(src) && !ispAI(src)) if(!(action_bitflags & ALLOW_SILICON_REACH)) // silicons can ignore range checks (except pAIs) if(!(action_bitflags & SILENT_ADJACENCY)) @@ -2277,6 +2277,10 @@ GLOBAL_LIST_EMPTY(fire_appearances) REMOVE_TRAIT(src, TRAIT_CRITICAL_CONDITION, STAT_TRAIT) remove_from_alive_mob_list() add_to_dead_mob_list() + if(!can_hear()) + stop_sound_channel(CHANNEL_AMBIENCE) + refresh_looping_ambience() + ///Reports the event of the change in value of the buckled variable. diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 3ee43801a7621..d3dfa7e55f605 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -411,7 +411,7 @@ if(!user.get_bodypart(BODY_ZONE_HEAD)) return FALSE - if(user.is_muzzled() || user.is_mouth_covered(ITEM_SLOT_MASK)) + if(user.is_mouth_covered(ITEM_SLOT_MASK)) to_chat(user, span_warning("You can't bite with your mouth covered!")) return FALSE @@ -659,7 +659,7 @@ playsound(target, 'sound/effects/glassbash.ogg', 50, TRUE, -1) else do_attack_animation(target, ATTACK_EFFECT_DISARM) - playsound(target, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) + playsound(target, 'sound/weapons/shove.ogg', 50, TRUE, -1) if (ishuman(target) && isnull(weapon)) var/mob/living/carbon/human/human_target = target human_target.w_uniform?.add_fingerprint(src) @@ -700,6 +700,7 @@ return if((shove_flags & SHOVE_BLOCKED) && !(shove_flags & (SHOVE_KNOCKDOWN_BLOCKED|SHOVE_CAN_KICK_SIDE))) target.Knockdown(SHOVE_KNOCKDOWN_SOLID) + target.apply_status_effect(/datum/status_effect/next_shove_stuns) target.visible_message(span_danger("[name] shoves [target.name], knocking [target.p_them()] down!"), span_userdanger("You're knocked down from a shove by [name]!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), COMBAT_MESSAGE_RANGE, src) to_chat(src, span_danger("You shove [target.name], knocking [target.p_them()] down!")) @@ -708,6 +709,7 @@ if(shove_flags & SHOVE_CAN_KICK_SIDE) //KICK HIM IN THE NUTS target.Paralyze(SHOVE_CHAIN_PARALYZE) + target.apply_status_effect(/datum/status_effect/no_side_kick) target.visible_message(span_danger("[name] kicks [target.name] onto [target.p_their()] side!"), span_userdanger("You're kicked onto your side by [name]!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), COMBAT_MESSAGE_RANGE, src) to_chat(src, span_danger("You kick [target.name] onto [target.p_their()] side!")) @@ -720,10 +722,8 @@ //Take their lunch money var/target_held_item = target.get_active_held_item() var/append_message = weapon ? " with [weapon]" : "" - if(!is_type_in_typecache(target_held_item, GLOB.shove_disarming_types)) //It's too expensive we'll get caught - target_held_item = null - - if(target_held_item && target.get_timed_status_effect_duration(/datum/status_effect/staggered)) + // If it's in our typecache, they're staggered and it exists, disarm. If they're knocked down, disarm too. + if(target_held_item && target.get_timed_status_effect_duration(/datum/status_effect/staggered) && is_type_in_typecache(target_held_item, GLOB.shove_disarming_types) || target_held_item && target.body_position == LYING_DOWN) target.dropItemToGround(target_held_item) append_message = "causing [target.p_them()] to drop [target_held_item]" target.visible_message(span_danger("[target.name] drops \the [target_held_item]!"), diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 0b844a2362afb..6ec18d0d5392c 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -3,6 +3,7 @@ hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD) pressure_resistance = 10 hud_type = /datum/hud/living + interaction_flags_click = ALLOW_RESTING interaction_flags_mouse_drop = ALLOW_RESTING ///Tracks the current size of the mob in relation to its original size. Use update_transform(resize) to change it. diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index bbcf77986ac79..58e13951ebc4f 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -454,11 +454,12 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list( message = unintelligize(message) tts_filter = list() - var/list/data = list(message, tts_message, tts_filter) + var/list/data = list(message, tts_message, tts_filter, capitalize_message) SEND_SIGNAL(src, COMSIG_LIVING_TREAT_MESSAGE, data) message = data[TREAT_MESSAGE_ARG] tts_message = data[TREAT_TTS_MESSAGE_ARG] tts_filter = data[TREAT_TTS_FILTER_ARG] + capitalize_message = data[TREAT_CAPITALIZE_MESSAGE] if(!tts_message) tts_message = message diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm index c6d6b6a5e9d70..b9f2fec61ff2c 100644 --- a/code/modules/mob/living/login.dm +++ b/code/modules/mob/living/login.dm @@ -14,9 +14,7 @@ update_z(T.z) //Vents - var/ventcrawler = HAS_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS) || HAS_TRAIT(src, TRAIT_VENTCRAWLER_NUDE) - if(ventcrawler) - to_chat(src, span_notice("You can ventcrawl! Use alt+click on vents to quickly travel about the station.")) + notify_ventcrawler_on_login() med_hud_set_status() diff --git a/code/modules/mob/living/navigation.dm b/code/modules/mob/living/navigation.dm index 98f1080c79192..3096efb3a7c47 100644 --- a/code/modules/mob/living/navigation.dm +++ b/code/modules/mob/living/navigation.dm @@ -132,7 +132,7 @@ if(!target) target = lad continue - if(get_dist_euclidian(lad, src) > get_dist_euclidian(target, src)) + if(get_dist_euclidean(lad, src) > get_dist_euclidean(target, src)) continue target = lad @@ -144,7 +144,7 @@ if(!target) target = stairs_bro.z == z ? stairs_bro : get_step_multiz(stairs_bro, UP) //if the stairs aren't on our z level, get the turf above them (on our zlevel) to path to instead continue - if(get_dist_euclidian(stairs_bro, src) > get_dist_euclidian(target, src)) + if(get_dist_euclidean(stairs_bro, src) > get_dist_euclidean(target, src)) continue target = stairs_bro.z == z ? stairs_bro : get_step_multiz(stairs_bro, UP) diff --git a/code/modules/mob/living/silicon/ai/vox_sounds.dm b/code/modules/mob/living/silicon/ai/vox_sounds.dm index dacb1eeb8131c..d69bb2e1cc3b8 100644 --- a/code/modules/mob/living/silicon/ai/vox_sounds.dm +++ b/code/modules/mob/living/silicon/ai/vox_sounds.dm @@ -8,12 +8,15 @@ // For vim // :%s/\(\(.*\)\.ogg\)/"\2" = 'sound\/vox_fem\/\1',/g GLOBAL_LIST_INIT(vox_sounds, list( - "abduction" = 'sound/vox_fem/abduction.ogg', "," = 'sound/vox_fem/,.ogg', "." = 'sound/vox_fem/..ogg', "a" = 'sound/vox_fem/a.ogg', + "abduction" = 'sound/vox_fem/abduction.ogg', "abortions" = 'sound/vox_fem/abortions.ogg', "above" = 'sound/vox_fem/above.ogg', + "absorb" = 'sound/vox_fem/absorb.ogg', + "absorbed" = 'sound/vox_fem/absorbed.ogg', + "absorbing" = 'sound/vox_fem/absorbing.ogg', "abstain" = 'sound/vox_fem/abstain.ogg', "accelerating" = 'sound/vox_fem/accelerating.ogg', "accelerator" = 'sound/vox_fem/accelerator.ogg', @@ -26,11 +29,17 @@ GLOBAL_LIST_INIT(vox_sounds, list( "across" = 'sound/vox_fem/across.ogg', "activate" = 'sound/vox_fem/activate.ogg', "activated" = 'sound/vox_fem/activated.ogg', + "activating" = 'sound/vox_fem/activating.ogg', + "activation" = 'sound/vox_fem/activation.ogg', + "active" = 'sound/vox_fem/active.ogg', "activity" = 'sound/vox_fem/activity.ogg', "adios" = 'sound/vox_fem/adios.ogg', "administration" = 'sound/vox_fem/administration.ogg', "advanced" = 'sound/vox_fem/advanced.ogg', "advised" = 'sound/vox_fem/advised.ogg', + "affect" = 'sound/vox_fem/affect.ogg', + "affected" = 'sound/vox_fem/affected.ogg', + "affecting" = 'sound/vox_fem/affecting.ogg', "aft" = 'sound/vox_fem/aft.ogg', "after" = 'sound/vox_fem/after.ogg', "agent" = 'sound/vox_fem/agent.ogg', @@ -40,44 +49,59 @@ GLOBAL_LIST_INIT(vox_sounds, list( "alarm" = 'sound/vox_fem/alarm.ogg', "alarmed" = 'sound/vox_fem/alarmed.ogg', "alarming" = 'sound/vox_fem/alarming.ogg', + "alcohol" = 'sound/vox_fem/alcohol.ogg', "alert" = 'sound/vox_fem/alert.ogg', "alerted" = 'sound/vox_fem/alerted.ogg', "alerting" = 'sound/vox_fem/alerting.ogg', "alien" = 'sound/vox_fem/alien.ogg', + "align" = 'sound/vox_fem/align.ogg', "aligned" = 'sound/vox_fem/aligned.ogg', "all" = 'sound/vox_fem/all.ogg', + "allow" = 'sound/vox_fem/allow.ogg', + "alongside" = 'sound/vox_fem/alongside.ogg', "alpha" = 'sound/vox_fem/alpha.ogg', "also" = 'sound/vox_fem/also.ogg', "am" = 'sound/vox_fem/am.ogg', "amigo" = 'sound/vox_fem/amigo.ogg', "ammunition" = 'sound/vox_fem/ammunition.ogg', + "amount" = 'sound/vox_fem/amount.ogg', "an" = 'sound/vox_fem/an.ogg', "and" = 'sound/vox_fem/and.ogg', "animal" = 'sound/vox_fem/animal.ogg', + "annihilate" = 'sound/vox_fem/annihilate.ogg', + "annihilated" = 'sound/vox_fem/annihilated.ogg', + "annihilating" = 'sound/vox_fem/annihilating.ogg', + "annihilation" = 'sound/vox_fem/annihilation.ogg', "announcement" = 'sound/vox_fem/announcement.ogg', "anomalous" = 'sound/vox_fem/anomalous.ogg', "answer" = 'sound/vox_fem/answer.ogg', "antenna" = 'sound/vox_fem/antenna.ogg', + "anti-noblium" = 'sound/vox_fem/anti-noblium.ogg', "any" = 'sound/vox_fem/any.ogg', "apc" = 'sound/vox_fem/apc.ogg', "apprehend" = 'sound/vox_fem/apprehend.ogg', "approach" = 'sound/vox_fem/approach.ogg', + "arc" = 'sound/vox_fem/arc.ogg', + "arcs" = 'sound/vox_fem/arcs.ogg', "are" = 'sound/vox_fem/are.ogg', "area" = 'sound/vox_fem/area.ogg', "arm" = 'sound/vox_fem/arm.ogg', "armed" = 'sound/vox_fem/armed.ogg', "armor" = 'sound/vox_fem/armor.ogg', "armory" = 'sound/vox_fem/armory.ogg', + "around" = 'sound/vox_fem/around.ogg', "array" = 'sound/vox_fem/array.ogg', "arrest" = 'sound/vox_fem/arrest.ogg', "artillery" = 'sound/vox_fem/artillery.ogg', "asimov" = 'sound/vox_fem/asimov.ogg', + "ask" = 'sound/vox_fem/ask.ogg', "ass" = 'sound/vox_fem/ass.ogg', "asshole" = 'sound/vox_fem/asshole.ogg', "assholes" = 'sound/vox_fem/assholes.ogg', "assistance" = 'sound/vox_fem/assistance.ogg', "assistant" = 'sound/vox_fem/assistant.ogg', "at" = 'sound/vox_fem/at.ogg', + "ate" = 'sound/vox_fem/ate.ogg', "atmosphere" = 'sound/vox_fem/atmosphere.ogg', "atmospheric" = 'sound/vox_fem/atmospheric.ogg', "atmospherics" = 'sound/vox_fem/atmospherics.ogg', @@ -101,10 +125,14 @@ GLOBAL_LIST_INIT(vox_sounds, list( "base" = 'sound/vox_fem/base.ogg', "bay" = 'sound/vox_fem/bay.ogg', "be" = 'sound/vox_fem/be.ogg', + "beaker" = 'sound/vox_fem/beaker.ogg', "beam" = 'sound/vox_fem/beam.ogg', "been" = 'sound/vox_fem/been.ogg', "beep" = 'sound/vox_fem/beep.ogg', "before" = 'sound/vox_fem/before.ogg', + "began" = 'sound/vox_fem/began.ogg', + "begin" = 'sound/vox_fem/begin.ogg', + "begins" = 'sound/vox_fem/begins.ogg', "below" = 'sound/vox_fem/below.ogg', "beside" = 'sound/vox_fem/beside.ogg', "beware" = 'sound/vox_fem/beware.ogg', @@ -133,6 +161,7 @@ GLOBAL_LIST_INIT(vox_sounds, list( "bone" = 'sound/vox_fem/bone.ogg', "botanist" = 'sound/vox_fem/botanist.ogg', "botany" = 'sound/vox_fem/botany.ogg', + "bottle" = 'sound/vox_fem/bottle.ogg', "bottom" = 'sound/vox_fem/bottom.ogg', "bravo" = 'sound/vox_fem/bravo.ogg', "breach" = 'sound/vox_fem/breach.ogg', @@ -140,6 +169,11 @@ GLOBAL_LIST_INIT(vox_sounds, list( "break" = 'sound/vox_fem/break.ogg', "bridge" = 'sound/vox_fem/bridge.ogg', "brig" = 'sound/vox_fem/brig.ogg', + "broke" = 'sound/vox_fem/broke.ogg', + "broken" = 'sound/vox_fem/broken.ogg', + "bump" = 'sound/vox_fem/bump.ogg', + "bumped" = 'sound/vox_fem/bumped.ogg', + "bumps" = 'sound/vox_fem/bumps.ogg', "bust" = 'sound/vox_fem/bust.ogg', "but" = 'sound/vox_fem/but.ogg', "button" = 'sound/vox_fem/button.ogg', @@ -148,6 +182,7 @@ GLOBAL_LIST_INIT(vox_sounds, list( "cable" = 'sound/vox_fem/cable.ogg', "call" = 'sound/vox_fem/call.ogg', "called" = 'sound/vox_fem/called.ogg', + "can" = 'sound/vox_fem/can.ogg', "canal" = 'sound/vox_fem/canal.ogg', "canister" = 'sound/vox_fem/canister.ogg', "cap" = 'sound/vox_fem/cap.ogg', @@ -155,7 +190,12 @@ GLOBAL_LIST_INIT(vox_sounds, list( "capture" = 'sound/vox_fem/capture.ogg', "carbon" = 'sound/vox_fem/carbon.ogg', "cargo" = 'sound/vox_fem/cargo.ogg', + "cascade" = 'sound/vox_fem/cascade.ogg', "cat" = 'sound/vox_fem/cat.ogg', + "cause" = 'sound/vox_fem/cause.ogg', + "caused" = 'sound/vox_fem/caused.ogg', + "causes" = 'sound/vox_fem/causes.ogg', + "causing" = 'sound/vox_fem/causing.ogg', "ce" = 'sound/vox_fem/ce.ogg', "cease" = 'sound/vox_fem/cease.ogg', "ceiling" = 'sound/vox_fem/ceiling.ogg', @@ -171,6 +211,7 @@ GLOBAL_LIST_INIT(vox_sounds, list( "changeling" = 'sound/vox_fem/changeling.ogg', "chapel" = 'sound/vox_fem/chapel.ogg', "chaplain" = 'sound/vox_fem/chaplain.ogg', + "charge" = 'sound/vox_fem/charge.ogg', "charlie" = 'sound/vox_fem/charlie.ogg', "check" = 'sound/vox_fem/check.ogg', "checkpoint" = 'sound/vox_fem/checkpoint.ogg', @@ -185,35 +226,51 @@ GLOBAL_LIST_INIT(vox_sounds, list( "clear" = 'sound/vox_fem/clear.ogg', "clearance" = 'sound/vox_fem/clearance.ogg', "clockwork" = 'sound/vox_fem/clockwork.ogg', + "clog" = 'sound/vox_fem/clog.ogg', "close" = 'sound/vox_fem/close.ogg', "closed" = 'sound/vox_fem/closed.ogg', "closing" = 'sound/vox_fem/closing.ogg', + "clothing" = 'sound/vox_fem/clothing.ogg', "clown" = 'sound/vox_fem/clown.ogg', "clowning" = 'sound/vox_fem/clowning.ogg', "cmo" = 'sound/vox_fem/cmo.ogg', "code" = 'sound/vox_fem/code.ogg', "coded" = 'sound/vox_fem/coded.ogg', + "coil" = 'sound/vox_fem/coil.ogg', + "coils" = 'sound/vox_fem/coils.ogg', "cold" = 'sound/vox_fem/cold.ogg', "collider" = 'sound/vox_fem/collider.ogg', + "combat" = 'sound/vox_fem/combat.ogg', + "combatant" = 'sound/vox_fem/combatant.ogg', "come" = 'sound/vox_fem/come.ogg', "command" = 'sound/vox_fem/command.ogg', "communication" = 'sound/vox_fem/communication.ogg', + "complete" = 'sound/vox_fem/complete.ogg', + "completed" = 'sound/vox_fem/completed.ogg', + "completion" = 'sound/vox_fem/completion.ogg', "complex" = 'sound/vox_fem/complex.ogg', "comply" = 'sound/vox_fem/comply.ogg', "computer" = 'sound/vox_fem/computer.ogg', "condition" = 'sound/vox_fem/condition.ogg', + "conditions" = 'sound/vox_fem/conditions.ogg', "condom" = 'sound/vox_fem/condom.ogg', + "configure" = 'sound/vox_fem/configure.ogg', + "configured" = 'sound/vox_fem/configured.ogg', + "configuring" = 'sound/vox_fem/configuring.ogg', "confirmed" = 'sound/vox_fem/confirmed.ogg', "connor" = 'sound/vox_fem/connor.ogg', "console" = 'sound/vox_fem/console.ogg', "console2" = 'sound/vox_fem/console2.ogg', "construct" = 'sound/vox_fem/construct.ogg', + "container" = 'sound/vox_fem/container.ogg', "containment" = 'sound/vox_fem/containment.ogg', "contamination" = 'sound/vox_fem/contamination.ogg', "contraband" = 'sound/vox_fem/contraband.ogg', "control" = 'sound/vox_fem/control.ogg', "cook" = 'sound/vox_fem/cook.ogg', + "cool" = 'sound/vox_fem/cool.ogg', "coolant" = 'sound/vox_fem/coolant.ogg', + "cooling" = 'sound/vox_fem/cooling.ogg', "coomer" = 'sound/vox_fem/coomer.ogg', "core" = 'sound/vox_fem/core.ogg', "corgi" = 'sound/vox_fem/corgi.ogg', @@ -221,10 +278,15 @@ GLOBAL_LIST_INIT(vox_sounds, list( "correct" = 'sound/vox_fem/correct.ogg', "corridor" = 'sound/vox_fem/corridor.ogg', "corridors" = 'sound/vox_fem/corridors.ogg', + "could" = 'sound/vox_fem/could.ogg', + "couldnt" = 'sound/vox_fem/couldnt.ogg', + "countdown" = 'sound/vox_fem/countdown.ogg', "coward" = 'sound/vox_fem/coward.ogg', "cowards" = 'sound/vox_fem/cowards.ogg', "crate" = 'sound/vox_fem/crate.ogg', + "create" = 'sound/vox_fem/create.ogg', "created" = 'sound/vox_fem/created.ogg', + "creating" = 'sound/vox_fem/creating.ogg', "creature" = 'sound/vox_fem/creature.ogg', "crew" = 'sound/vox_fem/crew.ogg', "critical" = 'sound/vox_fem/critical.ogg', @@ -251,9 +313,12 @@ GLOBAL_LIST_INIT(vox_sounds, list( "deeoo" = 'sound/vox_fem/deeoo.ogg', "defense" = 'sound/vox_fem/defense.ogg', "degrees" = 'sound/vox_fem/degrees.ogg', + "delaminating" = 'sound/vox_fem/delaminating.ogg', + "delamination" = 'sound/vox_fem/delamination.ogg', "delta" = 'sound/vox_fem/delta.ogg', "demon" = 'sound/vox_fem/demon.ogg', "denied" = 'sound/vox_fem/denied.ogg', + "deny" = 'sound/vox_fem/deny.ogg', "departures" = 'sound/vox_fem/departures.ogg', "deploy" = 'sound/vox_fem/deploy.ogg', "deployed" = 'sound/vox_fem/deployed.ogg', @@ -263,7 +328,9 @@ GLOBAL_LIST_INIT(vox_sounds, list( "destroyed" = 'sound/vox_fem/destroyed.ogg', "destruction" = 'sound/vox_fem/destruction.ogg', "detain" = 'sound/vox_fem/detain.ogg', + "detect" = 'sound/vox_fem/detect.ogg', "detected" = 'sound/vox_fem/detected.ogg', + "detecting" = 'sound/vox_fem/detecting.ogg', "detective" = 'sound/vox_fem/detective.ogg', "detonation" = 'sound/vox_fem/detonation.ogg', "device" = 'sound/vox_fem/device.ogg', @@ -271,8 +338,10 @@ GLOBAL_LIST_INIT(vox_sounds, list( "did" = 'sound/vox_fem/did.ogg', "die" = 'sound/vox_fem/die.ogg', "died" = 'sound/vox_fem/died.ogg', + "different" = 'sound/vox_fem/different.ogg', "dimensional" = 'sound/vox_fem/dimensional.ogg', "dioxide" = 'sound/vox_fem/dioxide.ogg', + "direct" = 'sound/vox_fem/direct.ogg', "director" = 'sound/vox_fem/director.ogg', "dirt" = 'sound/vox_fem/dirt.ogg', "disabled" = 'sound/vox_fem/disabled.ogg', @@ -286,31 +355,47 @@ GLOBAL_LIST_INIT(vox_sounds, list( "do" = 'sound/vox_fem/do.ogg', "doctor" = 'sound/vox_fem/doctor.ogg', "dog" = 'sound/vox_fem/dog.ogg', + "dont" = 'sound/vox_fem/dont.ogg', "doomsday" = 'sound/vox_fem/doomsday.ogg', "doop" = 'sound/vox_fem/doop.ogg', "door" = 'sound/vox_fem/door.ogg', "dormitory" = 'sound/vox_fem/dormitory.ogg', "dot" = 'sound/vox_fem/dot.ogg', + "double" = 'sound/vox_fem/double.ogg', "down" = 'sound/vox_fem/down.ogg', + "dress" = 'sound/vox_fem/dress.ogg', + "dressed" = 'sound/vox_fem/dressed.ogg', + "dressing" = 'sound/vox_fem/dressing.ogg', "drone" = 'sound/vox_fem/drone.ogg', "dual" = 'sound/vox_fem/dual.ogg', "duct" = 'sound/vox_fem/duct.ogg', "e" = 'sound/vox_fem/e.ogg', + "easily" = 'sound/vox_fem/easily.ogg', "east" = 'sound/vox_fem/east.ogg', + "eat" = 'sound/vox_fem/eat.ogg', + "eaten" = 'sound/vox_fem/eaten.ogg', "echo" = 'sound/vox_fem/echo.ogg', "ed" = 'sound/vox_fem/ed.ogg', + "education" = 'sound/vox_fem/education.ogg', "effect" = 'sound/vox_fem/effect.ogg', + "effects" = 'sound/vox_fem/effects.ogg', "egress" = 'sound/vox_fem/egress.ogg', "eight" = 'sound/vox_fem/eight.ogg', "eighteen" = 'sound/vox_fem/eighteen.ogg', "eighty" = 'sound/vox_fem/eighty.ogg', "electric" = 'sound/vox_fem/electric.ogg', + "electrical" = 'sound/vox_fem/electrical.ogg', "electromagnetic" = 'sound/vox_fem/electromagnetic.ogg', "elevator" = 'sound/vox_fem/elevator.ogg', "eleven" = 'sound/vox_fem/eleven.ogg', "eliminate" = 'sound/vox_fem/eliminate.ogg', "emergency" = 'sound/vox_fem/emergency.ogg', + "emitted" = 'sound/vox_fem/emitted.ogg', + "emitter" = 'sound/vox_fem/emitter.ogg', + "emitting" = 'sound/vox_fem/emitting.ogg', "enabled" = 'sound/vox_fem/enabled.ogg', + "end" = 'sound/vox_fem/end.ogg', + "ends" = 'sound/vox_fem/ends.ogg', "energy" = 'sound/vox_fem/energy.ogg', "engage" = 'sound/vox_fem/engage.ogg', "engaged" = 'sound/vox_fem/engaged.ogg', @@ -318,6 +403,7 @@ GLOBAL_LIST_INIT(vox_sounds, list( "engineer" = 'sound/vox_fem/engineer.ogg', "engineering" = 'sound/vox_fem/engineering.ogg', "enormous" = 'sound/vox_fem/enormous.ogg', + "enough" = 'sound/vox_fem/enough.ogg', "enter" = 'sound/vox_fem/enter.ogg', "entity" = 'sound/vox_fem/entity.ogg', "entry" = 'sound/vox_fem/entry.ogg', @@ -329,7 +415,11 @@ GLOBAL_LIST_INIT(vox_sounds, list( "ethereal" = 'sound/vox_fem/ethereal.ogg', "eva" = 'sound/vox_fem/eva.ogg', "evacuate" = 'sound/vox_fem/evacuate.ogg', + "even" = 'sound/vox_fem/even.ogg', "ever" = 'sound/vox_fem/ever.ogg', + "every" = 'sound/vox_fem/every.ogg', + "everybody" = 'sound/vox_fem/everybody.ogg', + "everyone" = 'sound/vox_fem/everyone.ogg', "exchange" = 'sound/vox_fem/exchange.ogg', "execute" = 'sound/vox_fem/execute.ogg', "exit" = 'sound/vox_fem/exit.ogg', @@ -337,12 +427,16 @@ GLOBAL_LIST_INIT(vox_sounds, list( "experiment" = 'sound/vox_fem/experiment.ogg', "experimental" = 'sound/vox_fem/experimental.ogg', "explode" = 'sound/vox_fem/explode.ogg', + "exploded" = 'sound/vox_fem/exploded.ogg', + "exploding" = 'sound/vox_fem/exploding.ogg', "explosion" = 'sound/vox_fem/explosion.ogg', "explosive" = 'sound/vox_fem/explosive.ogg', "exposure" = 'sound/vox_fem/exposure.ogg', "exterminate" = 'sound/vox_fem/exterminate.ogg', + "external" = 'sound/vox_fem/external.ogg', "extinguish" = 'sound/vox_fem/extinguish.ogg', "extinguisher" = 'sound/vox_fem/extinguisher.ogg', + "extra" = 'sound/vox_fem/extra.ogg', "extreme" = 'sound/vox_fem/extreme.ogg', "f" = 'sound/vox_fem/f.ogg', "facility" = 'sound/vox_fem/facility.ogg', @@ -354,12 +448,19 @@ GLOBAL_LIST_INIT(vox_sounds, list( "farthest" = 'sound/vox_fem/farthest.ogg', "fast" = 'sound/vox_fem/fast.ogg', "fauna" = 'sound/vox_fem/fauna.ogg', + "feature" = 'sound/vox_fem/feature.ogg', + "featured" = 'sound/vox_fem/featured.ogg', + "features" = 'sound/vox_fem/features.ogg', + "featuring" = 'sound/vox_fem/featuring.ogg', "feet" = 'sound/vox_fem/feet.ogg', "felinid" = 'sound/vox_fem/felinid.ogg', + "few" = 'sound/vox_fem/few.ogg', "field" = 'sound/vox_fem/field.ogg', "fifteen" = 'sound/vox_fem/fifteen.ogg', "fifth" = 'sound/vox_fem/fifth.ogg', "fifty" = 'sound/vox_fem/fifty.ogg', + "filter" = 'sound/vox_fem/filter.ogg', + "filters" = 'sound/vox_fem/filters.ogg', "final" = 'sound/vox_fem/final.ogg', "fine" = 'sound/vox_fem/fine.ogg', "fire" = 'sound/vox_fem/fire.ogg', @@ -370,6 +471,7 @@ GLOBAL_LIST_INIT(vox_sounds, list( "floor" = 'sound/vox_fem/floor.ogg', "flyman" = 'sound/vox_fem/flyman.ogg', "fool" = 'sound/vox_fem/fool.ogg', + "foolish" = 'sound/vox_fem/foolish.ogg', "for" = 'sound/vox_fem/for.ogg', "forbidden" = 'sound/vox_fem/forbidden.ogg', "force" = 'sound/vox_fem/force.ogg', @@ -389,6 +491,7 @@ GLOBAL_LIST_INIT(vox_sounds, list( "freeze" = 'sound/vox_fem/freeze.ogg', "freezer" = 'sound/vox_fem/freezer.ogg', "freezing" = 'sound/vox_fem/freezing.ogg', + "freon" = 'sound/vox_fem/freon.ogg', "from" = 'sound/vox_fem/from.ogg', "front" = 'sound/vox_fem/front.ogg', "froze" = 'sound/vox_fem/froze.ogg', @@ -399,9 +502,19 @@ GLOBAL_LIST_INIT(vox_sounds, list( "fuel" = 'sound/vox_fem/fuel.ogg', "g" = 'sound/vox_fem/g.ogg', "gas" = 'sound/vox_fem/gas.ogg', + "gases" = 'sound/vox_fem/gases.ogg', + "gave" = 'sound/vox_fem/gave.ogg', + "gear" = 'sound/vox_fem/gear.ogg', + "geared" = 'sound/vox_fem/geared.ogg', + "gearing" = 'sound/vox_fem/gearing.ogg', + "generate" = 'sound/vox_fem/generate.ogg', + "generated" = 'sound/vox_fem/generated.ogg', + "generating" = 'sound/vox_fem/generating.ogg', "generator" = 'sound/vox_fem/generator.ogg', "geneticist" = 'sound/vox_fem/geneticist.ogg', "get" = 'sound/vox_fem/get.ogg', + "give" = 'sound/vox_fem/give.ogg', + "given" = 'sound/vox_fem/given.ogg', "glory" = 'sound/vox_fem/glory.ogg', "go" = 'sound/vox_fem/go.ogg', "god" = 'sound/vox_fem/god.ogg', @@ -428,17 +541,29 @@ GLOBAL_LIST_INIT(vox_sounds, list( "had" = 'sound/vox_fem/had.ogg', "hall" = 'sound/vox_fem/hall.ogg', "hallway" = 'sound/vox_fem/hallway.ogg', + "halon" = 'sound/vox_fem/halon.ogg', "handling" = 'sound/vox_fem/handling.ogg', "hangar" = 'sound/vox_fem/hangar.ogg', + "hard" = 'sound/vox_fem/hard.ogg', + "hardly" = 'sound/vox_fem/hardly.ogg', "harm" = 'sound/vox_fem/harm.ogg', "harmful" = 'sound/vox_fem/harmful.ogg', + "harness" = 'sound/vox_fem/harness.ogg', + "harnessed" = 'sound/vox_fem/harnessed.ogg', + "harnessing" = 'sound/vox_fem/harnessing.ogg', "has" = 'sound/vox_fem/has.ogg', "have" = 'sound/vox_fem/have.ogg', "hazard" = 'sound/vox_fem/hazard.ogg', "he" = 'sound/vox_fem/he.ogg', "head" = 'sound/vox_fem/head.ogg', + "heal" = 'sound/vox_fem/heal.ogg', + "healed" = 'sound/vox_fem/healed.ogg', + "healing" = 'sound/vox_fem/healing.ogg', + "healium" = 'sound/vox_fem/healium.ogg', "health" = 'sound/vox_fem/health.ogg', "heat" = 'sound/vox_fem/heat.ogg', + "heated" = 'sound/vox_fem/heated.ogg', + "heating" = 'sound/vox_fem/heating.ogg', "helicopter" = 'sound/vox_fem/helicopter.ogg', "helium" = 'sound/vox_fem/helium.ogg', "hello" = 'sound/vox_fem/hello.ogg', @@ -468,7 +593,9 @@ GLOBAL_LIST_INIT(vox_sounds, list( "hunger" = 'sound/vox_fem/hunger.ogg', "hurt" = 'sound/vox_fem/hurt.ogg', "hydro" = 'sound/vox_fem/hydro.ogg', + "hydrogen" = 'sound/vox_fem/hydrogen.ogg', "hydroponics" = 'sound/vox_fem/hydroponics.ogg', + "hyper-noblium" = 'sound/vox_fem/hyper-noblium.ogg', "i" = 'sound/vox_fem/i.ogg', "ian" = 'sound/vox_fem/ian.ogg', "idiot" = 'sound/vox_fem/idiot.ogg', @@ -482,26 +609,33 @@ GLOBAL_LIST_INIT(vox_sounds, list( "in" = 'sound/vox_fem/in.ogg', "inches" = 'sound/vox_fem/inches.ogg', "india" = 'sound/vox_fem/india.ogg', + "inert" = 'sound/vox_fem/inert.ogg', "ing" = 'sound/vox_fem/ing.ogg', "inoperative" = 'sound/vox_fem/inoperative.ogg', "inside" = 'sound/vox_fem/inside.ogg', "inspection" = 'sound/vox_fem/inspection.ogg', "inspector" = 'sound/vox_fem/inspector.ogg', "interchange" = 'sound/vox_fem/interchange.ogg', + "internal" = 'sound/vox_fem/internal.ogg', "internals" = 'sound/vox_fem/internals.ogg', "intruder" = 'sound/vox_fem/intruder.ogg', "invalid" = 'sound/vox_fem/invalid.ogg', "invalidate" = 'sound/vox_fem/invalidate.ogg', "invasion" = 'sound/vox_fem/invasion.ogg', + "irradiate" = 'sound/vox_fem/irradiate.ogg', "is" = 'sound/vox_fem/is.ogg', "it" = 'sound/vox_fem/it.ogg', + "its" = 'sound/vox_fem/its.ogg', "j" = 'sound/vox_fem/j.ogg', "janitor" = 'sound/vox_fem/janitor.ogg', "jesus" = 'sound/vox_fem/jesus.ogg', + "job" = 'sound/vox_fem/job.ogg', + "jobs" = 'sound/vox_fem/jobs.ogg', "johnson" = 'sound/vox_fem/johnson.ogg', "jolly" = 'sound/vox_fem/jolly.ogg', "juliet" = 'sound/vox_fem/juliet.ogg', "k" = 'sound/vox_fem/k.ogg', + "kelvin" = 'sound/vox_fem/kelvin.ogg', "key" = 'sound/vox_fem/key.ogg', "kidnapped" = 'sound/vox_fem/kidnapped.ogg', "kidnapping" = 'sound/vox_fem/kidnapping.ogg', @@ -536,7 +670,10 @@ GLOBAL_LIST_INIT(vox_sounds, list( "light" = 'sound/vox_fem/light.ogg', "lightbulb" = 'sound/vox_fem/lightbulb.ogg', "lima" = 'sound/vox_fem/lima.ogg', + "limit" = 'sound/vox_fem/limit.ogg', + "limited" = 'sound/vox_fem/limited.ogg', "liquid" = 'sound/vox_fem/liquid.ogg', + "list" = 'sound/vox_fem/list.ogg', "live" = 'sound/vox_fem/live.ogg', "live2" = 'sound/vox_fem/live2.ogg', "lizard" = 'sound/vox_fem/lizard.ogg', @@ -559,12 +696,14 @@ GLOBAL_LIST_INIT(vox_sounds, list( "lusty" = 'sound/vox_fem/lusty.ogg', "m" = 'sound/vox_fem/m.ogg', "machine" = 'sound/vox_fem/machine.ogg', + "made" = 'sound/vox_fem/made.ogg', "magic" = 'sound/vox_fem/magic.ogg', "magnetic" = 'sound/vox_fem/magnetic.ogg', "main" = 'sound/vox_fem/main.ogg', "maintainer" = 'sound/vox_fem/maintainer.ogg', "maintenance" = 'sound/vox_fem/maintenance.ogg', "major" = 'sound/vox_fem/major.ogg', + "making" = 'sound/vox_fem/making.ogg', "malfunction" = 'sound/vox_fem/malfunction.ogg', "man" = 'sound/vox_fem/man.ogg', "many" = 'sound/vox_fem/many.ogg', @@ -573,15 +712,21 @@ GLOBAL_LIST_INIT(vox_sounds, list( "maximum" = 'sound/vox_fem/maximum.ogg', "may" = 'sound/vox_fem/may.ogg', "me" = 'sound/vox_fem/me.ogg', + "mean" = 'sound/vox_fem/mean.ogg', + "means" = 'sound/vox_fem/means.ogg', "meat" = 'sound/vox_fem/meat.ogg', "medbay" = 'sound/vox_fem/medbay.ogg', "medical" = 'sound/vox_fem/medical.ogg', + "medium" = 'sound/vox_fem/medium.ogg', "megafauna" = 'sound/vox_fem/megafauna.ogg', "men" = 'sound/vox_fem/men.ogg', "mercy" = 'sound/vox_fem/mercy.ogg', "mesa" = 'sound/vox_fem/mesa.ogg', + "meson" = 'sound/vox_fem/meson.ogg', "message" = 'sound/vox_fem/message.ogg', "meter" = 'sound/vox_fem/meter.ogg', + "method" = 'sound/vox_fem/method.ogg', + "miasma" = 'sound/vox_fem/miasma.ogg', "micro" = 'sound/vox_fem/micro.ogg', "middle" = 'sound/vox_fem/middle.ogg', "mike" = 'sound/vox_fem/mike.ogg', @@ -594,17 +739,22 @@ GLOBAL_LIST_INIT(vox_sounds, list( "miner" = 'sound/vox_fem/miner.ogg', "minimum" = 'sound/vox_fem/minimum.ogg', "minor" = 'sound/vox_fem/minor.ogg', + "minute" = 'sound/vox_fem/minute.ogg', "minutes" = 'sound/vox_fem/minutes.ogg', "mister" = 'sound/vox_fem/mister.ogg', + "mixture" = 'sound/vox_fem/mixture.ogg', "mode" = 'sound/vox_fem/mode.ogg', "modification" = 'sound/vox_fem/modification.ogg', "money" = 'sound/vox_fem/money.ogg', "monkey" = 'sound/vox_fem/monkey.ogg', + "most" = 'sound/vox_fem/most.ogg', "moth" = 'sound/vox_fem/moth.ogg', "mothperson" = 'sound/vox_fem/mothperson.ogg', "motor" = 'sound/vox_fem/motor.ogg', "motorpool" = 'sound/vox_fem/motorpool.ogg', "move" = 'sound/vox_fem/move.ogg', + "moved" = 'sound/vox_fem/moved.ogg', + "moving" = 'sound/vox_fem/moving.ogg', "multitude" = 'sound/vox_fem/multitude.ogg', "murder" = 'sound/vox_fem/murder.ogg', "murderer" = 'sound/vox_fem/murderer.ogg', @@ -613,7 +763,9 @@ GLOBAL_LIST_INIT(vox_sounds, list( "mythic" = 'sound/vox_fem/mythic.ogg', "n" = 'sound/vox_fem/n.ogg', "nanotrasen" = 'sound/vox_fem/nanotrasen.ogg', + "near" = 'sound/vox_fem/near.ogg', "nearest" = 'sound/vox_fem/nearest.ogg', + "nearly" = 'sound/vox_fem/nearly.ogg', "need" = 'sound/vox_fem/need.ogg', "never" = 'sound/vox_fem/never.ogg', "nice" = 'sound/vox_fem/nice.ogg', @@ -624,16 +776,21 @@ GLOBAL_LIST_INIT(vox_sounds, list( "nitrogen" = 'sound/vox_fem/nitrogen.ogg', "no" = 'sound/vox_fem/no.ogg', "nominal" = 'sound/vox_fem/nominal.ogg', + "none" = 'sound/vox_fem/none.ogg', + "normal" = 'sound/vox_fem/normal.ogg', + "normally" = 'sound/vox_fem/normally.ogg', "north" = 'sound/vox_fem/north.ogg', "northeast" = 'sound/vox_fem/northeast.ogg', "northwest" = 'sound/vox_fem/northwest.ogg', "not" = 'sound/vox_fem/not.ogg', + "notably" = 'sound/vox_fem/notably.ogg', "november" = 'sound/vox_fem/november.ogg', "now" = 'sound/vox_fem/now.ogg', "nuclear" = 'sound/vox_fem/nuclear.ogg', "nuke" = 'sound/vox_fem/nuke.ogg', "number" = 'sound/vox_fem/number.ogg', "o" = 'sound/vox_fem/o.ogg', + "object" = 'sound/vox_fem/object.ogg', "objective" = 'sound/vox_fem/objective.ogg', "obliterate" = 'sound/vox_fem/obliterate.ogg', "obliterated" = 'sound/vox_fem/obliterated.ogg', @@ -660,13 +817,17 @@ GLOBAL_LIST_INIT(vox_sounds, list( "option" = 'sound/vox_fem/option.ogg', "or" = 'sound/vox_fem/or.ogg', "order" = 'sound/vox_fem/order.ogg', + "ordered" = 'sound/vox_fem/ordered.ogg', + "ordering" = 'sound/vox_fem/ordering.ogg', "organic" = 'sound/vox_fem/organic.ogg', "oscar" = 'sound/vox_fem/oscar.ogg', "out" = 'sound/vox_fem/out.ogg', + "output" = 'sound/vox_fem/output.ogg', "outside" = 'sound/vox_fem/outside.ogg', "over" = 'sound/vox_fem/over.ogg', "overload" = 'sound/vox_fem/overload.ogg', "override" = 'sound/vox_fem/override.ogg', + "own" = 'sound/vox_fem/own.ogg', "oxygen" = 'sound/vox_fem/oxygen.ogg', "p" = 'sound/vox_fem/p.ogg', "pacification" = 'sound/vox_fem/pacification.ogg', @@ -676,6 +837,7 @@ GLOBAL_LIST_INIT(vox_sounds, list( "panel" = 'sound/vox_fem/panel.ogg', "panting" = 'sound/vox_fem/panting.ogg', "pathetic" = 'sound/vox_fem/pathetic.ogg', + "pda" = 'sound/vox_fem/pda.ogg', "percent" = 'sound/vox_fem/percent.ogg', "perfect" = 'sound/vox_fem/perfect.ogg', "perhaps" = 'sound/vox_fem/perhaps.ogg', @@ -690,28 +852,46 @@ GLOBAL_LIST_INIT(vox_sounds, list( "plasma" = 'sound/vox_fem/plasma.ogg', "plasmaman" = 'sound/vox_fem/plasmaman.ogg', "platform" = 'sound/vox_fem/platform.ogg', + "plating" = 'sound/vox_fem/plating.ogg', "plausible" = 'sound/vox_fem/plausible.ogg', "please" = 'sound/vox_fem/please.ogg', + "pluoxium" = 'sound/vox_fem/pluoxium.ogg', "point" = 'sound/vox_fem/point.ogg', "port" = 'sound/vox_fem/port.ogg', "portal" = 'sound/vox_fem/portal.ogg', + "portion" = 'sound/vox_fem/portion.ogg', "possible" = 'sound/vox_fem/possible.ogg', "power" = 'sound/vox_fem/power.ogg', + "powered" = 'sound/vox_fem/powered.ogg', + "powering" = 'sound/vox_fem/powering.ogg', + "premature" = 'sound/vox_fem/premature.ogg', + "prematurely" = 'sound/vox_fem/prematurely.ogg', "presence" = 'sound/vox_fem/presence.ogg', "present" = 'sound/vox_fem/present.ogg', "presents" = 'sound/vox_fem/presents.ogg', "press" = 'sound/vox_fem/press.ogg', "pressure" = 'sound/vox_fem/pressure.ogg', "primary" = 'sound/vox_fem/primary.ogg', + "priority" = 'sound/vox_fem/priority.ogg', "prison" = 'sound/vox_fem/prison.ogg', "prisoner" = 'sound/vox_fem/prisoner.ogg', "proceed" = 'sound/vox_fem/proceed.ogg', "processing" = 'sound/vox_fem/processing.ogg', "progress" = 'sound/vox_fem/progress.ogg', + "projectile" = 'sound/vox_fem/projectile.ogg', "proper" = 'sound/vox_fem/proper.ogg', "propulsion" = 'sound/vox_fem/propulsion.ogg', "prosecute" = 'sound/vox_fem/prosecute.ogg', + "protect" = 'sound/vox_fem/protect.ogg', + "protected" = 'sound/vox_fem/protected.ogg', + "protection" = 'sound/vox_fem/protection.ogg', "protective" = 'sound/vox_fem/protective.ogg', + "proto-nitrate" = 'sound/vox_fem/proto-nitrate.ogg', + "pull" = 'sound/vox_fem/pull.ogg', + "pulled" = 'sound/vox_fem/pulled.ogg', + "pulling" = 'sound/vox_fem/pulling.ogg', + "pump" = 'sound/vox_fem/pump.ogg', + "pumps" = 'sound/vox_fem/pumps.ogg', "push" = 'sound/vox_fem/push.ogg', "put" = 'sound/vox_fem/put.ogg', "q" = 'sound/vox_fem/q.ogg', @@ -737,9 +917,14 @@ GLOBAL_LIST_INIT(vox_sounds, list( "reactor" = 'sound/vox_fem/reactor.ogg', "red" = 'sound/vox_fem/red.ogg', "relay" = 'sound/vox_fem/relay.ogg', + "release" = 'sound/vox_fem/release.ogg', "released" = 'sound/vox_fem/released.ogg', + "releasing" = 'sound/vox_fem/releasing.ogg', "remaining" = 'sound/vox_fem/remaining.ogg', "removal" = 'sound/vox_fem/removal.ogg', + "remove" = 'sound/vox_fem/remove.ogg', + "removed" = 'sound/vox_fem/removed.ogg', + "removing" = 'sound/vox_fem/removing.ogg', "renegade" = 'sound/vox_fem/renegade.ogg', "repair" = 'sound/vox_fem/repair.ogg', "report" = 'sound/vox_fem/report.ogg', @@ -752,6 +937,9 @@ GLOBAL_LIST_INIT(vox_sounds, list( "research" = 'sound/vox_fem/research.ogg', "resevoir" = 'sound/vox_fem/resevoir.ogg', "resistance" = 'sound/vox_fem/resistance.ogg', + "resistant" = 'sound/vox_fem/resistant.ogg', + "resisting" = 'sound/vox_fem/resisting.ogg', + "resonance" = 'sound/vox_fem/resonance.ogg', "rest" = 'sound/vox_fem/rest.ogg', "restoration" = 'sound/vox_fem/restoration.ogg', "revolution" = 'sound/vox_fem/revolution.ogg', @@ -770,18 +958,28 @@ GLOBAL_LIST_INIT(vox_sounds, list( "runtime" = 'sound/vox_fem/runtime.ogg', "s" = 'sound/vox_fem/s.ogg', "sabotage" = 'sound/vox_fem/sabotage.ogg', + "sabotaged" = 'sound/vox_fem/sabotaged.ogg', + "sabotaging" = 'sound/vox_fem/sabotaging.ogg', "safe" = 'sound/vox_fem/safe.ogg', "safety" = 'sound/vox_fem/safety.ogg', "sairhorn" = 'sound/vox_fem/sairhorn.ogg', + "same" = 'sound/vox_fem/same.ogg', "sarah" = 'sound/vox_fem/sarah.ogg', "sargeant" = 'sound/vox_fem/sargeant.ogg', "satellite" = 'sound/vox_fem/satellite.ogg', "save" = 'sound/vox_fem/save.ogg', + "saw" = 'sound/vox_fem/saw.ogg', + "scan" = 'sound/vox_fem/scan.ogg', + "scanned" = 'sound/vox_fem/scanned.ogg', + "scanner" = 'sound/vox_fem/scanner.ogg', + "scanners" = 'sound/vox_fem/scanners.ogg', + "scanning" = 'sound/vox_fem/scanning.ogg', "scensor" = 'sound/vox_fem/scensor.ogg', "science" = 'sound/vox_fem/science.ogg', "scientist" = 'sound/vox_fem/scientist.ogg', "scream" = 'sound/vox_fem/scream.ogg', "screen" = 'sound/vox_fem/screen.ogg', + "screw" = 'sound/vox_fem/screw.ogg', "search" = 'sound/vox_fem/search.ogg', "second" = 'sound/vox_fem/second.ogg', "secondary" = 'sound/vox_fem/secondary.ogg', @@ -791,21 +989,32 @@ GLOBAL_LIST_INIT(vox_sounds, list( "secure" = 'sound/vox_fem/secure.ogg', "secured" = 'sound/vox_fem/secured.ogg', "security" = 'sound/vox_fem/security.ogg', + "seen" = 'sound/vox_fem/seen.ogg', "select" = 'sound/vox_fem/select.ogg', "selected" = 'sound/vox_fem/selected.ogg', "self" = 'sound/vox_fem/self.ogg', "sensors" = 'sound/vox_fem/sensors.ogg', "server" = 'sound/vox_fem/server.ogg', "service" = 'sound/vox_fem/service.ogg', + "set" = 'sound/vox_fem/set.ogg', "seven" = 'sound/vox_fem/seven.ogg', "seventeen" = 'sound/vox_fem/seventeen.ogg', "seventy" = 'sound/vox_fem/seventy.ogg', + "sever" = 'sound/vox_fem/sever.ogg', "severe" = 'sound/vox_fem/severe.ogg', + "severed" = 'sound/vox_fem/severed.ogg', + "severing" = 'sound/vox_fem/severing.ogg', "sewage" = 'sound/vox_fem/sewage.ogg', "sewer" = 'sound/vox_fem/sewer.ogg', "shaft" = 'sound/vox_fem/shaft.ogg', + "shame" = 'sound/vox_fem/shame.ogg', + "shameful" = 'sound/vox_fem/shameful.ogg', + "shameless" = 'sound/vox_fem/shameless.ogg', + "shard" = 'sound/vox_fem/shard.ogg', "she" = 'sound/vox_fem/she.ogg', "shield" = 'sound/vox_fem/shield.ogg', + "shift" = 'sound/vox_fem/shift.ogg', + "shifts" = 'sound/vox_fem/shifts.ogg', "shipment" = 'sound/vox_fem/shipment.ogg', "shirt" = 'sound/vox_fem/shirt.ogg', "shit" = 'sound/vox_fem/shit.ogg', @@ -820,11 +1029,15 @@ GLOBAL_LIST_INIT(vox_sounds, list( "shuttle" = 'sound/vox_fem/shuttle.ogg', "sick" = 'sound/vox_fem/sick.ogg', "side" = 'sound/vox_fem/side.ogg', + "sides" = 'sound/vox_fem/sides.ogg', "sierra" = 'sound/vox_fem/sierra.ogg', "sight" = 'sound/vox_fem/sight.ogg', "silicon" = 'sound/vox_fem/silicon.ogg', "silo" = 'sound/vox_fem/silo.ogg', + "single" = 'sound/vox_fem/single.ogg', "singularity" = 'sound/vox_fem/singularity.ogg', + "siphon" = 'sound/vox_fem/siphon.ogg', + "siphoning" = 'sound/vox_fem/siphoning.ogg', "six" = 'sound/vox_fem/six.ogg', "sixteen" = 'sound/vox_fem/sixteen.ogg', "sixty" = 'sound/vox_fem/sixty.ogg', @@ -837,6 +1050,7 @@ GLOBAL_LIST_INIT(vox_sounds, list( "sm" = 'sound/vox_fem/sm.ogg', "small" = 'sound/vox_fem/small.ogg', "sockmuncher" = 'sound/vox_fem/sockmuncher.ogg', + "soft" = 'sound/vox_fem/soft.ogg', "solar" = 'sound/vox_fem/solar.ogg', "solars" = 'sound/vox_fem/solars.ogg', "soldier" = 'sound/vox_fem/soldier.ogg', @@ -845,16 +1059,23 @@ GLOBAL_LIST_INIT(vox_sounds, list( "something" = 'sound/vox_fem/something.ogg', "son" = 'sound/vox_fem/son.ogg', "sorry" = 'sound/vox_fem/sorry.ogg', + "source" = 'sound/vox_fem/source.ogg', "south" = 'sound/vox_fem/south.ogg', "southeast" = 'sound/vox_fem/southeast.ogg', "southwest" = 'sound/vox_fem/southwest.ogg', "space" = 'sound/vox_fem/space.ogg', + "special" = 'sound/vox_fem/special.ogg', + "spew" = 'sound/vox_fem/spew.ogg', "squad" = 'sound/vox_fem/squad.ogg', "square" = 'sound/vox_fem/square.ogg', "ss13" = 'sound/vox_fem/ss13.ogg', "stairway" = 'sound/vox_fem/stairway.ogg', "starboard" = 'sound/vox_fem/starboard.ogg', + "start" = 'sound/vox_fem/start.ogg', + "starts" = 'sound/vox_fem/starts.ogg', "station" = 'sound/vox_fem/station.ogg', + "stations" = 'sound/vox_fem/stations.ogg', + "stationwide" = 'sound/vox_fem/stationwide.ogg', "status" = 'sound/vox_fem/status.ogg', "stay" = 'sound/vox_fem/stay.ogg', "sterile" = 'sound/vox_fem/sterile.ogg', @@ -865,9 +1086,12 @@ GLOBAL_LIST_INIT(vox_sounds, list( "stuck" = 'sound/vox_fem/stuck.ogg', "sub" = 'sound/vox_fem/sub.ogg', "subsurface" = 'sound/vox_fem/subsurface.ogg', + "such" = 'sound/vox_fem/such.ogg', "sudden" = 'sound/vox_fem/sudden.ogg', "suffer" = 'sound/vox_fem/suffer.ogg', "suit" = 'sound/vox_fem/suit.ogg', + "suited" = 'sound/vox_fem/suited.ogg', + "super" = 'sound/vox_fem/super.ogg', "superconducting" = 'sound/vox_fem/superconducting.ogg', "supercooled" = 'sound/vox_fem/supercooled.ogg', "supermatter" = 'sound/vox_fem/supermatter.ogg', @@ -904,6 +1128,7 @@ GLOBAL_LIST_INIT(vox_sounds, list( "terminate" = 'sound/vox_fem/terminate.ogg', "terminated" = 'sound/vox_fem/terminated.ogg', "termination" = 'sound/vox_fem/termination.ogg', + "tesla" = 'sound/vox_fem/tesla.ogg', "test" = 'sound/vox_fem/test.ogg', "text" = 'sound/vox_fem/text.ogg', "thank" = 'sound/vox_fem/thank.ogg', @@ -924,23 +1149,33 @@ GLOBAL_LIST_INIT(vox_sounds, list( "threat" = 'sound/vox_fem/threat.ogg', "three" = 'sound/vox_fem/three.ogg', "through" = 'sound/vox_fem/through.ogg', + "tick" = 'sound/vox_fem/tick.ogg', "tide" = 'sound/vox_fem/tide.ogg', + "tile" = 'sound/vox_fem/tile.ogg', "time" = 'sound/vox_fem/time.ogg', "tiny" = 'sound/vox_fem/tiny.ogg', "to" = 'sound/vox_fem/to.ogg', "top" = 'sound/vox_fem/top.ogg', "topside" = 'sound/vox_fem/topside.ogg', "touch" = 'sound/vox_fem/touch.ogg', + "touched" = 'sound/vox_fem/touched.ogg', + "touching" = 'sound/vox_fem/touching.ogg', "towards" = 'sound/vox_fem/towards.ogg', "toxins" = 'sound/vox_fem/toxins.ogg', "track" = 'sound/vox_fem/track.ogg', "train" = 'sound/vox_fem/train.ogg', "traitor" = 'sound/vox_fem/traitor.ogg', "transportation" = 'sound/vox_fem/transportation.ogg', + "trigger" = 'sound/vox_fem/trigger.ogg', + "triggered" = 'sound/vox_fem/triggered.ogg', + "triggering" = 'sound/vox_fem/triggering.ogg', + "triple" = 'sound/vox_fem/triple.ogg', + "tritium" = 'sound/vox_fem/tritium.ogg', "truck" = 'sound/vox_fem/truck.ogg', "true" = 'sound/vox_fem/true.ogg', "tunnel" = 'sound/vox_fem/tunnel.ogg', "turn" = 'sound/vox_fem/turn.ogg', + "turned" = 'sound/vox_fem/turned.ogg', "turret" = 'sound/vox_fem/turret.ogg', "twelve" = 'sound/vox_fem/twelve.ogg', "twenty" = 'sound/vox_fem/twenty.ogg', @@ -952,10 +1187,13 @@ GLOBAL_LIST_INIT(vox_sounds, list( "unauthorized" = 'sound/vox_fem/unauthorized.ogg', "under" = 'sound/vox_fem/under.ogg', "uniform" = 'sound/vox_fem/uniform.ogg', + "unique" = 'sound/vox_fem/unique.ogg', "unknown" = 'sound/vox_fem/unknown.ogg', "unlocked" = 'sound/vox_fem/unlocked.ogg', "unsafe" = 'sound/vox_fem/unsafe.ogg', "until" = 'sound/vox_fem/until.ogg', + "unwrench" = 'sound/vox_fem/unwrench.ogg', + "unwrenching" = 'sound/vox_fem/unwrenching.ogg', "up" = 'sound/vox_fem/up.ogg', "update" = 'sound/vox_fem/update.ogg', "updated" = 'sound/vox_fem/updated.ogg', @@ -967,6 +1205,8 @@ GLOBAL_LIST_INIT(vox_sounds, list( "usa" = 'sound/vox_fem/usa.ogg', "use" = 'sound/vox_fem/use.ogg', "used" = 'sound/vox_fem/used.ogg', + "useful" = 'sound/vox_fem/useful.ogg', + "useless" = 'sound/vox_fem/useless.ogg', "user" = 'sound/vox_fem/user.ogg', "v" = 'sound/vox_fem/v.ogg', "vacate" = 'sound/vox_fem/vacate.ogg', @@ -987,8 +1227,8 @@ GLOBAL_LIST_INIT(vox_sounds, list( "vitals" = 'sound/vox_fem/vitals.ogg', "voltage" = 'sound/vox_fem/voltage.ogg', "vox" = 'sound/vox_fem/vox.ogg', - "vox_login" = 'sound/vox_fem/vox_login.ogg', "voxtest" = 'sound/vox_fem/voxtest.ogg', + "vox_login" = 'sound/vox_fem/vox_login.ogg', "w" = 'sound/vox_fem/w.ogg', "walk" = 'sound/vox_fem/walk.ogg', "wall" = 'sound/vox_fem/wall.ogg', @@ -1002,15 +1242,19 @@ GLOBAL_LIST_INIT(vox_sounds, list( "was" = 'sound/vox_fem/was.ogg', "waste" = 'sound/vox_fem/waste.ogg', "water" = 'sound/vox_fem/water.ogg', + "way" = 'sound/vox_fem/way.ogg', + "ways" = 'sound/vox_fem/ways.ogg', "we" = 'sound/vox_fem/we.ogg', "weak" = 'sound/vox_fem/weak.ogg', "weapon" = 'sound/vox_fem/weapon.ogg', "welcome" = 'sound/vox_fem/welcome.ogg', + "weld" = 'sound/vox_fem/weld.ogg', "west" = 'sound/vox_fem/west.ogg', "wew" = 'sound/vox_fem/wew.ogg', "what" = 'sound/vox_fem/what.ogg', "when" = 'sound/vox_fem/when.ogg', "where" = 'sound/vox_fem/where.ogg', + "which" = 'sound/vox_fem/which.ogg', "while" = 'sound/vox_fem/while.ogg', "whiskey" = 'sound/vox_fem/whiskey.ogg', "white" = 'sound/vox_fem/white.ogg', @@ -1025,7 +1269,15 @@ GLOBAL_LIST_INIT(vox_sounds, list( "wood" = 'sound/vox_fem/wood.ogg', "woody" = 'sound/vox_fem/woody.ogg', "woop" = 'sound/vox_fem/woop.ogg', + "work" = 'sound/vox_fem/work.ogg', + "worked" = 'sound/vox_fem/worked.ogg', + "working" = 'sound/vox_fem/working.ogg', + "works" = 'sound/vox_fem/works.ogg', + "would" = 'sound/vox_fem/would.ogg', + "wouldnt" = 'sound/vox_fem/wouldnt.ogg', "wow" = 'sound/vox_fem/wow.ogg', + "wrench" = 'sound/vox_fem/wrench.ogg', + "wrenching" = 'sound/vox_fem/wrenching.ogg', "x" = 'sound/vox_fem/x.ogg', "xeno" = 'sound/vox_fem/xeno.ogg', "xenobiology" = 'sound/vox_fem/xenobiology.ogg', @@ -1041,6 +1293,8 @@ GLOBAL_LIST_INIT(vox_sounds, list( "your" = 'sound/vox_fem/your.ogg', "yourself" = 'sound/vox_fem/yourself.ogg', "z" = 'sound/vox_fem/z.ogg', + "zap" = 'sound/vox_fem/zap.ogg', + "zauker" = 'sound/vox_fem/zauker.ogg', "zero" = 'sound/vox_fem/zero.ogg', "zombie" = 'sound/vox_fem/zombie.ogg', "zone" = 'sound/vox_fem/zone.ogg', diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 4fc4bd5d8c15d..1721d6ec2c102 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -53,17 +53,9 @@ var/list/ride_offset_y = list("north" = 4, "south" = 4, "east" = 3, "west" = 3) ///List of skins the borg can be reskinned to, optional var/list/borg_skins - ///Omnitoolbox, holder of certain borg tools. Not all models have one - var/obj/item/cyborg_omnitoolbox/toolbox - ///Path to toolbox, if a model gets one - var/toolbox_path /obj/item/robot_model/Initialize(mapload) . = ..() - - if(toolbox_path) - toolbox = new toolbox_path(src) - for(var/path in basic_modules) var/obj/item/new_module = new path(src) basic_modules += new_module @@ -406,7 +398,6 @@ model_select_icon = "engineer" model_traits = list(TRAIT_NEGATES_GRAVITY) hat_offset = -4 - toolbox_path = /obj/item/cyborg_omnitoolbox/engineering /obj/item/robot_model/janitor name = "Janitor" @@ -687,7 +678,6 @@ /obj/item/reagent_containers/syringe, /obj/item/borg/cyborg_omnitool/medical, /obj/item/borg/cyborg_omnitool/medical, - /obj/item/surgical_drapes/cyborg, /obj/item/blood_filter, /obj/item/extinguisher/mini, /obj/item/emergency_bed/silicon, @@ -705,7 +695,6 @@ model_select_icon = "medical" model_traits = list(TRAIT_PUSHIMMUNE) hat_offset = 3 - toolbox_path = /obj/item/cyborg_omnitoolbox/medical borg_skins = list( "Machinified Doctor" = list(SKIN_ICON_STATE = "medical"), "Qualified Doctor" = list(SKIN_ICON_STATE = "qualified_doctor"), @@ -888,7 +877,6 @@ /obj/item/healthanalyzer, /obj/item/borg/cyborg_omnitool/medical, /obj/item/borg/cyborg_omnitool/medical, - /obj/item/surgical_drapes/cyborg, /obj/item/blood_filter, /obj/item/melee/energy/sword/cyborg/saw, /obj/item/emergency_bed/silicon, @@ -904,7 +892,6 @@ model_select_icon = "malf" model_traits = list(TRAIT_PUSHIMMUNE) hat_offset = 3 - toolbox_path = /obj/item/cyborg_omnitoolbox/medical /obj/item/robot_model/saboteur name = "Syndicate Saboteur" @@ -934,7 +921,6 @@ model_select_icon = "malf" model_traits = list(TRAIT_PUSHIMMUNE, TRAIT_NEGATES_GRAVITY) hat_offset = -4 - toolbox_path = /obj/item/cyborg_omnitoolbox/engineering canDispose = TRUE /obj/item/robot_model/syndicate/kiltborg diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 6d94c2c5be978..9ca655740cd08 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -76,6 +76,7 @@ TRAIT_MARTIAL_ARTS_IMMUNE, TRAIT_NOFIRE_SPREAD, TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, + TRAIT_FENCE_CLIMBER, ) add_traits(traits_to_apply, ROUNDSTART_TRAIT) diff --git a/code/modules/mob/living/silicon/silicon_say.dm b/code/modules/mob/living/silicon/silicon_say.dm index 1468b9c736591..9310211aa0e6d 100644 --- a/code/modules/mob/living/silicon/silicon_say.dm +++ b/code/modules/mob/living/silicon/silicon_say.dm @@ -70,6 +70,9 @@ ) /mob/living/silicon/binarycheck() + var/area/our_area = get_area(src) + if(our_area.area_flags & BINARY_JAMMING) + return FALSE return TRUE /mob/living/silicon/radio(message, list/message_mods = list(), list/spans, language) diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index a349ca6499598..80e2b8c0c8343 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -494,8 +494,8 @@ if(!can_finish_build(I, user)) return to_chat(user, span_notice("You add the [I] to [src]! Beep Boop!")) - var/mob/living/simple_animal/bot/firebot/F = new(drop_location()) - F.name = created_name + var/mob/living/basic/bot/firebot/firebot = new(drop_location()) + firebot.name = created_name qdel(I) qdel(src) diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm deleted file mode 100644 index db883e9141b1f..0000000000000 --- a/code/modules/mob/living/simple_animal/bot/firebot.dm +++ /dev/null @@ -1,320 +0,0 @@ -//Firebot - -#define SPEECH_INTERVAL 300 // Time between idle speeches -#define DETECTED_VOICE_INTERVAL 300 // Time between fire detected callouts -#define FOAM_INTERVAL 50 // Time between deployment of fire fighting foam - -/mob/living/simple_animal/bot/firebot - name = "\improper Firebot" - desc = "A little fire extinguishing bot. He looks rather anxious." - icon = 'icons/mob/silicon/aibots.dmi' - icon_state = "firebot1" - light_color = "#8cffc9" - light_power = 0.8 - density = FALSE - anchored = FALSE - health = 25 - maxHealth = 25 - - req_one_access = list(ACCESS_ROBOTICS, ACCESS_CONSTRUCTION) - radio_key = /obj/item/encryptionkey/headset_eng - radio_channel = RADIO_CHANNEL_ENGINEERING - bot_type = FIRE_BOT - hackables = "fire safety protocols" - path_image_color = "#FFA500" - possessed_message = "You are a firebot! Protect the station from fires to the best of your ability!" - - automated_announcements = list( - FIREBOT_VOICED_FIRE_DETECTED = 'sound/voice/firebot/detected.ogg', - FIREBOT_VOICED_STOP_DROP = 'sound/voice/firebot/stopdropnroll.ogg', - FIREBOT_VOICED_EXTINGUISHING = 'sound/voice/firebot/extinguishing.ogg', - FIREBOT_VOICED_NO_FIRES = 'sound/voice/firebot/nofires.ogg', - FIREBOT_VOICED_ONLY_YOU = 'sound/voice/firebot/onlyyou.ogg', - FIREBOT_VOICED_TEMPERATURE_NOMINAL = 'sound/voice/firebot/tempnominal.ogg', - FIREBOT_VOICED_KEEP_COOL = 'sound/voice/firebot/keepitcool.ogg', - ) - - var/atom/target_fire - var/atom/old_target_fire - - var/obj/item/extinguisher/internal_ext - - var/last_found = 0 - - var/speech_cooldown = 0 - var/detected_cooldown = 0 - COOLDOWN_DECLARE(foam_cooldown) - - var/extinguish_people = TRUE - var/extinguish_fires = TRUE - var/stationary_mode = FALSE - -/mob/living/simple_animal/bot/firebot/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) - update_appearance(UPDATE_ICON) - - // Doing this hurts my soul, but simplebot access reworks are for another day. - var/datum/id_trim/job/engi_trim = SSid_access.trim_singletons_by_path[/datum/id_trim/job/station_engineer] - access_card.add_access(engi_trim.access + engi_trim.wildcard_access) - prev_access = access_card.access.Copy() - - create_extinguisher() - AddElement(/datum/element/atmos_sensitive, mapload) - -/mob/living/simple_animal/bot/firebot/Destroy() - QDEL_NULL(internal_ext) - return ..() - -/mob/living/simple_animal/bot/firebot/bot_reset() - create_extinguisher() - -/mob/living/simple_animal/bot/firebot/proc/create_extinguisher() - internal_ext = new /obj/item/extinguisher(src) - internal_ext.safety = FALSE - internal_ext.precision = TRUE - internal_ext.max_water = INFINITY - internal_ext.refill() - -/mob/living/simple_animal/bot/firebot/UnarmedAttack(atom/A, proximity_flag, list/modifiers) - if(!(bot_mode_flags & BOT_MODE_ON)) - return - if(!can_unarmed_attack()) - return - if(internal_ext) - internal_ext.interact_with_atom(A, src, modifiers) - else - return ..() - -/mob/living/simple_animal/bot/firebot/RangedAttack(atom/A, proximity_flag, list/modifiers) - if(!(bot_mode_flags & BOT_MODE_ON)) - return - if(internal_ext) - internal_ext.interact_with_atom(A, src, modifiers) - else - return ..() - -/mob/living/simple_animal/bot/firebot/turn_on() - . = ..() - update_appearance() - -/mob/living/simple_animal/bot/firebot/turn_off() - ..() - update_appearance() - -/mob/living/simple_animal/bot/firebot/bot_reset() - ..() - target_fire = null - old_target_fire = null - set_anchored(FALSE) - update_appearance() - -/mob/living/simple_animal/bot/firebot/proc/soft_reset() - path = list() - target_fire = null - mode = BOT_IDLE - last_found = world.time - update_appearance() - -/mob/living/simple_animal/bot/firebot/emag_act(mob/user, obj/item/card/emag/emag_card) - . = ..() - if(!(bot_cover_flags & BOT_COVER_EMAGGED)) - return - - to_chat(user, span_warning("You enable the very ironically named \"fighting with fire\" mode, and disable the targeting safeties.")) // heheehe. funny - - audible_message(span_danger("[src] buzzes oddly!")) - playsound(src, SFX_SPARKS, 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - if(user) - old_target_fire = user - extinguish_fires = FALSE - extinguish_people = TRUE - - internal_ext = new /obj/item/extinguisher(src) - internal_ext.chem = /datum/reagent/clf3 //Refill the internal extinguisher with liquid fire - internal_ext.power = 3 - internal_ext.safety = FALSE - internal_ext.precision = FALSE - internal_ext.max_water = INFINITY - internal_ext.refill() - return TRUE - -// Variables sent to TGUI -/mob/living/simple_animal/bot/firebot/ui_data(mob/user) - var/list/data = ..() - if(!(bot_cover_flags & BOT_COVER_LOCKED) || HAS_SILICON_ACCESS(user)) - data["custom_controls"]["extinguish_fires"] = extinguish_fires - data["custom_controls"]["extinguish_people"] = extinguish_people - data["custom_controls"]["stationary_mode"] = stationary_mode - return data - -// Actions received from TGUI -/mob/living/simple_animal/bot/firebot/ui_act(action, params) - . = ..() - if(. || (bot_cover_flags & BOT_COVER_LOCKED && !HAS_SILICON_ACCESS(usr))) - return - - switch(action) - if("extinguish_fires") - extinguish_fires = !extinguish_fires - if("extinguish_people") - extinguish_people = !extinguish_people - if("stationary_mode") - stationary_mode = !stationary_mode - update_appearance() - -/mob/living/simple_animal/bot/firebot/proc/is_burning(atom/target) - if(ismob(target)) - var/mob/living/M = target - if(M.on_fire || (bot_cover_flags & BOT_COVER_EMAGGED && !M.on_fire)) - return TRUE - - else if(isturf(target)) - var/turf/open/T = target - if(T.active_hotspot) - return TRUE - - return FALSE - -/mob/living/simple_animal/bot/firebot/handle_automated_action() - if(!..()) - return - - if(IsStun() || IsParalyzed()) - old_target_fire = target_fire - target_fire = null - mode = BOT_IDLE - return - - if(prob(1) && target_fire == null) - var/static/list/idle_line = list( - FIREBOT_VOICED_NO_FIRES, - FIREBOT_VOICED_ONLY_YOU, - FIREBOT_VOICED_TEMPERATURE_NOMINAL, - FIREBOT_VOICED_KEEP_COOL, - ) - speak(pick(idle_line)) - - // Couldn't reach the target, reset and try again ignoring the old one - if(frustration > 8) - old_target_fire = target_fire - soft_reset() - - // We extinguished our target or it was deleted - if(QDELETED(target_fire) || !is_burning(target_fire) || isdead(target_fire)) - target_fire = null - var/scan_range = (stationary_mode ? 1 : DEFAULT_SCAN_RANGE) - - var/list/things_to_extinguish = list() - if(extinguish_people) - things_to_extinguish += list(/mob/living) - - if(target_fire == null && extinguish_fires) - things_to_extinguish += list(/turf/open) - - target_fire = scan(things_to_extinguish, old_target_fire, scan_range) // Scan for burning turfs second - old_target_fire = target_fire - - // Target reached ENGAGE WATER CANNON - if(target_fire && (get_dist(src, target_fire) <= (bot_cover_flags & BOT_COVER_EMAGGED ? 1 : 2))) // Make the bot spray water from afar when not emagged - if((speech_cooldown + SPEECH_INTERVAL) < world.time) - if(ishuman(target_fire)) - speak(FIREBOT_VOICED_STOP_DROP) - else - speak(FIREBOT_VOICED_EXTINGUISHING) - speech_cooldown = world.time - - flick("firebot1_use", src) - spray_water(target_fire, src) - - soft_reset() - - // Target ran away - else if(target_fire && path.len && (get_dist(target_fire,path[path.len]) > 2)) - path = list() - mode = BOT_IDLE - last_found = world.time - - else if(target_fire && stationary_mode) - soft_reset() - return - - if(target_fire && (get_dist(src, target_fire) > 2)) - - path = get_path_to(src, target_fire, max_distance=30, mintargetdist=1, access=access_card.GetAccess()) - mode = BOT_MOVING - if(!path.len) - soft_reset() - - if(path.len > 0 && target_fire) - if(!bot_move(path[path.len])) - old_target_fire = target_fire - soft_reset() - return - - // We got a target but it's too far away from us - if(path.len > 8 && target_fire) - frustration++ - - if(bot_mode_flags & BOT_MODE_AUTOPATROL && !target_fire) - switch(mode) - if(BOT_IDLE, BOT_START_PATROL) - start_patrol() - if(BOT_PATROL) - bot_patrol() - - -//Look for burning people or turfs around the bot -/mob/living/simple_animal/bot/firebot/process_scan(atom/scan_target) - if(!is_burning(scan_target)) - return null - - if((detected_cooldown + DETECTED_VOICE_INTERVAL) < world.time) - speak(FIREBOT_VOICED_FIRE_DETECTED) - detected_cooldown = world.time - return scan_target - -/mob/living/simple_animal/bot/firebot/should_atmos_process(datum/gas_mixture/air, exposed_temperature) - return (exposed_temperature > T0C + 200 || exposed_temperature < BODYTEMP_COLD_DAMAGE_LIMIT) - -/mob/living/simple_animal/bot/firebot/atmos_expose(datum/gas_mixture/air, exposed_temperature) - if(COOLDOWN_FINISHED(src, foam_cooldown)) - var/datum/effect_system/fluid_spread/foam/firefighting/foam = new - foam.set_up(3, holder = src, location = loc) - foam.start() - COOLDOWN_START(src, foam_cooldown, FOAM_INTERVAL) - -/mob/living/simple_animal/bot/firebot/proc/spray_water(atom/target, mob/user) - if(stationary_mode) - flick("firebots_use", user) - else - flick("firebot1_use", user) - internal_ext.interact_with_atom(target, src) - -/mob/living/simple_animal/bot/firebot/update_icon_state() - . = ..() - if(!(bot_mode_flags & BOT_MODE_ON)) - icon_state = "firebot0" - return - if(IsStun() || IsParalyzed() || stationary_mode) //Bot has yellow light to indicate stationary mode. - icon_state = "firebots1" - return - icon_state = "firebot1" - - -/mob/living/simple_animal/bot/firebot/explode() - var/atom/Tsec = drop_location() - - new /obj/item/assembly/prox_sensor(Tsec) - new /obj/item/clothing/head/utility/hardhat/red(Tsec) - - var/turf/T = get_turf(Tsec) - - if(isopenturf(T)) - var/turf/open/theturf = T - theturf.MakeSlippery(TURF_WET_WATER, min_wet_time = 10 SECONDS, wet_time_to_add = 5 SECONDS) - return ..() - -#undef SPEECH_INTERVAL -#undef DETECTED_VOICE_INTERVAL -#undef FOAM_INTERVAL diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index b4cafdb6d538d..4156d9678bca0 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -538,12 +538,12 @@ Difficulty: Hard /obj/effect/temp_visual/hierophant/wall/Initialize(mapload, new_caster) . = ..() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) QUEUE_SMOOTH(src) /obj/effect/temp_visual/hierophant/wall/Destroy() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm index 8fc667df5a876..464636cbb204d 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm @@ -187,11 +187,14 @@ Difficulty: Hard if(!true_spawn) return ..() + create_portal() + return ..() + +/mob/living/simple_animal/hostile/megafauna/wendigo/proc/create_portal() var/obj/effect/portal/permanent/one_way/exit = new /obj/effect/portal/permanent/one_way(starting) exit.id = "wendigo arena exit" exit.add_atom_colour(COLOR_RED_LIGHT, ADMIN_COLOUR_PRIORITY) exit.set_light(20, 1, COLOR_SOFT_RED) - return ..() /obj/projectile/colossus/wendigo_shockwave name = "wendigo shockwave" @@ -265,4 +268,7 @@ Difficulty: Hard w_class = WEIGHT_CLASS_TINY throwforce = 0 +/mob/living/simple_animal/hostile/megafauna/wendigo/noportal/create_portal() + return + #undef WENDIGO_ENRAGED 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 7139f6a92bfcd..ae0011f998a68 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 @@ -7,7 +7,7 @@ name = "elite" desc = "An elite monster, found in one of the strange tumors on lavaland." icon = 'icons/mob/simple/lavaland/lavaland_elites.dmi' - faction = list(FACTION_BOSS) + faction = list(FACTION_MINING, FACTION_BOSS) robust_searching = TRUE ranged_ignores_vision = TRUE ranged = TRUE @@ -272,8 +272,8 @@ While using this makes the system rely on OnFire, it still gives options for tim var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(mychild)) H.color = COLOR_RED -/obj/structure/elite_tumor/attackby(obj/item/attacking_item, mob/user, params) - . = ..() +/obj/structure/elite_tumor/item_interaction(mob/living/user, obj/item/attacking_item, list/modifiers) + . = NONE if(istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core) && activity == TUMOR_INACTIVE && !boosted) var/obj/item/organ/internal/monster_core/regenerative_core/core = attacking_item visible_message(span_boldwarning("As [user] drops the core into [src], [src] appears to swell.")) @@ -282,7 +282,7 @@ While using this makes the system rely on OnFire, it still gives options for tim set_light_range(6) desc = "[desc] This one seems to glow with a strong intensity." qdel(core) - return TRUE + return ITEM_INTERACT_SUCCESS /obj/structure/elite_tumor/proc/arena_checks() if(activity != TUMOR_ACTIVE || QDELETED(src)) @@ -408,12 +408,12 @@ While using this makes the system rely on OnFire, it still gives options for tim /obj/effect/temp_visual/elite_tumor_wall/Initialize(mapload, new_caster) . = ..() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) QUEUE_SMOOTH(src) /obj/effect/temp_visual/elite_tumor_wall/Destroy() - if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH_NEIGHBORS(src) return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/ooze.dm b/code/modules/mob/living/simple_animal/hostile/ooze.dm index e20ecc2337a4d..f69c010ac6bfb 100644 --- a/code/modules/mob/living/simple_animal/hostile/ooze.dm +++ b/code/modules/mob/living/simple_animal/hostile/ooze.dm @@ -375,7 +375,7 @@ name = "mending globule" icon_state = "glob_projectile" shrapnel_type = /obj/item/mending_globule - embedding = list("embed_chance" = 100, ignore_throwspeed_threshold = TRUE, "pain_mult" = 0, "jostle_pain_mult" = 0, "fall_chance" = 0.5) + embed_type = /datum/embed_data/mending_globule damage = 0 ///This item is what is embedded into the mob, and actually handles healing of mending globules @@ -384,10 +384,17 @@ desc = "It somehow heals those who touch it." icon = 'icons/obj/science/vatgrowing.dmi' icon_state = "globule" - embedding = list("embed_chance" = 100, ignore_throwspeed_threshold = TRUE, "pain_mult" = 0, "jostle_pain_mult" = 0, "fall_chance" = 0.5) + embed_type = /datum/embed_data/mending_globule var/obj/item/bodypart/bodypart var/heals_left = 35 +/datum/embed_data/mending_globule + embed_chance = 100 + ignore_throwspeed_threshold = TRUE + pain_mult = 0 + jostle_pain_mult = 0 + fall_chance = 0.5 + /obj/item/mending_globule/Destroy() . = ..() bodypart = null diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index e25a6f9b16e27..2fa18caf7bc20 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -1,4 +1,19 @@ // VENTCRAWLING + +/mob/living/proc/notify_ventcrawler_on_login() + var/ventcrawler = HAS_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS) || HAS_TRAIT(src, TRAIT_VENTCRAWLER_NUDE) + if(!ventcrawler) + return + to_chat(src, span_notice("You can ventcrawl! Use alt+click on vents to quickly travel about the station.")) + +/mob/living/carbon/human/notify_ventcrawler_on_login() + if(!ismonkey(src)) + return ..() + if(!istype(head, /obj/item/clothing/head/helmet/monkey_sentience)) //don't notify them about ventcrawling if they're wearing the sentience helmet, because they can't ventcrawl with it on, and if they take it off they'll no longer be in control of the mob. + return ..() + + + /// Checks if the mob is able to enter the vent, and provides feedback if they are unable to. /mob/living/proc/can_enter_vent(obj/machinery/atmospherics/components/ventcrawl_target, provide_feedback = TRUE) // Being able to always ventcrawl trumps being only able to ventcrawl when wearing nothing diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 2f013f855b855..a4964add6c865 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -99,7 +99,10 @@ update_client_colour() update_mouse_pointer() - refresh_looping_ambience() + update_ambience_area(get_area(src)) + + if(!can_hear()) + stop_sound_channel(CHANNEL_AMBIENCE) if(client) if(client.view_size) diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index cf937e42bb74f..09d50c8436c71 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -3,6 +3,7 @@ log_message("[key_name(src)] is no longer owning mob [src]([src.type])", LOG_OWNERSHIP) SStgui.on_logout(src) remove_from_player_list() + update_ambience_area(null) // Unset ambience vars so it plays again on login ..() if(loc) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 7dd1cf0d2880f..6ec820bc469c9 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -6,7 +6,6 @@ * * GLOB.dead_mob_list * * GLOB.alive_mob_list * * GLOB.all_clockwork_mobs - * * GLOB.mob_directory * * Unsets the focus var * @@ -67,7 +66,6 @@ * * Adds to global lists * * GLOB.mob_list - * * GLOB.mob_directory (by tag) * * GLOB.dead_mob_list - if mob is dead * * GLOB.alive_mob_list - if the mob is alive * @@ -441,88 +439,6 @@ return FALSE -/** - * Try to equip an item to a slot on the mob - * - * This is a SAFE proc. Use this instead of equip_to_slot()! - * - * set qdel_on_fail to have it delete W if it fails to equip - * - * set disable_warning to disable the 'you are unable to equip that' warning. - * - * unset redraw_mob to prevent the mob icons from being redrawn at the end. - * - * Initial is used to indicate whether or not this is the initial equipment (job datums etc) or just a player doing it - * - * set indirect_action to allow insertions into "soft" locked objects, things that are easily opened by the owning mob - */ -/mob/proc/equip_to_slot_if_possible(obj/item/W, slot, qdel_on_fail = FALSE, disable_warning = FALSE, redraw_mob = TRUE, bypass_equip_delay_self = FALSE, initial = FALSE, indirect_action = FALSE) - if(!istype(W) || QDELETED(W)) //This qdeleted is to prevent stupid behavior with things that qdel during init, like say stacks - return FALSE - if(!W.mob_can_equip(src, slot, disable_warning, bypass_equip_delay_self, indirect_action = indirect_action)) - if(qdel_on_fail) - qdel(W) - else if(!disable_warning) - to_chat(src, span_warning("You are unable to equip that!")) - return FALSE - equip_to_slot(W, slot, initial, redraw_mob, indirect_action = indirect_action) //This proc should not ever fail. - return TRUE - -/** - * Actually equips an item to a slot (UNSAFE) - * - * This is an UNSAFE proc. It merely handles the actual job of equipping. All the checks on - * whether you can or can't equip need to be done before! Use mob_can_equip() for that task. - * - *In most cases you will want to use equip_to_slot_if_possible() - */ -/mob/proc/equip_to_slot(obj/item/equipping, slot, initial = FALSE, redraw_mob = FALSE, indirect_action = FALSE) - return - -/** - * Equip an item to the slot or delete - * - * This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to - * equip people when the round starts and when events happen and such. - * - * Also bypasses equip delay checks, since the mob isn't actually putting it on. - * Initial is used to indicate whether or not this is the initial equipment (job datums etc) or just a player doing it - * set indirect_action to allow insertions into "soft" locked objects, things that are easily opened by the owning mob - */ -/mob/proc/equip_to_slot_or_del(obj/item/W, slot, initial = FALSE, indirect_action = FALSE) - return equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, TRUE, initial, indirect_action) - -/** - * Auto equip the passed in item the appropriate slot based on equipment priority - * - * puts the item "W" into an appropriate slot in a human's inventory - * - * returns 0 if it cannot, 1 if successful - */ -/mob/proc/equip_to_appropriate_slot(obj/item/W, qdel_on_fail = FALSE, indirect_action = FALSE) - if(!istype(W)) - return FALSE - var/slot_priority = W.slot_equipment_priority - - if(!slot_priority) - slot_priority = list( \ - ITEM_SLOT_BACK, ITEM_SLOT_ID,\ - ITEM_SLOT_ICLOTHING, ITEM_SLOT_OCLOTHING,\ - ITEM_SLOT_MASK, ITEM_SLOT_HEAD, ITEM_SLOT_NECK,\ - ITEM_SLOT_FEET, ITEM_SLOT_GLOVES,\ - ITEM_SLOT_EARS, ITEM_SLOT_EYES,\ - ITEM_SLOT_BELT, ITEM_SLOT_SUITSTORE,\ - ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET,\ - ITEM_SLOT_DEX_STORAGE\ - ) - - for(var/slot in slot_priority) - if(equip_to_slot_if_possible(W, slot, disable_warning = TRUE, redraw_mob = TRUE, indirect_action = indirect_action)) - return TRUE - - if(qdel_on_fail) - qdel(W) - return FALSE /** * Reset the attached clients perspective (viewpoint) * @@ -889,10 +805,6 @@ set category = null return -///Is the mob muzzled (default false) -/mob/proc/is_muzzled() - return FALSE - /// Adds this list to the output to the stat browser /mob/proc/get_status_tab_items() . = list("") //we want to offset unique stuff from standard stuff @@ -1160,6 +1072,7 @@ * * ALLOW_VENTCRAWL - Mobs with ventcrawl traits can alt-click this to vent * * BYPASS_ADJACENCY - The target does not have to be adjacent * * SILENT_ADJACENCY - Adjacency is required but errors are not printed + * * NOT_INSIDE_TARGET - The target maybe adjacent but the mob should not be inside the target * * silence_adjacency: Sometimes we want to use this proc to check interaction without allowing it to throw errors for base case adjacency * Alt click uses this, as otherwise you can detect what is interactable from a distance via the error message diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index a0658c3a02b38..2206efd0e13ce 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -191,3 +191,6 @@ var/active_typing_indicator ///the icon currently used for the thinking indicator's bubble var/active_thinking_indicator + + /// A ref of the area we're taking our ambient loop from. + var/area/ambience_tracked_area diff --git a/code/modules/mob/mob_lists.dm b/code/modules/mob/mob_lists.dm index 9fd097a1fd6a4..f43f82ac24609 100644 --- a/code/modules/mob/mob_lists.dm +++ b/code/modules/mob/mob_lists.dm @@ -1,12 +1,10 @@ ///Adds the mob reference to the list and directory of all mobs. Called on Initialize(). /mob/proc/add_to_mob_list() GLOB.mob_list |= src - GLOB.mob_directory[tag] = src ///Removes the mob reference from the list and directory of all mobs. Called on Destroy(). /mob/proc/remove_from_mob_list() GLOB.mob_list -= src - GLOB.mob_directory -= tag ///Adds the mob reference to the list of all mobs alive. If mob is cliented, it adds it to the list of all living player-mobs. /mob/proc/add_to_alive_mob_list() diff --git a/code/modules/mob/mob_say.dm b/code/modules/mob/mob_say.dm index 568aee6690292..6b8c8f9aa6b2a 100644 --- a/code/modules/mob/mob_say.dm +++ b/code/modules/mob/mob_say.dm @@ -106,9 +106,6 @@ if(!allow_mimes && HAS_MIND_TRAIT(src, TRAIT_MIMING)) return FALSE - if(is_muzzled()) - return FALSE - return ..() ///Speak as a dead person (ghost etc) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index d186661d87fae..5d46f3c0dc06a 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -67,6 +67,7 @@ transformation_timer = addtimer(CALLBACK(src, PROC_REF(finish_humanize), species), TRANSFORMATION_DURATION, TIMER_UNIQUE) + /mob/living/carbon/proc/finish_humanize(species = /datum/species/human) transformation_timer = null to_chat(src, span_boldnotice("You are now a human.")) @@ -77,6 +78,12 @@ SEND_SIGNAL(src, COMSIG_MONKEY_HUMANIZE) return src +/mob/living/carbon/human/finish_humanize(species = /datum/species/human, instant = FALSE) + underwear = "Nude" + undershirt = "Nude" + socks = "Nude" + return ..() + /mob/proc/AIize(client/preference_source, move = TRUE) var/list/turf/landmark_loc = list() diff --git a/code/modules/mob_spawn/corpses/nanotrasen_corpses.dm b/code/modules/mob_spawn/corpses/nanotrasen_corpses.dm index 0940815f1fc56..0ed30e5a5215d 100644 --- a/code/modules/mob_spawn/corpses/nanotrasen_corpses.dm +++ b/code/modules/mob_spawn/corpses/nanotrasen_corpses.dm @@ -25,7 +25,7 @@ suit = /obj/item/clothing/suit/armor/bulletproof ears = /obj/item/radio/headset/heads/captain glasses = /obj/item/clothing/glasses/eyepatch - mask = /obj/item/clothing/mask/cigarette/cigar/cohiba + mask = /obj/item/cigarette/cigar/cohiba head = /obj/item/clothing/head/hats/centhat gloves = /obj/item/clothing/gloves/tackler/combat shoes = /obj/item/clothing/shoes/combat/swat diff --git a/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm b/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm index 5b9e043349ea0..0165b27f21a1a 100644 --- a/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm @@ -96,3 +96,18 @@ if I assisted them with my 'flesh-gaze'. They're a bunch of freaks, but at least they leave me be after I'm done helping them..." back_story = HUNTER_PACK_PSYKER outfit = /datum/outfit/psyker_seer + +/obj/effect/mob_spawn/ghost_role/human/fugitive/mi13 + name = "top-secret pod" + desc = "You don't have the classification to know what this pod contains or what its purpose is." + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper_s" + prompt_name = "a MI13 agent" + you_are_text = "I am an agent sent by MI13." + flavour_text = "Your mission is to infiltrate the space around SS13 and capture the fugitives on board, dead or alive. Your shuttle has been disguised as an ordinary food truck to help you remain undetected. \ + This is a stealth mission in enemy territory. Reinforcements will not be sent to save you. Microbombs have been implanted in case of capture. Do not disappoint." + back_story = HUNTER_PACK_MI13 + outfit = /datum/outfit/mi13_hunter + +/obj/effect/mob_spawn/ghost_role/human/fugitive/mi13/chef + outfit = /datum/outfit/mi13_hunter/chef diff --git a/code/modules/mob_spawn/ghost_roles/space_roles.dm b/code/modules/mob_spawn/ghost_roles/space_roles.dm index 764d20c9a76c1..79d028bdbcb27 100644 --- a/code/modules/mob_spawn/ghost_roles/space_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/space_roles.dm @@ -181,6 +181,6 @@ ears = /obj/item/radio/headset/syndicate/alt/leader glasses = /obj/item/clothing/glasses/thermal/eyepatch head = /obj/item/clothing/head/hats/hos/cap/syndicate - mask = /obj/item/clothing/mask/cigarette/cigar/havana + mask = /obj/item/cigarette/cigar/havana l_pocket = /obj/item/melee/energy/sword/saber/red r_pocket = /obj/item/melee/baton/telescopic diff --git a/code/modules/mob_spawn/ghost_roles/unused_roles.dm b/code/modules/mob_spawn/ghost_roles/unused_roles.dm index d9cdd699ade70..80f584d52c2b6 100644 --- a/code/modules/mob_spawn/ghost_roles/unused_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/unused_roles.dm @@ -308,7 +308,7 @@ /datum/outfit/syndicatespace/syndicrew name = "Syndicate Ship Crew Member" - glasses = /obj/item/clothing/glasses/night + glasses = /obj/item/clothing/glasses/night/colorless mask = /obj/item/clothing/mask/gas/syndicate l_pocket = /obj/item/gun/ballistic/automatic/pistol r_pocket = /obj/item/knife/combat/survival diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm index c9130fb706e1b..3337a15b441c5 100644 --- a/code/modules/mob_spawn/mob_spawn.dm +++ b/code/modules/mob_spawn/mob_spawn.dm @@ -59,26 +59,15 @@ spawned_human.underwear = "Nude" spawned_human.undershirt = "Nude" spawned_human.socks = "Nude" + randomize_human_normie(spawned_human) if(hairstyle) - spawned_human.hairstyle = hairstyle - else - spawned_human.hairstyle = random_hairstyle(spawned_human.gender) + spawned_human.set_hairstyle(hairstyle, update = FALSE) if(facial_hairstyle) - spawned_human.facial_hairstyle = facial_hairstyle - else - spawned_human.facial_hairstyle = random_facial_hairstyle(spawned_human.gender) + spawned_human.set_facial_hairstyle(facial_hairstyle, update = FALSE) if(haircolor) - spawned_human.hair_color = haircolor - else - spawned_human.hair_color = "#[random_color()]" + spawned_human.set_haircolor(haircolor, update = FALSE) if(facial_haircolor) - spawned_human.facial_hair_color = facial_haircolor - else - spawned_human.facial_hair_color = "#[random_color()]" - if(skin_tone) - spawned_human.skin_tone = skin_tone - else - spawned_human.skin_tone = pick(GLOB.skin_tones) + spawned_human.set_facial_haircolor(facial_haircolor, update = FALSE) spawned_human.update_body(is_creating = TRUE) /obj/effect/mob_spawn/proc/name_mob(mob/living/spawned_mob, forced_name) diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index 734cc6ba2510d..350c2fabc3069 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -144,9 +144,6 @@ if(active) . += span_notice("Charge: [core ? "[get_charge_percent()]%" : "No core"].") . += span_notice("Selected module: [selected_module || "None"].") - if(atom_storage) - . += span_notice("While the suit's panel is open, \ - being on combat mode will prevent you from inserting items into it when clicking on it.") if(!open && !active) if(!wearer) . += span_notice("You could equip it to turn it on.") @@ -278,7 +275,6 @@ return ITEM_INTERACT_SUCCESS /obj/item/mod/control/crowbar_act(mob/living/user, obj/item/crowbar) - . = ..() if(!open) balloon_alert(user, "open the cover first!") playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) @@ -309,32 +305,32 @@ return ITEM_INTERACT_BLOCKING /obj/item/mod/control/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - if(user.combat_mode) - // Block all item-click-inserts when we're open - // Other form of insertion will still function (mousedrop, hotkey) - if(open) - return FALSE - // ...You have to open it up somehow though - if(inserted.tool_behaviour == TOOL_SCREWDRIVER) - return FALSE + // Hack. revisit later + if(istype(inserted, /obj/item/aicard)) + var/obj/item/aicard/ai_card = inserted + if(ai_card.AI) + return FALSE // we want to get an AI assistant, try uploading instead of insertion + if(ai_assistant) + return FALSE // we already have an AI assistant, try withdrawing instead of insertion return TRUE -/obj/item/mod/control/item_interaction(mob/living/user, obj/item/attacking_item, list/modifiers) - if(istype(attacking_item, /obj/item/pai_card)) +// Makes use of tool act to prevent shoving stuff into our internal storage +/obj/item/mod/control/tool_act(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/pai_card)) if(!open) balloon_alert(user, "open the cover first!") return ITEM_INTERACT_BLOCKING - insert_pai(user, attacking_item) + insert_pai(user, tool) return ITEM_INTERACT_SUCCESS - if(istype(attacking_item, /obj/item/mod/module)) + if(istype(tool, /obj/item/mod/module)) if(!open) balloon_alert(user, "open the cover first!") playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING - install(attacking_item, user) + install(tool, user) SEND_SIGNAL(src, COMSIG_MOD_MODULE_ADDED, user) return ITEM_INTERACT_SUCCESS - if(istype(attacking_item, /obj/item/mod/core)) + if(istype(tool, /obj/item/mod/core)) if(!open) balloon_alert(user, "open the cover first!") playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) @@ -343,19 +339,20 @@ balloon_alert(user, "core already installed!") playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING - var/obj/item/mod/core/attacking_core = attacking_item + var/obj/item/mod/core/attacking_core = tool attacking_core.install(src) balloon_alert(user, "core installed") playsound(src, 'sound/machines/click.ogg', 50, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_SUCCESS if(open) - if(is_wire_tool(attacking_item)) + if(is_wire_tool(tool)) wires.interact(user) return ITEM_INTERACT_SUCCESS - if(attacking_item.GetID()) - update_access(user, attacking_item.GetID()) + var/obj/item/id = tool.GetID() + if(id) + update_access(user, id) return ITEM_INTERACT_SUCCESS - return NONE + return ..() /obj/item/mod/control/get_cell() var/obj/item/stock_parts/power_store/cell = get_charge_source() diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm index 70f95297b9404..0c13efa1b950c 100644 --- a/code/modules/mod/mod_core.dm +++ b/code/modules/mod/mod_core.dm @@ -97,7 +97,8 @@ install_cell(cell) RegisterSignal(mod, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) RegisterSignal(mod, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) - RegisterSignal(mod, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) + RegisterSignal(mod, COMSIG_ATOM_STORAGE_ITEM_INTERACT_INSERT, PROC_REF(on_mod_storage_insert)) + RegisterSignal(mod, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_mod_interaction)) RegisterSignal(mod, COMSIG_MOD_WEARER_SET, PROC_REF(on_wearer_set)) if(mod.wearer) on_wearer_set(mod, mod.wearer) @@ -105,7 +106,13 @@ /obj/item/mod/core/standard/uninstall() if(!QDELETED(cell)) cell.forceMove(drop_location()) - UnregisterSignal(mod, list(COMSIG_ATOM_EXAMINE, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_ATTACKBY, COMSIG_MOD_WEARER_SET)) + UnregisterSignal(mod, list( + COMSIG_ATOM_EXAMINE, + COMSIG_ATOM_ATTACK_HAND, + COMSIG_ATOM_STORAGE_ITEM_INTERACT_INSERT, + COMSIG_ATOM_ITEM_INTERACTION, + COMSIG_MOD_WEARER_SET, + )) if(mod.wearer) on_wearer_unset(mod, mod.wearer) return ..() @@ -206,23 +213,37 @@ cell_to_move.forceMove(drop_location()) user.put_in_hands(cell_to_move) -/obj/item/mod/core/standard/proc/on_attackby(datum/source, obj/item/attacking_item, mob/user) +/obj/item/mod/core/standard/proc/on_mod_storage_insert(datum/source, obj/item/thing, mob/living/user) SIGNAL_HANDLER - if(istype(attacking_item, /obj/item/stock_parts/power_store/cell)) - if(!mod.open) - mod.balloon_alert(user, "open the cover first!") - playsound(mod, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) - return NONE - if(cell) - mod.balloon_alert(user, "cell already installed!") - playsound(mod, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) - return COMPONENT_NO_AFTERATTACK - install_cell(attacking_item) - mod.balloon_alert(user, "cell installed") - playsound(mod, 'sound/machines/click.ogg', 50, TRUE, SILENCED_SOUND_EXTRARANGE) - return COMPONENT_NO_AFTERATTACK - return NONE + return replace_cell(thing, user) ? BLOCK_STORAGE_INSERT : NONE + +/obj/item/mod/core/standard/proc/on_mod_interaction(datum/source, mob/living/user, obj/item/thing) + SIGNAL_HANDLER + + if(mod.atom_storage) // handled by the storage signal + return NONE + + return item_interaction(user, thing) + +/obj/item/mod/core/standard/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + return replace_cell(tool, user) ? ITEM_INTERACT_SUCCESS : NONE + +/obj/item/mod/core/standard/proc/replace_cell(obj/item/attacking_item, mob/user) + if(!istype(attacking_item, /obj/item/stock_parts/power_store/cell)) + return FALSE + if(!mod.open) + mod.balloon_alert(user, "open the cover first!") + playsound(mod, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + return FALSE + if(cell) + mod.balloon_alert(user, "cell already installed!") + playsound(mod, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + return FALSE + install_cell(attacking_item) + mod.balloon_alert(user, "cell installed") + playsound(mod, 'sound/machines/click.ogg', 50, TRUE, SILENCED_SOUND_EXTRARANGE) + return TRUE /obj/item/mod/core/standard/proc/on_wearer_set(datum/source, mob/user) SIGNAL_HANDLER @@ -303,15 +324,11 @@ /obj/item/mod/core/plasma/install(obj/item/mod/control/mod_unit) . = ..() - RegisterSignal(mod, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) + RegisterSignal(mod, COMSIG_ATOM_STORAGE_ITEM_INTERACT_INSERT, PROC_REF(on_mod_storage_insert)) + RegisterSignal(mod, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_mod_interaction)) /obj/item/mod/core/plasma/uninstall() - UnregisterSignal(mod, COMSIG_ATOM_ATTACKBY) - return ..() - -/obj/item/mod/core/plasma/attackby(obj/item/attacking_item, mob/user, params) - if(charge_plasma(attacking_item, user)) - return TRUE + UnregisterSignal(mod, list(COMSIG_ATOM_STORAGE_ITEM_INTERACT_INSERT, COMSIG_ATOM_ITEM_INTERACTION)) return ..() /obj/item/mod/core/plasma/charge_source() @@ -350,19 +367,28 @@ return "empty" -/obj/item/mod/core/plasma/proc/on_attackby(datum/source, obj/item/attacking_item, mob/user) +/obj/item/mod/core/plasma/proc/on_mod_storage_insert(datum/source, obj/item/thing, mob/living/user) SIGNAL_HANDLER - if(charge_plasma(attacking_item, user)) - return COMPONENT_NO_AFTERATTACK - return NONE + return charge_plasma(thing, user) ? BLOCK_STORAGE_INSERT : NONE + +/obj/item/mod/core/plasma/proc/on_mod_interaction(datum/source, mob/living/user, obj/item/thing) + SIGNAL_HANDLER + + if(mod.atom_storage) // handled by the storage signal + return NONE + + return item_interaction(thing, user) + +/obj/item/mod/core/plasma/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + return charge_plasma(tool, user) ? ITEM_INTERACT_SUCCESS : NONE /obj/item/mod/core/plasma/proc/charge_plasma(obj/item/stack/plasma, mob/user) var/charge_given = is_type_in_list(plasma, charger_list, zebra = TRUE) if(!charge_given) return FALSE var/uses_needed = min(plasma.amount, ROUND_UP((max_charge_amount() - charge_amount()) / charge_given)) - if(!plasma.use(uses_needed)) + if(uses_needed <= 0 || !plasma.use(uses_needed)) return FALSE add_charge(uses_needed * charge_given) balloon_alert(user, "core refueled") diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm index 5733d48f45f6f..aa5307957f981 100644 --- a/code/modules/mod/mod_link.dm +++ b/code/modules/mod/mod_link.dm @@ -16,7 +16,7 @@ /proc/get_link_visual_generic(datum/mod_link/mod_link, atom/movable/visuals, proc_path) var/mob/living/user = mod_link.get_user_callback.Invoke() playsound(mod_link.holder, 'sound/machines/terminal_processing.ogg', 50, vary = TRUE) - visuals.add_overlay(mutable_appearance('icons/effects/effects.dmi', "static_base", TURF_LAYER)) + visuals.add_overlay(mutable_appearance('icons/effects/effects.dmi', "static_base", ABOVE_NORMAL_TURF_LAYER)) visuals.add_overlay(mutable_appearance('icons/effects/effects.dmi', "modlink", ABOVE_ALL_MOB_LAYER)) visuals.add_filter("crop_square", 1, alpha_mask_filter(icon = icon('icons/effects/effects.dmi', "modlink_filter"))) visuals.maptext_height = 6 @@ -77,29 +77,34 @@ ) /obj/item/mod/control/multitool_act_secondary(mob/living/user, obj/item/multitool/tool) - if(!multitool_check_buffer(user, tool)) - return + . = NONE + var/tool_frequency = null if(istype(tool.buffer, /datum/mod_link)) var/datum/mod_link/buffer_link = tool.buffer tool_frequency = buffer_link.frequency balloon_alert(user, "frequency set") + . = ITEM_INTERACT_SUCCESS if(!tool_frequency && mod_link.frequency) tool.set_buffer(mod_link) balloon_alert(user, "frequency copied") + . = ITEM_INTERACT_SUCCESS else if(tool_frequency && !mod_link.frequency) mod_link.frequency = tool_frequency + . = ITEM_INTERACT_SUCCESS else if(tool_frequency && mod_link.frequency) var/response = tgui_alert(user, "Would you like to copy or imprint the frequency?", "MODlink Frequency", list("Copy", "Imprint")) if(!user.is_holding(tool)) - return + return ITEM_INTERACT_BLOCKING switch(response) if("Copy") tool.set_buffer(mod_link) balloon_alert(user, "frequency copied") + . = ITEM_INTERACT_SUCCESS if("Imprint") mod_link.frequency = tool_frequency balloon_alert(user, "frequency set") + . = ITEM_INTERACT_SUCCESS /obj/item/mod/control/proc/can_call() return get_charge() && wearer && wearer.stat < DEAD @@ -227,29 +232,34 @@ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN /obj/item/clothing/neck/link_scryer/multitool_act_secondary(mob/living/user, obj/item/multitool/tool) - if(!multitool_check_buffer(user, tool)) - return + . = NONE + var/tool_frequency = null if(istype(tool.buffer, /datum/mod_link)) var/datum/mod_link/buffer_link = tool.buffer tool_frequency = buffer_link.frequency balloon_alert(user, "frequency set") + . = ITEM_INTERACT_SUCCESS if(!tool_frequency && mod_link.frequency) tool.set_buffer(mod_link) balloon_alert(user, "frequency copied") + . = ITEM_INTERACT_SUCCESS else if(tool_frequency && !mod_link.frequency) mod_link.frequency = tool_frequency + . = ITEM_INTERACT_SUCCESS else if(tool_frequency && mod_link.frequency) var/response = tgui_alert(user, "Would you like to copy or imprint the frequency?", "MODlink Frequency", list("Copy", "Imprint")) if(!user.is_holding(tool)) - return + return ITEM_INTERACT_BLOCKING switch(response) if("Copy") tool.set_buffer(mod_link) balloon_alert(user, "frequency copied") + . = ITEM_INTERACT_SUCCESS if("Imprint") mod_link.frequency = tool_frequency balloon_alert(user, "frequency set") + . = ITEM_INTERACT_SUCCESS /obj/item/clothing/neck/link_scryer/worn_overlays(mutable_appearance/standing, isinhands) . = ..() diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm index d6465960beb28..e751d1e943b16 100644 --- a/code/modules/mod/mod_types.dm +++ b/code/modules/mod/mod_types.dm @@ -197,13 +197,13 @@ /obj/item/mod/module/storage/large_capacity, /obj/item/mod/module/hat_stabilizer, /obj/item/mod/module/magnetic_harness, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/pathfinder, /obj/item/mod/module/quick_cuff, /obj/item/mod/module/headprotector, ) default_pins = list( - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, ) /obj/item/mod/control/pre_equipped/cosmohonk @@ -245,7 +245,7 @@ /obj/item/mod/module/shock_absorber, /obj/item/mod/module/emp_shield, /obj/item/mod/module/magnetic_harness, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, /obj/item/mod/module/flashlight, /obj/item/mod/module/dna_lock, @@ -254,7 +254,7 @@ ) default_pins = list( /obj/item/mod/module/armor_booster, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, ) @@ -268,7 +268,7 @@ /obj/item/mod/module/shock_absorber, /obj/item/mod/module/emp_shield, /obj/item/mod/module/magnetic_harness, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, /obj/item/mod/module/flashlight, /obj/item/mod/module/hat_stabilizer/syndicate, @@ -276,14 +276,14 @@ ) default_pins = list( /obj/item/mod/module/armor_booster, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, ) /obj/item/mod/control/pre_equipped/nuclear/no_jetpack /obj/item/mod/control/pre_equipped/nuclear/no_jetpack/Initialize(mapload, new_theme, new_skin, new_core) - applied_modules -= list(/obj/item/mod/module/jetpack/advanced, /obj/item/mod/module/jump_jet) + applied_modules -= list(/obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet) return ..() /obj/item/mod/control/pre_equipped/nuclear/plasmaman @@ -305,7 +305,7 @@ /obj/item/mod/module/shock_absorber, /obj/item/mod/module/emp_shield, /obj/item/mod/module/magnetic_harness, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, /obj/item/mod/module/flashlight, /obj/item/mod/module/hat_stabilizer/syndicate, @@ -313,7 +313,7 @@ ) default_pins = list( /obj/item/mod/module/armor_booster, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, ) @@ -324,7 +324,7 @@ /obj/item/mod/module/emp_shield, /obj/item/mod/module/magnetic_harness, /obj/item/mod/module/thermal_regulator, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, /obj/item/mod/module/flashlight, /obj/item/mod/module/hat_stabilizer/syndicate, @@ -333,7 +333,7 @@ ) default_pins = list( /obj/item/mod/module/armor_booster, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, /obj/item/mod/module/flamethrower, ) @@ -357,7 +357,7 @@ starting_frequency = MODLINK_FREQ_SYNDICATE applied_cell = /obj/item/stock_parts/power_store/cell/super applied_modules = list( - /obj/item/mod/module/organ_thrower, + /obj/item/mod/module/organizer, /obj/item/mod/module/defibrillator/combat, /obj/item/mod/module/flashlight, /obj/item/mod/module/health_analyzer, @@ -426,13 +426,13 @@ applied_modules = list( /obj/item/mod/module/storage, /obj/item/mod/module/magnetic_harness, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, /obj/item/mod/module/flashlight, ) default_pins = list( /obj/item/mod/module/armor_booster, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/jump_jet, ) @@ -623,7 +623,7 @@ /obj/item/mod/module/stealth/ninja, /obj/item/mod/module/quick_carry/advanced, /obj/item/mod/module/magboot/advanced, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/anomaly_locked/kinesis/admin, /obj/item/mod/module/shove_blocker, /obj/item/mod/module/quick_cuff, @@ -631,7 +631,7 @@ default_pins = list( /obj/item/mod/module/stealth/ninja, /obj/item/mod/module/magboot/advanced, - /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jetpack, /obj/item/mod/module/anomaly_locked/kinesis/admin, ) diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm index cac8cfaa26eff..40e1889efd968 100644 --- a/code/modules/mod/modules/modules_engineering.dm +++ b/code/modules/mod/modules/modules_engineering.dm @@ -120,7 +120,7 @@ hitsound = 'sound/weapons/batonextend.ogg' hitsound_wall = 'sound/weapons/batonextend.ogg' suppressed = SUPPRESSED_VERY - hit_threshhold = LATTICE_LAYER + hit_threshhold = ABOVE_NORMAL_TURF_LAYER /// Reference to the beam following the projectile. var/line @@ -218,10 +218,10 @@ incompatible_modules = list(/obj/item/mod/module/armor_booster, /obj/item/mod/module/infiltrator) required_slots = list(ITEM_SLOT_HEAD) -/obj/item/mod/module/constructor/on_suit_activation() +/obj/item/mod/module/headprotector/on_suit_activation() ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) -/obj/item/mod/module/constructor/on_suit_deactivation(deleting = FALSE) +/obj/item/mod/module/headprotector/on_suit_deactivation(deleting = FALSE) REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) ///Mister - Sprays water over an area. diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index 3ef6b9558712a..815cfb0a144bc 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -108,8 +108,6 @@ overlay_state_inactive = "module_jetpack" overlay_state_active = "module_jetpack_on" required_slots = list(ITEM_SLOT_BACK) - /// Do we give the wearer a speed buff. - var/full_speed = FALSE /// Do we have stabilizers? If yes the user won't move from inertia. var/stabilize = TRUE /// Callback to see if we can thrust the user. @@ -143,14 +141,6 @@ /datum/effect_system/trail_follow/ion/grav_allowed \ ) -/obj/item/mod/module/jetpack/on_activation() - if(full_speed) - mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed) - -/obj/item/mod/module/jetpack/on_deactivation(display_message = TRUE, deleting = FALSE) - if(full_speed) - mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed) - /obj/item/mod/module/jetpack/get_configuration() . = ..() .["stabilizers"] = add_ui_configuration("Stabilizers", "bool", stabilize) @@ -167,15 +157,6 @@ return FALSE return TRUE -/obj/item/mod/module/jetpack/advanced - name = "MOD advanced ion jetpack module" - desc = "An improvement on the previous model of electric thrusters. This one achieves higher speeds through \ - mounting of more jets and application of red paint." - icon_state = "jetpack_advanced" - overlay_state_inactive = "module_jetpackadv" - overlay_state_active = "module_jetpackadv_on" - full_speed = TRUE - /// Cooldown to use if we didn't actually launch a jump jet #define FAILED_ACTIVATION_COOLDOWN 3 SECONDS diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm index 3cf1d34a63a83..a0d58d721f3d4 100644 --- a/code/modules/mod/modules/modules_medical.dm +++ b/code/modules/mod/modules/modules_medical.dm @@ -119,19 +119,19 @@ volume = 30 inject_flags = INJECT_CHECK_PENETRATE_THICK -///Organ Thrower - Lets you shoot organs, immediately replacing them if the target has the organ manipulation surgery. -/obj/item/mod/module/organ_thrower - name = "MOD organ thrower module" +///Organizer - Lets you shoot organs, immediately replacing them if the target has the organ manipulation surgery. +/obj/item/mod/module/organizer + name = "MOD organizer module" desc = "A device recovered from a crashed Interdyne Pharmaceuticals vessel, \ this module has been unearthed for better or for worse. \ - It's an arm-mounted device utilizing technology similar to modern-day part replacers, \ - capable of storing and inserting organs into open patients. \ + It's an arm-mounted device utilizing technology similar to modern rapid part exchange devices, \ + capable of instantly replacing up to 5 organs at once in surgery without the need to remove them first, even from range. \ It's recommended by the DeForest Medical Corporation to not inform patients it has been used." - icon_state = "organ_thrower" + icon_state = "organizer" module_type = MODULE_ACTIVE complexity = 2 use_energy_cost = DEFAULT_CHARGE_DRAIN - incompatible_modules = list(/obj/item/mod/module/organ_thrower, /obj/item/mod/module/microwave_beam) + incompatible_modules = list(/obj/item/mod/module/organizer, /obj/item/mod/module/microwave_beam) cooldown_time = 0.5 SECONDS required_slots = list(ITEM_SLOT_GLOVES) /// How many organs the module can hold. @@ -139,7 +139,7 @@ /// A list of all our organs. var/organ_list = list() -/obj/item/mod/module/organ_thrower/on_select_use(atom/target) +/obj/item/mod/module/organizer/on_select_use(atom/target) . = ..() if(!.) return diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm index a868eb6205659..0e0de691e030b 100644 --- a/code/modules/mod/modules/modules_ninja.dm +++ b/code/modules/mod/modules/modules_ninja.dm @@ -418,11 +418,7 @@ if(IS_SPACE_NINJA(mod.wearer)) mod.wearer.say(pick_list_replacements(NINJA_FILE, "lines"), forced = type) to_chat(mod.wearer, span_notice("You have used the adrenaline boost.")) - mod.wearer.SetUnconscious(0) - mod.wearer.SetStun(0) - mod.wearer.SetKnockdown(0) - mod.wearer.SetImmobilized(0) - mod.wearer.SetParalyzed(0) + mod.wearer.SetAllImmobility(0) mod.wearer.adjustStaminaLoss(-200) mod.wearer.remove_status_effect(/datum/status_effect/speech/stutter) mod.wearer.reagents.add_reagent(/datum/reagent/medicine/stimulants, 5) @@ -430,24 +426,18 @@ addtimer(CALLBACK(src, PROC_REF(boost_aftereffects), mod.wearer), 7 SECONDS) /obj/item/mod/module/adrenaline_boost/on_install() - RegisterSignal(mod, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) + RegisterSignal(mod, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(try_boost)) /obj/item/mod/module/adrenaline_boost/on_uninstall(deleting = FALSE) - UnregisterSignal(mod, COMSIG_ATOM_ATTACKBY) + UnregisterSignal(mod, COMSIG_ATOM_ITEM_INTERACTION) -/obj/item/mod/module/adrenaline_boost/attackby(obj/item/attacking_item, mob/user, params) - if(charge_boost(attacking_item, user)) - return TRUE - return ..() - -/obj/item/mod/module/adrenaline_boost/proc/on_attackby(datum/source, obj/item/attacking_item, mob/user) +/obj/item/mod/module/adrenaline_boost/proc/try_boost(source, mob/user, obj/item/attacking_item) SIGNAL_HANDLER - - if(charge_boost(attacking_item, user)) + if(charge_boost(attacking_item)) return COMPONENT_NO_AFTERATTACK return NONE -/obj/item/mod/module/adrenaline_boost/proc/charge_boost(obj/item/attacking_item, mob/user) +/obj/item/mod/module/adrenaline_boost/proc/charge_boost(obj/item/attacking_item) if(!attacking_item.is_open_container()) return FALSE if(reagents.has_reagent(reagent_required, reagent_required_amount)) diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm index 2a317becf18e6..19150b8a4cd67 100644 --- a/code/modules/mod/modules/modules_security.dm +++ b/code/modules/mod/modules/modules_security.dm @@ -308,6 +308,8 @@ var/field_radius = 2 /// Damage multiplier on projectiles. var/damage_multiplier = 0.75 + /// Debuff multiplier on projectiles. + var/debuff_multiplier = 0.66 /// Speed multiplier on projectiles, higher means slower. var/speed_multiplier = 2.5 /// List of all tracked projectiles. @@ -338,6 +340,9 @@ SIGNAL_HANDLER projectile.damage *= damage_multiplier + projectile.stamina *= damage_multiplier + projectile.stun *= debuff_multiplier + projectile.knockdown *= debuff_multiplier projectile.speed *= speed_multiplier projectile.add_overlay(projectile_effect) @@ -346,6 +351,9 @@ projectile.damage /= damage_multiplier projectile.speed /= speed_multiplier + projectile.stamina /= damage_multiplier + projectile.stun /= debuff_multiplier + projectile.knockdown /= debuff_multiplier projectile.cut_overlay(projectile_effect) ///Active Sonar - Displays a hud circle on the turf of any living creatures in the given radius diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm index 044137f0f2d07..4d2650585b1c0 100644 --- a/code/modules/mod/modules/modules_service.dm +++ b/code/modules/mod/modules/modules_service.dm @@ -35,7 +35,7 @@ module_type = MODULE_ACTIVE complexity = 1 use_energy_cost = DEFAULT_CHARGE_DRAIN * 5 - incompatible_modules = list(/obj/item/mod/module/microwave_beam, /obj/item/mod/module/organ_thrower) + incompatible_modules = list(/obj/item/mod/module/microwave_beam, /obj/item/mod/module/organizer) cooldown_time = 10 SECONDS required_slots = list(ITEM_SLOT_GLOVES) diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index c86cb182c6b84..0e2bffd0aa6a7 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -559,7 +559,7 @@ light_range = 1 light_power = 1 light_color = COLOR_LIGHT_ORANGE - embedding = null + embed_type = null /obj/projectile/bullet/mining_bomb/Initialize(mapload) . = ..() diff --git a/code/modules/modular_computers/computers/item/computer_files.dm b/code/modules/modular_computers/computers/item/computer_files.dm index 6b6fbd179f21f..b0ae073bdd69a 100644 --- a/code/modules/modular_computers/computers/item/computer_files.dm +++ b/code/modules/modular_computers/computers/item/computer_files.dm @@ -39,7 +39,7 @@ stored_files.Remove(file_removing) used_capacity -= file_removing.size SEND_SIGNAL(src, COMSIG_MODULAR_COMPUTER_FILE_DELETE, file_removing) - SEND_SIGNAL(file_removing, COMSIG_COMPUTER_FILE_DELETE) + SEND_SIGNAL(file_removing, COMSIG_COMPUTER_FILE_DELETE, src) qdel(file_removing) return TRUE diff --git a/code/modules/modular_computers/computers/item/disks/maintenance_disks.dm b/code/modules/modular_computers/computers/item/disks/maintenance_disks.dm index 430c101668de8..0fb2ccc2eef91 100644 --- a/code/modules/modular_computers/computers/item/disks/maintenance_disks.dm +++ b/code/modules/modular_computers/computers/item/disks/maintenance_disks.dm @@ -25,3 +25,6 @@ /obj/item/computer_disk/maintenance/theme/Initialize(mapload) starting_programs = list(pick(subtypesof(/datum/computer_file/program/maintenance/theme))) return ..() + +/obj/item/computer_disk/maintenance/cool_sword + starting_programs = list(/datum/computer_file/program/maintenance/cool_sword) diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm index ca10b6c53ad84..f1fced454e4d3 100644 --- a/code/modules/modular_computers/computers/item/pda.dm +++ b/code/modules/modular_computers/computers/item/pda.dm @@ -46,7 +46,7 @@ /obj/item/lipstick, /obj/item/flashlight/pen, /obj/item/reagent_containers/hypospray/medipen, - /obj/item/clothing/mask/cigarette, + /obj/item/cigarette, ) /obj/item/modular_computer/pda/Initialize(mapload) @@ -149,14 +149,14 @@ if(tool.w_class >= WEIGHT_CLASS_SMALL) // Anything equal to or larger than small won't work user.balloon_alert(user, "too big!") return ITEM_INTERACT_BLOCKING - if(inserted_item) - balloon_alert(user, "no room!") - return ITEM_INTERACT_BLOCKING if(!user.transferItemToLoc(tool, src)) return ITEM_INTERACT_BLOCKING - balloon_alert(user, "inserted [tool]") - inserted_item = tool - playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE) + if(inserted_item) + swap_pen(user, tool) + else + balloon_alert(user, "inserted [tool]") + inserted_item = tool + playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE) return ITEM_INTERACT_SUCCESS @@ -185,6 +185,14 @@ update_appearance() playsound(src, 'sound/machines/pda_button2.ogg', 50, TRUE) +/obj/item/modular_computer/pda/proc/swap_pen(mob/user, obj/item/tool) + if(inserted_item) + balloon_alert(user, "swapped pens") + user.put_in_hands(inserted_item) + inserted_item = tool + update_appearance() + playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE) + /obj/item/modular_computer/pda/proc/explode(mob/target, mob/bomber, from_message_menu = FALSE) var/turf/current_turf = get_turf(src) diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm index ad87960603c35..94ff9439e3b11 100644 --- a/code/modules/modular_computers/computers/machinery/console_presets.dm +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -33,6 +33,17 @@ /datum/computer_file/program/scipaper_program, ) +/obj/machinery/modular_computer/preset/research/away + name = "old research console" + desc = "An old computer used for writing research papers." + starting_programs = list( + /datum/computer_file/program/scipaper_program, + ) + +/obj/machinery/modular_computer/preset/research/away/Initialize(mapload) + . = ..() + cpu.device_theme = PDA_THEME_RETRO + // ===== COMMAND CONSOLE ===== /obj/machinery/modular_computer/preset/command name = "command console" diff --git a/code/modules/modular_computers/file_system/programs/maintenance/cool_sword.dm b/code/modules/modular_computers/file_system/programs/maintenance/cool_sword.dm new file mode 100644 index 0000000000000..1a05bf2ceba34 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/maintenance/cool_sword.dm @@ -0,0 +1,71 @@ +/datum/computer_file/program/maintenance/cool_sword + filename = "cool_sword" + filedesc = "NtOS Cursor Replacer" + power_cell_use = 0 + downloader_category = PROGRAM_CATEGORY_DEVICE + extended_desc = "This program allows you to customize your computer's mouse cursor, \ + but there's only one option, let's be honest. \ + Wear your PDA in your ID slot for it to take effect." + can_run_on_flags = PROGRAM_PDA + tgui_id = "NtosCursor" + program_open_overlay = "generic" + + /// What icon to use for the mouse pointer? + var/sword_icon = 'icons/effects/mouse_pointers/cool_sword.dmi' + +/datum/computer_file/program/maintenance/cool_sword/New() + . = ..() + RegisterSignal(src, COMSIG_COMPUTER_FILE_DELETE, PROC_REF(on_delete)) + +/datum/computer_file/program/maintenance/cool_sword/on_install(datum/computer_file/source, obj/item/modular_computer/computer_installing) + . = ..() + RegisterSignal(computer_installing, COMSIG_ITEM_EQUIPPED, PROC_REF(host_equipped)) + RegisterSignal(computer_installing, COMSIG_ITEM_DROPPED, PROC_REF(host_dropped)) + + if(ismob(computer_installing.loc)) + var/mob/living/computer_guy = computer_installing.loc + var/current_slot = computer_guy.get_slot_by_item(computer_installing) + host_equipped(computer_installing, computer_guy, current_slot) + +/datum/computer_file/program/maintenance/cool_sword/proc/on_delete(datum/source, obj/item/modular_computer/computer_uninstalling) + SIGNAL_HANDLER + + if(ismob(computer_uninstalling.loc)) + host_dropped(computer_uninstalling, computer_uninstalling.loc) + +/datum/computer_file/program/maintenance/cool_sword/proc/host_equipped(datum/source, mob/user, slot) + SIGNAL_HANDLER + + if(slot & ITEM_SLOT_ID) + user.client?.mouse_override_icon = sword_icon + RegisterSignal(user, COMSIG_MOB_LOGIN, PROC_REF(update_mouse), override = TRUE) + RegisterSignal(user, COMSIG_MOB_LOGOUT, PROC_REF(stop_mouse), override = TRUE) + else + // Shouldn't be necessary w/ dropped but just to be safe + user.client?.mouse_override_icon = null + UnregisterSignal(user, list(COMSIG_MOB_LOGIN, COMSIG_MOB_LOGOUT)) + user.update_mouse_pointer() + +/datum/computer_file/program/maintenance/cool_sword/proc/host_dropped(datum/source, mob/user) + SIGNAL_HANDLER + + user.client?.mouse_override_icon = null + UnregisterSignal(user, list(COMSIG_MOB_LOGIN, COMSIG_MOB_LOGOUT)) + user.update_mouse_pointer() + +/datum/computer_file/program/maintenance/cool_sword/proc/update_mouse(mob/source) + SIGNAL_HANDLER + + source.client?.mouse_override_icon = sword_icon + source.update_mouse_pointer() + +/datum/computer_file/program/maintenance/cool_sword/proc/stop_mouse(mob/source) + SIGNAL_HANDLER + + source.canon_client?.mouse_override_icon = null + source.canon_client?.mob?.update_mouse_pointer() + +/datum/computer_file/program/maintenance/cool_sword/ui_static_data(mob/user) + var/list/data = list() + data["dmi"] = list("icon" = sword_icon, "icon_state" = "") + return data diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm index 34771cde63b20..33dcd95e86b97 100644 --- a/code/modules/modular_computers/file_system/programs/radar.dm +++ b/code/modules/modular_computers/file_system/programs/radar.dm @@ -114,7 +114,7 @@ var/locx = (target_turf.x - here_turf.x) + 24 var/locy = (here_turf.y - target_turf.y) + 24 - if(get_dist_euclidian(here_turf, target_turf) > 24) + if(get_dist_euclidean(here_turf, target_turf) > 24) userot = TRUE rot = round(get_angle(here_turf, target_turf)) else @@ -208,7 +208,7 @@ var/here_turf = get_turf(computer) var/target_turf = get_turf(signal) - var/trackdistance = get_dist_euclidian(here_turf, target_turf) + var/trackdistance = get_dist_euclidean(here_turf, target_turf) switch(trackdistance) if(0) program_open_overlay = "[initial(program_open_overlay)]direct" @@ -471,7 +471,7 @@ */ /obj/item/circuit_component/mod_program/radar/proc/can_track(datum/source, atom/signal, signal_turf, computer_turf) SIGNAL_HANDLER - if(target.value && get_dist_euclidian(computer_turf, signal_turf) > MAX_RADAR_CIRCUIT_DISTANCE) + if(target.value && get_dist_euclidean(computer_turf, signal_turf) > MAX_RADAR_CIRCUIT_DISTANCE) return COMPONENT_RADAR_DONT_TRACK return COMPONENT_RADAR_TRACK_ANYWAY diff --git a/code/modules/movespeed/modifiers/innate.dm b/code/modules/movespeed/modifiers/innate.dm index 94a3f7a2e791c..83d8b3fb78d98 100644 --- a/code/modules/movespeed/modifiers/innate.dm +++ b/code/modules/movespeed/modifiers/innate.dm @@ -7,11 +7,12 @@ flags = IGNORE_NOSLOW /datum/movespeed_modifier/snail - movetypes = ~FLYING + blacklisted_movetypes = FLYING variable = TRUE +// no reason for leg loss (or gain) to affect speed if drifting /datum/movespeed_modifier/bodypart - movetypes = ~FLYING + blacklisted_movetypes = (FLYING|FLOATING) variable = TRUE /datum/movespeed_modifier/dna_vault_speedup diff --git a/code/modules/movespeed/modifiers/items.dm b/code/modules/movespeed/modifiers/items.dm index 6bdf2f31760d5..601ecc2289261 100644 --- a/code/modules/movespeed/modifiers/items.dm +++ b/code/modules/movespeed/modifiers/items.dm @@ -5,9 +5,6 @@ /datum/movespeed_modifier/jetpack/cybernetic multiplicative_slowdown = -0.5 -/datum/movespeed_modifier/jetpack/fullspeed - multiplicative_slowdown = -0.5 - /datum/movespeed_modifier/die_of_fate multiplicative_slowdown = 1 diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index b72c631253b91..1624ce37bf6d9 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -1,4 +1,5 @@ /datum/movespeed_modifier/obesity + // large weight slows even if flying and floating multiplicative_slowdown = 1.5 /datum/movespeed_modifier/monkey_reagent_speedmod @@ -11,6 +12,7 @@ variable = TRUE /datum/movespeed_modifier/hunger + movetypes = GROUND|FLYING variable = TRUE /datum/movespeed_modifier/golem_hunger @@ -89,7 +91,7 @@ /datum/movespeed_modifier/limbless variable = TRUE movetypes = GROUND - blacklisted_movetypes = FLOATING + blacklisted_movetypes = FLOATING|FLYING flags = IGNORE_NOSLOW /datum/movespeed_modifier/simplemob_varspeed diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm index 11334f12abc79..4268c040e2bcd 100644 --- a/code/modules/pai/pai.dm +++ b/code/modules/pai/pai.dm @@ -164,7 +164,6 @@ QDEL_NULL(signaler) QDEL_NULL(leash) card = null - GLOB.pai_list.Remove(src) return ..() // Need to override parent here because the message we dispatch is turf-based, not based on the location of the object because that could be fuckin anywhere @@ -221,7 +220,6 @@ if(istype(loc, /obj/item/modular_computer)) give_messenger_ability() START_PROCESSING(SSfastprocess, src) - GLOB.pai_list += src make_laws() for(var/law in laws.inherent) lawcheck += law @@ -470,7 +468,7 @@ for(var/mob/living/cultist as anything in invokers) to_chat(cultist, span_cult_italic("You don't think this is what Nar'Sie had in mind when She asked for blood sacrifices...")) - return STOP_SACRIFICE + return STOP_SACRIFICE|SILENCE_SACRIFICE_MESSAGE /// Updates the distance we can be from our pai card /mob/living/silicon/pai/proc/increment_range(increment_amount) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 6043890bebd43..41d24ea9c6da4 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -29,7 +29,7 @@ var/degrees = 0 var/font = PEN_FONT var/requires_gravity = TRUE // can you use this to write in zero-g - embedding = list(embed_chance = 50) + embed_type = /datum/embed_data/pen sharpness = SHARP_POINTY var/dart_insert_icon = 'icons/obj/weapons/guns/toy.dmi' var/dart_insert_casing_icon_state = "overlay_pen" @@ -37,6 +37,9 @@ /// If this pen can be clicked in order to retract it var/can_click = TRUE +/datum/embed_data/pen + embed_chance = 50 + /obj/item/pen/Initialize(mapload) . = ..() AddComponent(/datum/component/dart_insert, \ @@ -60,6 +63,7 @@ /datum/component/transforming, \ sharpness_on = NONE, \ inhand_icon_change = FALSE, \ + w_class_on = w_class, \ ) /* @@ -85,7 +89,7 @@ return list( "damage" = max(5, throwforce), "speed" = max(0, throw_speed - 3), - "embedding" = embedding, + "embedding" = get_embed(), "armour_penetration" = armour_penetration, "wound_bonus" = wound_bonus, "bare_wound_bonus" = bare_wound_bonus, @@ -190,7 +194,7 @@ "Black and Silver" = "pen-fountain-b", "Command Blue" = "pen-fountain-cb" ) - embedding = list("embed_chance" = 75) + embed_type = /datum/embed_data/pen/captain dart_insert_casing_icon_state = "overlay_fountainpen_gold" dart_insert_projectile_icon_state = "overlay_fountainpen_gold_proj" var/list/overlay_reskin = list( @@ -201,6 +205,9 @@ "Command Blue" = "overlay_fountainpen_gold" ) +/datum/embed_data/pen/captain + embed_chance = 50 + /obj/item/pen/fountain/captain/Initialize(mapload) . = ..() AddComponent(/datum/component/butchering, \ @@ -413,7 +420,7 @@ inhand_icon_state = hidden_icon lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - embedding = list(embed_chance = 100) // Rule of cool + set_embed(/datum/embed_data/edagger_active) else name = initial(name) desc = initial(desc) @@ -421,15 +428,17 @@ inhand_icon_state = initial(inhand_icon_state) lefthand_file = initial(lefthand_file) righthand_file = initial(righthand_file) - embedding = list(embed_chance = EMBED_CHANCE) + set_embed(embed_type) - updateEmbedding() if(user) balloon_alert(user, "[hidden_name] [active ? "active" : "concealed"]") playsound(src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 5, TRUE) set_light_on(active) return COMPONENT_NO_DEFAULT_MESSAGE +/datum/embed_data/edagger_active + embed_chance = 100 + /obj/item/pen/edagger/proc/on_scan(datum/source, mob/user, list/extra_data) SIGNAL_HANDLER LAZYADD(extra_data[DETSCAN_CATEGORY_ILLEGAL], "Hard-light generator detected.") diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index 5c849f4a530cd..b4e97615a923a 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -49,13 +49,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32) . += span_notice("The ticket machine shows that ticket #[current_number] is currently being served.") . += span_notice("You can take a ticket out with Left-Click to be number [ticket_number + 1] in queue.") -/obj/machinery/ticket_machine/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) //make sure it has a data buffer - return - var/obj/item/multitool/M = I +/obj/machinery/ticket_machine/multitool_act(mob/living/user, obj/item/multitool/M) M.set_buffer(src) balloon_alert(user, "saved to multitool buffer") - return TRUE + return ITEM_INTERACT_SUCCESS /obj/machinery/ticket_machine/emag_act(mob/user, obj/item/card/emag/emag_card) //Emag the ticket machine to dispense burning tickets, as well as randomize its number to destroy the HoP's mind. if(obj_flags & EMAGGED) diff --git a/code/modules/photography/camera/camera_image_capturing.dm b/code/modules/photography/camera/camera_image_capturing.dm index d928164ff014d..64eeb192a2286 100644 --- a/code/modules/photography/camera/camera_image_capturing.dm +++ b/code/modules/photography/camera/camera_image_capturing.dm @@ -10,11 +10,18 @@ step_y = AM.step_y . = ..() +#define PHYSICAL_POSITION(atom) ((atom.y * world.icon_size) + (atom.pixel_y)) + /obj/item/camera/proc/camera_get_icon(list/turfs, turf/center, psize_x = 96, psize_y = 96, datum/turf_reservation/clone_area, size_x, size_y, total_x, total_y) var/list/atoms = list() + var/list/lighting = list() var/skip_normal = FALSE var/wipe_atoms = FALSE + var/mutable_appearance/backdrop = mutable_appearance('icons/hud/screen_gen.dmi', "flash") + backdrop.blend_mode = BLEND_OVERLAY + backdrop.color = "#292319" + if(istype(clone_area) && total_x == clone_area.width && total_y == clone_area.height && size_x >= 0 && size_y > 0) var/turf/bottom_left = clone_area.bottom_left_turfs[1] var/cloned_center_x = round(bottom_left.x + ((total_x - 1) / 2)) @@ -29,6 +36,12 @@ atoms += new /obj/effect/appearance_clone(newT, T) if(T.loc.icon_state) atoms += new /obj/effect/appearance_clone(newT, T.loc) + if(T.lighting_object) + var/obj/effect/appearance_clone/lighting_overlay = new(newT) + lighting_overlay.appearance = T.lighting_object.current_underlay + lighting_overlay.underlays += backdrop + lighting_overlay.blend_mode = BLEND_MULTIPLY + lighting += lighting_overlay for(var/i in T.contents) var/atom/A = i if(!A.invisibility || (see_ghosts && isobserver(A))) @@ -41,6 +54,12 @@ for(var/i in turfs) var/turf/T = i atoms += T + if(T.lighting_object) + var/obj/effect/appearance_clone/lighting_overlay = new(T) + lighting_overlay.appearance = T.lighting_object.current_underlay + lighting_overlay.underlays += backdrop + lighting_overlay.blend_mode = BLEND_MULTIPLY + lighting += lighting_overlay for(var/atom/movable/A in T) if(A.invisibility) if(!(see_ghosts && isobserver(A))) @@ -50,6 +69,7 @@ var/icon/res = icon('icons/blanks/96x96.dmi', "nothing") res.Scale(psize_x, psize_y) + atoms += lighting var/list/sorted = list() var/j @@ -57,7 +77,19 @@ var/atom/c = atoms[i] for(j = sorted.len, j > 0, --j) var/atom/c2 = sorted[j] - if((c2.plane <= c.plane) && (c2.layer <= c.layer)) + if(c2.plane > c.plane) + continue + if(c2.plane < c.plane) + break + var/c_position = PHYSICAL_POSITION(c) + var/c2_position = PHYSICAL_POSITION(c2) + // If you are above me, I layer above you + if(c2_position - 32 >= c_position) + break + // If I am above you you will always layer above me + if(c2_position <= c_position - 32) + continue + if(c2.layer < c.layer) break sorted.Insert(j+1, c) CHECK_TICK @@ -80,32 +112,34 @@ for(var/X in sorted) //these are clones var/obj/effect/appearance_clone/clone = X var/icon/img = getFlatIcon(clone, no_anim = TRUE) - if(img) - // Center of the image in X - var/xo = (clone.x - center.x) * world.icon_size + clone.pixel_x + xcomp + clone.step_x - // Center of the image in Y - var/yo = (clone.y - center.y) * world.icon_size + clone.pixel_y + ycomp + clone.step_y - - if(clone.transform) // getFlatIcon doesn't give a snot about transforms. - var/datum/decompose_matrix/decompose = clone.transform.decompose() - // Scale in X, Y - if(decompose.scale_x != 1 || decompose.scale_y != 1) - var/base_w = img.Width() - var/base_h = img.Height() - // scale_x can be negative - img.Scale(base_w * abs(decompose.scale_x), base_h * decompose.scale_y) - if(decompose.scale_x < 0) - img.Flip(EAST) - xo -= base_w * (decompose.scale_x - SIGN(decompose.scale_x)) / 2 * SIGN(decompose.scale_x) - yo -= base_h * (decompose.scale_y - 1) / 2 - // Rotation - if(decompose.rotation != 0) - img.Turn(decompose.rotation) - // Shift - xo += decompose.shift_x - yo += decompose.shift_y - - res.Blend(img, blendMode2iconMode(clone.blend_mode), xo, yo) + if(!img) + CHECK_TICK + continue + // Center of the image in X + var/xo = (clone.x - center.x) * world.icon_size + clone.pixel_x + xcomp + clone.step_x + // Center of the image in Y + var/yo = (clone.y - center.y) * world.icon_size + clone.pixel_y + ycomp + clone.step_y + + if(clone.transform) // getFlatIcon doesn't give a snot about transforms. + var/datum/decompose_matrix/decompose = clone.transform.decompose() + // Scale in X, Y + if(decompose.scale_x != 1 || decompose.scale_y != 1) + var/base_w = img.Width() + var/base_h = img.Height() + // scale_x can be negative + img.Scale(base_w * abs(decompose.scale_x), base_h * decompose.scale_y) + if(decompose.scale_x < 0) + img.Flip(EAST) + xo -= base_w * (decompose.scale_x - SIGN(decompose.scale_x)) / 2 * SIGN(decompose.scale_x) + yo -= base_h * (decompose.scale_y - 1) / 2 + // Rotation + if(decompose.rotation != 0) + img.Turn(decompose.rotation) + // Shift + xo += decompose.shift_x + yo += decompose.shift_y + + res.Blend(img, blendMode2iconMode(clone.blend_mode), xo, yo) CHECK_TICK if(!silent) @@ -116,5 +150,9 @@ if(wipe_atoms) QDEL_LIST(atoms) + else + QDEL_LIST(lighting) return res + +#undef PHYSICAL_POSITION diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.dm b/code/modules/plumbing/plumbers/_plumb_machinery.dm index 2e8eaee9d6dec..1f60a4eefb4cb 100644 --- a/code/modules/plumbing/plumbers/_plumb_machinery.dm +++ b/code/modules/plumbing/plumbers/_plumb_machinery.dm @@ -12,6 +12,7 @@ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 2.75 resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF interaction_flags_machine = parent_type::interaction_flags_machine | INTERACT_MACHINE_OFFLINE + reagents = /datum/reagents/plumbing ///Plumbing machinery is always gonna need reagents, so we might aswell put it here var/buffer = 50 @@ -25,6 +26,12 @@ AddComponent(/datum/component/simple_rotation) register_context() +/obj/machinery/plumbing/create_reagents(max_vol, flags) + if(!ispath(reagents)) + qdel(reagents) + reagents = new reagents(max_vol, flags) + reagents.my_atom = src + /obj/machinery/plumbing/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = NONE if(isnull(held_item)) @@ -96,58 +103,94 @@ reagents.expose(get_turf(src), TOUCH) //splash on the floor reagents.clear_reagents() -///We can empty beakers in here and everything -/obj/machinery/plumbing/input - name = "input gate" - desc = "Can be manually filled with reagents from containers." - icon_state = "pipe_input" - pass_flags_self = PASSMACHINE | LETPASSTHROW // Small - reagent_flags = TRANSPARENT | REFILLABLE - - -/obj/machinery/plumbing/input/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_supply, bolt, layer) - -///We can fill beakers in here and everything. we dont inheret from input because it has nothing that we need -/obj/machinery/plumbing/output - name = "output gate" - desc = "A manual output for plumbing systems, for taking reagents directly into containers." - icon_state = "pipe_output" - pass_flags_self = PASSMACHINE | LETPASSTHROW // Small - reagent_flags = TRANSPARENT | DRAINABLE - -/obj/machinery/plumbing/output/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) +/** + * Specialized reagent container for plumbing. Uses the round robin approach of transferring reagents + * so transfer 5 from 15 water, 15 sugar and 15 plasma becomes 10, 15, 15 instead of 13.3333, 13.3333 13.3333. Good if you hate floating point errors + */ +/datum/reagents/plumbing + +/datum/reagents/plumbing/trans_to( + atom/target, + amount = 1, + multiplier = 1, //unused for plumbing + datum/reagent/target_id, + preserve_data = TRUE, //unused for plumbing + no_react = FALSE, //unused for plumbing we always want reactions + mob/transferred_by, //unused for plumbing logging is not important inside plumbing machines + remove_blacklisted = FALSE, //unused for plumbing, we don't care what reagents are inside us + methods = NONE, //unused for plumbing + show_message = TRUE, //unused for plumbing, used for logging only + ignore_stomach = FALSE //unused for plumbing, reagents flow only between machines & is not injected to mobs at any point in time +) + if(QDELETED(target) || !total_volume) + return FALSE + + if(!IS_FINITE(amount)) + stack_trace("non finite amount passed to trans_to [amount] amount of reagents") + return FALSE + + if(!isnull(target_id) && !ispath(target_id)) + stack_trace("invalid target reagent id [target_id] passed to trans_to") + return FALSE + + var/datum/reagents/target_holder + if(istype(target, /datum/reagents)) + target_holder = target + else + target_holder = target.reagents + + var/cached_amount = amount + + // Prevents small amount problems, as well as zero and below zero amounts. + amount = round(min(amount, total_volume, target_holder.maximum_volume - target_holder.total_volume), CHEMICAL_QUANTISATION_LEVEL) + if(amount <= 0) + return FALSE + + //Set up new reagents to inherit the old ongoing reactions + transfer_reactions(target_holder) + + var/list/cached_reagents = reagent_list + var/list/reagents_to_remove = list() + var/transfer_amount + var/transfered_amount + var/to_transfer = amount + var/total_transfered_amount = 0 + + //first add reagents to target + for(var/datum/reagent/reagent as anything in cached_reagents) + if(!to_transfer) + break + + if(!isnull(target_id)) + if(reagent.type == target_id) + force_stop_reagent_reacting(reagent) + transfer_amount = min(to_transfer, reagent.volume) + else + continue + else + transfer_amount = min(to_transfer, reagent.volume) -/obj/machinery/plumbing/output/tap - name = "drinking tap" - desc = "A manual output for plumbing systems, for taking drinks directly into glasses." - icon_state = "tap_output" + if(reagent.intercept_reagents_transfer(target_holder, cached_amount)) + continue -/obj/machinery/plumbing/tank - name = "chemical tank" - desc = "A massive chemical holding tank." - icon_state = "tank" - buffer = 400 + transfered_amount = target_holder.add_reagent(reagent.type, transfer_amount * multiplier, copy_data(reagent), chem_temp, reagent.purity, reagent.ph, no_react = TRUE, ignore_splitting = reagent.chemical_flags & REAGENT_DONOTSPLIT) //we only handle reaction after every reagent has been transferred. + if(!transfered_amount) + continue + reagents_to_remove += list(list("R" = reagent, "T" = transfer_amount)) + total_transfered_amount += transfered_amount + to_transfer -= transfered_amount -/obj/machinery/plumbing/tank/Initialize(mapload, bolt, layer) - . = ..() - AddComponent(/datum/component/plumbing/tank, bolt, layer) + if(!isnull(target_id)) + break -///Layer manifold machine that connects a bunch of layers -/obj/machinery/plumbing/layer_manifold - name = "layer manifold" - desc = "A plumbing manifold for layers." - icon_state = "manifold" - density = FALSE + //remove chemicals that were added above + for(var/list/data as anything in reagents_to_remove) + var/datum/reagent/reagent = data["R"] + transfer_amount = data["T"] + remove_reagent(reagent.type, transfer_amount) -/obj/machinery/plumbing/layer_manifold/Initialize(mapload, bolt, layer) - . = ..() + //handle reactions + target_holder.handle_reactions() + src.handle_reactions() - AddComponent(/datum/component/plumbing/manifold, bolt, FIRST_DUCT_LAYER) - AddComponent(/datum/component/plumbing/manifold, bolt, SECOND_DUCT_LAYER) - AddComponent(/datum/component/plumbing/manifold, bolt, THIRD_DUCT_LAYER) - AddComponent(/datum/component/plumbing/manifold, bolt, FOURTH_DUCT_LAYER) - AddComponent(/datum/component/plumbing/manifold, bolt, FIFTH_DUCT_LAYER) + return round(total_transfered_amount, CHEMICAL_VOLUME_ROUNDING) diff --git a/code/modules/plumbing/plumbers/iv_drip.dm b/code/modules/plumbing/plumbers/iv_drip.dm index 6e2585553849c..45c2ebca27acb 100644 --- a/code/modules/plumbing/plumbers/iv_drip.dm +++ b/code/modules/plumbing/plumbers/iv_drip.dm @@ -10,7 +10,7 @@ /obj/machinery/iv_drip/plumbing/Initialize(mapload, bolt, layer) . = ..() - AddComponent(/datum/component/plumbing/iv_drip, bolt, layer) + AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) AddComponent(/datum/component/simple_rotation) /obj/machinery/iv_drip/plumbing/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) diff --git a/code/modules/plumbing/plumbers/simple_machines.dm b/code/modules/plumbing/plumbers/simple_machines.dm new file mode 100644 index 0000000000000..c2ef308297324 --- /dev/null +++ b/code/modules/plumbing/plumbers/simple_machines.dm @@ -0,0 +1,57 @@ +///We can empty beakers in here and everything +/obj/machinery/plumbing/input + name = "input gate" + desc = "Can be manually filled with reagents from containers." + icon_state = "pipe_input" + pass_flags_self = PASSMACHINE | LETPASSTHROW // Small + reagent_flags = TRANSPARENT | REFILLABLE + +/obj/machinery/plumbing/input/Initialize(mapload, bolt, layer) + . = ..() + AddComponent(/datum/component/plumbing/simple_supply, bolt, layer) + +///We can fill beakers in here and everything. we dont inheret from input because it has nothing that we need +/obj/machinery/plumbing/output + name = "output gate" + desc = "A manual output for plumbing systems, for taking reagents directly into containers." + icon_state = "pipe_output" + pass_flags_self = PASSMACHINE | LETPASSTHROW // Small + reagent_flags = TRANSPARENT | DRAINABLE + reagents = /datum/reagents + +/obj/machinery/plumbing/output/Initialize(mapload, bolt, layer) + . = ..() + AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) + +///For pouring reagents from ducts directly into cups +/obj/machinery/plumbing/output/tap + name = "drinking tap" + desc = "A manual output for plumbing systems, for taking drinks directly into glasses." + icon_state = "tap_output" + +///For storing large volume of reagents +/obj/machinery/plumbing/tank + name = "chemical tank" + desc = "A massive chemical holding tank." + icon_state = "tank" + buffer = 400 + +/obj/machinery/plumbing/tank/Initialize(mapload, bolt, layer) + . = ..() + AddComponent(/datum/component/plumbing/tank, bolt, layer) + +///Layer manifold machine that connects a bunch of layers +/obj/machinery/plumbing/layer_manifold + name = "layer manifold" + desc = "A plumbing manifold for layers." + icon_state = "manifold" + density = FALSE + +/obj/machinery/plumbing/layer_manifold/Initialize(mapload, bolt, layer) + . = ..() + + AddComponent(/datum/component/plumbing/manifold, bolt, FIRST_DUCT_LAYER) + AddComponent(/datum/component/plumbing/manifold, bolt, SECOND_DUCT_LAYER) + AddComponent(/datum/component/plumbing/manifold, bolt, THIRD_DUCT_LAYER) + AddComponent(/datum/component/plumbing/manifold, bolt, FOURTH_DUCT_LAYER) + AddComponent(/datum/component/plumbing/manifold, bolt, FIFTH_DUCT_LAYER) diff --git a/code/modules/plumbing/plumbers/teleporter.dm b/code/modules/plumbing/plumbers/teleporter.dm index df79220d15a8c..46c46d594f6f6 100644 --- a/code/modules/plumbing/plumbers/teleporter.dm +++ b/code/modules/plumbing/plumbers/teleporter.dm @@ -12,15 +12,10 @@ . = ..() AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) -/obj/machinery/plumbing/sender/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) - return - - var/obj/item/multitool/M = I - +/obj/machinery/plumbing/sender/multitool_act(mob/living/user, obj/item/multitool/M) if(!istype(M.buffer, /obj/machinery/plumbing/receiver)) to_chat(user, span_warning("Invalid buffer.")) - return + return ITEM_INTERACT_BLOCKING if(target) lose_teleport_target() @@ -28,7 +23,7 @@ set_teleport_target(M.buffer) to_chat(user, span_green("You succesfully link [src] to the [M.buffer].")) - return TRUE + return ITEM_INTERACT_SUCCESS ///Lose our previous target and make our previous target lose us. Seperate proc because I feel like I'll need this again /obj/machinery/plumbing/sender/proc/lose_teleport_target() @@ -67,14 +62,10 @@ . = ..() AddComponent(/datum/component/plumbing/simple_supply, bolt) -/obj/machinery/plumbing/receiver/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) - return - - var/obj/item/multitool/M = I +/obj/machinery/plumbing/receiver/multitool_act(mob/living/user, obj/item/multitool/M) M.set_buffer(src) balloon_alert(user, "saved to multitool buffer") - return TRUE + return ITEM_INTERACT_SUCCESS /obj/machinery/plumbing/receiver/process(seconds_per_tick) if(!is_operational || panel_open) diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 3781944ad0099..013140e399099 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -722,7 +722,7 @@ icon_state = "floor" brightness = 4 light_angle = 360 - layer = LOW_OBJ_LAYER + layer = ABOVE_OPEN_TURF_LAYER plane = FLOOR_PLANE light_type = /obj/item/light/bulb fitting = "bulb" @@ -739,4 +739,6 @@ /obj/machinery/light/floor/transport name = "transport light" break_if_moved = FALSE + // has to render above tram things (trams are stupid) layer = BELOW_OPEN_DOOR_LAYER + plane = GAME_PLANE diff --git a/code/modules/power/pipecleaners.dm b/code/modules/power/pipecleaners.dm index 7f1ef8fc2e3a8..4514c89b862e2 100644 --- a/code/modules/power/pipecleaners.dm +++ b/code/modules/power/pipecleaners.dm @@ -29,6 +29,7 @@ By design, d1 is the smallest direction and d2 is the highest icon = 'icons/obj/pipes_n_cables/pipe_cleaner.dmi' icon_state = "0-1" layer = WIRE_LAYER //Above hidden pipes, GAS_PIPE_HIDDEN_LAYER + plane = FLOOR_PLANE anchored = TRUE obj_flags = CAN_BE_HIT color = CABLE_HEX_COLOR_RED diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index b46b29538c608..da3a4e12c5662 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -51,6 +51,8 @@ no power level overlay is currently in the overlays list. var/list/obj/machinery/field/generator/connected_gens = list() ///Check for asynk cleanups for this and the connected gens var/clean_up = FALSE + /// we warm up and cool down instantly + var/instantenous = FALSE /datum/armor/field_generator melee = 25 @@ -207,8 +209,11 @@ no power level overlay is currently in the overlays list. can_atmos_pass = ATMOS_PASS_YES air_update_turf(TRUE, FALSE) INVOKE_ASYNC(src, PROC_REF(cleanup)) - addtimer(CALLBACK(src, PROC_REF(cool_down)), 5 SECONDS) RemoveElement(/datum/element/give_turf_traits, string_list(list(TRAIT_CONTAINMENT_FIELD))) + if(instantenous) + warming_up = 0 + return + addtimer(CALLBACK(src, PROC_REF(cool_down)), 5 SECONDS) /obj/machinery/field/generator/proc/cool_down() if(active || warming_up <= 0) @@ -219,9 +224,14 @@ no power level overlay is currently in the overlays list. addtimer(CALLBACK(src, PROC_REF(cool_down)), 5 SECONDS) /obj/machinery/field/generator/proc/turn_on() + AddElement(/datum/element/give_turf_traits, string_list(list(TRAIT_CONTAINMENT_FIELD))) + if(instantenous) + active = FG_ONLINE + warming_up = 3 + start_fields() + return active = FG_CHARGING addtimer(CALLBACK(src, PROC_REF(warm_up)), 5 SECONDS) - AddElement(/datum/element/give_turf_traits, string_list(list(TRAIT_CONTAINMENT_FIELD))) /obj/machinery/field/generator/proc/warm_up() if(!active) @@ -420,9 +430,20 @@ no power level overlay is currently in the overlays list. state = FG_WELDED /obj/machinery/field/generator/starts_on/Initialize(mapload) + . = ..() + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/field/generator/starts_on/post_machine_initialize() . = ..() turn_on() +/obj/machinery/field/generator/starts_on/magic + power_level = 6 //forces the highest level overlay + instantenous = TRUE + +/obj/machinery/field/generator/starts_on/magic/process() + return PROCESS_KILL // this is the only place calc_power is called, and doing it here avoids one unnecessary proc call + #undef FG_UNSECURED #undef FG_SECURED #undef FG_WELDED diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 1c50f8312d4ae..76951670c9831 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -153,7 +153,10 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) ///Stores the time of when the last zap occurred var/last_power_zap = 0 - var/last_high_energy_zap = 0 + ///Stores the tick of the machines subsystem of when the last zap occurred. Gives a passage of time in the perspective of SSmachines. + var/last_power_zap_perspective_machines = 0 + ///Same as [last_power_zap_perspective_machines], but based around the high energy zaps found in handle_high_power(). + var/last_high_energy_zap_perspective_machines = 0 ///Do we show this crystal in the CIMS modular program var/include_in_cims = TRUE @@ -294,13 +297,11 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) // PART 3: POWER PROCESSING internal_energy_factors = calculate_internal_energy() zap_factors = calculate_zap_transmission_rate() - if(internal_energy && (last_power_zap + (4 - internal_energy * 0.001) SECONDS) < world.time) + var/delta_time = (SSmachines.times_fired - last_power_zap_perspective_machines) * SSmachines.wait / (1 SECONDS) + if(delta_time && internal_energy && (last_power_zap + (4 - internal_energy * 0.001) SECONDS) < world.time) playsound(src, 'sound/weapons/emitter2.ogg', 70, TRUE) hue_angle_shift = clamp(903 * log(10, (internal_energy + 8000)) - 3590, -50, 240) var/zap_color = color_matrix_rotate_hue(hue_angle_shift) - //Scale the strength of the zap with the world's time elapsed between zaps in seconds. - //Capped at 16 seconds to prevent a crazy burst of energy if atmos was halted for a long time. - var/delta_time = min((world.time - last_power_zap) * 0.1, 16) supermatter_zap( zapstart = src, range = 3, @@ -311,6 +312,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) color = zap_color, ) last_power_zap = world.time + last_power_zap_perspective_machines = SSmachines.times_fired // PART 4: DAMAGE PROCESSING temp_limit_factors = calculate_temp_limit() @@ -714,6 +716,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) activation_logged = TRUE // so we dont spam the log. else if(!internal_energy) last_power_zap = world.time + last_power_zap_perspective_machines = SSmachines.times_fired return additive_power /** Log when the supermatter is activated for the first time. diff --git a/code/modules/power/supermatter/supermatter_extra_effects.dm b/code/modules/power/supermatter/supermatter_extra_effects.dm index efd84c677fafa..35c96d298dd34 100644 --- a/code/modules/power/supermatter/supermatter_extra_effects.dm +++ b/code/modules/power/supermatter/supermatter_extra_effects.dm @@ -91,7 +91,7 @@ /obj/machinery/power/supermatter_crystal/proc/handle_high_power() if(internal_energy <= POWER_PENALTY_THRESHOLD && damage <= danger_point) //If the power is above 5000 or if the damage is above 550 - last_high_energy_zap = world.time //Prevent oddly high initial zap due to high energy zaps not getting triggered via too low energy. + last_high_energy_zap_perspective_machines = SSmachines.times_fired //Prevent oddly high initial zap due to high energy zaps not getting triggered via too low energy. return var/range = 4 zap_cutoff = 1500 @@ -129,10 +129,10 @@ if(zap_count >= 1) playsound(loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10) - var/delta_time = min((world.time - last_high_energy_zap) * 0.1, 16) + var/delta_time = (SSmachines.times_fired - last_high_energy_zap_perspective_machines) * SSmachines.wait / (1 SECONDS) for(var/i in 1 to zap_count) supermatter_zap(src, range, clamp(internal_energy * 3200, 6.4e6, 3.2e7) * delta_time, flags, zap_cutoff = src.zap_cutoff * delta_time, power_level = internal_energy, zap_icon = src.zap_icon) - last_high_energy_zap = world.time + last_high_energy_zap_perspective_machines = SSmachines.times_fired if(prob(5)) supermatter_anomaly_gen(src, FLUX_ANOMALY, rand(5, 10)) if(prob(5)) diff --git a/code/modules/power/supermatter/supermatter_gas.dm b/code/modules/power/supermatter/supermatter_gas.dm index 35b9db0731f92..fe0ed388148b5 100644 --- a/code/modules/power/supermatter/supermatter_gas.dm +++ b/code/modules/power/supermatter/supermatter_gas.dm @@ -216,7 +216,7 @@ GLOBAL_LIST_INIT(sm_gas_behavior, init_sm_gas()) desc = "Will generate electrical zaps." /datum/sm_gas/zauker/extra_effects(obj/machinery/power/supermatter_crystal/sm) - if(!prob(sm.gas_percentage[/datum/gas/zauker])) + if(!prob(sm.gas_percentage[/datum/gas/zauker] * 100)) return playsound(sm.loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10) sm.supermatter_zap( diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index 3a7c3fcb59d36..4c5c24a3eec89 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -20,6 +20,10 @@ /obj/item/ammo_casing/strilka310/enchanted projectile_type = /obj/projectile/bullet/strilka310/enchanted +/obj/item/ammo_casing/strilka310/phasic + name = ".310 Strilka phasic bullet casing" + desc = "A phasic .310 Strika bullet casing. " + projectile_type = /obj/projectile/bullet/strilka310/phasic // .223 (M-90gl Carbine) /obj/item/ammo_casing/a223 diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index b545500420bc1..aeb3b34ed4a64 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -140,8 +140,8 @@ var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/meteorslug, /datum/crafting_recipe/pulseslug, /datum/crafting_recipe/dragonsbreath, /datum/crafting_recipe/ionslug) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/modules/projectiles/ammunition/energy/special.dm b/code/modules/projectiles/ammunition/energy/special.dm index f9d5ca5d61250..c42bcdc746e45 100644 --- a/code/modules/projectiles/ammunition/energy/special.dm +++ b/code/modules/projectiles/ammunition/energy/special.dm @@ -85,3 +85,10 @@ harmful = FALSE e_cost = LASER_SHOTS(2, STANDARD_CELL_CHARGE * 0.5) fire_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg' // fwip fwip fwip fwip + +// Used by /obj/item/gun/energy/photon +/obj/item/ammo_casing/energy/photon + fire_sound = 'sound/weapons/lasercannonfire.ogg' + e_cost = LASER_SHOTS(4, STANDARD_CELL_CHARGE) + select_name = "flare" + projectile_type = /obj/projectile/energy/photon diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 62f9185d2145c..207190d08f924 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -94,7 +94,7 @@ stack_trace("Tried loading unsupported ammocasing type [load_type] into ammo box [type].") return - for(var/i in max(1, stored_ammo.len) to max_ammo) + for(var/i in max(1, stored_ammo.len + 1) to max_ammo) stored_ammo += new round_check(src) update_appearance() diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 430ef11b7dd5d..bbd89389eb809 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -130,6 +130,12 @@ name = "stripper clip (.310 Surplus)" ammo_type = /obj/item/ammo_casing/strilka310/surplus +/obj/item/ammo_box/strilka310/phasic + name = "stripper clip (.310 Phasic)" + desc = "A stripper clip filled with phasic bullets, hastily developed after an incident where a misfire resulted in the destruction of Atrakor Silverscale's priceless Vigoxian Fabergé egg. \ + These fancy bullets pass right though valuables until they end up in a far less expensive human skull." + ammo_type = /obj/item/ammo_casing/strilka310/phasic + /obj/item/ammo_box/n762 name = "ammo box (7.62x38mmR)" icon_state = "10mmbox" diff --git a/code/modules/projectiles/boxes_magazines/internal/revolver.dm b/code/modules/projectiles/boxes_magazines/internal/revolver.dm index 7d881a11c4dca..e74a192d6900f 100644 --- a/code/modules/projectiles/boxes_magazines/internal/revolver.dm +++ b/code/modules/projectiles/boxes_magazines/internal/revolver.dm @@ -16,7 +16,10 @@ caliber = CALIBER_357 max_ammo = 6 multiload = FALSE + start_empty = TRUE -/obj/item/ammo_box/magazine/internal/rus357/Initialize(mapload) - stored_ammo += new ammo_type(src) +/obj/item/ammo_box/magazine/internal/cylinder/rus357/Initialize(mapload) . = ..() + for (var/i in 1 to max_ammo - 1) + stored_ammo += new /obj/item/ammo_casing/a357/spent(src) + stored_ammo += new /obj/item/ammo_casing/a357(src) diff --git a/code/modules/projectiles/boxes_magazines/internal/rifle.dm b/code/modules/projectiles/boxes_magazines/internal/rifle.dm index 8c6abaa0e7798..863f29508dac0 100644 --- a/code/modules/projectiles/boxes_magazines/internal/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/internal/rifle.dm @@ -9,6 +9,9 @@ /obj/item/ammo_box/magazine/internal/boltaction/surplus ammo_type = /obj/item/ammo_casing/strilka310/surplus +/obj/item/ammo_box/magazine/internal/boltaction/phasic + ammo_type = /obj/item/ammo_casing/strilka310/phasic + /obj/item/ammo_box/magazine/internal/boltaction/pipegun name = "pipegun internal magazine" caliber = CALIBER_JUNK diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 198eed66e3c92..f1df323609dd9 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -64,11 +64,6 @@ /// True if a gun dosen't need a pin, mostly used for abstract guns like tentacles and meathooks var/pinless = FALSE - var/can_bayonet = FALSE //if a bayonet can be added or removed if it already has one. - var/obj/item/knife/bayonet - var/knife_x_offset = 0 - var/knife_y_offset = 0 - var/ammo_x_offset = 0 //used for positioning ammo count overlay on sprite var/ammo_y_offset = 0 @@ -83,12 +78,11 @@ pin = new pin(src) add_seclight_point() + add_bayonet_point() /obj/item/gun/Destroy() if(isobj(pin)) //Can still be the initial path, then we skip QDEL_NULL(pin) - if(bayonet) - QDEL_NULL(bayonet) if(chambered) //Not all guns are chambered (EMP'ed energy guns etc) QDEL_NULL(chambered) if(isatom(suppressed)) //SUPPRESSED IS USED AS BOTH A TRUE/FALSE AND AS A REF, WHAT THE FUCKKKKKKKKKKKKKKKKK @@ -111,6 +105,10 @@ /obj/item/gun/proc/add_seclight_point() return +/// Similarly to add_seclight_point(), handles [the bayonet attachment component][/datum/component/bayonet_attachable] +/obj/item/gun/proc/add_bayonet_point() + return + /obj/item/gun/Exited(atom/movable/gone, direction) . = ..() if(gone == pin) @@ -120,10 +118,6 @@ update_appearance() if(gone == suppressed) clear_suppressor() - if(gone == bayonet) - bayonet = null - if(!QDELING(src)) - update_appearance() ///Clears var and updates icon. In the case of ballistic weapons, also updates the gun's weight. /obj/item/gun/proc/clear_suppressor() @@ -144,13 +138,6 @@ else . += "It doesn't have a firing pin installed, and won't fire." - if(bayonet) - . += "It has \a [bayonet] [can_bayonet ? "" : "permanently "]affixed to it." - if(can_bayonet) //if it has a bayonet and this is false, the bayonet is permanent. - . += span_info("[bayonet] looks like it can be unscrewed from [src].") - if(can_bayonet) - . += "It has a bayonet lug on it." - //called after the gun has successfully fired its chambered ammo. /obj/item/gun/proc/process_chamber(empty_chamber = TRUE, from_firing = TRUE, chamber_next_round = TRUE) handle_chamber(empty_chamber, from_firing, chamber_next_round) @@ -248,31 +235,6 @@ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN -/obj/item/gun/pre_attack(atom/A, mob/living/user, params) - . = ..() - if(.) - return . - if(isnull(bayonet) || !user.combat_mode) - return . - return bayonet.melee_attack_chain(user, A, params) - -/obj/item/gun/item_interaction(mob/living/user, obj/item/tool, list/modifiers) - if(user.combat_mode) - return NONE - - if(istype(tool, /obj/item/knife)) - var/obj/item/knife/new_stabber = tool - if(!can_bayonet || !new_stabber.bayonet || !isnull(bayonet)) //ensure the gun has an attachment point available, and that the knife is compatible with it. - return ITEM_INTERACT_BLOCKING - if(!user.transferItemToLoc(new_stabber, src)) - return ITEM_INTERACT_BLOCKING - to_chat(user, span_notice("You attach [new_stabber] to [src]'s bayonet lug.")) - bayonet = new_stabber - update_appearance() - return ITEM_INTERACT_SUCCESS - - return NONE - /obj/item/gun/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(user.combat_mode && isliving(interacting_with)) return ITEM_INTERACT_SKIP_TO_ATTACK // Gun bash / bayonet attack @@ -508,17 +470,7 @@ return if(!user.can_perform_action(src, FORBID_TELEKINESIS_REACH)) return - - if(bayonet && can_bayonet) //if it has a bayonet, and the bayonet can be removed - I.play_tool_sound(src) - to_chat(user, span_notice("You unfix [bayonet] from [src].")) - bayonet.forceMove(drop_location()) - - if(Adjacent(user) && !issilicon(user)) - user.put_in_hands(bayonet) - return ITEM_INTERACT_SUCCESS - - else if(pin?.pin_removable && user.is_holding(src)) + if(pin?.pin_removable && user.is_holding(src)) user.visible_message(span_warning("[user] attempts to remove [pin] from [src] with [I]."), span_notice("You attempt to remove [pin] from [src]. (It will take [DisplayTimeText(FIRING_PIN_REMOVAL_DELAY)].)"), null, 3) if(I.use_tool(src, user, FIRING_PIN_REMOVAL_DELAY, volume = 50)) @@ -563,19 +515,6 @@ QDEL_NULL(pin) return TRUE -/obj/item/gun/update_overlays() - . = ..() - if(bayonet) - var/mutable_appearance/knife_overlay - var/state = "bayonet" //Generic state. - if(bayonet.icon_state in icon_states('icons/obj/weapons/guns/bayonets.dmi')) //Snowflake state? - state = bayonet.icon_state - var/icon/bayonet_icons = 'icons/obj/weapons/guns/bayonets.dmi' - knife_overlay = mutable_appearance(bayonet_icons, state) - knife_overlay.pixel_x = knife_x_offset - knife_overlay.pixel_y = knife_y_offset - . += knife_overlay - /obj/item/gun/animate_atom_living(mob/living/owner) new /mob/living/simple_animal/hostile/mimic/copy/ranged(drop_location(), src, owner) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 6f798eb8908e1..361d68123f5c4 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -638,8 +638,7 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( if(sawn_off) balloon_alert(user, "it's already shortened!") return - if(bayonet) - balloon_alert(user, "[bayonet.name] must be removed!") + if (SEND_SIGNAL(src, COMSIG_GUN_BEING_SAWNOFF, user) & COMPONENT_CANCEL_SAWING_OFF) return user.changeNext_move(CLICK_CD_MELEE) user.visible_message(span_notice("[user] begins to shorten [src]."), span_notice("You begin to shorten [src]...")) @@ -649,27 +648,30 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( user.visible_message(span_danger("[src] goes off!"), span_danger("[src] goes off in your face!")) return - if(do_after(user, 3 SECONDS, target = src)) - if(sawn_off) - return - user.visible_message(span_notice("[user] shortens [src]!"), span_notice("You shorten [src].")) - sawn_off = TRUE - if(handle_modifications) - name = "sawn-off [src.name]" - desc = sawn_desc - update_weight_class(WEIGHT_CLASS_NORMAL) - //The file might not have a "gun" icon, let's prepare for this - lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' - inhand_x_dimension = 32 - inhand_y_dimension = 32 - inhand_icon_state = "gun" - worn_icon_state = "gun" - slot_flags &= ~ITEM_SLOT_BACK //you can't sling it on your back - slot_flags |= ITEM_SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) - recoil = SAWN_OFF_RECOIL - update_appearance() + if(!do_after(user, 3 SECONDS, target = src)) + return + if(sawn_off) + return + user.visible_message(span_notice("[user] shortens [src]!"), span_notice("You shorten [src].")) + sawn_off = TRUE + SEND_SIGNAL(src, COMSIG_GUN_SAWN_OFF) + if(!handle_modifications) return TRUE + name = "sawn-off [src.name]" + desc = sawn_desc + update_weight_class(WEIGHT_CLASS_NORMAL) + //The file might not have a "gun" icon, let's prepare for this + lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' + inhand_x_dimension = 32 + inhand_y_dimension = 32 + inhand_icon_state = "gun" + worn_icon_state = "gun" + slot_flags &= ~ITEM_SLOT_BACK //you can't sling it on your back + slot_flags |= ITEM_SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) + recoil = SAWN_OFF_RECOIL + update_appearance() + return TRUE /obj/item/gun/ballistic/proc/guncleaning(mob/user, obj/item/A) if(misfire_probability == initial(misfire_probability)) diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 30ba65dc94a86..b86e2a9938995 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -41,13 +41,13 @@ fire_delay = 2 burst_size = 3 pin = /obj/item/firing_pin/implant/pindicate - can_bayonet = TRUE - knife_x_offset = 26 - knife_y_offset = 12 mag_display = TRUE mag_display_ammo = TRUE empty_indicator = TRUE +/obj/item/gun/ballistic/automatic/c20r/add_bayonet_point() + AddComponent(/datum/component/bayonet_attachable, offset_x = 26, offset_y = 12) + /obj/item/gun/ballistic/automatic/c20r/update_overlays() . = ..() if(!chambered && empty_indicator) //this is duplicated due to a layering issue with the select fire icon. @@ -75,9 +75,6 @@ can_suppress = FALSE burst_size = 1 actions_types = list() - can_bayonet = TRUE - knife_x_offset = 25 - knife_y_offset = 12 mag_display = TRUE mag_display_ammo = TRUE empty_indicator = TRUE @@ -86,6 +83,9 @@ . = ..() AddComponent(/datum/component/automatic_fire, 0.3 SECONDS) +/obj/item/gun/ballistic/automatic/wt550/add_bayonet_point() + AddComponent(/datum/component/bayonet_attachable, offset_x = 25, offset_y = 12) + /obj/item/gun/ballistic/automatic/plastikov name = "\improper PP-95 SMG" desc = "An ancient 9mm submachine gun pattern updated and simplified to lower costs, though perhaps simplified too much." diff --git a/code/modules/projectiles/guns/ballistic/bows/_bow.dm b/code/modules/projectiles/guns/ballistic/bows/_bow.dm index 15c89ddb8553d..c0ce0b1ef2c9d 100644 --- a/code/modules/projectiles/guns/ballistic/bows/_bow.dm +++ b/code/modules/projectiles/guns/ballistic/bows/_bow.dm @@ -27,7 +27,12 @@ /obj/item/gun/ballistic/bow/update_icon_state() . = ..() - icon_state = chambered ? "[base_icon_state]_[drawn ? "drawn" : "nocked"]" : "[base_icon_state]" + icon_state = "[base_icon_state][drawn ? "_drawn" : ""]" + +/obj/item/gun/ballistic/bow/update_overlays() + . = ..() + if(chambered) + . += "[chambered.base_icon_state][drawn ? "_drawn" : ""]" /obj/item/gun/ballistic/bow/click_alt(mob/user) if(isnull(chambered)) @@ -72,6 +77,11 @@ return FALSE return ..() //fires, removing the arrow +/obj/item/gun/ballistic/bow/postfire_empty_checks(last_shot_succeeded) + if(!chambered && !get_ammo()) + drawn = FALSE + update_appearance() + /obj/item/gun/ballistic/bow/equipped(mob/user, slot, initial) . = ..() if(slot != ITEM_SLOT_HANDS && chambered) diff --git a/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm b/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm index 22e441cd56b17..92c4f19e9b333 100644 --- a/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm +++ b/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm @@ -33,16 +33,17 @@ speed = 1 range = 25 shrapnel_type = null - embedding = list( - embed_chance = 90, - fall_chance = 2, - jostle_chance = 2, - ignore_throwspeed_threshold = TRUE, - pain_stam_pct = 0.5, - pain_mult = 3, - jostle_pain_mult = 3, - rip_time = 1 SECONDS - ) + embed_type = /datum/embed_data/arrow + +/datum/embed_data/arrow + embed_chance = 90 + fall_chance = 2 + jostle_chance = 2 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.5 + pain_mult = 3 + jostle_pain_mult = 3 + rip_time = 1 SECONDS /// holy arrows /obj/item/ammo_casing/arrow/holy @@ -58,22 +59,34 @@ name = "holy arrow" desc = "Here it comes, cultist scum!" icon_state = "holy_arrow_projectile" - damage = 20 //still a lot but this is roundstart gear so far less - embedding = list( - embed_chance = 50, - fall_chance = 2, - jostle_chance = 0, - ignore_throwspeed_threshold = TRUE, - pain_stam_pct = 0.5, - pain_mult = 3, - rip_time = 1 SECONDS - ) /obj/projectile/bullet/arrow/holy/Initialize(mapload) . = ..() //50 damage to revenants AddElement(/datum/element/bane, target_type = /mob/living/basic/revenant, damage_multiplier = 0, added_damage = 30) +/// plastic arrows +// completely dogshit quality and they break when they hit something. +/obj/item/ammo_casing/arrow/plastic + name = "plastic arrow" + desc = "The earliest mining teams within the Spinward Sector were the somewhat stout ancestors of the modern settlers. These teams \ + found themselves often unable to access the quality materials they were digging up for equipment maintenance, all being sent off-site. \ + Left with few options, and in need of a way to protect themselves in the hostile work enviroments of the Spinward, they turned \ + to the one material they had in abundance." + icon_state = "plastic_arrow" + base_icon_state = "plastic_arrow" + projectile_type = /obj/projectile/bullet/arrow/plastic + reusable = FALSE //cheap shit + +/// plastic arrow projectile +/obj/projectile/bullet/arrow/plastic + name = "plastic arrow" + desc = "If this is about to kill you, you should feel genuine shame." + damage = 5 + stamina = 50 + weak_against_armour = TRUE + icon_state = "plastic_arrow_projectile" + /// special pyre sect arrow /// in the future, this needs a special sprite, but bows don't support non-hardcoded arrow sprites /obj/item/ammo_casing/arrow/holy/blazing @@ -87,7 +100,7 @@ desc = "THE UNMATCHED POWER OF THE SUN" icon_state = "holy_arrow_projectile" damage = 20 - embedding = null + embed_type = null /obj/projectile/bullet/arrow/blazing/on_hit(atom/target, blocked, pierce_hit) . = ..() @@ -99,5 +112,5 @@ human_target.adjust_fire_stacks(2) human_target.ignite_mob() return - to_chat(human_target, span_danger("[src] reacts with the flames on y-")) + to_chat(human_target, span_danger("[src] reacts with the flames enveloping you! Oh shit!")) explosion(src, light_impact_range = 1, flame_range = 2) //ow diff --git a/code/modules/projectiles/guns/ballistic/bows/bow_quivers.dm b/code/modules/projectiles/guns/ballistic/bows/bow_quivers.dm index 07d7cc93ce16e..2492f0d4276f5 100644 --- a/code/modules/projectiles/guns/ballistic/bows/bow_quivers.dm +++ b/code/modules/projectiles/guns/ballistic/bows/bow_quivers.dm @@ -8,6 +8,7 @@ worn_icon_state = "harpoon_quiver" /// type of arrow the quivel should hold var/arrow_path = /obj/item/ammo_casing/arrow + var/max_slots = 40 /obj/item/storage/bag/quiver/Initialize(mapload) . = ..() @@ -17,7 +18,10 @@ atom_storage.max_total_storage = 100 atom_storage.set_holdable(/obj/item/ammo_casing/arrow) -/obj/item/storage/bag/quiver/PopulateContents() +/obj/item/storage/bag/quiver/lesser + max_slots = 10 + +/obj/item/storage/bag/quiver/full/PopulateContents() . = ..() for(var/i in 1 to 10) new arrow_path(src) @@ -29,3 +33,8 @@ inhand_icon_state = "holyquiver" worn_icon_state = "holyquiver" arrow_path = /obj/item/ammo_casing/arrow/holy + +/obj/item/storage/bag/quiver/holy/PopulateContents() + . = ..() + for(var/i in 1 to 10) + new arrow_path(src) diff --git a/code/modules/projectiles/guns/ballistic/bows/bow_types.dm b/code/modules/projectiles/guns/ballistic/bows/bow_types.dm index b9ac1af0cca12..83b3bc43dd174 100644 --- a/code/modules/projectiles/guns/ballistic/bows/bow_types.dm +++ b/code/modules/projectiles/guns/ballistic/bows/bow_types.dm @@ -4,6 +4,12 @@ name = "longbow" desc = "While pretty finely crafted, surely you can find something better to use in the current year." +/// Shortbow, made via the crafting recipe +/obj/item/gun/ballistic/bow/shortbow + name = "shortbow" + desc = "A simple homemade shortbow. Great for LARPing. Or poking out someones eye." + projectile_damage_multiplier = 0.36 + ///chaplain's divine archer bow /obj/item/gun/ballistic/bow/divine name = "divine bow" @@ -15,6 +21,7 @@ slot_flags = ITEM_SLOT_BACK obj_flags = UNIQUE_RENAME accepted_magazine_type = /obj/item/ammo_box/magazine/internal/bow/holy + projectile_damage_multiplier = 0.4 /obj/item/ammo_box/magazine/internal/bow/holy name = "divine bowstring" diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index a8161ddb39612..8604e21b32503 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -54,9 +54,6 @@ slot_flags = ITEM_SLOT_BACK accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction - can_bayonet = TRUE - knife_x_offset = 42 - knife_y_offset = 12 can_be_sawn_off = TRUE weapon_weight = WEAPON_HEAVY var/jamming_chance = 20 @@ -67,11 +64,13 @@ SET_BASE_PIXEL(-8, 0) +/obj/item/gun/ballistic/rifle/boltaction/add_bayonet_point() + AddComponent(/datum/component/bayonet_attachable, offset_x = 32, offset_y = 12) + /obj/item/gun/ballistic/rifle/boltaction/sawoff(mob/user) . = ..() if(.) spread = 36 - can_bayonet = FALSE SET_BASE_PIXEL(0, 0) update_appearance() @@ -160,6 +159,7 @@ You are now probably one of the few people in the universe to ever hold an \"Obrez Moderna\". \ All you had to do was take an allen wrench to the stock to take it off. But no, you just had to \ go for the saw." + accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/phasic /obj/item/gun/ballistic/rifle/boltaction/prime/Initialize(mapload) . = ..() @@ -271,14 +271,14 @@ projectile_damage_multiplier = 1.35 obj_flags = UNIQUE_RENAME - can_bayonet = TRUE - knife_x_offset = 35 - knife_y_offset = 10 can_be_sawn_off = FALSE trigger_guard = TRIGGER_GUARD_ALLOW_ALL SET_BASE_PIXEL(-8, 0) +/obj/item/gun/ballistic/rifle/boltaction/pipegun/add_bayonet_point() + AddComponent(/datum/component/bayonet_attachable, offset_x = 35, offset_y = 10) + /obj/item/gun/ballistic/rifle/boltaction/pipegun/handle_chamber() . = ..() do_sparks(1, TRUE, src) @@ -305,11 +305,13 @@ spread = 15 //kinda inaccurate slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL - can_bayonet = FALSE weapon_weight = WEAPON_MEDIUM SET_BASE_PIXEL(0, 0) +/obj/item/gun/ballistic/rifle/boltaction/pipegun/pipepistol/add_bayonet_point() + return + /obj/item/gun/ballistic/rifle/boltaction/pipegun/prime name = "regal pipegun" desc = "To call this 'regal' is a cruel irony. For the only noteworthy quality of nobility is in how it is wielded to kill. \ diff --git a/code/modules/projectiles/guns/energy/crank_guns.dm b/code/modules/projectiles/guns/energy/crank_guns.dm index 64ffa86f36015..fa56075990ec5 100644 --- a/code/modules/projectiles/guns/energy/crank_guns.dm +++ b/code/modules/projectiles/guns/energy/crank_guns.dm @@ -7,9 +7,9 @@ ammo_type = list(/obj/item/ammo_casing/energy/laser/musket) slot_flags = ITEM_SLOT_BACK obj_flags = UNIQUE_RENAME - can_bayonet = TRUE - knife_x_offset = 22 - knife_y_offset = 11 + +/obj/item/gun/energy/laser/musket/add_bayonet_point() + AddComponent(/datum/component/bayonet_attachable, offset_x = 22, offset_y = 11) /obj/item/gun/energy/laser/musket/Initialize(mapload) . = ..() @@ -84,12 +84,12 @@ shaded_charge = TRUE ammo_x_offset = 1 obj_flags = UNIQUE_RENAME - can_bayonet = TRUE - knife_x_offset = 19 - knife_y_offset = 13 w_class = WEIGHT_CLASS_NORMAL dual_wield_spread = 5 //as intended by the coders +/obj/item/gun/energy/laser/thermal/add_bayonet_point() + AddComponent(/datum/component/bayonet_attachable, offset_x = 19, offset_y = 13) + /obj/item/gun/energy/laser/thermal/Initialize(mapload) . = ..() AddElement(/datum/element/empprotection, EMP_PROTECT_SELF|EMP_PROTECT_CONTENTS) diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm index f35769e663c71..9a7fa9aa78bea 100644 --- a/code/modules/projectiles/guns/energy/dueling.dm +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -365,6 +365,7 @@ icon_closed = "medalbox" icon_broken = "medalbox+b" base_icon_state = "medalbox" + icon_open = "medalboxopen" /obj/item/storage/lockbox/dueling/Initialize(mapload) . = ..() @@ -372,16 +373,6 @@ atom_storage.max_slots = 2 atom_storage.set_holdable(/obj/item/gun/energy/dueling) -/obj/item/storage/lockbox/dueling/update_icon_state() - if(atom_storage?.locked) - icon_state = icon_locked - return ..() - if(broken) - icon_state = icon_broken - return ..() - icon_state = open ? "[base_icon_state]open" : icon_closed - return ..() - /obj/item/storage/lockbox/dueling/PopulateContents() . = ..() var/obj/item/gun/energy/dueling/gun_A = new(src) diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index 3ce3338bf8749..e826e1392bf28 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -16,8 +16,8 @@ return var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/advancedegun, /datum/crafting_recipe/tempgun, /datum/crafting_recipe/beam_rifle) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 7237ee0e32747..ab023d38b55ef 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -9,9 +9,6 @@ obj_flags = UNIQUE_RENAME resistance_flags = FIRE_PROOF weapon_weight = WEAPON_LIGHT - can_bayonet = TRUE - knife_x_offset = 20 - knife_y_offset = 12 gun_flags = NOT_A_REAL_GUN ///List of all mobs that projectiles fired from this gun will ignore. var/list/ignored_mob_types @@ -20,6 +17,9 @@ ///The max capacity of modkits the PKA can have installed at once. var/max_mod_capacity = 100 +/obj/item/gun/energy/recharge/kinetic_accelerator/add_bayonet_point() + AddComponent(/datum/component/bayonet_attachable, offset_x = 20, offset_y = 12) + /obj/item/gun/energy/recharge/kinetic_accelerator/Initialize(mapload) . = ..() // Only actual KAs can be converted @@ -27,8 +27,8 @@ return var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/ebow) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 95baca98db80f..90dc0c5717275 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -16,8 +16,8 @@ return var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/xraylaser, /datum/crafting_recipe/hellgun, /datum/crafting_recipe/ioncarbine) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 0635de8037adf..839689144c2f1 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -59,6 +59,9 @@ /obj/item/gun/energy/pulse/carbine/loyalpin pin = /obj/item/firing_pin/implant/mindshield +/obj/item/gun/energy/pulse/carbine/taserless + ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse, /obj/item/ammo_casing/energy/laser) + /obj/item/gun/energy/pulse/destroyer name = "pulse destroyer" desc = "A heavy-duty energy rifle built for pure destruction." @@ -79,6 +82,9 @@ inhand_icon_state = "gun" cell_type = /obj/item/stock_parts/power_store/cell/pulse/pistol +/obj/item/gun/energy/pulse/pistol/taserless + ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse, /obj/item/ammo_casing/energy/laser) + /obj/item/gun/energy/pulse/pistol/loyalpin pin = /obj/item/firing_pin/implant/mindshield diff --git a/code/modules/projectiles/guns/energy/recharge.dm b/code/modules/projectiles/guns/energy/recharge.dm index 0aa14b48c32f6..504dc5c9e0f4a 100644 --- a/code/modules/projectiles/guns/energy/recharge.dm +++ b/code/modules/projectiles/guns/energy/recharge.dm @@ -111,9 +111,9 @@ recharge_time = 2 SECONDS holds_charge = TRUE unique_frequency = TRUE - can_bayonet = TRUE - knife_x_offset = 20 - knife_y_offset = 12 + +/obj/item/gun/energy/recharge/ebow/add_bayonet_point() + AddComponent(/datum/component/bayonet_attachable, offset_x = 20, offset_y = 12) /obj/item/gun/energy/recharge/ebow/halloween name = "candy corn crossbow" diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 653cffcbeec7d..961d32c96ee8b 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -428,3 +428,21 @@ new_coin.preparePixelProjectile(target_turf, user) new_coin.fire() return ITEM_INTERACT_SUCCESS + +/obj/item/gun/energy/photon + name = "photon cannon" + desc = "A competitive design to the tesla cannon, that instead of charging latent electrons, releases energy into photons. Eye protection is recommended." + icon_state = "photon" + inhand_icon_state = "tesla" + fire_sound = 'sound/weapons/lasercannonfire.ogg' + ammo_type = list(/obj/item/ammo_casing/energy/photon) + shaded_charge = TRUE + weapon_weight = WEAPON_HEAVY + light_color = LIGHT_COLOR_DEFAULT + light_system = OVERLAY_LIGHT + light_power = 2 + light_range = 1 + +/obj/item/gun/energy/photon/Initialize(mapload) + . = ..() + set_light_on(TRUE) // The gun quite literally shoots mini-suns. diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index e8f41ef0b48ec..b2fe293eae8c2 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -277,3 +277,78 @@ charges-- user.AddComponent(/datum/component/shrink, -1) // small forever return ..() + +// Wand of debugging + +#ifdef TESTING + +/obj/item/gun/magic/wand/antag + name = "wand of antag" + desc = "This wand uses the powers of bullshit to turn anyone it hits into an antag" + school = SCHOOL_FORBIDDEN + ammo_type = /obj/item/ammo_casing/magic/antag + icon_state = "revivewand" + base_icon_state = "revivewand" + color = COLOR_ADMIN_PINK + max_charges = 99999 + +/obj/item/gun/magic/wand/antag/zap_self(mob/living/user) + . = ..() + var/obj/item/ammo_casing/magic/antag/casing = new ammo_type() + var/obj/projectile/magic/magic_proj = casing.projectile_type + magic_proj = new magic_proj(src) + magic_proj.on_hit(user) + QDEL_NULL(casing) + +/obj/item/ammo_casing/magic/antag + projectile_type = /obj/projectile/magic/antag + harmful = FALSE + +/obj/projectile/magic/antag + name = "bolt of antag" + icon_state = "ion" + var/antag = /datum/antagonist/traitor + +/obj/projectile/magic/antag/on_hit(atom/target, blocked, pierce_hit) + . = ..() + + if(isliving(target)) + var/mob/living/victim = target + if(isnull(victim.mind)) + victim.mind_initialize() + if(victim.mind.has_antag_datum(antag)) + victim.mind.remove_antag_datum(antag) + to_chat(world, "removed") + else + victim.mind.add_antag_datum(antag) + to_chat(world, "added") + +/obj/item/gun/magic/wand/antag/heretic + name = "wand of antag heretic" + desc = "This wand uses the powers of bullshit to turn anyone it hits into an antag heretic" + color = COLOR_GREEN + ammo_type = /obj/item/ammo_casing/magic/antag/heretic + +/obj/item/ammo_casing/magic/antag/heretic + projectile_type = /obj/projectile/magic/antag/heretic + +/obj/projectile/magic/antag/heretic + name = "bolt of antag heretic" + icon_state = "ion" + antag = /datum/antagonist/heretic + +/obj/item/gun/magic/wand/antag/cult + name = "wand of antag cultist" + desc = "This wand uses the powers of bullshit to turn anyone it hits into an antag cultist" + color = COLOR_CULT_RED + ammo_type = /obj/item/ammo_casing/magic/antag/cult + +/obj/item/ammo_casing/magic/antag/cult + projectile_type = /obj/projectile/magic/antag/cult + +/obj/projectile/magic/antag/cult + name = "bolt of antag cult" + icon_state = "ion" + antag = /datum/antagonist/cult + +#endif diff --git a/code/modules/projectiles/guns/special/hand_of_midas.dm b/code/modules/projectiles/guns/special/hand_of_midas.dm index 68b8158c32d9f..e92ffe8d0bf22 100644 --- a/code/modules/projectiles/guns/special/hand_of_midas.dm +++ b/code/modules/projectiles/guns/special/hand_of_midas.dm @@ -37,20 +37,26 @@ balloon_alert(user, "not enough gold") // Siphon gold from a victim, recharging our gun & removing their Midas Blight debuff in the process. +/obj/item/gun/magic/midas_hand/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers) + if(!isliving(interacting_with)) + return ITEM_INTERACT_BLOCKING + return suck_gold(interacting_with, user) + /obj/item/gun/magic/midas_hand/ranged_interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers) if(!isliving(interacting_with) || !IN_GIVEN_RANGE(user, interacting_with, gold_suck_range)) return ITEM_INTERACT_BLOCKING - if(interacting_with == user) + return suck_gold(interacting_with, user) + +/obj/item/gun/magic/midas_hand/proc/suck_gold(mob/living/victim, mob/living/user) + if(victim == user) balloon_alert(user, "can't siphon from self!") return ITEM_INTERACT_BLOCKING - if(!interacting_with.reagents) + if(!victim.reagents) return ITEM_INTERACT_BLOCKING - - var/gold_amount = interacting_with.reagents.get_reagent_amount(/datum/reagent/gold, type_check = REAGENT_SUB_TYPE) + var/gold_amount = victim.reagents.get_reagent_amount(/datum/reagent/gold, type_check = REAGENT_SUB_TYPE) if(!gold_amount) balloon_alert(user, "no gold in bloodstream!") return ITEM_INTERACT_BLOCKING - var/mob/living/victim = interacting_with var/gold_beam = user.Beam(victim, icon_state = "drain_gold") if(!do_after( user = user, diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 43e4e160d06a1..90fbbfc6da292 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -191,7 +191,9 @@ ///If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets var/shrapnel_type ///If we have a shrapnel_type defined, these embedding stats will be passed to the spawned shrapnel type, which will roll for embedding on the target - var/list/embedding + var/embed_type + ///Saves embedding data + var/datum/embed_data/embed_data ///If TRUE, hit mobs, even if they are lying on the floor and are not our target within MAX_RANGE_HIT_PRONE_TARGETS tiles var/hit_prone_targets = FALSE ///if TRUE, ignores the range of MAX_RANGE_HIT_PRONE_TARGETS tiles of hit_prone_targets @@ -218,8 +220,8 @@ /obj/projectile/Initialize(mapload) . = ..() decayedRange = range - if(embedding) - updateEmbedding() + if(get_embed()) + AddElement(/datum/element/embed) AddElement(/datum/element/connect_loc, projectile_connections) /obj/projectile/proc/Range() @@ -227,8 +229,8 @@ if(wound_bonus != CANT_WOUND) wound_bonus += wound_falloff_tile bare_wound_bonus = max(0, bare_wound_bonus + wound_falloff_tile) - if(embedding) - embedding["embed_chance"] += embed_falloff_tile + if(get_embed()) + set_embed(embed_data.generate_with_values(embed_data.embed_chance + embed_falloff_tile)) // Should be rewritten in projecitle refactor if(damage_falloff_tile && damage >= 0) damage += damage_falloff_tile if(stamina_falloff_tile && stamina >= 0) @@ -930,6 +932,8 @@ trajectory.increment(trajectory_multiplier) var/turf/T = trajectory.return_turf() if(!istype(T)) + // step back to the last valid turf before we Destroy + trajectory.increment(-trajectory_multiplier) qdel(src) return if(T.z != loc.z) @@ -1128,26 +1132,6 @@ /obj/projectile/experience_pressure_difference() return -///Like [/obj/item/proc/updateEmbedding] but for projectiles instead, call this when you want to add embedding or update the stats on the embedding element -/obj/projectile/proc/updateEmbedding() - if(!shrapnel_type || !LAZYLEN(embedding)) - return - - AddElement(/datum/element/embed,\ - embed_chance = (!isnull(embedding["embed_chance"]) ? embedding["embed_chance"] : EMBED_CHANCE),\ - fall_chance = (!isnull(embedding["fall_chance"]) ? embedding["fall_chance"] : EMBEDDED_ITEM_FALLOUT),\ - pain_chance = (!isnull(embedding["pain_chance"]) ? embedding["pain_chance"] : EMBEDDED_PAIN_CHANCE),\ - pain_mult = (!isnull(embedding["pain_mult"]) ? embedding["pain_mult"] : EMBEDDED_PAIN_MULTIPLIER),\ - remove_pain_mult = (!isnull(embedding["remove_pain_mult"]) ? embedding["remove_pain_mult"] : EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER),\ - rip_time = (!isnull(embedding["rip_time"]) ? embedding["rip_time"] : EMBEDDED_UNSAFE_REMOVAL_TIME),\ - ignore_throwspeed_threshold = (!isnull(embedding["ignore_throwspeed_threshold"]) ? embedding["ignore_throwspeed_threshold"] : FALSE),\ - impact_pain_mult = (!isnull(embedding["impact_pain_mult"]) ? embedding["impact_pain_mult"] : EMBEDDED_IMPACT_PAIN_MULTIPLIER),\ - jostle_chance = (!isnull(embedding["jostle_chance"]) ? embedding["jostle_chance"] : EMBEDDED_JOSTLE_CHANCE),\ - jostle_pain_mult = (!isnull(embedding["jostle_pain_mult"]) ? embedding["jostle_pain_mult"] : EMBEDDED_JOSTLE_PAIN_MULTIPLIER),\ - pain_stam_pct = (!isnull(embedding["pain_stam_pct"]) ? embedding["pain_stam_pct"] : EMBEDDED_PAIN_STAM_PCT),\ - projectile_payload = shrapnel_type) - return TRUE - /** * Is this projectile considered "hostile"? * @@ -1167,7 +1151,7 @@ ///Checks if the projectile can embed into someone /obj/projectile/proc/can_embed_into(atom/hit) - return embedding && shrapnel_type && iscarbon(hit) && !HAS_TRAIT(hit, TRAIT_PIERCEIMMUNE) + return get_embed() && shrapnel_type && iscarbon(hit) && !HAS_TRAIT(hit, TRAIT_PIERCEIMMUNE) /// Reflects the projectile off of something /obj/projectile/proc/reflect(atom/hit_atom) @@ -1210,3 +1194,16 @@ bullet.preparePixelProjectile(target, src) bullet.fire() return bullet + +/// Fetches embedding data +/obj/projectile/proc/get_embed() + return embed_type ? (embed_data ||= get_embed_by_type(embed_type)) : null + +/obj/projectile/proc/set_embed(datum/embed_data/embed) + if(embed_data == embed) + return + // GLOB.embed_by_type stores shared "default" embedding values of datums + // Dynamically generated embeds use the base class and thus are not present in there, and should be qdeleted upon being discarded + if(!isnull(embed_data) && !GLOB.embed_by_type[embed_data.type]) + qdel(embed_data) + embed_data = ispath(embed) ? get_embed_by_type(armor) : embed diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 5e938c4995390..1d1313d9e5551 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -8,7 +8,7 @@ sharpness = SHARP_POINTY impact_effect_type = /obj/effect/temp_visual/impact_effect shrapnel_type = /obj/item/shrapnel/bullet - embedding = list(embed_chance=20, fall_chance=2, jostle_chance=0, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.5, pain_mult=3, rip_time=10) + embed_type = /datum/embed_data/bullet wound_bonus = 0 wound_falloff_tile = -5 embed_falloff_tile = -3 @@ -16,3 +16,12 @@ /obj/projectile/bullet/smite name = "divine retribution" damage = 10 + +/datum/embed_data/bullet + embed_chance=20 + fall_chance=2 + jostle_chance=0 + ignore_throwspeed_threshold=TRUE + pain_stam_pct=0.5 + pain_mult=3 + rip_time=10 diff --git a/code/modules/projectiles/projectile/bullets/_incendiary.dm b/code/modules/projectiles/projectile/bullets/_incendiary.dm index 85c2dce80c51a..e151afa294d50 100644 --- a/code/modules/projectiles/projectile/bullets/_incendiary.dm +++ b/code/modules/projectiles/projectile/bullets/_incendiary.dm @@ -30,7 +30,7 @@ pass_flags = PASSTABLE | PASSMOB sharpness = NONE shrapnel_type = null - embedding = null + embed_type = null impact_effect_type = null suppressed = SUPPRESSED_VERY damage_type = BURN diff --git a/code/modules/projectiles/projectile/bullets/cannonball.dm b/code/modules/projectiles/projectile/bullets/cannonball.dm index 1d6108ed33fd2..358a23eb63c90 100644 --- a/code/modules/projectiles/projectile/bullets/cannonball.dm +++ b/code/modules/projectiles/projectile/bullets/cannonball.dm @@ -8,7 +8,7 @@ dismemberment = 0 paralyze = 5 SECONDS stutter = 20 SECONDS - embedding = null + embed_type = null hitsound = 'sound/effects/meteorimpact.ogg' hitsound_wall = 'sound/weapons/sonic_jackhammer.ogg' /// If our cannonball hits something, it reduces the damage by this value. diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index 405552a8909c2..1bd88d75fdea0 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -2,7 +2,7 @@ name = "dart" icon_state = "cbbolt" damage = 6 - embedding = null + embed_type = null shrapnel_type = null var/inject_flags = null diff --git a/code/modules/projectiles/projectile/bullets/dnainjector.dm b/code/modules/projectiles/projectile/bullets/dnainjector.dm index fdb051e7f8006..b4029b07f2da6 100644 --- a/code/modules/projectiles/projectile/bullets/dnainjector.dm +++ b/code/modules/projectiles/projectile/bullets/dnainjector.dm @@ -4,7 +4,7 @@ var/obj/item/dnainjector/injector damage = 5 hitsound_wall = SFX_SHATTER - embedding = null + embed_type = null shrapnel_type = null /obj/projectile/bullet/dnainjector/on_hit(atom/target, blocked = 0, pierce_hit) diff --git a/code/modules/projectiles/projectile/bullets/foam_dart.dm b/code/modules/projectiles/projectile/bullets/foam_dart.dm index 3f086166e6a88..7eaa1ce6c8ee4 100644 --- a/code/modules/projectiles/projectile/bullets/foam_dart.dm +++ b/code/modules/projectiles/projectile/bullets/foam_dart.dm @@ -8,7 +8,7 @@ base_icon_state = "foamdart" range = 10 shrapnel_type = null - embedding = null + embed_type = null var/modified = FALSE var/obj/item/pen/pen = null diff --git a/code/modules/projectiles/projectile/bullets/grenade.dm b/code/modules/projectiles/projectile/bullets/grenade.dm index a99a7b57ff3ec..0814a844be4a7 100644 --- a/code/modules/projectiles/projectile/bullets/grenade.dm +++ b/code/modules/projectiles/projectile/bullets/grenade.dm @@ -5,7 +5,7 @@ desc = "USE A WEEL GUN" icon_state= "bolter" damage = 60 - embedding = null + embed_type = null shrapnel_type = null /obj/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0, pierce_hit) diff --git a/code/modules/projectiles/projectile/bullets/junk.dm b/code/modules/projectiles/projectile/bullets/junk.dm index 344a732911347..285c3ea281509 100644 --- a/code/modules/projectiles/projectile/bullets/junk.dm +++ b/code/modules/projectiles/projectile/bullets/junk.dm @@ -4,11 +4,21 @@ name = "junk bullet" icon_state = "trashball" damage = 30 - embedding = list(embed_chance=15, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10) + embed_type = /datum/embed_data/bullet_junk var/bane_mob_biotypes = MOB_ROBOTIC var/bane_multiplier = 1.5 var/bane_added_damage = 0 +/datum/embed_data/bullet_junk + embed_chance=15 + fall_chance=3 + jostle_chance=4 + ignore_throwspeed_threshold=TRUE + pain_stam_pct=0.4 + pain_mult=5 + jostle_pain_mult=6 + rip_time=10 + /obj/projectile/bullet/junk/Initialize(mapload) . = ..() AddElement(/datum/element/bane, mob_biotypes = bane_mob_biotypes, target_type = /mob/living, damage_multiplier = bane_multiplier, added_damage = bane_added_damage, requires_combat_mode = FALSE) @@ -28,7 +38,7 @@ name = "bundle of live electrical parts" icon_state = "tesla_projectile" damage = 15 - embedding = null + embed_type = null shrapnel_type = null bane_multiplier = 3 @@ -49,10 +59,20 @@ name = "junk ripper bullet" icon_state = "redtrac" damage = 10 - embedding = list(embed_chance=100, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10) + embed_type = /datum/embed_data/bullet_junk_ripper wound_bonus = 10 bare_wound_bonus = 30 +/datum/embed_data/bullet_junk_ripper + embed_chance=100 + fall_chance=3 + jostle_chance=4 + ignore_throwspeed_threshold=TRUE + pain_stam_pct=0.4 + pain_mult=5 + jostle_pain_mult=6 + rip_time=10 + /obj/projectile/bullet/junk/reaper name = "junk reaper bullet" tracer_type = /obj/effect/projectile/tracer/sniper diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm index 8fccc510ff8fd..6bd355219f950 100644 --- a/code/modules/projectiles/projectile/bullets/pistol.dm +++ b/code/modules/projectiles/projectile/bullets/pistol.dm @@ -3,13 +3,23 @@ /obj/projectile/bullet/c9mm name = "9mm bullet" damage = 30 - embedding = list(embed_chance=15, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10) + embed_type = /datum/embed_data/bullet_c9mm + +/datum/embed_data/bullet_c9mm + embed_chance=15 + fall_chance=3 + jostle_chance=4 + ignore_throwspeed_threshold=TRUE + pain_stam_pct=0.4 + pain_mult=5 + jostle_pain_mult=6 + rip_time=10 /obj/projectile/bullet/c9mm/ap name = "9mm armor-piercing bullet" damage = 27 armour_penetration = 40 - embedding = null + embed_type = null shrapnel_type = null /obj/projectile/bullet/c9mm/hp diff --git a/code/modules/projectiles/projectile/bullets/revolver.dm b/code/modules/projectiles/projectile/bullets/revolver.dm index 417f61534bcb7..e9d6389c89d0d 100644 --- a/code/modules/projectiles/projectile/bullets/revolver.dm +++ b/code/modules/projectiles/projectile/bullets/revolver.dm @@ -21,9 +21,19 @@ ricochet_auto_aim_range = 3 wound_bonus = -20 bare_wound_bonus = 10 - embedding = list(embed_chance=25, fall_chance=2, jostle_chance=2, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=3, jostle_pain_mult=5, rip_time=1 SECONDS) + embed_type = /datum/embed_data/bullet_c38 embed_falloff_tile = -4 +/datum/embed_data/bullet_c38 + embed_chance=25 + fall_chance=2 + jostle_chance=2 + ignore_throwspeed_threshold=TRUE + pain_stam_pct=0.4 + pain_mult=3 + jostle_pain_mult=5 + rip_time=1 SECONDS + /obj/projectile/bullet/c38/match name = ".38 Match bullet" ricochets_max = 4 @@ -45,7 +55,7 @@ ricochet_decay_damage = 0.8 shrapnel_type = null sharpness = NONE - embedding = null + embed_type = null // premium .38 ammo from cargo, weak against armor, lower base damage, but excellent at embedding and causing slice wounds at close range /obj/projectile/bullet/c38/dumdum @@ -56,10 +66,20 @@ sharpness = SHARP_EDGED wound_bonus = 20 bare_wound_bonus = 20 - embedding = list(embed_chance=75, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=1 SECONDS) + embed_type = /datum/embed_data/bullet_c38_dumdum wound_falloff_tile = -5 embed_falloff_tile = -15 +/datum/embed_data/bullet_c38_dumdum + embed_chance=75 + fall_chance=3 + jostle_chance=4 + ignore_throwspeed_threshold=TRUE + pain_stam_pct=0.4 + pain_mult=5 + jostle_pain_mult=6 + rip_time=1 SECONDS + /obj/projectile/bullet/c38/trac name = ".38 TRAC bullet" damage = 10 diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index 3cbb894b8fb9e..6f14df2f4c8bd 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -35,6 +35,10 @@ damage = 20 stamina = 80 +/obj/projectile/bullet/strilka310/phasic + name = "phasic .310 bullet" + projectile_phasing = PASSTABLE | PASSGLASS | PASSGRILLE | PASSCLOSEDTURF | PASSMACHINE | PASSSTRUCTURE | PASSDOORS + // Harpoons (Harpoon Gun) /obj/projectile/bullet/harpoon @@ -44,10 +48,20 @@ armour_penetration = 50 wound_bonus = -20 bare_wound_bonus = 80 - embedding = list(embed_chance=100, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10) + embed_type = /datum/embed_data/harpoon wound_falloff_tile = -5 shrapnel_type = null +/datum/embed_data/harpoon + embed_chance=100 + fall_chance=3 + jostle_chance=4 + ignore_throwspeed_threshold=TRUE + pain_stam_pct=0.4 + pain_mult=5 + jostle_pain_mult=6 + rip_time=10 + // Rebar (Rebar Crossbow) /obj/projectile/bullet/rebar name = "rebar" @@ -58,11 +72,21 @@ armour_penetration = 10 wound_bonus = -20 bare_wound_bonus = 20 - embedding = list("embed_chance" = 60, "fall_chance" = 2, "jostle_chance" = 2, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.4, "pain_mult" = 4, "jostle_pain_mult" = 2, "rip_time" = 10) + embed_type = /datum/embed_data/rebar embed_falloff_tile = -5 wound_falloff_tile = -2 shrapnel_type = /obj/item/ammo_casing/rebar +/datum/embed_data/rebar + embed_chance = 60 + fall_chance = 2 + jostle_chance = 2 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.4 + pain_mult = 4 + jostle_pain_mult = 2 + rip_time = 10 + /obj/projectile/bullet/rebar/proc/handle_drop(datum/source, obj/item/ammo_casing/rebar/newcasing) /obj/projectile/bullet/rebar/syndie @@ -74,10 +98,20 @@ armour_penetration = 20 //A bit better versus armor. Gets past anti laser armor or a vest, but doesnt wound proc on sec armor. wound_bonus = 10 bare_wound_bonus = 20 - embedding = list("embed_chance" = 80, "fall_chance" = 1, "jostle_chance" = 3, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.4, "pain_mult" = 3, "jostle_pain_mult" = 2, "rip_time" = 14) embed_falloff_tile = -3 + embed_type = /datum/embed_data/rebar_syndie shrapnel_type = /obj/item/ammo_casing/rebar/syndie +/datum/embed_data/rebar_syndie + embed_chance = 80 + fall_chance = 1 + jostle_chance = 3 + ignore_throwspeed_threshold + pain_stam_pct = 0.4 + pain_mult = 3 + jostle_pain_mult = 2 + rip_time = 14 + /obj/projectile/bullet/rebar/zaukerite name = "zaukerite shard" icon_state = "rebar_zaukerite" @@ -89,10 +123,20 @@ armour_penetration = 20 // not nearly as good, as its not as sharp. wound_bonus = 10 bare_wound_bonus = 40 - embedding = list("embed_chance" =100, "fall_chance" = 0, "jostle_chance" = 5, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.8, "pain_mult" = 6, "jostle_pain_mult" = 2, "rip_time" = 30) + embed_type = /datum/embed_data/rebar_zaukerite embed_falloff_tile = 0 // very spiky. shrapnel_type = /obj/item/ammo_casing/rebar/zaukerite +/datum/embed_data/rebar_zaukerite + embed_chance = 100 + fall_chance = 0 + jostle_chance = 5 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.8 + pain_mult = 6 + jostle_pain_mult = 2 + rip_time = 30 + /obj/projectile/bullet/rebar/hydrogen name = "metallic hydrogen bolt" icon_state = "rebar_hydrogen" @@ -104,10 +148,20 @@ projectile_piercing = PASSMOB //felt this might have been a nice compromise for the lower damage for the difficulty of getting it wound_bonus = -15 bare_wound_bonus = 10 - embedding = list("embed_chance" = 50, "fall_chance" = 2, "jostle_chance" = 3, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.6, "pain_mult" = 4, "jostle_pain_mult" = 2, "rip_time" =18) + embed_type = /datum/embed_data/rebar_hydrogen embed_falloff_tile = -3 shrapnel_type = /obj/item/ammo_casing/rebar/hydrogen +/datum/embed_data/rebar_hydrogen + embed_chance = 50 + fall_chance = 2 + jostle_chance = 3 + ignore_throwspeed_threshold = TRUE + pain_stam_pct = 0.6 + pain_mult = 4 + jostle_pain_mult = 2 + rip_time =18 + /obj/projectile/bullet/rebar/healium name = "healium bolt" icon_state = "rebar_healium" @@ -118,7 +172,7 @@ armour_penetration = 100 wound_bonus = -100 bare_wound_bonus = -100 - embedding = list(embed_chance = 0) + embed_type = null embed_falloff_tile = -3 shrapnel_type = /obj/item/ammo_casing/rebar/healium @@ -135,7 +189,6 @@ return BULLET_ACT_HIT - /obj/projectile/bullet/rebar/supermatter name = "supermatter bolt" icon_state = "rebar_supermatter" @@ -143,6 +196,7 @@ speed = 0.4 dismemberment = 0 damage_type = TOX + embed_type = null armour_penetration = 100 shrapnel_type = /obj/item/ammo_casing/rebar/supermatter @@ -160,7 +214,6 @@ return BULLET_ACT_HIT - /obj/projectile/bullet/rebar/supermatter/proc/dust_feedback(atom/target) playsound(get_turf(src), 'sound/effects/supermatter.ogg', 10, TRUE) visible_message(span_danger("[target] is hit by [src], turning [target.p_them()] to dust in a brilliant flash of light!")) @@ -170,7 +223,7 @@ damage = 1 // It's a damn toy. range = 10 shrapnel_type = null - embedding = null + embed_type = null name = "paper ball" desc = "doink!" damage_type = BRUTE diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index b3ddaf9bc9013..a013aaba691d7 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -22,7 +22,7 @@ stamina = 55 wound_bonus = 20 sharpness = NONE - embedding = null + embed_type = null /obj/projectile/bullet/shotgun_beanbag/a40mm name = "rubber slug" @@ -55,7 +55,7 @@ range = 7 icon_state = "spark" color = COLOR_YELLOW - embedding = null + embed_type = null /obj/projectile/bullet/shotgun_frag12 name ="frag12 slug" @@ -84,7 +84,7 @@ damage = 3 stamina = 11 sharpness = NONE - embedding = null + embed_type = null speed = 1.2 stamina_falloff_tile = -0.25 ricochets_max = 4 @@ -106,7 +106,7 @@ name = "incapacitating pellet" damage = 1 stamina = 6 - embedding = null + embed_type = null // Mech Scattershot diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index 8befcb690ecfa..ce78abf0662b4 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -33,7 +33,7 @@ name = "4.6x30mm armor-piercing bullet" damage = 15 armour_penetration = 40 - embedding = null + embed_type = null /obj/projectile/bullet/incendiary/c46x30mm name = "4.6x30mm incendiary bullet" diff --git a/code/modules/projectiles/projectile/bullets/special.dm b/code/modules/projectiles/projectile/bullets/special.dm index f595c3e116510..2af0fe7b9cb9d 100644 --- a/code/modules/projectiles/projectile/bullets/special.dm +++ b/code/modules/projectiles/projectile/bullets/special.dm @@ -9,7 +9,7 @@ icon = 'icons/obj/service/hydroponics/harvest.dmi' icon_state = "banana" range = 200 - embedding = null + embed_type = null shrapnel_type = null /obj/projectile/bullet/honker/Initialize(mapload) diff --git a/code/modules/projectiles/projectile/energy/photon.dm b/code/modules/projectiles/projectile/energy/photon.dm new file mode 100644 index 0000000000000..7caac3e062e01 --- /dev/null +++ b/code/modules/projectiles/projectile/energy/photon.dm @@ -0,0 +1,58 @@ +#define MULTIPLY_PIXELSPEED 0.8 + +/obj/projectile/energy/photon + name = "photon bolt" + icon_state = "solarflare" + damage_type = STAMINA + armor_flag = ENERGY + impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser + damage = 5 //It's literally a weaker tesla bolt, which is already weak. Don't worry, we'll fix that. + range = 20 + speed = 1 + pixel_speed_multiplier = 1 + projectile_piercing = PASSMOB + light_color = LIGHT_COLOR_DEFAULT + light_system = OVERLAY_LIGHT + light_power = 5 + light_range = 6 + + +/obj/projectile/energy/photon/Initialize(mapload) + . = ..() + RegisterSignals(src, list(COMSIG_MOVABLE_CROSS, COMSIG_MOVABLE_CROSS_OVER), PROC_REF(blast_touched)) + RegisterSignal(src, COMSIG_ATOM_ENTERED, PROC_REF(scorch_earth)) + set_light_on(TRUE) + +/** + * Handle side effects for the phonon bolt. + * behaves like a higher power direct flash if hit, and sparks silicons like they're getting microwaved. + */ +/obj/projectile/energy/photon/proc/blast_touched(datum/source, atom/flashed) + SIGNAL_HANDLER + if(isliving(flashed)) + var/mob/living/flashed_creature = flashed + flashed_creature.flash_act(intensity = 3, affect_silicon = TRUE, length = 6) + flashed_creature.adjust_confusion(1.5 SECONDS) + if(issilicon(flashed)) + do_sparks(rand(1, 4), FALSE, src) + +/** + * When traveling to a new turf, throws a probability to generate a hotspot across it's path. + */ +/obj/projectile/energy/photon/proc/scorch_earth(turf/open/floor/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) + SIGNAL_HANDLER + if(prob(40)) + new /obj/effect/hotspot(arrived) + +/obj/projectile/energy/photon/Range() + . = ..() + pixel_speed_multiplier *= MULTIPLY_PIXELSPEED + +/obj/projectile/energy/photon/on_range() + do_sparks(rand(4, 9), FALSE, src) + playsound(loc, 'sound/weapons/solarflare.ogg', 100, FALSE, 8, 0.9) + for(var/mob/living/flashed_mob in viewers(5, loc)) + flashed_mob.flash_act() + return ..() + +#undef MULTIPLY_PIXELSPEED diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm index db452385c987c..fe04fc7d9865e 100644 --- a/code/modules/projectiles/projectile/special/rocket.dm +++ b/code/modules/projectiles/projectile/special/rocket.dm @@ -2,7 +2,7 @@ name ="explosive bolt" icon_state= "bolter" damage = 50 - embedding = null + embed_type = null shrapnel_type = null /obj/projectile/bullet/gyro/on_hit(atom/target, blocked = 0, pierce_hit) @@ -17,7 +17,7 @@ icon_state= "missile" damage = 50 sharpness = NONE - embedding = null + embed_type = null shrapnel_type = null ricochets_max = 0 /// Whether we do extra damage when hitting a mech or silicon diff --git a/code/modules/projectiles/projectile/special/temperature.dm b/code/modules/projectiles/projectile/special/temperature.dm index 3d88c40fdfb9c..182bb715466d3 100644 --- a/code/modules/projectiles/projectile/special/temperature.dm +++ b/code/modules/projectiles/projectile/special/temperature.dm @@ -31,7 +31,7 @@ /obj/projectile/temp/cryo name = "cryo beam" - range = 3 + range = 9 temperature = -240 // Single slow shot reduces temp greatly /obj/projectile/temp/cryo/on_range() @@ -40,3 +40,25 @@ var/turf/open/O = T O.freeze_turf() return ..() + +/obj/projectile/temp/pyro + name = "hot beam" + icon_state = "firebeam" // sets on fire, diff sprite! + range = 9 + temperature = 240 + +/obj/projectile/temp/pyro/on_hit(atom/target, blocked, pierce_hit) + . = ..() + if(!.) + return + var/mob/living/living_target = target + if(!istype(living_target)) + return + living_target.adjust_fire_stacks(2) + living_target.ignite_mob() + +/obj/projectile/temp/pyro/on_range() + var/turf/location = get_turf(src) + new /obj/effect/hotspot(location) + location.hotspot_expose(700, 50, 1) + return ..() diff --git a/code/modules/reagents/chemistry/holder/holder.dm b/code/modules/reagents/chemistry/holder/holder.dm index 3fe2e482f3efd..0c300c3896b0e 100644 --- a/code/modules/reagents/chemistry/holder/holder.dm +++ b/code/modules/reagents/chemistry/holder/holder.dm @@ -235,6 +235,7 @@ var/total_removed_amount = 0 var/remove_amount = 0 var/list/cached_reagents = reagent_list + var/list/removed_reagents = list() for(var/datum/reagent/cached_reagent as anything in cached_reagents) //check for specific type or subtypes if(!include_subtypes) @@ -243,19 +244,26 @@ else if(!istype(cached_reagent, reagent_type)) continue + //reduce the volume remove_amount = min(cached_reagent.volume, amount) cached_reagent.volume -= remove_amount - update_total() - if(!safety)//So it does not handle reactions when it need not to - handle_reactions() - SEND_SIGNAL(src, COMSIG_REAGENTS_REM_REAGENT, QDELING(cached_reagent) ? reagent_type : cached_reagent, amount) - + //record the changes + removed_reagents += cached_reagent total_removed_amount += remove_amount //if we reached here means we have found our specific reagent type so break if(!include_subtypes) - return total_removed_amount + break + + //inform others about our reagents being removed + for(var/datum/reagent/removed_reagent as anything in cached_reagents) + SEND_SIGNAL(src, COMSIG_REAGENTS_REM_REAGENT, removed_reagent, amount) + + //update the holder & handle reactions + update_total() + if(!safety) + handle_reactions() return round(total_removed_amount, CHEMICAL_VOLUME_ROUNDING) @@ -504,8 +512,6 @@ log_target.add_hiddenprint(transferred_by) //log prints so admins can figure out who touched it last. log_combat(transferred_by, log_target, "transferred reagents to", my_atom, "which had [get_external_reagent_log_string(transfer_log)]") - update_total() - target_holder.update_total() if(!no_react) target_holder.handle_reactions() src.handle_reactions() diff --git a/code/modules/reagents/chemistry/holder/reactions.dm b/code/modules/reagents/chemistry/holder/reactions.dm index 80241173deebf..3fbcb57a43424 100644 --- a/code/modules/reagents/chemistry/holder/reactions.dm +++ b/code/modules/reagents/chemistry/holder/reactions.dm @@ -339,6 +339,7 @@ my_atom.visible_message(span_notice("[iconhtml] \The [my_atom]'s power is consumed in the reaction.")) extract.name = "used slime extract" extract.desc = "This extract has been used up." + extract.grind_results.Cut() //finish the reaction selected_reaction.on_reaction(src, null, multiplier) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 11947c7060271..576d62585f7a8 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -250,7 +250,9 @@ Primarily used in reagents/reaction_agents /// Should return a associative list where keys are taste descriptions and values are strength ratios /datum/reagent/proc/get_taste_description(mob/living/taster) - return list("[taste_description]" = 1) + if(isnull(taster) || !HAS_TRAIT(taster, TRAIT_DETECTIVES_TASTE)) + return list("[taste_description]" = 1) + return list("[LOWER_TEXT(name)]" = 1) /** * Used when you want the default reagents purity to be equal to the normal effects diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index b60a5b8028642..c6cee8e91c062 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -503,18 +503,29 @@ var/atom/movable/plane_master_controller/game_plane_master_controller = psychonaut.hud_used.plane_master_controllers[PLANE_MASTERS_GAME] + // Info for non-matrix plebs like me! + + // This doesn't change the RGB matrixes directly at all. Instead, it shifts all the colors' Hue by 33%, + // Shifting them up the color wheel, turning R to G, G to B, B to R, making a psychedelic effect. + // The second moves them two colors up instead, turning R to B, G to R, B to G. + // The third does a full spin, or resets it back to normal. + // Imagine a triangle on the color wheel with the points located at the color peaks, rotating by 90 degrees each time. + // The value with decimals is the Hue. The rest are Saturation, Luminosity, and Alpha, though they're unused here. + + // The filters were initially named _green, _blue, _red, despite every filter changing all the colors. It caused me a 2-years-long headache. + var/list/col_filter_identity = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.000,0,0,0) - var/list/col_filter_green = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.333,0,0,0) - var/list/col_filter_blue = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.666,0,0,0) - var/list/col_filter_red = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 1.000,0,0,0) //visually this is identical to the identity + var/list/col_filter_shift_once = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.333,0,0,0) + var/list/col_filter_shift_twice = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.666,0,0,0) + var/list/col_filter_reset = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 1.000,0,0,0) //visually this is identical to the identity - game_plane_master_controller.add_filter("rainbow", 10, color_matrix_filter(col_filter_red, FILTER_COLOR_HSL)) + game_plane_master_controller.add_filter("rainbow", 10, color_matrix_filter(col_filter_reset, FILTER_COLOR_HSL)) for(var/filter in game_plane_master_controller.get_filters("rainbow")) animate(filter, color = col_filter_identity, time = 0 SECONDS, loop = -1, flags = ANIMATION_PARALLEL) - animate(color = col_filter_green, time = 4 SECONDS) - animate(color = col_filter_blue, time = 4 SECONDS) - animate(color = col_filter_red, time = 4 SECONDS) + animate(color = col_filter_shift_once, time = 4 SECONDS) + animate(color = col_filter_shift_twice, time = 4 SECONDS) + animate(color = col_filter_reset, time = 4 SECONDS) game_plane_master_controller.add_filter("psilocybin_wave", 1, list("type" = "wave", "size" = 2, "x" = 32, "y" = 32)) @@ -568,18 +579,18 @@ var/atom/movable/plane_master_controller/game_plane_master_controller = dancer.hud_used.plane_master_controllers[PLANE_MASTERS_GAME] - var/list/col_filter_blue = list(0,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.764,0,0,0) //most blue color + var/list/col_filter_shift_twice = list(0,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.764,0,0,0) //most blue color var/list/col_filter_mid = list(0,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.832,0,0,0) //red/blue mix midpoint - var/list/col_filter_red = list(0,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.900,0,0,0) //most red color + var/list/col_filter_reset = list(0,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, 0.900,0,0,0) //most red color game_plane_master_controller.add_filter("blastoff_filter", 10, color_matrix_filter(col_filter_mid, FILTER_COLOR_HCY)) game_plane_master_controller.add_filter("blastoff_wave", 1, list("type" = "wave", "x" = 32, "y" = 32)) for(var/filter in game_plane_master_controller.get_filters("blastoff_filter")) - animate(filter, color = col_filter_blue, time = 3 SECONDS, loop = -1, flags = ANIMATION_PARALLEL) + animate(filter, color = col_filter_shift_twice, time = 3 SECONDS, loop = -1, flags = ANIMATION_PARALLEL) animate(color = col_filter_mid, time = 3 SECONDS) - animate(color = col_filter_red, time = 3 SECONDS) + animate(color = col_filter_reset, time = 3 SECONDS) animate(color = col_filter_mid, time = 3 SECONDS) for(var/filter in game_plane_master_controller.get_filters("blastoff_wave")) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 2e45ecf641bc1..7c9042314458d 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -140,6 +140,7 @@ brute_heal = 0.8 //Rewards the player for eating a balanced diet. nutriment_factor = 9 //45% as calorie dense as oil. chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + default_container = /obj/item/reagent_containers/condiment/protein /datum/reagent/consumable/nutriment/fat name = "Fat" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index d5099d1c62425..202788e28044f 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -127,6 +127,16 @@ if(data["blood_DNA"]) bloodsplatter.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) +/datum/reagent/blood/get_taste_description(mob/living/taster) + if(isnull(taster)) + return ..() + if(!HAS_TRAIT(taster, TRAIT_DETECTIVES_TASTE)) + return ..() + var/blood_type = data?["blood_type"] + if(!blood_type) + return ..() + return list("[blood_type] type blood" = 1) + /datum/reagent/consumable/liquidgibs name = "Liquid Gibs" color = "#CC4633" @@ -889,7 +899,7 @@ return to_chat(affected_mob, span_warning("You grit your teeth in pain as your body rapidly mutates!")) affected_mob.visible_message("[affected_mob] suddenly transforms!") - randomize_human(affected_mob) + randomize_human_normie(affected_mob) /datum/reagent/aslimetoxin name = "Advanced Mutation Toxin" diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index a60432c078429..13eaffca3a898 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -88,7 +88,7 @@ //Gold /datum/chemical_reaction/slime/slimemobspawn - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 15) required_container = /obj/item/slime_extract/gold deletes_extract = FALSE //we do delete, but we don't do so instantly reaction_tags = REACTION_TAG_EASY | REACTION_TAG_SLIME | REACTION_TAG_DANGEROUS @@ -103,7 +103,7 @@ /datum/chemical_reaction/slime/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T) T.visible_message(span_danger("The slime extract begins to vibrate violently!")) - addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 5, "Gold Slime", HOSTILE_SPAWN), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 4, "Gold Slime", HOSTILE_SPAWN), 5 SECONDS) /datum/chemical_reaction/slime/slimemobspawn/lesser required_reagents = list(/datum/reagent/blood = 1) @@ -222,7 +222,7 @@ required_container = /obj/item/slime_extract/orange /datum/chemical_reaction/slime/slimefire - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 15) required_container = /obj/item/slime_extract/orange deletes_extract = FALSE @@ -249,12 +249,12 @@ //Yellow /datum/chemical_reaction/slime/slimeoverload - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list(/datum/reagent/blood = 15) required_container = /obj/item/slime_extract/yellow reaction_tags = REACTION_TAG_EASY | REACTION_TAG_SLIME | REACTION_TAG_DANGEROUS /datum/chemical_reaction/slime/slimeoverload/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) - empulse(get_turf(holder.my_atom), 3, 7) + empulse(get_turf(holder.my_atom), 3, 5) ..() /datum/chemical_reaction/slime/slimecell @@ -356,7 +356,7 @@ //Oil /datum/chemical_reaction/slime/slimeexplosion - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 15) required_container = /obj/item/slime_extract/oil deletes_extract = FALSE reaction_tags = REACTION_TAG_EASY | REACTION_TAG_SLIME | REACTION_TAG_DANGEROUS @@ -380,7 +380,7 @@ /datum/chemical_reaction/slime/slimeexplosion/proc/boom(datum/reagents/holder) if(holder?.my_atom) - explosion(holder.my_atom, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 6, explosion_cause = src) + explosion(holder.my_atom, devastation_range = 1, heavy_impact_range = 2, light_impact_range = 4, explosion_cause = src) /datum/chemical_reaction/slime/slimeoil @@ -408,7 +408,7 @@ //Adamantine /datum/chemical_reaction/slime/adamantine - required_reagents = list(/datum/reagent/toxin/plasma = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 15) required_container = /obj/item/slime_extract/adamantine /datum/chemical_reaction/slime/adamantine/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index e1d78353bca28..e95b5eea82089 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -266,9 +266,6 @@ reagents.expose_temperature(1000) return ..() | COMPONENT_MICROWAVE_SUCCESS -/obj/item/reagent_containers/fire_act(temperature, volume) - reagents.expose_temperature(temperature) - /// Updates the icon of the container when the reagents change. Eats signal args /obj/item/reagent_containers/proc/on_reagent_change(datum/reagents/holder, ...) SIGNAL_HANDLER diff --git a/code/modules/reagents/reagent_containers/condiment.dm b/code/modules/reagents/reagent_containers/condiment.dm index ccabc2c410646..c8652afda8f0e 100644 --- a/code/modules/reagents/reagent_containers/condiment.dm +++ b/code/modules/reagents/reagent_containers/condiment.dm @@ -368,6 +368,13 @@ list_reagents = list(/datum/reagent/consumable/grounding_solution = 50) fill_icon_thresholds = null +/obj/item/reagent_containers/condiment/protein + name = "protein powder" + desc = "Fuel for your inner Hulk - because you can't spell 'swole' without 'whey'!" + icon_state = "protein" + list_reagents = list(/datum/reagent/consumable/nutriment/protein = 40) + fill_icon_thresholds = null + //technically condiment packs but they are non transparent /obj/item/reagent_containers/condiment/creamer diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index 644f0dd96948a..87df7765233ec 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -117,6 +117,7 @@ return ITEM_INTERACT_BLOCKING var/trans = reagents.trans_to(target, amount_per_transfer_from_this, transferred_by = user) + playsound(target.loc, pick('sound/effects/liquid_pour1.ogg', 'sound/effects/liquid_pour2.ogg', 'sound/effects/liquid_pour3.ogg'), 50) to_chat(user, span_notice("You transfer [trans] unit\s of the solution to [target].")) SEND_SIGNAL(src, COMSIG_REAGENTS_CUP_TRANSFER_TO, target) target.update_appearance() @@ -227,6 +228,8 @@ worn_icon_state = "beaker" custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*5) fill_icon_thresholds = list(0, 1, 20, 40, 60, 80, 100) + pickup_sound = 'sound/items/handling/beaker_pickup.ogg' + drop_sound = 'sound/items/handling/beaker_place.ogg' /obj/item/reagent_containers/cup/beaker/Initialize(mapload) . = ..() diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm index a293aac7aa1b1..b246cc01e07e9 100644 --- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm +++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm @@ -42,9 +42,8 @@ /obj/item/reagent_containers/cup/glass/bottle/Initialize(mapload, vol) . = ..() - AddComponent(/datum/component/slapcrafting,\ - slapcraft_recipes = list(/datum/crafting_recipe/molotov)\ - ) + var/static/list/recipes = list(/datum/crafting_recipe/molotov) + AddElement(/datum/element/slapcrafting, recipes) /obj/item/reagent_containers/cup/glass/bottle/small name = "small glass bottle" diff --git a/code/modules/reagents/reagent_containers/cups/soda.dm b/code/modules/reagents/reagent_containers/cups/soda.dm index c90926a94ea8d..226fce45d61d5 100644 --- a/code/modules/reagents/reagent_containers/cups/soda.dm +++ b/code/modules/reagents/reagent_containers/cups/soda.dm @@ -23,9 +23,7 @@ /obj/item/reagent_containers/cup/soda_cans/Initialize(mapload, vol) . = ..() - AddComponent(/datum/component/slapcrafting,\ - slapcraft_recipes = list(/datum/crafting_recipe/improv_explosive)\ - ) + AddElement(/datum/element/slapcrafting, string_list(list(/datum/crafting_recipe/improv_explosive))) /obj/item/reagent_containers/cup/soda_cans/random/Initialize(mapload) ..() @@ -75,10 +73,10 @@ var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(M.loc) crushed_can.icon_state = icon_state - // MASSMETA ADDITION (kvass) + //MASSMETA EDIT ADDITION BEGIN (kvass) if(icon_state == "kvass") crushed_can.icon = 'massmeta/icons/items/janitor.dmi' - // EDIT END + //MASSMETA EDIT ADDITION END qdel(src) return TRUE @@ -92,10 +90,10 @@ var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(src.loc) crushed_can.icon_state = icon_state - // MASSMETA ADDITION (kvass) + //MASSMETA EDIT ADDITION BEGIN (kvass) if(icon_state == "kvass") crushed_can.icon = 'massmeta/icons/items/janitor.dmi' - // EDIT END + //MASSMETA EDIT ADDITION END var/atom/throw_target = get_edge_target_turf(crushed_can, pick(GLOB.alldirs)) crushed_can.throw_at(throw_target, rand(1,2), 7) @@ -155,10 +153,10 @@ var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(src.loc) crushed_can.icon_state = icon_state - // MASSMETA ADDITION (kvass) + //MASSMETA EDIT ADDITION BEGIN (kvass) if(icon_state == "kvass") crushed_can.icon = 'massmeta/icons/items/janitor.dmi' - // EDIT END + //MASSMETA EDIT ADDITION END moveToNullspace() QDEL_IN(src, 1 SECONDS) // give it a second so it can still be logged for the throw impact diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index b8b3576aa4b1b..f9cf10e1068d9 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -204,6 +204,7 @@ if(leaking && reagents && reagents.total_volume >= amount_to_leak) reagents.expose(get_turf(src), TOUCH, amount_to_leak / max(amount_to_leak, reagents.total_volume)) reagents.remove_reagent(reagent_id, amount_to_leak) + playsound(src, 'sound/effects/glug.ogg', 33, TRUE, SILENCED_SOUND_EXTRARANGE) return TRUE return FALSE @@ -221,7 +222,7 @@ if(!openable) return FALSE leaking = !leaking - balloon_alert(user, "[leaking ? "opened" : "closed"] [src]'s tap") + balloon_alert(user, "[leaking ? "opened" : "closed"] tap") user.log_message("[leaking ? "opened" : "closed"] [src].", LOG_GAME) tank_leak() return ITEM_INTERACT_SUCCESS diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm index 903a59a930557..13f43b1f4a419 100644 --- a/code/modules/recycling/disposal/construction.dm +++ b/code/modules/recycling/disposal/construction.dm @@ -109,7 +109,7 @@ var/turf/T = get_turf(src) if(T.underfloor_accessibility < UNDERFLOOR_INTERACTABLE && isfloorturf(T)) - var/obj/item/crowbar/held_crowbar = user.is_holding_item_of_type(/obj/item/crowbar) + var/obj/item/crowbar/held_crowbar = user.is_holding_tool_quality(TOOL_CROWBAR) if(!held_crowbar || !T.crowbar_act(user, held_crowbar)) to_chat(user, span_warning("You can only attach the [pipename] if the floor plating is removed!")) return TRUE diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm index c370424fa7d2c..b256b4f9d4ac3 100644 --- a/code/modules/religion/burdened/psyker.dm +++ b/code/modules/religion/burdened/psyker.dm @@ -252,7 +252,7 @@ ricochet_auto_aim_angle = 10 ricochet_auto_aim_range = 3 wound_bonus = -10 - embedding = null + embed_type = null /obj/projectile/bullet/c38/holy/on_hit(atom/target, blocked, pierce_hit) . = ..() diff --git a/code/modules/research/designs/autolathe/engineering_designs.dm b/code/modules/research/designs/autolathe/engineering_designs.dm index dc87b747959ca..c376a1ac1c55a 100644 --- a/code/modules/research/designs/autolathe/engineering_designs.dm +++ b/code/modules/research/designs/autolathe/engineering_designs.dm @@ -10,18 +10,6 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/sparker - name = "Sparker WallFrame" - id = "sparker" - build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE - materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/wallframe/sparker - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - /datum/design/tracker_electronics name = "Solar Tracking Electronics" id = "solar_tracker" @@ -95,18 +83,6 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/turret_control_frame - name = "Turret Control Frame" - id = "turret_control" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*6) - build_path = /obj/item/wallframe/turret_control - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - /datum/design/large_welding_tool name = "Industrial Welding Tool" id = "large_welding_tool" @@ -119,55 +95,6 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/camera_assembly - name = "Camera Assembly" - id = "camera_assembly" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*4, /datum/material/glass = SMALL_MATERIAL_AMOUNT*2.5) - build_path = /obj/item/wallframe/camera - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/newscaster_frame - name = "Newscaster Frame" - id = "newscaster_frame" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*7, /datum/material/glass = SHEET_MATERIAL_AMOUNT*4) - build_path = /obj/item/wallframe/newscaster - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/status_display_frame - name = "Status Display Frame" - id = "status_display_frame" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*7, /datum/material/glass = SHEET_MATERIAL_AMOUNT*4) - build_path = /obj/item/wallframe/status_display - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - - -/datum/design/intercom_frame - name = "Intercom Frame" - id = "intercom_frame" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*0.75, /datum/material/glass =SMALL_MATERIAL_AMOUNT*0.25) - build_path = /obj/item/wallframe/intercom - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - /datum/design/earmuffs name = "Earmuffs" id = "earmuffs" @@ -323,130 +250,3 @@ RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ATMOSPHERICS, ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/requests_console - name = "Requests Console Frame" - id = "requests_console" - build_type = AUTOLATHE | PROTOLATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*7, /datum/material/glass = SHEET_MATERIAL_AMOUNT*4) - build_path = /obj/item/wallframe/requests_console - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/light_switch_frame - name = "Light Switch Frame" - id = "light_switch_frame" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*0.75, /datum/material/glass =SMALL_MATERIAL_AMOUNT*0.25) - build_path = /obj/item/wallframe/light_switch - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/telescreen_turbine - name = "Turbine Telescreen" - id = "telescreen_turbine" - build_type = PROTOLATHE - materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, - /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, - ) - build_path = /obj/item/wallframe/telescreen/turbine - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/telescreen_engine - name = "Engine Telescreen" - id = "telescreen_engine" - build_type = PROTOLATHE - materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, - /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, - ) - build_path = /obj/item/wallframe/telescreen/engine - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/telescreen_auxbase - name = "Auxiliary Base Telescreen" - id = "telescreen_auxbase" - build_type = PROTOLATHE - materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT*5, - /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, - ) - build_path = /obj/item/wallframe/telescreen/auxbase - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/tram_controller - name = "Tram Controller Cabinet" - id = "tram_controller" - build_type = PROTOLATHE - materials = list( - /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 4, - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, - /datum/material/gold = SHEET_MATERIAL_AMOUNT * 7, - /datum/material/silver = SHEET_MATERIAL_AMOUNT * 7, - /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 4, - ) - build_path = /obj/item/wallframe/tram/controller - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/tram_display - name = "Tram Indicator Display" - id = "tram_display" - build_type = PROTOLATHE - materials = list( - /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 4, - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1, - /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2, - ) - build_path = /obj/item/wallframe/indicator_display - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/tram_floor_dark - name = "Dark Tram Tile" - id = "tram_floor_dark" - build_type = PROTOLATHE - materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 0.25) - build_path = /obj/item/stack/thermoplastic - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING - -/datum/design/tram_floor_light - name = "Light Tram Tile" - id = "tram_floor_light" - build_type = PROTOLATHE - materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 0.25) - build_path = /obj/item/stack/thermoplastic/light - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/designs/autolathe/multi-department_designs.dm b/code/modules/research/designs/autolathe/multi-department_designs.dm index ea1c94ff89c27..734dcbc97e084 100644 --- a/code/modules/research/designs/autolathe/multi-department_designs.dm +++ b/code/modules/research/designs/autolathe/multi-department_designs.dm @@ -483,43 +483,6 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE -/datum/design/circuit - name = "Blue Circuit Tile" - id = "circuit" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/stack/tile/circuit - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE - - -/datum/design/circuitgreen - name = "Green Circuit Tile" - id = "circuitgreen" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/stack/tile/circuit/green - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE - -/datum/design/circuitred - name = "Red Circuit Tile" - id = "circuitred" - build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5) - build_path = /obj/item/stack/tile/circuit/red - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS, - ) - departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE - /datum/design/conveyor_belt name = "Conveyor Belt" id = "conveyor_belt" diff --git a/code/modules/research/designs/computer_part_designs.dm b/code/modules/research/designs/computer_part_designs.dm index 8dab08c046d45..7a8242642a13a 100644 --- a/code/modules/research/designs/computer_part_designs.dm +++ b/code/modules/research/designs/computer_part_designs.dm @@ -5,10 +5,11 @@ /datum/design/portabledrive/basic name = "Data Disk" id = "portadrive_basic" - build_type = IMPRINTER | AWAY_IMPRINTER - materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT*8) + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT) build_path = /obj/item/computer_disk category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING @@ -16,10 +17,11 @@ /datum/design/portabledrive/advanced name = "Advanced Data Disk" id = "portadrive_advanced" - build_type = IMPRINTER | AWAY_IMPRINTER - materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT*1.5) + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 2) build_path = /obj/item/computer_disk/advanced category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING @@ -27,10 +29,11 @@ /datum/design/portabledrive/super name = "Super Data Disk" id = "portadrive_super" - build_type = IMPRINTER | AWAY_IMPRINTER - materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT*1.5) + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 4) build_path = /obj/item/computer_disk/super category = list( + RND_CATEGORY_INITIAL, RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 8f857f77e8286..b8b11e7b44f67 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -582,6 +582,16 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE +/datum/design/board/vatgrower + name = "Growing Vat Board" + desc = "The circuit board for a growing vat." + id = "vatgrower" + build_path = /obj/item/circuitboard/machine/vatgrower + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + /datum/design/board/monkey_recycler name = "Monkey Recycler Board" desc = "The circuit board for a monkey recycler." @@ -1178,6 +1188,36 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING +/datum/design/board/scrubber + name = "Portable Air Scrubber Board" + desc = "The circuit board for a portable air scrubber." + id = "scrubber" + build_path = /obj/item/circuitboard/machine/scrubber + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design/board/pump + name = "Portable Air Pump Board" + desc = "The circuit board for a portable air pump." + id = "pump" + build_path = /obj/item/circuitboard/machine/pump + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design/board/pipe_scrubber + name = "Portable Pipe Scrubber Board" + desc = "The circuit board for a portable pipe scrubber." + id = "pipe_scrubber" + build_path = /obj/item/circuitboard/machine/pipe_scrubber + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + /datum/design/board/bookbinder name = "Book Binder" desc = "The circuit board for a book binder" diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 0583269f1c6be..cc75ce89c74ec 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -907,6 +907,104 @@ RND_CATEGORY_MECHFAB_SAVANNAH_IVANOV + RND_SUBCATEGORY_MECHFAB_CHASSIS ) +//Justice (emaged only) +/datum/design/justice_chassis + name = "Exosuit Chassis (\"Justice\")" + id = "justice_chassis" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/chassis/justice + materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*20) + construction_time = 10 SECONDS + category = list( + RND_CATEGORY_MECHFAB_JUSTICE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) + +/datum/design/justice_torso + name = "Exosuit Torso (\"Justice\")" + id = "justice_torso" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/justice_torso + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 50, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5, + ) + construction_time = 30 SECONDS + category = list( + RND_CATEGORY_MECHFAB_JUSTICE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) + +/datum/design/justice_left_arm + name = "Exosuit Left Arm (\"Justice\")" + id = "justice_left_arm" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/justice_left_arm + materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, + ) + construction_time = 10 SECONDS + category = list( + RND_CATEGORY_MECHFAB_JUSTICE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) + +/datum/design/justice_right_arm + name = "Exosuit Right Arm (\"Justice\")" + id = "justice_right_arm" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/justice_right_arm + materials = list( + /datum/material/iron=SHEET_MATERIAL_AMOUNT*5, + /datum/material/silver=SHEET_MATERIAL_AMOUNT*2, + ) + construction_time = 10 SECONDS + category = list( + RND_CATEGORY_MECHFAB_JUSTICE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) + +/datum/design/justice_left_leg + name = "Exosuit Left Leg (\"Justice\")" + id = "justice_left_leg" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/justice_left_leg + materials = list( + /datum/material/iron=SHEET_MATERIAL_AMOUNT*5, + /datum/material/titanium=SHEET_MATERIAL_AMOUNT*2, + ) + construction_time = 10 SECONDS + category = list( + RND_CATEGORY_MECHFAB_JUSTICE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) + +/datum/design/justice_right_leg + name = "Exosuit Right Leg (\"Justice\")" + id = "justice_right_leg" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/justice_right_leg + materials = list( + /datum/material/iron=SHEET_MATERIAL_AMOUNT*5, + /datum/material/titanium=SHEET_MATERIAL_AMOUNT*2, + ) + construction_time = 10 SECONDS + category = list( + RND_CATEGORY_MECHFAB_JUSTICE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) + +/datum/design/justice_armor + name = "Exosuit Armor (\"Justice\")" + id = "justice_armor" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/justice_armor + materials = list( + /datum/material/silver=SHEET_MATERIAL_AMOUNT*10, + /datum/material/titanium=SHEET_MATERIAL_AMOUNT*10, + /datum/material/plastic=SHEET_MATERIAL_AMOUNT*5, + /datum/material/diamond=SHEET_MATERIAL_AMOUNT*1, + ) + construction_time = 20 SECONDS + category = list( + RND_CATEGORY_MECHFAB_JUSTICE + RND_SUBCATEGORY_MECHFAB_CHASSIS + ) + //Clarke /datum/design/clarke_chassis name = "Exosuit Chassis (\"Clarke\")" @@ -2338,14 +2436,14 @@ RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY ) -/datum/design/module/mod_organ_thrower - name = "Organ Thrower Module" - id = "mod_organ_thrower" +/datum/design/module/mod_organizer + name = "Organizer Module" + id = "mod_organizer" materials = list( /datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/mod/module/organ_thrower + build_path = /obj/item/mod/module/organizer category = list( RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL ) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 4e95e9d4dfda7..cbd05593a3c11 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -811,6 +811,23 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +/datum/design/cybernetic_heart/anomalock + name = "Voltaic combat cyberheart" + desc = "A cutting-edge cyberheart, originally designed for Nanotrasen killsquad usage but later declassified for normal research. Voltaic technology allows the heart to keep the body upright in dire circumstances, alongside redirecting anomalous flux energy to fully shield the user from shocks and electro-magnetic pulses. Does nothing without a flux anomaly core." + id = "cybernetic_heart_anomalock" + construction_time = 5 SECONDS + materials = list( + /datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/diamond = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/organ/internal/heart/cybernetic/anomalock + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + /datum/design/cybernetic_lungs name = "Basic Cybernetic Lungs" desc = "A basic pair of cybernetic lungs." diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 0ea6c41e16448..d9feba5179e08 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -166,18 +166,6 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE -/datum/design/air_horn - name = "Air Horn" - desc = "Damn son, where'd you find this?" - id = "air_horn" - build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2, /datum/material/bananium =HALF_SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/bikehorn/airhorn - category = list( - RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE - ) - departmental_flags = DEPARTMENT_BITFLAG_SERVICE - /datum/design/clown_firing_pin name = "Hilarious Firing Pin" id = "clown_firing_pin" diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index 649d0c5c09dfc..901bc304dc1d7 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -226,17 +226,6 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE -/datum/design/plumbing_rcd_sci - name = "Research Plumbing Constructor" - id = "plumbing_rcd_sci" - build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT*37.5, /datum/material/glass =SHEET_MATERIAL_AMOUNT*18.75, /datum/material/plastic =HALF_SHEET_MATERIAL_AMOUNT) - build_path = /obj/item/construction/plumbing/research - category = list( - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PLUMBING - ) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE - /datum/design/plumbing_rcd_service name = "Service Plumbing Constructor" id = "plumbing_rcd_service" diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 35d95d82d3047..f0e0978a6074a 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -449,3 +449,15 @@ RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/photon_cannon + name = "Photon Cannon Part Kit (Nonlethal)" + desc = "A kit to reverse-engineer a photon cannon, a weapon that generates a shortly-lived miniature sun. Technically brightens up the room, effectively blinds everyone in it. Requires a flux anomaly core to finish." + id = "photon_cannon" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5) + build_path = /obj/item/weaponcrafting/gunkit/photon + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index affe82275ab14..2d0ba7017d27b 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -461,9 +461,9 @@ if(exp == SCANTYPE_DISCOVER) visible_message(span_notice("[src] scans the [exp_on], revealing its true nature!")) playsound(src, 'sound/effects/supermatter.ogg', 50, 3, -1) - var/obj/item/relic/R = loaded_item - R.reveal() - investigate_log("Experimentor has revealed a relic with [span_danger("[R.realProc]")] effect.", INVESTIGATE_EXPERIMENTOR) + var/obj/item/relic/loaded_artifact = loaded_item + loaded_artifact.reveal() + investigate_log("Experimentor has revealed a relic with [span_danger("[loaded_artifact.hidden_power]")] effect.", INVESTIGATE_EXPERIMENTOR) ejectItem() //Global reactions @@ -553,34 +553,74 @@ #undef FAIL -//////////////////////////////////SPECIAL ITEMS//////////////////////////////////////// +// Relic \\ /obj/item/relic name = "strange object" desc = "What mysteries could this hold? Maybe Research & Development could find out." - icon = 'icons/obj/devices/assemblies.dmi' - var/realName = "defined object" - var/revealed = FALSE - var/realProc - var/reset_timer = 60 + icon = 'icons/obj/devices/artefacts.dmi' + icon_state = "debug_artefact" + //The name this artefact will have when it's activated. + var/real_name = "artefact" + //Has this artefact been activated? + var/activated = FALSE + //What effect this artefact has when used. Randomly determined when activated. + var/hidden_power + //Minimum possible cooldown. + var/min_cooldown = 6 SECONDS + //Max possible cooldown. + var/max_cooldown = 30 SECONDS + //Cooldown length. Randomly determined at activation if it isn't determined here. + var/cooldown_timer COOLDOWN_DECLARE(cooldown) + //What visual theme this artefact has. Current possible choices: "prototype", "necrotech" + var/artifact_theme = "prototype" /obj/item/relic/Initialize(mapload) . = ..() - icon_state = pick("shock_kit","armor-igniter-analyzer","infra-igniter0","infra-igniter1","radio-multitool","prox-radio1","radio-radio","timer-multitool0","radio-igniter-tank") - realName = "[pick("broken","twisted","spun","improved","silly","regular","badly made")] [pick("device","object","toy","illegal tech","weapon")]" + random_themed_appearance() + +/obj/item/relic/proc/random_themed_appearance() + var/themed_name_prefix + var/themed_name_suffix + if(artifact_theme == "prototype") + icon_state = pick("prototype1", "prototype2", "prototype3", "prototype4", "prototype5", "prototype6", "prototype7", "prototype8","prototype9") + themed_name_prefix = pick("experimental","prototype","artificial","handcrafted","ramshackle","odd") + themed_name_suffix = pick("device","assembly","gadget","gizmo","contraption","machine","widget","object") + real_name = "[pick(themed_name_prefix)] [pick(themed_name_suffix)]" + name = "strange [pick(themed_name_suffix)]" + if(artifact_theme == "necrotech") + icon_state = pick("necrotech1", "necrotech2", "necrotech3", "necrotech4", "necrotech5", "necrotech6") + themed_name_prefix = pick("dark","bloodied","unholy","archeotechnological","dismal","ruined","thrumming") + themed_name_suffix = pick("instrument","shard","fetish","bibelot","trinket","offering","relic") + real_name = "[pick(themed_name_prefix)] [pick(themed_name_suffix)]" + name = "strange relic" + update_appearance() +/obj/item/relic/lavaland + name = "strange relic" + artifact_theme = "necrotech" /obj/item/relic/proc/reveal() - if(revealed) //Re-rolling your relics seems a bit overpowered, yes? + if(activated) //no rerolling return - revealed = TRUE - name = realName - reset_timer = rand(reset_timer, reset_timer * 5) - realProc = pick(PROC_REF(teleport), PROC_REF(explode), PROC_REF(rapidDupe), PROC_REF(petSpray), PROC_REF(flash), PROC_REF(clean), PROC_REF(corgicannon)) + activated = TRUE + name = real_name + if(!cooldown_timer) + cooldown_timer = rand(min_cooldown, max_cooldown) + if(!hidden_power) + hidden_power = pick( + PROC_REF(corgi_cannon), + PROC_REF(cleaning_foam), + PROC_REF(flashbanger), + PROC_REF(summon_animals), + PROC_REF(uncontrolled_teleport), + PROC_REF(heat_and_explode), + PROC_REF(rapid_self_dupe), + ) /obj/item/relic/attack_self(mob/user) - if(!revealed) + if(!activated) to_chat(user, span_notice("You aren't quite sure what this is. Maybe R&D knows what to do with it?")) return if(!COOLDOWN_FINISHED(src, cooldown)) @@ -588,40 +628,39 @@ return if(loc != user) return - COOLDOWN_START(src, cooldown, reset_timer) - call(src,realProc)(user) - -//////////////// RELIC PROCS ///////////////////////////// + COOLDOWN_START(src, cooldown, cooldown_timer) + call(src, hidden_power)(user) -/obj/item/relic/proc/throwSmoke(turf/where) +/obj/item/relic/proc/throw_smoke(turf/where) var/datum/effect_system/fluid_spread/smoke/smoke = new smoke.set_up(0, holder = src, location = get_turf(where)) smoke.start() -/obj/item/relic/proc/corgicannon(mob/user) +// Artefact Powers \\ + +/obj/item/relic/proc/corgi_cannon(mob/user) playsound(src, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) var/mob/living/basic/pet/dog/corgi/sad_corgi = new(get_turf(user)) - sad_corgi.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, PROC_REF(throwSmoke), sad_corgi)) + sad_corgi.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, PROC_REF(throw_smoke), sad_corgi)) warn_admins(user, "Corgi Cannon", 0) -/obj/item/relic/proc/clean(mob/user) +/obj/item/relic/proc/cleaning_foam(mob/user) playsound(src, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - var/obj/item/grenade/chem_grenade/cleaner/CL = new/obj/item/grenade/chem_grenade/cleaner(get_turf(user)) - CL.detonate() - qdel(CL) + var/obj/item/grenade/chem_grenade/cleaner/spawned_foamer = new/obj/item/grenade/chem_grenade/cleaner(get_turf(user)) + spawned_foamer.detonate() + qdel(spawned_foamer) warn_admins(user, "Foam", 0) -/obj/item/relic/proc/flash(mob/user) +/obj/item/relic/proc/flashbanger(mob/user) playsound(src, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - var/obj/item/grenade/flashbang/CB = new/obj/item/grenade/flashbang(user.loc) - CB.detonate() + var/obj/item/grenade/flashbang/spawned_flashbang = new/obj/item/grenade/flashbang(user.loc) + spawned_flashbang.detonate() warn_admins(user, "Flash") -/obj/item/relic/proc/petSpray(mob/user) +/obj/item/relic/proc/summon_animals(mob/user) var/message = span_danger("[src] begins to shake, and in the distance the sound of rampaging animals arises!") visible_message(message) to_chat(user, message) - var/static/list/valid_animals = list( /mob/living/basic/bear, /mob/living/basic/bee, @@ -637,42 +676,40 @@ /mob/living/basic/pet/fox, ) for(var/counter in 1 to rand(1, 25)) - var/mobType = pick(valid_animals) - new mobType(get_turf(src)) - + var/animal_spawn = pick(valid_animals) + new animal_spawn(get_turf(src)) warn_admins(user, "Mass Mob Spawn") if(prob(60)) to_chat(user, span_warning("[src] falls apart!")) qdel(src) -/obj/item/relic/proc/rapidDupe(mob/user) +/obj/item/relic/proc/rapid_self_dupe(mob/user) audible_message("[src] emits a loud pop!") - var/list/dupes = list() + var/list/dummy_artifacts = list() for(var/counter in 1 to rand(5,10)) - var/obj/item/relic/R = new type(get_turf(src)) - R.name = name - R.desc = desc - R.realName = realName - R.realProc = realProc - R.revealed = TRUE - dupes += R - R.throw_at(pick(oview(7,get_turf(src))),10,1) - - QDEL_LIST_IN(dupes, rand(10, 100)) + var/obj/item/relic/duped = new type(get_turf(src)) + duped.name = name + duped.desc = desc + duped.real_name = real_name + duped.hidden_power = hidden_power + duped.activated = TRUE + dummy_artifacts += duped + duped.throw_at(pick(oview(7,get_turf(src))),10,1) + QDEL_LIST_IN(dummy_artifacts, rand(1 SECONDS, 10 SECONDS)) warn_admins(user, "Rapid duplicator", 0) -/obj/item/relic/proc/explode(mob/user) +/obj/item/relic/proc/heat_and_explode(mob/user) to_chat(user, span_danger("[src] begins to heat up!")) - addtimer(CALLBACK(src, PROC_REF(do_explode), user), rand(3.5 SECONDS, 10 SECONDS)) + addtimer(CALLBACK(src, PROC_REF(blow_up), user), rand(3.5 SECONDS, 10 SECONDS)) -/obj/item/relic/proc/do_explode(mob/user) +/obj/item/relic/proc/blow_up(mob/user) if(loc == user) visible_message(span_notice("\The [src]'s top opens, releasing a powerful blast!")) explosion(src, heavy_impact_range = rand(1,5), light_impact_range = rand(1,5), flame_range = 2, flash_range = rand(1,5), adminlog = TRUE) warn_admins(user, "Explosion") qdel(src) //Comment this line to produce a light grenade (the bomb that keeps on exploding when used)!! -/obj/item/relic/proc/teleport(mob/user) +/obj/item/relic/proc/uncontrolled_teleport(mob/user) to_chat(user, span_notice("[src] begins to vibrate!")) addtimer(CALLBACK(src, PROC_REF(do_the_teleport), user), rand(1 SECONDS, 3 SECONDS)) @@ -680,16 +717,16 @@ var/turf/userturf = get_turf(user) if(loc == user && !is_centcom_level(userturf.z)) //Because Nuke Ops bringing this back on their shuttle, then looting the ERT area is 2fun4you! visible_message(span_notice("[src] twists and bends, relocating itself!")) - throwSmoke(userturf) + throw_smoke(userturf) do_teleport(user, userturf, 8, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) - throwSmoke(get_turf(user)) + throw_smoke(get_turf(user)) warn_admins(user, "Teleport", 0) //Admin Warning proc for relics -/obj/item/relic/proc/warn_admins(mob/user, RelicType, priority = 1) - var/turf/T = get_turf(src) - var/log_msg = "[RelicType] relic used by [key_name(user)] in [AREACOORD(T)]" +/obj/item/relic/proc/warn_admins(mob/user, relic_type, priority = 1) + var/turf/location = get_turf(src) + var/log_msg = "[relic_type] relic used by [key_name(user)] in [AREACOORD(location)]" if(priority) //For truly dangerous relics that may need an admin's attention. BWOINK! - message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + message_admins("[relic_type] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(location)]") log_game(log_msg) investigate_log(log_msg, "experimentor") diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 295cd05fe9040..c69de9bb2d9c1 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -21,8 +21,11 @@ var/stripe_color = null ///direction we output onto (if 0, on top of us) var/drop_direction = 0 + //looping sound for printing items + var/datum/looping_sound/lathe_print/print_sound /obj/machinery/rnd/production/Initialize(mapload) + print_sound = new(src, FALSE) materials = AddComponent( /datum/component/remote_materials, \ mapload, \ @@ -48,6 +51,7 @@ update_icon(UPDATE_OVERLAYS) /obj/machinery/rnd/production/Destroy() + QDEL_NULL(print_sound) materials = null cached_designs = null return ..() @@ -74,6 +78,7 @@ return . += span_notice("Material usage cost at [efficiency_coeff * 100]%") + . += span_notice("Build time at [efficiency_coeff * 100]%") if(drop_direction) . += span_notice("Currently configured to drop printed objects [dir2text(drop_direction)].") . += span_notice("[EXAMINE_HINT("Alt-click")] to reset.") @@ -341,11 +346,12 @@ for(var/material in design.materials) charge_per_item += design.materials[material] charge_per_item = ROUND_UP((charge_per_item / (MAX_STACK_SIZE * SHEET_MATERIAL_AMOUNT)) * coefficient * active_power_usage) - var/build_time_per_item = (design.construction_time * design.lathe_time_factor) ** 0.8 + var/build_time_per_item = (design.construction_time * design.lathe_time_factor * efficiency_coeff) ** 0.8 //start production busy = TRUE SStgui.update_uis(src) + print_sound.start() if(production_animation) icon_state = production_animation var/turf/target_location @@ -447,7 +453,7 @@ /// Called at the end of do_make_item's timer loop /obj/machinery/rnd/production/proc/finalize_build() PROTECTED_PROC(TRUE) - + print_sound.stop() busy = FALSE SStgui.update_uis(src) icon_state = initial(icon_state) diff --git a/code/modules/research/ordnance/scipaper_partner.dm b/code/modules/research/ordnance/scipaper_partner.dm index 712ec4b4127e9..7120c78cecde9 100644 --- a/code/modules/research/ordnance/scipaper_partner.dm +++ b/code/modules/research/ordnance/scipaper_partner.dm @@ -4,12 +4,11 @@ accepted_experiments = list(/datum/experiment/ordnance/explosive/lowyieldbomb) multipliers = list(SCIPAPER_COOPERATION_INDEX = 0.75, SCIPAPER_FUNDING_INDEX = 0.75) boostable_nodes = list( - "bluespace_basic" = 2000, - "NVGtech" = 1500, - "practical_bluespace" = 2500, - "basic_plasma" = 2000, - "basic_mining" = 2000, - "adv_mining" = 2000, + TECHWEB_NODE_BLUESPACE_THEORY = TECHWEB_TIER_3_POINTS, + TECHWEB_NODE_NIGHT_VISION = TECHWEB_TIER_2_POINTS, + TECHWEB_NODE_ANOMALY_RESEARCH = TECHWEB_TIER_2_POINTS, + TECHWEB_NODE_MINING = TECHWEB_TIER_1_POINTS, + TECHWEB_NODE_MINING_ADV = TECHWEB_TIER_2_POINTS, ) /datum/scientific_partner/baron @@ -17,8 +16,8 @@ flufftext = "A nearby research station ran by a very wealthy captain seems to be struggling with their scientific output. They might reward us handsomely if we ghostwrite for them." multipliers = list(SCIPAPER_COOPERATION_INDEX = 0.25, SCIPAPER_FUNDING_INDEX = 2) boostable_nodes = list( - "comp_recordkeeping" = 500, - "computer_data_disks" = 500, + TECHWEB_NODE_CONSOLES = TECHWEB_TIER_1_POINTS, + TECHWEB_NODE_FUNDIMENTAL_SCI = TECHWEB_TIER_1_POINTS, ) /datum/scientific_partner/defense @@ -30,14 +29,11 @@ /datum/experiment/ordnance/explosive/hydrogenbomb, ) boostable_nodes = list( - "adv_weaponry" = 5000, - "weaponry" = 2500, - "sec_basic" = 1250, - "explosive_weapons" = 1250, - "electronic_weapons" = 1250, - "radioactive_weapons" = 1250, - "beam_weapons" = 1250, - "explosive_weapons" = 1250, + TECHWEB_NODE_RIOT_SUPRESSION = TECHWEB_TIER_3_POINTS, + TECHWEB_NODE_SEC_EQUIP = TECHWEB_TIER_1_POINTS, + TECHWEB_NODE_EXPLOSIVES = TECHWEB_TIER_2_POINTS, + TECHWEB_NODE_ELECTRIC_WEAPONS = TECHWEB_TIER_2_POINTS, + TECHWEB_NODE_BEAM_WEAPONS = TECHWEB_TIER_3_POINTS, ) /datum/scientific_partner/medical @@ -48,12 +44,12 @@ /datum/experiment/ordnance/gaseous/bz, ) boostable_nodes = list( - "cyber_organs" = 750, - "cyber_organs_upgraded" = 1000, - "genetics" = 500, - "subdermal_implants" = 1250, - "adv_biotech" = 1000, - "biotech" = 1000, + TECHWEB_NODE_CYBER_ORGANS = TECHWEB_TIER_1_POINTS, + TECHWEB_NODE_CYBER_ORGANS_UPGRADED = TECHWEB_TIER_2_POINTS, + TECHWEB_NODE_GENE_ENGINEERING = TECHWEB_TIER_1_POINTS, + TECHWEB_NODE_PASSIVE_IMPLANTS = TECHWEB_TIER_1_POINTS, + TECHWEB_NODE_BIO_SCAN = TECHWEB_TIER_1_POINTS, + TECHWEB_NODE_CHEM_SYNTHESIS = TECHWEB_TIER_2_POINTS, ) /datum/scientific_partner/physics @@ -64,11 +60,8 @@ /datum/experiment/ordnance/explosive/nobliumbomb, ) boostable_nodes = list( - "engineering" = 5000, - "adv_engi" = 5000, - "emp_super" = 3000, - "emp_adv" = 1250, - "high_efficiency" = 5000, - "micro_bluespace" = 5000, - "adv_power" = 1500, + TECHWEB_NODE_PARTS_UPG = TECHWEB_TIER_2_POINTS, + TECHWEB_NODE_EXP_TOOLS = TECHWEB_TIER_4_POINTS, + TECHWEB_NODE_PARTS_BLUESPACE = TECHWEB_TIER_3_POINTS, + TECHWEB_NODE_PARTS_ADV = TECHWEB_TIER_1_POINTS, ) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 069447c6f4539..0cfca236d24c3 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -72,7 +72,7 @@ return CONTEXTUAL_SCREENTIP_SET else if(held_item.tool_behaviour == TOOL_MULTITOOL) - var/obj/item/multitool/tool = held_item + var/obj/item/multitool/tool = held_item.get_proxy_attacker_for(src, user) if(!QDELETED(tool.buffer) && istype(tool.buffer, /datum/techweb)) context[SCREENTIP_CONTEXT_LMB] = "Upload Techweb" context[SCREENTIP_CONTEXT_RMB] = "Upload Techweb" diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 1bd0d3560beed..79a97b40a6bc5 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -154,16 +154,16 @@ if(HDD_OVERLOADED) . += "The front panel is dangling open. The hdd inside is destroyed and the wires are all burned." -/obj/machinery/rnd/server/master/item_interaction(mob/living/user, obj/item/tool, list/modifiers) +/obj/machinery/rnd/server/master/tool_act(mob/living/user, obj/item/tool, list/modifiers) if(!tool.tool_behaviour) - return NONE + return ..() // Only antags are given the training and knowledge to disassemble this thing. if(!is_special_character(user)) if(user.combat_mode) return ITEM_INTERACT_SKIP_TO_ATTACK balloon_alert(user, "you can't find an obvious maintenance hatch!") return ITEM_INTERACT_BLOCKING - return NONE + return ..() /obj/machinery/rnd/server/master/attackby(obj/item/attacking_item, mob/user, params) if(istype(attacking_item, /obj/item/computer_disk/hdd_theft)) diff --git a/code/modules/research/techweb/_techweb_node.dm b/code/modules/research/techweb/_techweb_node.dm index c36eb88627137..7714946a4d290 100644 --- a/code/modules/research/techweb/_techweb_node.dm +++ b/code/modules/research/techweb/_techweb_node.dm @@ -40,6 +40,8 @@ var/list/experiments_to_unlock = list() /// Whether or not this node should show on the wiki var/show_on_wiki = TRUE + /// Hidden Mech nodes unlocked when mech fabricator emaged. + var/illegal_mech_node = FALSE /datum/techweb_node/error_node id = "ERROR" diff --git a/code/modules/research/techweb/nodes/alien_nodes.dm b/code/modules/research/techweb/nodes/alien_nodes.dm index bf19c0c54a47d..c5d21c255cf8e 100644 --- a/code/modules/research/techweb/nodes/alien_nodes.dm +++ b/code/modules/research/techweb/nodes/alien_nodes.dm @@ -1,8 +1,8 @@ /datum/techweb_node/alientech //AYYYYYYYYLMAOO tech - id = "alientech" + id = TECHWEB_NODE_ALIENTECH display_name = "Alien Technology" description = "Things used by the greys." - prereq_ids = list("bluespace_travel") + prereq_ids = list(TECHWEB_NODE_BLUESPACE_TRAVEL) required_items_to_unlock = list( /obj/item/stack/sheet/mineral/abductor, /obj/item/abductor, @@ -33,10 +33,10 @@ SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_ALIENTECH] = TRUE /datum/techweb_node/alien_engi - id = "alien_engi" + id = TECHWEB_NODE_ALIEN_ENGI display_name = "Alien Engineering" description = "Alien engineering tools" - prereq_ids = list("alientech", "exp_tools") + prereq_ids = list(TECHWEB_NODE_ALIENTECH, TECHWEB_NODE_EXP_TOOLS) design_ids = list( "alien_crowbar", "alien_multitool", @@ -61,10 +61,10 @@ hidden = TRUE /datum/techweb_node/alien_surgery - id = "alien_surgery" + id = TECHWEB_NODE_ALIEN_SURGERY display_name = "Alien Surgery" description = "Abductors did nothing wrong." - prereq_ids = list("alientech", "surgery_tools") + prereq_ids = list(TECHWEB_NODE_ALIENTECH, TECHWEB_NODE_SURGERY_TOOLS) design_ids = list( "alien_cautery", "alien_drill", diff --git a/code/modules/research/techweb/nodes/atmos_nodes.dm b/code/modules/research/techweb/nodes/atmos_nodes.dm index b97538070beba..ef4fee5ed92a7 100644 --- a/code/modules/research/techweb/nodes/atmos_nodes.dm +++ b/code/modules/research/techweb/nodes/atmos_nodes.dm @@ -1,5 +1,5 @@ /datum/techweb_node/atmos - id = "atmos" + id = TECHWEB_NODE_ATMOS starting_node = TRUE display_name = "Atmospherics" description = "Maintaining station air and related life support systems." @@ -8,6 +8,7 @@ "atmosalerts", "thermomachine", "space_heater", + "scrubber", "generic_tank", "oxygen_tank", "plasma_tank", @@ -21,12 +22,13 @@ ) /datum/techweb_node/gas_compression - id = "gas_compression" + id = TECHWEB_NODE_GAS_COMPRESSION display_name = "Gas Compression" description = "Highly pressurized gases hold potential for unlocking immense energy capabilities." - prereq_ids = list("atmos") + prereq_ids = list(TECHWEB_NODE_ATMOS) design_ids = list( "tank_compressor", + "pump", "emergency_oxygen", "emergency_oxygen_engi", "power_turbine_console", @@ -42,13 +44,13 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/plasma_control - id = "plasma_control" + id = TECHWEB_NODE_PLASMA_CONTROL display_name = "Controlled Plasma" description = "Experiments with high-pressure gases and electricity resulting in crystallization and controlled plasma reactions." - prereq_ids = list("gas_compression", "energy_manipulation") + prereq_ids = list(TECHWEB_NODE_GAS_COMPRESSION, TECHWEB_NODE_ENERGY_MANIPULATION) design_ids = list( - "crystallizer", "electrolyzer", + "pipe_scrubber", "pacman", "mech_generator", "plasmacutter", @@ -57,10 +59,10 @@ required_experiments = list(/datum/experiment/ordnance/gaseous/plasma) /datum/techweb_node/fusion - id = "fusion" + id = TECHWEB_NODE_FUSION display_name = "Fusion" description = "Investigating fusion reactor technology to achieve sustainable and efficient energy production through controlled plasma reactions involving noble gases." - prereq_ids = list("plasma_control") + prereq_ids = list(TECHWEB_NODE_PLASMA_CONTROL) design_ids = list( "HFR_core", "HFR_corner", @@ -68,19 +70,21 @@ "HFR_interface", "HFR_moderator_input", "HFR_waste_output", + "adv_fire_extinguisher", "bolter_wrench", "rpd_loaded", "engine_goggles", + "crystallizer", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) required_experiments = list(/datum/experiment/ordnance/gaseous/bz) discount_experiments = list(/datum/experiment/ordnance/gaseous/nitrous_oxide = TECHWEB_TIER_3_POINTS) /datum/techweb_node/exp_tools - id = "exp_tools" + id = TECHWEB_NODE_EXP_TOOLS display_name = "Experimental Tools" description = "Enhances the functionality and versatility of station tools." - prereq_ids = list("fusion") + prereq_ids = list(TECHWEB_NODE_FUSION) design_ids = list( "flatpacker", "handdrill", @@ -88,20 +92,20 @@ "jawsoflife", "rangedanalyzer", "rtd_loaded", + "mech_rcd", "rcd_loaded", "rcd_ammo", "weldingmask", "magboots", - "adv_fire_extinguisher", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) discount_experiments = list(/datum/experiment/ordnance/gaseous/noblium = TECHWEB_TIER_4_POINTS) /datum/techweb_node/rcd_upgrade - id = "rcd_upgrade" - display_name = "Rapid Device Upgrade Designs" + id = TECHWEB_NODE_RCD_UPGRADE + display_name = "Rapid Construction Device Upgrades" description = "New designs and enhancements for RCD and RPD." - prereq_ids = list("exp_tools", "parts_bluespace") + prereq_ids = list(TECHWEB_NODE_EXP_TOOLS, TECHWEB_NODE_PARTS_BLUESPACE) design_ids = list( "rcd_upgrade_silo_link", "rcd_upgrade_anti_interrupt", diff --git a/code/modules/research/techweb/nodes/bepis_nodes.dm b/code/modules/research/techweb/nodes/bepis_nodes.dm index c051aab526f81..baefd8c11d048 100644 --- a/code/modules/research/techweb/nodes/bepis_nodes.dm +++ b/code/modules/research/techweb/nodes/bepis_nodes.dm @@ -1,17 +1,18 @@ /datum/techweb_node/light_apps - id = "light_apps" + id = TECHWEB_NODE_LIGHT_APPS display_name = "Illumination Applications" description = "Applications of lighting and vision technology not originally thought to be commercially viable." design_ids = list( "bright_helmet", "rld_mini", + "photon_cannon", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) hidden = TRUE experimental = TRUE /datum/techweb_node/extreme_office - id = "extreme_office" + id = TECHWEB_NODE_EXTREME_OFFICE display_name = "Advanced Office Applications" description = "Some of our smartest lab guys got together on a Friday and improved our office efficiency by 350%. Here's how." design_ids = list( @@ -23,7 +24,7 @@ experimental = TRUE /datum/techweb_node/spec_eng - id = "spec_eng" + id = TECHWEB_NODE_SPEC_ENG display_name = "Specialized Engineering" description = "Conventional wisdom has deemed these engineering products 'technically' safe, but far too dangerous to traditionally condone." design_ids = list( @@ -35,7 +36,7 @@ experimental = TRUE /datum/techweb_node/aus_security - id = "aus_security" + id = TECHWEB_NODE_AUS_SECURITY display_name = "Australicus Security Protocols" description = "It is said that security in the Australicus sector is tight, so we took some pointers from their equipment. Thankfully, our sector lacks any signs of these, 'dropbears'." design_ids = list( @@ -47,7 +48,7 @@ experimental = TRUE /datum/techweb_node/interrogation - id = "interrogation" + id = TECHWEB_NODE_INTERROGATION display_name = "Enhanced Interrogation Technology" description = "By cross-referencing several declassified documents from past dictatorial regimes, we were able to develop an incredibly effective interrogation device. \ Ethical concerns about loss of free will do not apply to criminals, according to galactic law." @@ -59,7 +60,7 @@ experimental = TRUE /datum/techweb_node/sticky_advanced - id = "sticky_advanced" + id = TECHWEB_NODE_STICKY_ADVANCED display_name = "Advanced Sticky Technology" description = "Taking a good joke too far? Nonsense!" design_ids = list( @@ -71,7 +72,7 @@ experimental = TRUE /datum/techweb_node/tackle_advanced - id = "tackle_advanced" + id = TECHWEB_NODE_TACKLE_ADVANCED display_name = "Advanced Grapple Technology" description = "Nanotrasen would like to remind its researching staff that it is never acceptable to \"glomp\" your coworkers, and further \"scientific trials\" on the subject \ will no longer be accepted in its academic journals." @@ -84,21 +85,7 @@ experimental = TRUE /datum/techweb_node/mod_experimental - id = "mod_experimental" - display_name = "Experimental Modular Suits" - description = "Applications of experimentality when creating MODsuits have created these..." - design_ids = list( - "mod_disposal", - "mod_joint_torsion", - "mod_recycler", - "mod_shooting", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) - hidden = TRUE - experimental = TRUE - -/datum/techweb_node/mod_experimental - id = "mod_experimental" + id = TECHWEB_NODE_MOD_EXPERIMENTAL display_name = "Experimental Modular Suits" description = "Applications of experimentality when creating MODsuits have created these..." design_ids = list( @@ -112,7 +99,7 @@ experimental = TRUE /datum/techweb_node/posisphere - id = "positronic_sphere" + id = TECHWEB_NODE_POSITRONIC_SPHERE display_name = "Experimental Spherical Positronic Brain" description = "Recent developments on cost-cutting measures have allowed us to cut positronic brain cubes into twice-as-cheap spheres. Unfortunately, it also allows them to move around the lab via rolling maneuvers." design_ids = list( diff --git a/code/modules/research/techweb/nodes/biology_nodes.dm b/code/modules/research/techweb/nodes/biology_nodes.dm index 4adc78691835a..3599dfb9fc5a1 100644 --- a/code/modules/research/techweb/nodes/biology_nodes.dm +++ b/code/modules/research/techweb/nodes/biology_nodes.dm @@ -1,8 +1,8 @@ /datum/techweb_node/bio_scan - id = "bio_scan" + id = TECHWEB_NODE_BIO_SCAN display_name = "Biological Scan" description = "Advanced technology for analyzing patient health and reagent compositions, ensuring precise diagnostics and treatment in the medical bay." - prereq_ids = list("medbay_equip") + prereq_ids = list(TECHWEB_NODE_MEDBAY_EQUIP) design_ids = list( "healthanalyzer", "autopsyscanner", @@ -16,13 +16,14 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/cytology - id = "cytology" + id = TECHWEB_NODE_CYTOLOGY display_name = "Cytology" description = "Cellular biology research focused on cultivation of limbs and diverse organisms from cells." - prereq_ids = list("bio_scan") + prereq_ids = list(TECHWEB_NODE_BIO_SCAN) design_ids = list( "limbgrower", "pandemic", + "vatgrower", "petri_dish", "swab", "biopsy_tool", @@ -30,10 +31,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/xenobiology - id = "xenobiology" + id = TECHWEB_NODE_XENOBIOLOGY display_name = "Xenobiology" description = "Exploration of non-human biology, unlocking the secrets of extraterrestrial lifeforms and their unique biological processes." - prereq_ids = list("cytology") + prereq_ids = list(TECHWEB_NODE_CYTOLOGY) design_ids = list( "xenobioconsole", "slime_scanner", @@ -43,13 +44,13 @@ "limbdesign_plasmaman", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) - required_experiments = list(/datum/experiment/scanning/random/cytology) + required_experiments = list(/datum/experiment/scanning/cytology/slime) /datum/techweb_node/gene_engineering - id = "gene_engineering" + id = TECHWEB_NODE_GENE_ENGINEERING display_name = "Gene Engineering" description = "Research into sophisticated DNA manipulation techniques, enabling the modification of human genetic traits to unlock specific abilities and enhancements." - prereq_ids = list("selection", "xenobiology") + prereq_ids = list(TECHWEB_NODE_SELECTION, TECHWEB_NODE_XENOBIOLOGY) design_ids = list( "dnascanner", "scan_console", @@ -58,7 +59,45 @@ "mod_dna_lock", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) - discount_experiments = list( - /datum/experiment/scanning/random/plants/traits = TECHWEB_TIER_2_POINTS, - /datum/experiment/scanning/points/slime/hard = TECHWEB_TIER_2_POINTS, - ) + discount_experiments = list(/datum/experiment/scanning/people/mutant = TECHWEB_TIER_4_POINTS) + +// Botany root node +/datum/techweb_node/botany_equip + id = TECHWEB_NODE_BOTANY_EQUIP + starting_node = TRUE + display_name = "Botany Equipment" + description = "Essential tools for maintaining onboard gardens, supporting plant growth in the unique environment of the space station." + design_ids = list( + "seed_extractor", + "plant_analyzer", + "watering_can", + "spade", + "cultivator", + "secateurs", + "hatchet", + ) + +/datum/techweb_node/hydroponics + id = TECHWEB_NODE_HYDROPONICS + display_name = "Hydroponics" + description = "Research into advanced hydroponic systems for efficient and sustainable plant cultivation." + prereq_ids = list(TECHWEB_NODE_BOTANY_EQUIP, TECHWEB_NODE_CHEM_SYNTHESIS) + design_ids = list( + "biogenerator", + "hydro_tray", + "portaseeder", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) + +/datum/techweb_node/selection + id = TECHWEB_NODE_SELECTION + display_name = "Artificial Selection" + description = "Advancement in plant cultivation techniques through artificial selection, enabling precise manipulation of plant DNA." + prereq_ids = list(TECHWEB_NODE_HYDROPONICS) + design_ids = list( + "flora_gun", + "gene_shears", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) + required_experiments = list(/datum/experiment/scanning/random/plants/wild) + discount_experiments = list(/datum/experiment/scanning/random/plants/traits = TECHWEB_TIER_3_POINTS) diff --git a/code/modules/research/techweb/nodes/circuit_nodes.dm b/code/modules/research/techweb/nodes/circuit_nodes.dm index 81f6dad275f0d..e654abbf4dffb 100644 --- a/code/modules/research/techweb/nodes/circuit_nodes.dm +++ b/code/modules/research/techweb/nodes/circuit_nodes.dm @@ -1,9 +1,9 @@ /datum/techweb_node/programming - id = "programming" + id = TECHWEB_NODE_PROGRAMMING starting_node = TRUE display_name = "Programming" description = "Dedicate an entire shift to program a fridge to greet you when opened." - prereq_ids = list("robotics") + prereq_ids = list(TECHWEB_NODE_ROBOTICS) design_ids = list( "component_printer", "module_duplicator", @@ -87,10 +87,10 @@ ) /datum/techweb_node/circuit_shells - id = "circuit_shells" + id = TECHWEB_NODE_CIRCUIT_SHELLS display_name = "Advanced Circuit Shells" description = "Adding brains to more things." - prereq_ids = list("programming") + prereq_ids = list(TECHWEB_NODE_PROGRAMMING) design_ids = list( "assembly_shell", "bot_shell", @@ -108,10 +108,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/bci - id = "bci" + id = TECHWEB_NODE_BCI display_name = "Brain-Computer Interface" description = "Embedded brain circuits. May occasionally stream Nanotrasen ads in dreams." - prereq_ids = list("circuit_shells", "passive_implants") + prereq_ids = list(TECHWEB_NODE_CIRCUIT_SHELLS, TECHWEB_NODE_PASSIVE_IMPLANTS) design_ids = list( "bci_implanter", "bci_shell", @@ -129,10 +129,10 @@ discount_experiments = list(/datum/experiment/scanning/people/skillchip = TECHWEB_TIER_2_POINTS) /datum/techweb_node/programmed_robot - id = "programmed_robot" + id = TECHWEB_NODE_PROGRAMMED_ROBOT display_name = "Programmed Robot" description = "Grants access to movable shells, allowing for remote operations and pranks." - prereq_ids = list("circuit_shells") + prereq_ids = list(TECHWEB_NODE_CIRCUIT_SHELLS) design_ids = list( "drone_shell", "comp_pathfind", @@ -141,10 +141,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/programmed_server - id = "programmed_server" + id = TECHWEB_NODE_PROGRAMMED_SERVER display_name = "Programmed Server" description = "Grants access to a server shell that has a very high capacity for components." - prereq_ids = list("bci") + prereq_ids = list(TECHWEB_NODE_BCI) design_ids = list( "server_shell", ) diff --git a/code/modules/research/techweb/nodes/cyborg_nodes.dm b/code/modules/research/techweb/nodes/cyborg_nodes.dm index a4e0debd6ebb8..447ee2dc7f3b9 100644 --- a/code/modules/research/techweb/nodes/cyborg_nodes.dm +++ b/code/modules/research/techweb/nodes/cyborg_nodes.dm @@ -1,9 +1,9 @@ /datum/techweb_node/augmentation - id = "augmentation" + id = TECHWEB_NODE_AUGMENTATION starting_node = TRUE display_name = "Augmentation" description = "For those who prefer shiny metal over squishy flesh." - prereq_ids = list("robotics") + prereq_ids = list(TECHWEB_NODE_ROBOTICS) design_ids = list( "borg_chest", "borg_head", @@ -19,12 +19,15 @@ "cybernetic_liver", "cybernetic_heart", ) + experiments_to_unlock = list( + /datum/experiment/scanning/people/android, + ) /datum/techweb_node/cybernetics - id = "cybernetics" + id = TECHWEB_NODE_CYBERNETICS display_name = "Cybernetics" description = "Sapient robots with preloaded tool modules and programmable laws." - prereq_ids = list("augmentation") + prereq_ids = list(TECHWEB_NODE_AUGMENTATION) design_ids = list( "robocontrol", "borgupload", @@ -43,10 +46,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/borg_service - id = "borg_service" + id = TECHWEB_NODE_BORG_SERVICES display_name = "Service Cyborg Upgrades" description = "Let them do the cookin' by the book." - prereq_ids = list("cybernetics") + prereq_ids = list(TECHWEB_NODE_CYBERNETICS) design_ids = list( "borg_upgrade_rolling_table", "borg_upgrade_condiment_synthesizer", @@ -58,10 +61,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/borg_mining - id = "borg_mining" + id = TECHWEB_NODE_BORG_MINING display_name = "Mining Cyborg Upgrades" description = "To mine places too dangerous for humans." - prereq_ids = list("cybernetics") + prereq_ids = list(TECHWEB_NODE_CYBERNETICS) design_ids = list( "borg_upgrade_lavaproof", "borg_upgrade_holding", @@ -70,10 +73,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/borg_medical - id = "borg_medical" + id = TECHWEB_NODE_BORG_MEDICAL display_name = "Medical Cyborg Upgrades" description = "Let them follow Asimov's First Law." - prereq_ids = list("borg_service", "surgery_adv") + prereq_ids = list(TECHWEB_NODE_BORG_SERVICES, TECHWEB_NODE_SURGERY_ADV) design_ids = list( "borg_upgrade_pinpointer", "borg_upgrade_beakerapp", @@ -86,10 +89,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/borg_utility - id = "borg_utility" + id = TECHWEB_NODE_BORG_UTILITY display_name = "Untility Cyborg Upgrades" description = "Let them wipe our floors for us." - prereq_ids = list("borg_service", "sanitation") + prereq_ids = list(TECHWEB_NODE_BORG_SERVICES, TECHWEB_NODE_SANITATION) design_ids = list( "borg_upgrade_advancedmop", "borg_upgrade_broomer", @@ -107,10 +110,10 @@ design_ids += "borg_upgrade_disablercooler" /datum/techweb_node/borg_engi - id = "borg_engi" + id = TECHWEB_NODE_BORG_ENGI display_name = "Engineering Cyborg Upgrades" description = "To slack even more." - prereq_ids = list("borg_mining", "parts_upg") + prereq_ids = list(TECHWEB_NODE_BORG_MINING, TECHWEB_NODE_PARTS_UPG) design_ids = list( "borg_upgrade_rped", "borg_upgrade_engineeringomnitool", @@ -121,10 +124,10 @@ // Implants root node /datum/techweb_node/passive_implants - id = "passive_implants" + id = TECHWEB_NODE_PASSIVE_IMPLANTS display_name = "Passive Implants" description = "Implants designed to operate seamlessly without active user input, enhancing various physiological functions or providing continuous benefits." - prereq_ids = list("augmentation") + prereq_ids = list(TECHWEB_NODE_AUGMENTATION) design_ids = list( "skill_station", "implant_trombone", @@ -141,10 +144,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/cyber/cyber_implants - id = "cyber_implants" + id = TECHWEB_NODE_CYBER_IMPLANTS display_name = "Cybernetic Implants" description = "Advanced technological enhancements integrated into the body, offering improved physical capabilities." - prereq_ids = list("passive_implants", "cybernetics") + prereq_ids = list(TECHWEB_NODE_PASSIVE_IMPLANTS, TECHWEB_NODE_CYBERNETICS) design_ids = list( "ci-breather", "ci-nutriment", @@ -158,10 +161,10 @@ research_costs[TECHWEB_POINT_TYPE_GENERIC] /= 2 /datum/techweb_node/cyber/combat_implants - id = "combat_implants" + id = TECHWEB_NODE_COMBAT_IMPLANTS display_name = "Combat Implants" description = "To make sure that you can wake the f*** up, samurai." - prereq_ids = list("cyber_implants") + prereq_ids = list(TECHWEB_NODE_CYBER_IMPLANTS) design_ids = list( "ci-reviver", "ci-antidrop", @@ -170,10 +173,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) /datum/techweb_node/cyber/integrated_toolsets - id = "integrated_toolsets" + id = TECHWEB_NODE_INTERGRATED_TOOLSETS display_name = "Integrated Toolsets" description = "Decades of contraband smuggling by assistants have led to the development of a full toolbox that fits seamlessly into your arm." - prereq_ids = list("combat_implants", "exp_tools") + prereq_ids = list(TECHWEB_NODE_COMBAT_IMPLANTS, TECHWEB_NODE_EXP_TOOLS) design_ids = list( "ci-nutrimentplus", "ci-toolset", @@ -182,10 +185,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) /datum/techweb_node/cyber/cyber_organs - id = "cyber_organs" + id = TECHWEB_NODE_CYBER_ORGANS display_name = "Cybernetic Organs" description = "We have the technology to rebuild him." - prereq_ids = list("cybernetics") + prereq_ids = list(TECHWEB_NODE_CYBERNETICS) design_ids = list( "cybernetic_eyes_improved", "cybernetic_eyes_improved_moth", @@ -198,10 +201,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/cyber/cyber_organs_upgraded - id = "cyber_organs_upgraded" + id = TECHWEB_NODE_CYBER_ORGANS_UPGRADED display_name = "Upgraded Cybernetic Organs" description = "We have the technology to upgrade him." - prereq_ids = list("cyber_organs") + prereq_ids = list(TECHWEB_NODE_CYBER_ORGANS) design_ids = list( "ci-gloweyes", "ci-welding", @@ -213,14 +216,14 @@ "cybernetic_liver_tier3", "cybernetic_heart_tier3", ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) required_experiments = list(/datum/experiment/scanning/people/augmented_organs) /datum/techweb_node/cyber/cyber_organs_adv - id = "cyber_organs_adv" + id = TECHWEB_NODE_CYBER_ORGANS_ADV display_name = "Advanced Cybernetic Organs" description = "Cutting-edge cybernetic organs offering enhanced sensory capabilities, making it easier than ever to detect ERP." - prereq_ids = list("cyber_organs_upgraded", "night_vision") + prereq_ids = list(TECHWEB_NODE_CYBER_ORGANS_UPGRADED, TECHWEB_NODE_NIGHT_VISION) design_ids = list( "cybernetic_ears_xray", "ci-thermals", @@ -229,3 +232,4 @@ "ci-xray-moth", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) + discount_experiments = list(/datum/experiment/scanning/people/android = TECHWEB_TIER_5_POINTS) diff --git a/code/modules/research/techweb/nodes/engi_nodes.dm b/code/modules/research/techweb/nodes/engi_nodes.dm index 02d20fef5fcd4..626dd6981d0ce 100644 --- a/code/modules/research/techweb/nodes/engi_nodes.dm +++ b/code/modules/research/techweb/nodes/engi_nodes.dm @@ -1,6 +1,6 @@ // Parts root node /datum/techweb_node/parts - id = "parts" + id = TECHWEB_NODE_PARTS starting_node = TRUE display_name = "Essential Stock Parts" description = "Foundational components that form the backbone of station operations, encompassing a range of essential equipment necessary for day-to-day functionality." @@ -27,10 +27,10 @@ ) /datum/techweb_node/parts_upg - id = "parts_upg" + id = TECHWEB_NODE_PARTS_UPG display_name = "Upgraded Parts" description = "Offering enhanced capabilities beyond their basic counterparts." - prereq_ids = list("parts", "energy_manipulation") + prereq_ids = list(TECHWEB_NODE_PARTS, TECHWEB_NODE_ENERGY_MANIPULATION) design_ids = list( "rped", "high_micro_laser", @@ -44,10 +44,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/parts_adv - id = "parts_adv" + id = TECHWEB_NODE_PARTS_ADV display_name = "Advanced Parts" description = "The most finely tuned and accurate stock parts." - prereq_ids = list("parts_upg") + prereq_ids = list(TECHWEB_NODE_PARTS_UPG) design_ids = list( "ultra_micro_laser", "super_capacitor", @@ -62,10 +62,10 @@ /datum/techweb_node/parts_bluespace - id = "parts_bluespace" + id = TECHWEB_NODE_PARTS_BLUESPACE display_name = "Bluespace Parts" description = "Integrating the latest in bluespace technology, these advanced components not only enhance functionality but also open up new possibilities for the station's technological capabilities." - prereq_ids = list("parts_adv", "bluespace_travel") + prereq_ids = list(TECHWEB_NODE_PARTS_ADV, TECHWEB_NODE_BLUESPACE_TRAVEL) design_ids = list( "bs_rped", "quadultra_micro_laser", @@ -80,14 +80,15 @@ discount_experiments = list(/datum/experiment/scanning/points/machinery_tiered_scan/tier3_any = TECHWEB_TIER_4_POINTS) /datum/techweb_node/telecomms - id = "telecomms" + id = TECHWEB_NODE_TELECOMS display_name = "Telecommunications Technology" description = "A comprehensive suite of machinery for station-wide communication setups, ensuring seamless connectivity and operational coordination." - prereq_ids = list("parts_bluespace") + prereq_ids = list(TECHWEB_NODE_PARTS_BLUESPACE) design_ids = list( "comm_monitor", "comm_server", "message_monitor", + "ntnet_relay", "s_hub", "s_messaging", "s_server", @@ -109,7 +110,7 @@ // Engineering root node /datum/techweb_node/construction - id = "construction" + id = TECHWEB_NODE_CONSTRUCTION starting_node = TRUE display_name = "Construction" description = "Tools and essential machinery used for station maintenance and expansion." @@ -142,25 +143,15 @@ "wirecutters", "light_bulb", "light_tube", - "intercom_frame", - "newscaster_frame", - "status_display_frame", - "circuit", - "circuitgreen", - "circuitred", - "tram_floor_dark", - "tram_floor_light", - "tram_controller", - "tram_display", "crossing_signal", "guideway_sensor", ) /datum/techweb_node/energy_manipulation - id = "energy_manipulation" + id = TECHWEB_NODE_ENERGY_MANIPULATION display_name = "Energy Manipulation" description = "Harnessing the raw power of lightning arcs through sophisticated energy control methods." - prereq_ids = list("construction") + prereq_ids = list(TECHWEB_NODE_CONSTRUCTION) design_ids = list( "apc_control", "powermonitor", @@ -178,10 +169,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/holographics - id = "holographics" + id = TECHWEB_NODE_HOLOGRAPHICS display_name = "Holographics" description = "Use of holographic technology for signage and barriers." - prereq_ids = list("energy_manipulation") + prereq_ids = list(TECHWEB_NODE_ENERGY_MANIPULATION) design_ids = list( "forcefield_projector", "holosign", @@ -204,10 +195,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/hud - id = "hud" + id = TECHWEB_NODE_HUD display_name = "Integrated HUDs" description = "Initially developed for assistants to learn the nuances of different professions through augmented reality." - prereq_ids = list("holographics", "cyber_implants") + prereq_ids = list(TECHWEB_NODE_HOLOGRAPHICS, TECHWEB_NODE_CYBER_IMPLANTS) design_ids = list( "health_hud", "diagnostic_hud", @@ -222,10 +213,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/night_vision - id = "night_vision" + id = TECHWEB_NODE_NIGHT_VISION display_name = "Night Vision Technology" description = "There are whispers that Nanotrasen pushed for this technology to extend shift durations, ensuring productivity around the clock." - prereq_ids = list("hud") + prereq_ids = list(TECHWEB_NODE_HUD) design_ids = list( "diagnostic_hud_night", "health_hud_night", diff --git a/code/modules/research/techweb/nodes/mech_nodes.dm b/code/modules/research/techweb/nodes/mech_nodes.dm index 4f58ed25c8955..6b7a9803ae495 100644 --- a/code/modules/research/techweb/nodes/mech_nodes.dm +++ b/code/modules/research/techweb/nodes/mech_nodes.dm @@ -1,9 +1,9 @@ /datum/techweb_node/mech_assembly - id = "mech_assembly" + id = TECHWEB_NODE_MECH_ASSEMBLY starting_node = TRUE display_name = "Mech Assembly" description = "Development of mech designed to contend with artificial gravity while transporting cargo." - prereq_ids = list("robotics") + prereq_ids = list(TECHWEB_NODE_ROBOTICS) design_ids = list( "mechapower", "mech_recharger", @@ -19,10 +19,10 @@ ) /datum/techweb_node/mech_equipment - id = "mech_equipment" + id = TECHWEB_NODE_MECH_EQUIPMENT display_name = "Expedition Equipment" description = "Specialized mech gear tailored for navigating space and celestial bodies, ensuring durability and functionality in the harshest conditions." - prereq_ids = list("mech_assembly") + prereq_ids = list(TECHWEB_NODE_MECH_ASSEMBLY) design_ids = list( "mechacontrol", "botpad", @@ -38,10 +38,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/mech_clown - id = "mech_clown" + id = TECHWEB_NODE_MECH_CLOWN display_name = "Funny Robots" description = "Fueled by laughter." - prereq_ids = list("mech_assembly") + prereq_ids = list(TECHWEB_NODE_MECH_ASSEMBLY) design_ids = list( "honk_chassis", "honk_torso", @@ -62,10 +62,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/mech_medical - id = "mech_medical" + id = TECHWEB_NODE_MECH_MEDICAL display_name = "Medical Mech" description = "Advanced robotic unit equipped with syringe guns and healing beams, revolutionizing medical assistance in hazardous environments." - prereq_ids = list("mech_assembly", "chem_synthesis") + prereq_ids = list(TECHWEB_NODE_MECH_ASSEMBLY, TECHWEB_NODE_CHEM_SYNTHESIS) design_ids = list( "odysseus_chassis", "odysseus_torso", @@ -82,10 +82,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/mech_mining - id = "mech_mining" + id = TECHWEB_NODE_MECH_MINING display_name = "Mining Mech" description = "Robust mech engineered to withstand lava and storms for continuous off-station mining operations." - prereq_ids = list("mech_equipment", "mining") + prereq_ids = list(TECHWEB_NODE_MECH_EQUIPMENT, TECHWEB_NODE_MINING) design_ids = list( "clarke_chassis", "clarke_torso", @@ -98,10 +98,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/mech_combat - id = "mech_combat" + id = TECHWEB_NODE_MECH_COMBAT display_name = "Combat Mechs" description = "Modular armor upgrades and specialized equipment for security mechs." - prereq_ids = list("mech_equipment") + prereq_ids = list(TECHWEB_NODE_MECH_EQUIPMENT) design_ids = list( "mech_ccw_armor", "mech_proj_armor", @@ -112,13 +112,12 @@ ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) required_experiments = list(/datum/experiment/scanning/random/mecha_equipped_scan) - discount_experiments = list(/datum/experiment/scanning/random/mecha_damage_scan = TECHWEB_TIER_2_POINTS) /datum/techweb_node/mech_assault - id = "mech_assault" + id = TECHWEB_NODE_MECH_ASSAULT display_name = "Assault Mech" description = "Heavy battle mech boasting robust armor but sacrificing speed for enhanced durability." - prereq_ids = list("mech_combat") + prereq_ids = list(TECHWEB_NODE_MECH_COMBAT) design_ids = list( "durand_armor", "durand_chassis", @@ -135,10 +134,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/mech_light - id = "mech_light" + id = TECHWEB_NODE_MECH_LIGHT display_name = "Light Combat Mech" description = "Agile combat mech equipped with overclocking capabilities for temporary speed boosts, prioritizing speed over durability on the battlefield." - prereq_ids = list("mech_combat") + prereq_ids = list(TECHWEB_NODE_MECH_COMBAT) design_ids = list( "gygax_armor", "gygax_chassis", @@ -155,10 +154,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/mech_heavy - id = "mech_heavy" + id = TECHWEB_NODE_MECH_HEAVY display_name = "Heavy Mech" description = "Advanced heavy mechanized unit with dual pilot capability, designed for robust battlefield performance and increased tactical versatility." - prereq_ids = list("mech_assault") + prereq_ids = list(TECHWEB_NODE_MECH_ASSAULT) design_ids = list( "savannah_ivanov_armor", "savannah_ivanov_chassis", @@ -175,10 +174,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) /datum/techweb_node/mech_infiltrator - id = "mech_infiltrator" + id = TECHWEB_NODE_MECH_INFILTRATOR display_name = "Infiltration Mech" description = "Advanced mech with phasing capabilities, allowing it to move through walls and obstacles, ideal for covert and special operations." - prereq_ids = list("mech_light", "anomaly_research") + prereq_ids = list(TECHWEB_NODE_MECH_LIGHT, TECHWEB_NODE_ANOMALY_RESEARCH) design_ids = list( "phazon_armor", "phazon_chassis", @@ -194,11 +193,27 @@ ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) +/datum/techweb_node/justice + id = "mecha_justice" + display_name = "EXOSUIT: Justice" + description = "Justice exosuit designs" + design_ids = list( + "justice_armor", + "justice_chassis", + "justice_left_arm", + "justice_left_leg", + "justice_right_arm", + "justice_right_leg", + "justice_torso", + ) + hidden = TRUE + illegal_mech_node = TRUE + /datum/techweb_node/mech_energy_guns - id = "mech_energy_guns" + id = TECHWEB_NODE_MECH_ENERGY_GUNS display_name = "Mech Energy Guns" description = "Scaled-up versions of electric weapons optimized for mech deployment." - prereq_ids = list("mech_combat", "electric_weapons") + prereq_ids = list(TECHWEB_NODE_MECH_COMBAT, TECHWEB_NODE_ELECTRIC_WEAPONS) design_ids = list( "mech_laser", "mech_laser_heavy", @@ -206,12 +221,13 @@ "mech_tesla", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) + discount_experiments = list(/datum/experiment/scanning/random/mecha_damage_scan = TECHWEB_TIER_4_POINTS) /datum/techweb_node/mech_firearms - id = "mech_firearms" + id = TECHWEB_NODE_MECH_FIREARMS display_name = "Mech Firearms" description = "Mounted ballistic weaponry, enhancing combat capabilities for mechanized units." - prereq_ids = list("mech_energy_guns", "exotic_ammo") + prereq_ids = list(TECHWEB_NODE_MECH_ENERGY_GUNS, TECHWEB_NODE_EXOTIC_AMMO) design_ids = list( "mech_lmg", "mech_lmg_ammo", @@ -223,10 +239,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) /datum/techweb_node/mech_heavy_arms - id = "mech_heavy_arms" + id = TECHWEB_NODE_MECH_HEAVY_ARMS display_name = "Heavy Mech Firearms" description = "High-impact weaponry integrated into mechs, optimized for maximum firepower." - prereq_ids = list("mech_heavy", "exotic_ammo") + prereq_ids = list(TECHWEB_NODE_MECH_HEAVY, TECHWEB_NODE_EXOTIC_AMMO) design_ids = list( "clusterbang_launcher", "clusterbang_launcher_ammo", @@ -238,14 +254,13 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) /datum/techweb_node/mech_equip_bluespace - id = "mech_equip_bluespace" + id = TECHWEB_NODE_BLUESPACE display_name = "Bluespace Mech Equipment" description = "An array of equipment empowered by bluespace, providing unmatched mobility and utility." - prereq_ids = list("mech_infiltrator", "bluespace_travel") + prereq_ids = list(TECHWEB_NODE_MECH_INFILTRATOR, TECHWEB_NODE_BLUESPACE_TRAVEL) design_ids = list( "mech_gravcatapult", "mech_teleporter", "mech_wormhole_gen", - "mech_rcd", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) diff --git a/code/modules/research/techweb/nodes/medbay_nodes.dm b/code/modules/research/techweb/nodes/medbay_nodes.dm index ca884f1ebd566..7d6db08f584e7 100644 --- a/code/modules/research/techweb/nodes/medbay_nodes.dm +++ b/code/modules/research/techweb/nodes/medbay_nodes.dm @@ -1,5 +1,5 @@ /datum/techweb_node/medbay_equip - id = "medbay_equip" + id = TECHWEB_NODE_MEDBAY_EQUIP starting_node = TRUE display_name = "Medbay Equipment" description = "Essential medical tools to patch you up while medbay is still intact." @@ -23,6 +23,8 @@ "stethoscope", "beaker", "large_beaker", + "chem_pack", + "blood_pack", "syringe", "dropper", "pillbottle", @@ -31,17 +33,17 @@ /datum/experiment/autopsy/human, /datum/experiment/autopsy/nonhuman, /datum/experiment/autopsy/xenomorph, + /datum/experiment/scanning/reagent/haloperidol, + /datum/experiment/scanning/reagent/cryostylane, ) /datum/techweb_node/chem_synthesis - id = "chem_synthesis" + id = TECHWEB_NODE_CHEM_SYNTHESIS display_name = "Chemical Synthesis" description = "Synthesizing complex chemicals from electricity and thin air... Don't ask how..." - prereq_ids = list("medbay_equip") + prereq_ids = list(TECHWEB_NODE_MEDBAY_EQUIP) design_ids = list( "xlarge_beaker", - "blood_pack", - "chem_pack", "med_spray_bottle", "medigel", "medipen_refiller", @@ -55,14 +57,13 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/plumbing - id = "plumbing" + id = TECHWEB_NODE_PLUMBING display_name = "Plumbing" description = "Essential infrastructure for building chemical factories. To scale up the production of happy pills to an industrial level." - prereq_ids = list("chem_synthesis") + prereq_ids = list(TECHWEB_NODE_CHEM_SYNTHESIS) design_ids = list( "plumbing_rcd", "plumbing_rcd_service", - "plumbing_rcd_sci", "plunger", "fluid_ducts", "meta_beaker", @@ -70,27 +71,13 @@ ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) -/datum/techweb_node/cryostasis - id = "cryostasis" - display_name = "Cryostasis" - description = "The result of clown accidentally drinking a chemical, now repurposed for safely preserving crew members in suspended animation." - prereq_ids = list("plumbing", "plasma_control") - design_ids = list( - "cryotube", - "mech_sleeper", - "stasis", - "cryo_grenade", - "splitbeaker", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) - required_experiments = list(/datum/experiment/scanning/reagent/cryostylane) - /datum/techweb_node/medbay_equip_adv - id = "medbay_equip_adv" + id = TECHWEB_NODE_MEDBAY_EQUIP_ADV display_name = "Advanced Medbay Equipment" description = "State-of-the-art medical gear for keeping the crew in one piece — mostly." - prereq_ids = list("cryostasis") + prereq_ids = list(TECHWEB_NODE_PLUMBING) design_ids = list( + "smoke_machine", "chem_mass_spec", "healthanalyzer_advanced", "mod_health_analyzer", @@ -99,4 +86,20 @@ "defibmount", "medicalbed_emergency", ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) + required_experiments = list(/datum/experiment/scanning/reagent/haloperidol) + +/datum/techweb_node/cryostasis + id = TECHWEB_NODE_CRYOSTASIS + display_name = "Cryostasis" + description = "The result of clown accidentally drinking a chemical, now repurposed for safely preserving crew members in suspended animation." + prereq_ids = list(TECHWEB_NODE_FUSION) + design_ids = list( + "cryotube", + "mech_sleeper", + "stasis", + "cryo_grenade", + "splitbeaker", + ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) + discount_experiments = list(/datum/experiment/scanning/reagent/cryostylane = TECHWEB_TIER_4_POINTS) diff --git a/code/modules/research/techweb/nodes/mining_nodes.dm b/code/modules/research/techweb/nodes/mining_nodes.dm index e1caaf57902e2..d8a6539caa3ff 100644 --- a/code/modules/research/techweb/nodes/mining_nodes.dm +++ b/code/modules/research/techweb/nodes/mining_nodes.dm @@ -1,5 +1,5 @@ /datum/techweb_node/material_processing - id = "material_proc" + id = TECHWEB_NODE_MATERIAL_PROC starting_node = TRUE display_name = "Material Processing" description = "Refinement and processing of alloys and ores to enhance their utility and value." @@ -23,10 +23,10 @@ ) /datum/techweb_node/mining - id = "mining" + id = TECHWEB_NODE_MINING display_name = "Mining Technology" description = "Development of tools meant to optimize mining operations and resource extraction." - prereq_ids = list("material_proc") + prereq_ids = list(TECHWEB_NODE_MATERIAL_PROC) design_ids = list( "cargoexpress", "brm", @@ -50,10 +50,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/low_pressure_excavation - id = "low_pressure_excavation" + id = TECHWEB_NODE_LOW_PRESSURE_EXCAVATION display_name = "Low-Pressure Excavation" description = "Research of Proto-Kinetic Accelerators (PKAs), pneumatic guns renowned for their exceptional performance in low-pressure environments." - prereq_ids = list("mining", "gas_compression") + prereq_ids = list(TECHWEB_NODE_MINING, TECHWEB_NODE_GAS_COMPRESSION) design_ids = list( "mecha_kineticgun", "damagemod", @@ -69,10 +69,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/plasma_mining - id = "plasma_mining" + id = TECHWEB_NODE_PLASMA_MINING display_name = "Plasma Beam Mining" description = "Engineers' plasma welders have proven highly effective in mining operations. This led to the development of a mech-mounted variant and an enhanced handheld cutter for miners." - prereq_ids = list("low_pressure_excavation", "plasma_control") + prereq_ids = list(TECHWEB_NODE_LOW_PRESSURE_EXCAVATION, TECHWEB_NODE_PLASMA_CONTROL) design_ids = list( "mech_plasma_cutter", "plasmacutter_adv", @@ -80,10 +80,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/bitrunning - id = "bitrunning" + id = TECHWEB_NODE_BITRUNNING display_name = "Bitrunning Technology" description = "Bluespace technology has led to the development of quantum-scale computing, which unlocks the means to materialize atomic structures while executing advanced programs." - prereq_ids = list("gaming", "applied_bluespace") + prereq_ids = list(TECHWEB_NODE_GAMING, TECHWEB_NODE_APPLIED_BLUESPACE) design_ids = list( "byteforge", "quantum_console", @@ -92,10 +92,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/mining_adv - id = "mining_adv" + id = TECHWEB_NODE_MINING_ADV display_name = "Advanced Mining Technology" description = "High-level mining equipment, pushing the boundaries of efficiency and effectiveness in resource extraction." - prereq_ids = list("plasma_mining") + prereq_ids = list(TECHWEB_NODE_PLASMA_MINING) design_ids = list( "jackhammer", "drill_diamond", diff --git a/code/modules/research/techweb/nodes/modsuit_nodes.dm b/code/modules/research/techweb/nodes/modsuit_nodes.dm index a5005a66ee794..7fc7342ea410e 100644 --- a/code/modules/research/techweb/nodes/modsuit_nodes.dm +++ b/code/modules/research/techweb/nodes/modsuit_nodes.dm @@ -1,9 +1,9 @@ /datum/techweb_node/mod_suit - id = "mod_suit" + id = TECHWEB_NODE_MOD_SUIT starting_node = TRUE display_name = "Modular Exosuit" description = "Specialized back mounted power suits with various different modules." - prereq_ids = list("robotics") + prereq_ids = list(TECHWEB_NODE_ROBOTICS) design_ids = list( "suit_storage_unit", "mod_shell", @@ -19,10 +19,10 @@ ) /datum/techweb_node/mod_equip - id = "mod_equip" + id = TECHWEB_NODE_MOD_EQUIP display_name = "Modular Suit Equipment" description = "More advanced modules, to improve modular suits." - prereq_ids = list("mod_suit") + prereq_ids = list(TECHWEB_NODE_MOD_SUIT) design_ids = list( "modlink_scryer", "mod_clamp", @@ -37,10 +37,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/mod_entertainment - id = "mod_entertainment" + id = TECHWEB_NODE_MOD_ENTERTAINMENT display_name = "Entertainment Modular Suit" description = "Powered suits for protection against low-humor environments." - prereq_ids = list("mod_suit") + prereq_ids = list(TECHWEB_NODE_MOD_SUIT) design_ids = list( "mod_plating_cosmohonk", "mod_bikehorn", @@ -50,24 +50,24 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/mod_medical - id = "mod_medical" + id = TECHWEB_NODE_MOD_MEDICAL display_name = "Medical Modular Suit" description = "Medical exosuits for quick rescue purposes." - prereq_ids = list("mod_suit", "chem_synthesis") + prereq_ids = list(TECHWEB_NODE_MOD_SUIT, TECHWEB_NODE_CHEM_SYNTHESIS) design_ids = list( "mod_plating_medical", "mod_quick_carry", "mod_injector", - "mod_organ_thrower", + "mod_organizer", "mod_patienttransport", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/mod_engi - id = "mod_engi" + id = TECHWEB_NODE_MOD_ENGI display_name = "Engineering Modular Suits" description = "Engineering suits, for powered engineers." - prereq_ids = list("mod_equip") + prereq_ids = list(TECHWEB_NODE_MOD_EQUIP) design_ids = list( "mod_plating_engineering", "mod_t_ray", @@ -78,10 +78,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/mod_security - id = "mod_security" + id = TECHWEB_NODE_MOD_SECURITY display_name = "Security Modular Suits" description = "Security suits for space crime handling." - prereq_ids = list("mod_equip") + prereq_ids = list(TECHWEB_NODE_MOD_EQUIP) design_ids = list( "mod_plating_security", "mod_stealth", @@ -95,10 +95,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/mod_medical_adv - id = "mod_medical_adv" + id = TECHWEB_NODE_MOD_MEDICAL_ADV display_name = "Field Surgery Modules" description = "Medical exosuit equipment designed for conducting surgical operations in field conditions." - prereq_ids = list("mod_medical", "surgery_adv") + prereq_ids = list(TECHWEB_NODE_MOD_MEDICAL, TECHWEB_NODE_SURGERY_ADV) design_ids = list( "mod_defib", "mod_threadripper", @@ -108,10 +108,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/mod_engi_adv - id = "mod_engi_adv" + id = TECHWEB_NODE_MOD_ENGI_ADV display_name = "Advanced Engineering Modular Suit" description = "Advanced Engineering suits, for advanced powered engineers." - prereq_ids = list("mod_engi") + prereq_ids = list(TECHWEB_NODE_MOD_ENGI) design_ids = list( "mod_plating_atmospheric", "mod_jetpack", @@ -127,10 +127,10 @@ return ..() /datum/techweb_node/mod_anomaly - id = "mod_anomaly" + id = TECHWEB_NODE_MOD_ANOMALY display_name = "Anomalock Modular Suit" description = "Modules for exosuits that require anomaly cores to function." - prereq_ids = list("mod_engi_adv", "anomaly_research") + prereq_ids = list(TECHWEB_NODE_MOD_ENGI_ADV, TECHWEB_NODE_ANOMALY_RESEARCH) design_ids = list( "mod_antigrav", "mod_teleporter", diff --git a/code/modules/research/techweb/nodes/research_nodes.dm b/code/modules/research/techweb/nodes/research_nodes.dm index f68086ab5abdd..0a37fb19868a3 100644 --- a/code/modules/research/techweb/nodes/research_nodes.dm +++ b/code/modules/research/techweb/nodes/research_nodes.dm @@ -1,5 +1,5 @@ /datum/techweb_node/fundamental_sci - id = "fundamental_sci" + id = TECHWEB_NODE_FUNDIMENTAL_SCI starting_node = TRUE display_name = "Fundamental Science" description = "Establishing the bedrock of scientific understanding, paving the way for deeper exploration and theoretical inquiry." @@ -13,7 +13,6 @@ "destructive_analyzer", "destructive_scanner", "experi_scanner", - "ntnet_relay", "laptop", "portadrive_basic", "portadrive_advanced", @@ -21,20 +20,20 @@ ) /datum/techweb_node/bluespace_theory - id = "bluespace_theory" + id = TECHWEB_NODE_BLUESPACE_THEORY display_name = "Bluespace Theory" description = "Basic studies into the mysterious alternate dimension known as bluespace." - prereq_ids = list("fundamental_sci") + prereq_ids = list(TECHWEB_NODE_FUNDIMENTAL_SCI) design_ids = list( "bluespace_crystal", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/applied_bluespace - id = "applied_bluespace" + id = TECHWEB_NODE_APPLIED_BLUESPACE display_name = "Applied Bluespace Research" description = "With a heightened grasp of bluespace dynamics, sophisticated applications and technologies can be devised using data from bluespace crystal analyses." - prereq_ids = list("bluespace_theory") + prereq_ids = list(TECHWEB_NODE_BLUESPACE_THEORY) design_ids = list( "ore_silo", "minerbag_holding", @@ -51,10 +50,10 @@ required_experiments = list(/datum/experiment/scanning/points/bluespace_crystal) /datum/techweb_node/bluespace_travel - id = "bluespace_travel" + id = TECHWEB_NODE_BLUESPACE_TRAVEL display_name = "Bluespace Travel" description = "Facilitate teleportation methods based on bluespace principles to revolutionize logistical efficiency." - prereq_ids = list("applied_bluespace") + prereq_ids = list(TECHWEB_NODE_APPLIED_BLUESPACE) design_ids = list( "teleconsole", "tele_station", @@ -69,10 +68,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/anomaly_research - id = "anomaly_research" + id = TECHWEB_NODE_ANOMALY_RESEARCH display_name = "Anomaly Research" description = "Delving into the study of mysterious anomalies to investigate methods to refine and harness their unpredictable energies." - prereq_ids = list("applied_bluespace") + prereq_ids = list(TECHWEB_NODE_APPLIED_BLUESPACE) design_ids = list( "anomaly_refinery", "anomaly_neutralizer", @@ -81,14 +80,16 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/anomaly_shells - id = "anomaly_shells" + id = TECHWEB_NODE_ANOMALY_SHELLS display_name = "Advanced Anomaly Shells" description = "New shells designed to utilize anomaly cores, maximizing their potential in innovative ways." - prereq_ids = list("anomaly_research") + prereq_ids = list(TECHWEB_NODE_ANOMALY_RESEARCH) design_ids = list( "bag_holding", + "cybernetic_heart_anomalock", "wormholeprojector", "gravitygun", "polymorph_belt" ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) + discount_experiments = list(/datum/experiment/scanning/points/anomalies = TECHWEB_TIER_5_POINTS) diff --git a/code/modules/research/techweb/nodes/robo_nodes.dm b/code/modules/research/techweb/nodes/robo_nodes.dm index 556fa560daf6b..ff018e85b7c9a 100644 --- a/code/modules/research/techweb/nodes/robo_nodes.dm +++ b/code/modules/research/techweb/nodes/robo_nodes.dm @@ -1,5 +1,5 @@ /datum/techweb_node/robotics - id = "robotics" + id = TECHWEB_NODE_ROBOTICS starting_node = TRUE display_name = "Robotics" description = "Programmable machines that make our lives lazier." @@ -10,10 +10,10 @@ ) /datum/techweb_node/exodrone - id = "exodrone" + id = TECHWEB_NODE_EXODRONE display_name = "Exploration Drones" description = "Adapted arcade machines to covertly harness gamers' skills in controlling real drones for practical purposes." - prereq_ids = list("robotics") + prereq_ids = list(TECHWEB_NODE_ROBOTICS) design_ids = list( "exoscanner_console", "exoscanner", @@ -24,10 +24,10 @@ // AI root node /datum/techweb_node/ai - id = "ai" + id = TECHWEB_NODE_AI display_name = "Artificial Intelligence" description = "Exploration of AI systems, more intelligent than the entire crew put together." - prereq_ids = list("robotics") + prereq_ids = list(TECHWEB_NODE_ROBOTICS) design_ids = list( "aiupload", "aifixer", @@ -67,10 +67,10 @@ research_costs[TECHWEB_POINT_TYPE_GENERIC] *= 3 /datum/techweb_node/ai_laws - id = "ai_laws" + id = TECHWEB_NODE_AI_LAWS display_name = "Advanced AI Laws" description = "Delving into sophisticated AI directives, with hopes that they won't lead to humanity's extinction." - prereq_ids = list("ai") + prereq_ids = list(TECHWEB_NODE_AI) design_ids = list( "asimovpp_module", "paladin_devotion_module", diff --git a/code/modules/research/techweb/nodes/security_nodes.dm b/code/modules/research/techweb/nodes/security_nodes.dm index 8b931fd2273e5..2d3dd63864f25 100644 --- a/code/modules/research/techweb/nodes/security_nodes.dm +++ b/code/modules/research/techweb/nodes/security_nodes.dm @@ -1,9 +1,10 @@ /datum/techweb_node/basic_arms - id = "basic_arms" + id = TECHWEB_NODE_BASIC_ARMS starting_node = TRUE display_name = "Basic Arms" description = "Ballistics can be unpredictable in space." design_ids = list( + "toy_armblade", "toygun", "c38_rubber", "sec_38", @@ -16,12 +17,11 @@ ) /datum/techweb_node/sec_equip - id = "sec_equip" + id = TECHWEB_NODE_SEC_EQUIP display_name = "Security Equipment" description = "All the essentials to subdue a mime." - prereq_ids = list("basic_arms") + prereq_ids = list(TECHWEB_NODE_BASIC_ARMS) design_ids = list( - "camera_assembly", "secdata", "mining", "prisonmanage", @@ -30,12 +30,10 @@ "security_photobooth", "photobooth", "scanner_gate", - "turret_control", "pepperspray", "dragnet_beacon", "inspector", "evidencebag", - "handcuffs_s", "zipties", "seclite", "electropack", @@ -43,24 +41,26 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/riot_supression - id = "riot_supression" + id = TECHWEB_NODE_RIOT_SUPRESSION display_name = "Riot Supression" description = "When you are on the opposing side of a revolutionary movement." - prereq_ids = list("sec_equip") + prereq_ids = list(TECHWEB_NODE_SEC_EQUIP) design_ids = list( + "clown_firing_pin", "pin_testing", "pin_loyalty", "tele_shield", "ballistic_shield", + "handcuffs_s", "bola_energy", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) /datum/techweb_node/explosives - id = "explosives" + id = TECHWEB_NODE_EXPLOSIVES display_name = "Explosives" description = "For once, intentional explosions." - prereq_ids = list("riot_supression") + prereq_ids = list(TECHWEB_NODE_RIOT_SUPRESSION) design_ids = list( "large_grenade", "adv_grenade", @@ -68,25 +68,25 @@ ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) required_experiments = list(/datum/experiment/ordnance/explosive/lowyieldbomb) - discount_experiments = list(/datum/experiment/ordnance/explosive/highyieldbomb = TECHWEB_TIER_3_POINTS) /datum/techweb_node/exotic_ammo - id = "exotic_ammo" + id = TECHWEB_NODE_EXOTIC_AMMO display_name = "Exotic Ammunition" description = "Specialized bullets designed to ignite, freeze, and inflict various other effects on targets, expanding combat capabilities." - prereq_ids = list("explosives") + prereq_ids = list(TECHWEB_NODE_EXPLOSIVES) design_ids = list( "c38_hotshot", "c38_iceblox", "techshotshell", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) + discount_experiments = list(/datum/experiment/ordnance/explosive/highyieldbomb = TECHWEB_TIER_4_POINTS) /datum/techweb_node/electric_weapons - id = "electric_weapons" + id = TECHWEB_NODE_ELECTRIC_WEAPONS display_name = "Electric Weaponry" description = "Energy-based weaponry designed for both lethal and non-lethal applications." - prereq_ids = list("riot_supression") + prereq_ids = list(TECHWEB_NODE_RIOT_SUPRESSION) design_ids = list( "stunrevolver", "ioncarbine", @@ -96,12 +96,11 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) /datum/techweb_node/beam_weapons - id = "beam_weapons" + id = TECHWEB_NODE_BEAM_WEAPONS display_name = "Advanced Beam Weaponry" description = "So advanced, even engineers are baffled by its operational principles." - prereq_ids = list("electric_weapons") + prereq_ids = list(TECHWEB_NODE_ELECTRIC_WEAPONS) design_ids = list( - "beamrifle", "xray_laser", "nuclear_gun", ) diff --git a/code/modules/research/techweb/nodes/service_nodes.dm b/code/modules/research/techweb/nodes/service_nodes.dm index 61c7e2545543b..1553f3a0c20d8 100644 --- a/code/modules/research/techweb/nodes/service_nodes.dm +++ b/code/modules/research/techweb/nodes/service_nodes.dm @@ -1,5 +1,5 @@ /datum/techweb_node/office_equip - id = "office_equip" + id = TECHWEB_NODE_OFFICE_EQUIP starting_node = TRUE display_name = "Office Equipment" description = "Nanotrasen's finest in ergonomic office tech, ensuring station admin stays productive and compliant with corporate policies — because even in space, paperwork never stops." @@ -36,10 +36,10 @@ ) /datum/techweb_node/sanitation - id = "sanitation" + id = TECHWEB_NODE_SANITATION display_name = "Advanced Sanitation Technology" description = "Nanotrasen's latest in janitorial tech, making sure the station stays spotless and bear-free." - prereq_ids = list("office_equip") + prereq_ids = list(TECHWEB_NODE_OFFICE_EQUIP) design_ids = list( "advmop", "light_replacer", @@ -52,24 +52,11 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) discount_experiments = list(/datum/experiment/scanning/random/janitor_trash = TECHWEB_TIER_2_POINTS) -/datum/techweb_node/toys - id = "toys" - display_name = "New Toys" - description = "For new pranks." - prereq_ids = list("office_equip") - design_ids = list( - "smoke_machine", - "toy_armblade", - "air_horn", - "clown_firing_pin", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) - /datum/techweb_node/consoles - id = "consoles" + id = TECHWEB_NODE_CONSOLES display_name = "Civilian Consoles" description = "User-friendly consoles for non-technical crew members, enhancing communication and access to essential station information." - prereq_ids = list("office_equip") + prereq_ids = list(TECHWEB_NODE_OFFICE_EQUIP) design_ids = list( "comconsole", "automated_announcement", @@ -93,10 +80,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/gaming - id = "gaming" + id = TECHWEB_NODE_GAMING display_name = "Gaming" description = "For the slackers on the station." - prereq_ids = list("toys", "consoles") + prereq_ids = list(TECHWEB_NODE_CONSOLES) design_ids = list( "arcade_battle", "arcade_orion", @@ -107,7 +94,7 @@ // Kitchen root node /datum/techweb_node/cafeteria_equip - id = "cafeteria_equip" + id = TECHWEB_NODE_CAFETERIA_EQUIP starting_node = TRUE display_name = "Cafeteria Equipment" description = "When standard-issue tubed food no longer satisfies the station crew's appetite..." @@ -135,10 +122,10 @@ ) /datum/techweb_node/food_proc - id = "food_proc" + id = TECHWEB_NODE_FOOD_PROC display_name = "Food Processing" description = "Top-tier kitchen appliances from Nanotrasen, designed to keep the crew well-fed and happy." - prereq_ids = list("cafeteria_equip") + prereq_ids = list(TECHWEB_NODE_CAFETERIA_EQUIP) design_ids = list( "deepfryer", "oven", @@ -160,7 +147,7 @@ // Fishing root node /datum/techweb_node/fishing_equip - id = "fishing_equip" + id = TECHWEB_NODE_FISHING_EQUIP starting_node = TRUE display_name = "Fishing Equipment" description = "Basic fishing gear tailored for space station environments, perfect for extraterrestrial aquatic pursuits." @@ -171,10 +158,10 @@ ) /datum/techweb_node/fishing_equip_adv - id = "fishing_equip_adv" + id = TECHWEB_NODE_FISHING_EQUIP_ADV display_name = "Advanced Fishing Tools" description = "Continuing advancements in fishing technology, incorporating cutting-edge features in space fishing operations. Just don't try this on space carps..." - prereq_ids = list("fishing_equip") + prereq_ids = list(TECHWEB_NODE_FISHING_EQUIP) design_ids = list( "fishing_rod_tech", "stabilized_hook", @@ -185,54 +172,13 @@ required_experiments = list(/datum/experiment/scanning/fish) /datum/techweb_node/marine_util - id = "marine_util" + id = TECHWEB_NODE_MARINE_UTIL display_name = "Marine Utility" description = "Fish are nice to look at and all, but they can be put to use." - prereq_ids = list("fishing_equip_adv") + prereq_ids = list(TECHWEB_NODE_FISHING_EQUIP_ADV) design_ids = list( "bioelec_gen", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) // only available if you've done the first fishing experiment (thus unlocking fishing tech), but not a strict requirement to get the tech discount_experiments = list(/datum/experiment/scanning/fish/second = TECHWEB_TIER_3_POINTS) - -// Botany root node -/datum/techweb_node/botany_equip - id = "botany_equip" - starting_node = TRUE - display_name = "Botany Equipment" - description = "Essential tools for maintaining onboard gardens, supporting plant growth in the unique environment of the space station." - design_ids = list( - "seed_extractor", - "plant_analyzer", - "watering_can", - "spade", - "cultivator", - "secateurs", - "hatchet", - ) - -/datum/techweb_node/hydroponics - id = "hydroponics" - display_name = "Hydroponics" - description = "Research into advanced hydroponic systems for efficient and sustainable plant cultivation." - prereq_ids = list("botany_equip", "chem_synthesis") - design_ids = list( - "biogenerator", - "hydro_tray", - "portaseeder", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) - -/datum/techweb_node/selection - id = "selection" - display_name = "Artificial Selection" - description = "Advancement in plant cultivation techniques through artificial selection, enabling precise manipulation of plant DNA." - prereq_ids = list("hydroponics") - design_ids = list( - "flora_gun", - "gene_shears", - ) - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) - required_experiments = list(/datum/experiment/scanning/random/plants/wild) - discount_experiments = list(/datum/experiment/scanning/random/plants/traits = TECHWEB_TIER_3_POINTS) diff --git a/code/modules/research/techweb/nodes/surgery_nodes.dm b/code/modules/research/techweb/nodes/surgery_nodes.dm index 3cd3d373c0599..0b8812191e2a9 100644 --- a/code/modules/research/techweb/nodes/surgery_nodes.dm +++ b/code/modules/research/techweb/nodes/surgery_nodes.dm @@ -1,8 +1,8 @@ /datum/techweb_node/oldstation_surgery - id = "oldstation_surgery" + id = TECHWEB_NODE_OLDSTATION_SURGERY display_name = "Experimental Dissection" description = "Grants access to experimental dissections, which allows generation of research points." - prereq_ids = list("medbay_equip") + prereq_ids = list(TECHWEB_NODE_MEDBAY_EQUIP) design_ids = list( "surgery_oldstation_dissection", ) @@ -11,10 +11,10 @@ show_on_wiki = FALSE /datum/techweb_node/surgery - id = "surgery" + id = TECHWEB_NODE_SURGERY display_name = "Improved Wound-Tending" description = "Who would have known being more gentle with a hemostat decreases patient pain?" - prereq_ids = list("medbay_equip") + prereq_ids = list(TECHWEB_NODE_MEDBAY_EQUIP) design_ids = list( "surgery_heal_brute_upgrade", "surgery_heal_burn_upgrade", @@ -22,10 +22,10 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) /datum/techweb_node/surgery_adv - id = "surgery_adv" + id = TECHWEB_NODE_SURGERY_ADV display_name = "Advanced Surgery" description = "When simple medicine doesn't cut it." - prereq_ids = list("surgery") + prereq_ids = list(TECHWEB_NODE_SURGERY) design_ids = list( "harvester", "surgery_heal_brute_upgrade_femto", @@ -38,10 +38,10 @@ required_experiments = list(/datum/experiment/autopsy/human) /datum/techweb_node/surgery_exp - id = "surgery_exp" + id = TECHWEB_NODE_SURGERY_EXP display_name = "Experimental Surgery" description = "When evolution isn't fast enough." - prereq_ids = list("surgery_adv") + prereq_ids = list(TECHWEB_NODE_SURGERY_ADV) design_ids = list( "surgery_cortex_folding", "surgery_cortex_imprint", @@ -56,13 +56,13 @@ "surgery_viral_bond", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) - required_experiments = list(/datum/experiment/autopsy/nonhuman) + discount_experiments = list(/datum/experiment/autopsy/nonhuman = TECHWEB_TIER_3_POINTS) /datum/techweb_node/surgery_tools - id = "surgery_tools" + id = TECHWEB_NODE_SURGERY_TOOLS display_name = "Advanced Surgery Tools" description = "Surgical instruments of dual purpose for quick operations." - prereq_ids = list("surgery_exp") + prereq_ids = list(TECHWEB_NODE_SURGERY_EXP) design_ids = list( "laserscalpel", "searingtool", diff --git a/code/modules/research/techweb/nodes/syndicate_nodes.dm b/code/modules/research/techweb/nodes/syndicate_nodes.dm index c571551877099..377ac392f938f 100644 --- a/code/modules/research/techweb/nodes/syndicate_nodes.dm +++ b/code/modules/research/techweb/nodes/syndicate_nodes.dm @@ -1,8 +1,8 @@ /datum/techweb_node/syndicate_basic - id = "syndicate_basic" + id = TECHWEB_NODE_SYNDICATE_BASIC display_name = "Illegal Technology" description = "Dangerous research used to create dangerous objects." - prereq_ids = list("exp_tools", "exotic_ammo") + prereq_ids = list(TECHWEB_NODE_EXP_TOOLS, TECHWEB_NODE_EXOTIC_AMMO) design_ids = list( "advanced_camera", "ai_cam_upgrade", @@ -38,11 +38,12 @@ required_items_to_unlock |= item.item //allows deconning to unlock. /datum/techweb_node/unregulated_bluespace - id = "unregulated_bluespace" + id = TECHWEB_NODE_UNREGULATED_BLUESPACE display_name = "Unregulated Bluespace Research" description = "Bluespace technology using unstable or unbalanced procedures, prone to damaging the fabric of bluespace. Outlawed by galactic conventions." - prereq_ids = list("parts_bluespace", "syndicate_basic") + prereq_ids = list(TECHWEB_NODE_PARTS_BLUESPACE, TECHWEB_NODE_SYNDICATE_BASIC) design_ids = list( "desynchronizer", + "beamrifle", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) diff --git a/code/modules/research/techweb/techweb_types.dm b/code/modules/research/techweb/techweb_types.dm index c01b1226a4c13..f5532e9e53f9d 100644 --- a/code/modules/research/techweb/techweb_types.dm +++ b/code/modules/research/techweb/techweb_types.dm @@ -18,7 +18,7 @@ /datum/techweb/oldstation/New() . = ..() - research_node_id("oldstation_surgery", TRUE, TRUE, FALSE) + research_node_id(TECHWEB_NODE_OLDSTATION_SURGERY, TRUE, TRUE, FALSE) /** * Admin techweb that has everything unlocked by default diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm index c174856a62a31..9bd9e2d881b1c 100644 --- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm +++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm @@ -38,8 +38,13 @@ Slimecrossing Armor icon = 'icons/obj/science/slimecrossing.dmi' icon_state = "prismglasses" actions_types = list(/datum/action/item_action/change_prism_colour, /datum/action/item_action/place_light_prism) + forced_glass_color = TRUE var/glasses_color = COLOR_WHITE +/obj/item/clothing/glasses/prism_glasses/Initialize(mapload) + . = ..() + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/glass_colour, ITEM_SLOT_EYES, glasses_color, forced_glass_color) + /obj/item/clothing/glasses/prism_glasses/item_action_slot_check(slot) if(slot & ITEM_SLOT_EYES) return TRUE @@ -76,7 +81,9 @@ Slimecrossing Armor var/new_color = input(owner, "Choose the lens color:", "Color change",glasses.glasses_color) as color|null if(!new_color) return + RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/glass_colour, ITEM_SLOT_EYES, glasses.glasses_color, glasses.forced_glass_color) glasses.glasses_color = new_color + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/glass_colour, ITEM_SLOT_EYES, new_color, glasses.forced_glass_color) /datum/action/item_action/place_light_prism name = "Fabricate Light Prism" diff --git a/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm b/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm index 8b0b007adee40..d04a7f852da3f 100644 --- a/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm +++ b/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm @@ -1,7 +1,7 @@ ///Tool capable of taking biological samples from mobs /obj/item/biopsy_tool name = "biopsy tool" - desc = "Don't worry, it won't sting." + desc = "Used to retrieve cell lines from organisms. Don't worry, it won't sting." icon = 'icons/obj/science/vatgrowing.dmi' icon_state = "biopsy" worn_icon_state = "biopsy" diff --git a/code/modules/research/xenobiology/vatgrowing/microscope.dm b/code/modules/research/xenobiology/vatgrowing/microscope.dm index 2e70d20faf07d..c3c7369981e19 100644 --- a/code/modules/research/xenobiology/vatgrowing/microscope.dm +++ b/code/modules/research/xenobiology/vatgrowing/microscope.dm @@ -3,17 +3,28 @@ desc = "A simple microscope, allowing you to examine micro-organisms." icon = 'icons/obj/science/vatgrowing.dmi' icon_state = "microscope" + ///Analyzed dish var/obj/item/petri_dish/current_dish -/obj/structure/microscope/attacked_by(obj/item/I, mob/living/user) - if(!istype(I, /obj/item/petri_dish)) - return ..() +/obj/structure/microscope/Initialize(mapload) + . = ..() + var/static/list/hovering_item_typechecks = list( + /obj/item/petri_dish = list( + SCREENTIP_CONTEXT_LMB = "Add petri dish", + ), + ) + AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks) + AddElement(/datum/element/contextual_screentip_bare_hands, rmb_text = "Remove petri dish") + +/obj/structure/microscope/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if(istype(tool, /obj/item/petri_dish)) + return add_dish(user, tool) + +/obj/structure/microscope/attack_hand_secondary(mob/user, list/modifiers) + . = ..() if(current_dish) - to_chat(user, span_warning("There is already a petridish in \the [src].")) - return - to_chat(user, span_notice("You put [I] into \the [src].")) - current_dish = I - current_dish.forceMove(src) + return remove_dish(user) /obj/structure/microscope/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) @@ -21,27 +32,30 @@ ui = new(user, src, "Microscope", name) ui.open() -/obj/structure/microscope/ui_data(mob/user) +/obj/structure/microscope/ui_static_data(mob/user) var/list/data = list() data["has_dish"] = current_dish ? TRUE : FALSE data["cell_lines"] = list() - data["viruses"] = list() if(!current_dish) return data if(!current_dish.sample) return data - for(var/organism in current_dish.sample.micro_organisms) //All the microorganisms in the dish + for(var/organism in current_dish.sample.micro_organisms) if(istype(organism, /datum/micro_organism/cell_line)) var/datum/micro_organism/cell_line/cell_line = organism + var/atom/resulting_atom = cell_line.resulting_atom var/list/organism_data = list( type = "cell line", name = cell_line.name, desc = cell_line.desc, - growth_rate = cell_line.growth_rate, - suspectibility = cell_line.virus_suspectibility, + icon = resulting_atom ? initial(resulting_atom.icon) : "", + icon_state = resulting_atom ? initial(resulting_atom.icon_state) : "", + consumption_rate = cell_line.consumption_rate * SSMACHINES_DT, + growth_rate = cell_line.growth_rate * SSMACHINES_DT, + suspectibility = cell_line.virus_suspectibility * SSMACHINES_DT, requireds = get_reagent_list(cell_line.required_reagents), supplementaries = get_reagent_list(cell_line.supplementary_reagents), suppressives = get_reagent_list(cell_line.suppressive_reagents) @@ -55,7 +69,7 @@ name = virus.name, desc = virus.desc ) - data["viruses"] += list(virus_data) + data["cell_lines"] += list(virus_data) return data @@ -63,23 +77,49 @@ var/list/reagent_list = list() for(var/i in reagents) //Convert from assoc to normal. Yeah very shit. var/datum/reagent/reagent = i - reagent_list += initial(reagent.name) - return reagent_list.Join(", ") - + reagent_list["[initial(reagent.name)]"] = reagents[i] * SSMACHINES_DT + return reagent_list -/obj/structure/microscope/ui_act(action, params) +/obj/structure/microscope/ui_act(action, params, datum/tgui/ui) . = ..() if(.) return switch(action) if("eject_petridish") - if(!current_dish) - return FALSE - current_dish.forceMove(get_turf(src)) - current_dish = null - . = TRUE + if(current_dish) + remove_dish(ui.user) + . = TRUE update_appearance() +///Insert a new dish, swapping the inserted one +/obj/structure/microscope/proc/add_dish(mob/living/user, obj/item/petri_dish/new_dish) + var/obj/item/petri_dish/old_dish + if(current_dish) + old_dish = current_dish + if(!user.transferItemToLoc(new_dish, src)) + balloon_alert(user, "couldn't add!") + return ITEM_INTERACT_FAILURE + current_dish = new_dish + update_static_data_for_all_viewers() + if(old_dish) + if(!user.put_in_hands(old_dish)) + old_dish.forceMove(get_turf(src)) + balloon_alert(user, "dish swapped") + else + balloon_alert(user, "dish added") + return ITEM_INTERACT_SUCCESS + +///Take the inserted dish, or drop it on the floor +/obj/structure/microscope/proc/remove_dish(mob/living/user) + if(!current_dish) + return SECONDARY_ATTACK_CONTINUE_CHAIN + if(!user.put_in_hands(current_dish)) + current_dish.forceMove(get_turf(src)) + current_dish = null + update_static_data_for_all_viewers() + balloon_alert(user, "dish removed") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + /datum/crafting_recipe/microscope name = "Microscope" result = /obj/structure/microscope @@ -88,7 +128,5 @@ reqs = list( /obj/item/stack/sheet/glass = 1, /obj/item/stack/sheet/plastic = 1, - /obj/item/stock_parts/scanning_module = 1, - /obj/item/flashlight = 1, ) category = CAT_CHEMISTRY diff --git a/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm b/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm index edeeaad05c6a3..46d643aa532a7 100644 --- a/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm +++ b/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm @@ -23,11 +23,15 @@ var/virus_suspectibility = 1 ///This var defines how much % the organism grows per process(), without modifiers, if you have all required reagents var/growth_rate = 4 - ///Resulting atoms from growing this cell line. List is assoc atom type || amount - var/list/resulting_atoms = list() + ///This var defines how many units of every reagent is consumed during growth per process() + var/consumption_rate = REAGENTS_METABOLISM + ///Resulting atom from growing this cell line + var/atom/resulting_atom + ///The number of resulting atoms + var/resulting_atom_count = 1 ///Handles growth of the micro_organism. This only runs if the micro organism is in the growing vat. Reagents is the growing vats reagents -/datum/micro_organism/cell_line/proc/handle_growth(obj/machinery/plumbing/growing_vat/vat) +/datum/micro_organism/cell_line/proc/handle_growth(obj/machinery/vatgrower/vat) if(!try_eat(vat.reagents)) return FALSE growth = max(growth, growth + calculate_growth(vat.reagents, vat.biological_sample)) //Prevent you from having minus growth. @@ -41,7 +45,7 @@ if(!reagents.has_reagent(i)) return FALSE for(var/i in required_reagents) //Delete the required reagents if used - reagents.remove_reagent(i, REAGENTS_METABOLISM) + reagents.remove_reagent(i, consumption_rate) return TRUE ///Apply modifiers on growth_rate based on supplementary and supressive reagents. Reagents is the growing vats reagents @@ -50,27 +54,27 @@ //Handle growth based on supplementary reagents here. for(var/i in supplementary_reagents) - if(!reagents.has_reagent(i, REAGENTS_METABOLISM)) + if(!reagents.has_reagent(i, consumption_rate)) continue . += supplementary_reagents[i] - reagents.remove_reagent(i, REAGENTS_METABOLISM) + reagents.remove_reagent(i, consumption_rate) //Handle degrowth based on supressive reagents here. for(var/i in suppressive_reagents) - if(!reagents.has_reagent(i, REAGENTS_METABOLISM)) + if(!reagents.has_reagent(i, consumption_rate)) continue . += suppressive_reagents[i] - reagents.remove_reagent(i, REAGENTS_METABOLISM) + reagents.remove_reagent(i, consumption_rate) //Handle debuffing growth based on viruses here. for(var/datum/micro_organism/virus/active_virus in biological_sample.micro_organisms) - if(reagents.has_reagent(/datum/reagent/medicine/spaceacillin, REAGENTS_METABOLISM)) - reagents.remove_reagent(/datum/reagent/medicine/spaceacillin, REAGENTS_METABOLISM) + if(reagents.has_reagent(/datum/reagent/medicine/spaceacillin, consumption_rate)) + reagents.remove_reagent(/datum/reagent/medicine/spaceacillin, consumption_rate) continue //This virus is stopped, We have antiviral stuff . -= virus_suspectibility ///Called once a cell line reaches 100 growth. Then we check if any cell_line is too far so we can perform an epic fail roll -/datum/micro_organism/cell_line/proc/finish_growing(obj/machinery/plumbing/growing_vat/vat) +/datum/micro_organism/cell_line/proc/finish_growing(obj/machinery/vatgrower/vat) var/risk = 0 //Penalty for failure, goes up based on how much growth the other cell_lines have for(var/datum/micro_organism/cell_line/cell_line in vat.biological_sample.micro_organisms) @@ -86,7 +90,7 @@ succeed_growing(vat) return TRUE -/datum/micro_organism/cell_line/proc/fuck_up_growing(obj/machinery/plumbing/growing_vat/vat) +/datum/micro_organism/cell_line/proc/fuck_up_growing(obj/machinery/vatgrower/vat) vat.visible_message(span_warning("The biological sample in [vat] seems to have dissipated!")) if(prob(50)) new /obj/effect/gibspawner/generic(get_turf(vat)) //Spawn some gibs. @@ -94,33 +98,32 @@ return QDEL_NULL(vat.biological_sample) -/datum/micro_organism/cell_line/proc/succeed_growing(obj/machinery/plumbing/growing_vat/vat) +/datum/micro_organism/cell_line/proc/succeed_growing(obj/machinery/vatgrower/vat) var/datum/effect_system/fluid_spread/smoke/smoke = new smoke.set_up(0, holder = vat, location = vat.loc) smoke.start() - for(var/created_thing in resulting_atoms) - for(var/x in 1 to resulting_atoms[created_thing]) - var/atom/thing = new created_thing(get_turf(vat)) - ADD_TRAIT(thing, TRAIT_VATGROWN, "vatgrowing") - vat.visible_message(span_nicegreen("[thing] pops out of [vat]!")) + for(var/x in 1 to resulting_atom_count) + var/atom/thing = new resulting_atom(get_turf(vat)) + ADD_TRAIT(thing, TRAIT_VATGROWN, "vatgrowing") + vat.visible_message(span_nicegreen("[thing] pops out of [vat]!")) if(SEND_SIGNAL(vat.biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED) & SPARE_SAMPLE) return QDEL_NULL(vat.biological_sample) ///Overriden to show more info like needs, supplementary and supressive reagents and also growth. /datum/micro_organism/cell_line/get_details(show_details) - . += "[span_notice("[desc] - growth progress: [growth]%")]\n" + . += "[span_notice("[desc] - growth progress: [growth]%")]" if(show_details) - . += return_reagent_text("It requires:", required_reagents) - . += return_reagent_text("It likes:", supplementary_reagents) - . += return_reagent_text("It hates:", suppressive_reagents) + . += "\n- " + return_reagent_text("Requires:", required_reagents) + . += "\n- " + return_reagent_text("Likes:", supplementary_reagents) + . += "\n- " + return_reagent_text("Hates:", suppressive_reagents) ///Return a nice list of all the reagents in a specific category with a specific prefix. This needs to be reworked because the formatting sucks ass. /datum/micro_organism/cell_line/proc/return_reagent_text(prefix_text = "It requires:", list/reagentlist) if(!reagentlist.len) return - var/all_reagents_text + var/list/reagent_names = list() for(var/i in reagentlist) var/datum/reagent/reagent = i - all_reagents_text += " - [initial(reagent.name)]\n" - return span_notice("[prefix_text]\n[all_reagents_text]") + reagent_names += initial(reagent.name) + return span_notice("[prefix_text] [jointext(reagent_names, ", ")]") diff --git a/code/modules/research/xenobiology/vatgrowing/samples/_sample.dm b/code/modules/research/xenobiology/vatgrowing/samples/_sample.dm index eda9d2771ebf0..7838977bd4d48 100644 --- a/code/modules/research/xenobiology/vatgrowing/samples/_sample.dm +++ b/code/modules/research/xenobiology/vatgrowing/samples/_sample.dm @@ -31,7 +31,7 @@ return TRUE ///Call handle_growth on all our microorganisms. -/datum/biological_sample/proc/handle_growth(obj/machinery/plumbing/growing_vat/vat) +/datum/biological_sample/proc/handle_growth(obj/machinery/vatgrower/vat) for(var/datum/micro_organism/cell_line/organism in micro_organisms) //Types because we don't grow viruses. organism.handle_growth(vat) 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 b170cb19fd784..571440f84427f 100644 --- a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm +++ b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm @@ -25,7 +25,8 @@ virus_suspectibility = 2 growth_rate = VAT_GROWTH_RATE - resulting_atoms = list(/mob/living/basic/mouse = 2) + resulting_atom = /mob/living/basic/mouse + resulting_atom_count = 2 /datum/micro_organism/cell_line/chicken //basic cell line designed as a good source of protein and eggyolk. desc = "Galliform skin cells." @@ -43,7 +44,7 @@ virus_suspectibility = 1 growth_rate = VAT_GROWTH_RATE - resulting_atoms = list(/mob/living/basic/chicken = 1) + resulting_atom = /mob/living/basic/chicken /datum/micro_organism/cell_line/cow desc = "Bovine stem cells" @@ -62,7 +63,7 @@ /datum/reagent/toxin/carpotoxin = -5) virus_suspectibility = 1 - resulting_atoms = list(/mob/living/basic/cow = 1) + resulting_atom = /mob/living/basic/cow /datum/micro_organism/cell_line/moonicorn desc = "Fairyland Bovine stem cells" @@ -87,7 +88,7 @@ ) virus_suspectibility = 1 - resulting_atoms = list(/mob/living/basic/cow/moonicorn = 1) + resulting_atom = /mob/living/basic/cow/moonicorn /datum/micro_organism/cell_line/cat desc = "Feliform cells" @@ -108,7 +109,7 @@ /datum/reagent/consumable/milk/chocolate_milk = -1) virus_suspectibility = 1.5 - resulting_atoms = list(/mob/living/basic/pet/cat = 1) + resulting_atom = /mob/living/basic/pet/cat /datum/micro_organism/cell_line/corgi desc = "Canid cells" @@ -127,7 +128,7 @@ /datum/reagent/consumable/coco = -2) virus_suspectibility = 1 - resulting_atoms = list(/mob/living/basic/pet/dog/corgi = 1) + resulting_atom = /mob/living/basic/pet/dog/corgi /datum/micro_organism/cell_line/pug desc = "Squat canid cells" @@ -145,7 +146,7 @@ /datum/reagent/consumable/coco = -2) virus_suspectibility = 3 - resulting_atoms = list(/mob/living/basic/pet/dog/pug = 1) + resulting_atom = /mob/living/basic/pet/dog/pug /datum/micro_organism/cell_line/bear //bears can't really compete directly with more powerful creatures, so i made it possible to grow them real fast. desc = "Ursine cells" @@ -166,7 +167,7 @@ /datum/reagent/medicine/insulin = -2) //depletes hunny. virus_suspectibility = 2 - resulting_atoms = list(/mob/living/basic/bear = 1) + resulting_atom = /mob/living/basic/bear /datum/micro_organism/cell_line/carp desc = "Cyprinid cells" @@ -185,7 +186,7 @@ /datum/reagent/oxygen = -3) virus_suspectibility = 2 - resulting_atoms = list(/mob/living/basic/carp = 1) + resulting_atom = /mob/living/basic/carp /datum/micro_organism/cell_line/megacarp desc = "Cartilaginous cyprinid cells" @@ -205,7 +206,7 @@ /datum/reagent/oxygen = -3) virus_suspectibility = 1 - resulting_atoms = list(/mob/living/basic/carp/mega = 1) + resulting_atom = /mob/living/basic/carp/mega /datum/micro_organism/cell_line/snake desc = "Ophidic cells" @@ -223,7 +224,7 @@ /datum/reagent/consumable/corn_syrup = -6, /datum/reagent/sulfur = -3) //sulfur repels snakes according to professor google. - resulting_atoms = list(/mob/living/basic/snake = 1) + resulting_atom = /mob/living/basic/snake /////////////////////////////////////////// @@ -246,7 +247,7 @@ /datum/reagent/consumable/ice = -2) //Brrr! virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/slime = 1) + resulting_atom = /mob/living/basic/slime /datum/micro_organism/cell_line/blob_spore //nuisance cell line desc = "Immature blob spores" @@ -263,7 +264,8 @@ /datum/reagent/medicine/psicodine = -2) //Blob zombies likely wouldn't appreciate psicodine so why this is here virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/blob_minion/spore = 2) //These are useless so we might as well spawn 2. + resulting_atom = /mob/living/basic/blob_minion/spore + resulting_atom_count = 2 /datum/micro_organism/cell_line/blobbernaut desc = "Blobular myocytes" @@ -282,7 +284,7 @@ suppressive_reagents = list(/datum/reagent/consumable/tinlux = -6) virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/blob_minion/blobbernaut = 1) + resulting_atom = /mob/living/basic/blob_minion/blobbernaut /datum/micro_organism/cell_line/gelatinous_cube desc = "Cubic ooze particles" @@ -307,7 +309,7 @@ /datum/reagent/consumable/ice = -1) virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/hostile/ooze/gelatinous = 1) + resulting_atom = /mob/living/simple_animal/hostile/ooze/gelatinous /datum/micro_organism/cell_line/sholean_grapes desc = "Globular ooze particles" @@ -334,7 +336,7 @@ /datum/reagent/consumable/ice = -1) virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/hostile/ooze/grapes = 1) + resulting_atom = /mob/living/simple_animal/hostile/ooze/grapes //////////////////// //// MISC //// @@ -355,7 +357,8 @@ /datum/reagent/consumable/ethanol/bug_spray = -4) virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/cockroach = 5) + resulting_atom = /mob/living/basic/cockroach + resulting_atom_count = 5 /datum/micro_organism/cell_line/glockroach desc = "Gattodeoid anthropod cells" @@ -376,7 +379,8 @@ /datum/reagent/consumable/ethanol/bug_spray = -4) virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/cockroach/glockroach = 2) + resulting_atom = /mob/living/basic/cockroach/glockroach + resulting_atom_count = 2 /datum/micro_organism/cell_line/hauberoach desc = "Hattodeoid anthropod cells" @@ -397,7 +401,8 @@ /datum/reagent/consumable/ethanol/cognac = -4) virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/cockroach/hauberoach = 2) + resulting_atom = /mob/living/basic/cockroach/hauberoach + resulting_atom_count = 2 /datum/micro_organism/cell_line/pine desc = "Coniferous plant cells" @@ -418,7 +423,7 @@ suppressive_reagents = list(/datum/reagent/toxin/plantbgone = -8) virus_suspectibility = 1 - resulting_atoms = list(/mob/living/basic/tree = 1) + resulting_atom = /mob/living/basic/tree /datum/micro_organism/cell_line/vat_beast desc = "Hypergenic xenocytes" @@ -443,9 +448,9 @@ /datum/reagent/medicine/c2/syriniver = -2) virus_suspectibility = 0.5 - resulting_atoms = list(/mob/living/simple_animal/hostile/vatbeast = 1) + resulting_atom = /mob/living/simple_animal/hostile/vatbeast -/datum/micro_organism/cell_line/vat_beast/succeed_growing(obj/machinery/plumbing/growing_vat/vat) +/datum/micro_organism/cell_line/vat_beast/succeed_growing(obj/machinery/vatgrower/vat) . = ..() qdel(vat) @@ -470,15 +475,12 @@ /datum/reagent/consumable/liquidgibs = -2) virus_suspectibility = 0 - resulting_atoms = list() -/datum/micro_organism/cell_line/netherworld/succeed_growing(obj/machinery/plumbing/growing_vat/vat) - var/random_result = pick(/mob/living/basic/creature, /mob/living/basic/migo, /mob/living/basic/blankbody) //i looked myself, pretty much all of them are reasonably strong and somewhat on the same level. except migo is the jackpot and the blank body is whiff. - resulting_atoms = list() - resulting_atoms[random_result] = 1 +/datum/micro_organism/cell_line/netherworld/succeed_growing(obj/machinery/vatgrower/vat) + resulting_atom = pick(/mob/living/basic/creature, /mob/living/basic/migo, /mob/living/basic/blankbody) //i looked myself, pretty much all of them are reasonably strong and somewhat on the same level. except migo is the jackpot and the blank body is whiff. return ..() -/datum/micro_organism/cell_line/clown/fuck_up_growing(obj/machinery/plumbing/growing_vat/vat) +/datum/micro_organism/cell_line/clown/fuck_up_growing(obj/machinery/vatgrower/vat) vat.visible_message(span_warning("The biological sample in [vat] seems to have created something horrific!")) var/mob/selected_mob = pick(list(/mob/living/basic/clown/mutant/slow, /mob/living/basic/clown/fleshclown)) @@ -509,7 +511,7 @@ /datum/reagent/consumable/nothing = -2, /datum/reagent/fuel/oil = -1) - resulting_atoms = list(/mob/living/basic/clown/banana = 1) + resulting_atom = /mob/living/basic/clown/banana /datum/micro_organism/cell_line/clown/glutton desc = "hyperadipogenic clown stem cells" @@ -535,7 +537,7 @@ /datum/reagent/consumable/nothing = -2, /datum/reagent/toxin/bad_food = -1) - resulting_atoms = list(/mob/living/basic/clown/mutant/glutton = 1) + resulting_atom = /mob/living/basic/clown/mutant/glutton /datum/micro_organism/cell_line/clown/longclown desc = "long clown bits" @@ -558,7 +560,7 @@ /datum/reagent/consumable/nothing = -2, /datum/reagent/sulfur = -1) - resulting_atoms = list(/mob/living/basic/clown/longface = 1) + resulting_atom = /mob/living/basic/clown/longface /datum/micro_organism/cell_line/frog desc = "anura amphibian cells" @@ -579,7 +581,7 @@ /datum/reagent/toxin = -1) virus_suspectibility = 0.5 - resulting_atoms = list(/mob/living/basic/frog = 1) + resulting_atom = /mob/living/basic/frog /datum/micro_organism/cell_line/axolotl desc = "caudata amphibian cells" @@ -602,7 +604,7 @@ /datum/reagent/toxin = -1) virus_suspectibility = 0.5 - resulting_atoms = list(/mob/living/basic/axolotl = 1) + resulting_atom = /mob/living/basic/axolotl /datum/micro_organism/cell_line/walking_mushroom desc = "motile fungal hyphae" @@ -627,7 +629,7 @@ /datum/reagent/copper = -1) virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/mushroom = 1) + resulting_atom = /mob/living/basic/mushroom /datum/micro_organism/cell_line/queen_bee desc = "aphid cells" @@ -652,9 +654,9 @@ /datum/reagent/drug/nicotine = -1) virus_suspectibility = 0 - resulting_atoms = list(/obj/item/queen_bee/bought = 1) + resulting_atom = /obj/item/queen_bee/bought -/datum/micro_organism/cell_line/queen_bee/fuck_up_growing(obj/machinery/plumbing/growing_vat/vat) //we love job hazards +/datum/micro_organism/cell_line/queen_bee/fuck_up_growing(obj/machinery/vatgrower/vat) //we love job hazards vat.visible_message(span_warning("You hear angry buzzing coming from the inside of the vat!")) for(var/i in 1 to 5) new /mob/living/basic/bee(get_turf(vat)) @@ -682,7 +684,8 @@ ) virus_suspectibility = 0 - resulting_atoms = list(/mob/living/basic/butterfly = 3) + resulting_atom = /mob/living/basic/butterfly + resulting_atom_count = 3 /datum/micro_organism/cell_line/mega_arachnid desc = "pseudoarachnoid cells" @@ -708,6 +711,6 @@ /datum/reagent/drug/nicotine = -1, /datum/reagent/toxin/pestkiller = -1) - resulting_atoms = list(/mob/living/basic/mega_arachnid = 1) + resulting_atom = /mob/living/basic/mega_arachnid #undef VAT_GROWTH_RATE diff --git a/code/modules/plumbing/plumbers/vatgrower.dm b/code/modules/research/xenobiology/vatgrowing/vatgrower.dm similarity index 56% rename from code/modules/plumbing/plumbers/vatgrower.dm rename to code/modules/research/xenobiology/vatgrowing/vatgrower.dm index 1dcfb08e0cce0..5b35bd10edf5e 100644 --- a/code/modules/plumbing/plumbers/vatgrower.dm +++ b/code/modules/research/xenobiology/vatgrowing/vatgrower.dm @@ -1,33 +1,52 @@ ///Used to make mobs from microbiological samples. Grow grow grow. -/obj/machinery/plumbing/growing_vat +/obj/machinery/vatgrower name = "growing vat" desc = "Tastes just like the chef's soup." + icon = 'icons/obj/science/vatgrowing.dmi' icon_state = "growing_vat" - buffer = 300 - + density = TRUE + pass_flags_self = PASSMACHINE | LETPASSTHROW + circuit = /obj/item/circuitboard/machine/vatgrower + use_power = NO_POWER_USE + ///Soup container reagents + var/reagent_volume = 300 + var/reagent_flags = OPENCONTAINER | DUNKABLE ///List of all microbiological samples in this soup. var/datum/biological_sample/biological_sample ///If the vat will restart the sample upon completion var/resampler_active = FALSE -///Add that sexy demnand component -/obj/machinery/plumbing/growing_vat/Initialize(mapload, bolt, layer) +/obj/machinery/vatgrower/Initialize(mapload, bolt, layer) . = ..() - AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) - -/obj/machinery/plumbing/growing_vat/create_reagents(max_vol, flags) + create_reagents(reagent_volume, reagent_flags) + + AddComponent(/datum/component/simple_rotation) + AddComponent(/datum/component/plumbing/simple_demand) + + var/static/list/hovering_item_typechecks = list( + /obj/item/petri_dish = list( + SCREENTIP_CONTEXT_LMB = "Add Sample", + ), + /obj/item/reagent_containers = list( + SCREENTIP_CONTEXT_LMB = "Pour Reagents", + ), + ) + AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks) + AddElement(/datum/element/contextual_screentip_bare_hands, lmb_text = "Toggle Resampler", rmb_text = "Flush Soup") + +/obj/machinery/vatgrower/create_reagents(max_vol, flags) . = ..() RegisterSignals(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT), PROC_REF(on_reagent_change)) RegisterSignal(reagents, COMSIG_QDELETING, PROC_REF(on_reagents_del)) /// Handles properly detaching signal hooks. -/obj/machinery/plumbing/growing_vat/proc/on_reagents_del(datum/reagents/reagents) +/obj/machinery/vatgrower/proc/on_reagents_del(datum/reagents/reagents) SIGNAL_HANDLER UnregisterSignal(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT, COMSIG_QDELETING)) return NONE ///When we process, we make use of our reagents to try and feed the samples we have. -/obj/machinery/plumbing/growing_vat/process(seconds_per_tick) +/obj/machinery/vatgrower/process(seconds_per_tick) if(!is_operational) return if(!biological_sample) @@ -39,35 +58,71 @@ audible_message(pick(list(span_notice("[src] grumbles!"), span_notice("[src] makes a splashing noise!"), span_notice("[src] sloshes!")))) use_energy(active_power_usage * seconds_per_tick) -///Handles the petri dish depositing into the vat. -/obj/machinery/plumbing/growing_vat/attacked_by(obj/item/I, mob/living/user) - if(!istype(I, /obj/item/petri_dish)) - return ..() +/obj/machinery/vatgrower/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if(istype(tool, /obj/item/petri_dish)) + return deposit_sample(user, tool) - var/obj/item/petri_dish/petri = I +/obj/machinery/vatgrower/screwdriver_act(mob/living/user, obj/item/tool) + . = ..() + if(default_deconstruction_screwdriver(user, icon_state, icon_state, tool)) + return ITEM_INTERACT_SUCCESS - if(!petri.sample) - return ..() +/obj/machinery/vatgrower/crowbar_act(mob/living/user, obj/item/tool) + . = ..() + if(default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS - if(biological_sample) - to_chat(user, span_warning("There is already a sample in the vat!")) +/obj/machinery/vatgrower/wrench_act(mob/living/user, obj/item/tool) + . = ..() + if(default_unfasten_wrench(user, tool)) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/vatgrower/attack_hand(mob/living/user, list/modifiers) + . = ..() + playsound(src, 'sound/machines/click.ogg', 30, TRUE) + if(obj_flags & EMAGGED) return - deposit_sample(user, petri) + resampler_active = !resampler_active + balloon_alert(user, "resampler [resampler_active ? "activated" : "deactivated"]") + update_appearance() + +/obj/machinery/vatgrower/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(!anchored) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + var/warning = tgui_alert(user, "Are you sure you want to empty the soup container?","Flush soup container?", list("Flush", "Cancel")) + if(warning == "Flush" && user.can_perform_action(src)) + reagents.clear_reagents() + if(biological_sample) + QDEL_NULL(biological_sample) + balloon_alert(user, "container empty") + update_appearance() + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN ///Creates a clone of the supplied sample and puts it in the vat -/obj/machinery/plumbing/growing_vat/proc/deposit_sample(mob/user, obj/item/petri_dish/petri) +/obj/machinery/vatgrower/proc/deposit_sample(mob/user, obj/item/petri_dish/petri) + if(!petri.sample) + balloon_alert(user, "dish empty") + return ITEM_INTERACT_FAILURE + if(biological_sample) + balloon_alert(user, "already has a sample") + return ITEM_INTERACT_FAILURE biological_sample = new for(var/datum/micro_organism/m in petri.sample.micro_organisms) biological_sample.micro_organisms += new m.type() biological_sample.sample_layers = petri.sample.sample_layers biological_sample.sample_color = petri.sample.sample_color - to_chat(user, span_warning("You put some of the sample in the vat!")) + balloon_alert(user, "added sample") playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE) update_appearance() RegisterSignal(biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED, PROC_REF(on_sample_growth_completed)) + return ITEM_INTERACT_SUCCESS ///Adds text for when there is a sample in the vat -/obj/machinery/plumbing/growing_vat/examine_more(mob/user) +/obj/machinery/vatgrower/examine(mob/user) . = ..() if(!biological_sample) return @@ -76,18 +131,14 @@ var/datum/micro_organism/MO = i . += MO.get_details(HAS_TRAIT(user, TRAIT_RESEARCH_SCANNER)) -/obj/machinery/plumbing/growing_vat/plunger_act(obj/item/plunger/P, mob/living/user, reinforced) - . = ..() - QDEL_NULL(biological_sample) - /// Call update icon when reagents change to update the reagent content icons. Eats signal args. -/obj/machinery/plumbing/growing_vat/proc/on_reagent_change(datum/reagents/holder, ...) +/obj/machinery/vatgrower/proc/on_reagent_change(datum/reagents/holder, ...) SIGNAL_HANDLER update_appearance() return NONE ///Adds overlays to show the reagent contents -/obj/machinery/plumbing/growing_vat/update_overlays() +/obj/machinery/vatgrower/update_overlays() . = ..() var/static/image/on_overlay var/static/image/off_overlay @@ -113,16 +164,7 @@ var/mutable_appearance/bubbles_overlay = mutable_appearance(icon, "vat_bubbles") . += bubbles_overlay -/obj/machinery/plumbing/growing_vat/attack_hand(mob/living/user, list/modifiers) - . = ..() - playsound(src, 'sound/machines/click.ogg', 30, TRUE) - if(obj_flags & EMAGGED) - return - resampler_active = !resampler_active - balloon_alert_to_viewers("resampler [resampler_active ? "activated" : "deactivated"]") - update_appearance() - -/obj/machinery/plumbing/growing_vat/emag_act(mob/user, obj/item/card/emag/emag_card) +/obj/machinery/vatgrower/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) return FALSE obj_flags |= EMAGGED @@ -131,7 +173,7 @@ flick("growing_vat_emagged", src) return TRUE -/obj/machinery/plumbing/growing_vat/proc/on_sample_growth_completed() +/obj/machinery/vatgrower/proc/on_sample_growth_completed() SIGNAL_HANDLER if(resampler_active) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), get_turf(src), 'sound/effects/servostep.ogg', 100, 1), 1.5 SECONDS) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index ea4ef0e9b7ed1..68ffe5e9248be 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -91,18 +91,20 @@ eyeobj.icon_state = "generic_camera" /obj/machinery/computer/camera_advanced/xenobio/GrantActions(mob/living/user) - ..() + . = ..() RegisterSignal(user, COMSIG_MOB_CTRL_CLICKED, PROC_REF(XenoClickCtrl)) - RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT, PROC_REF(XenoSlimeClickAlt)) + RegisterSignal(user, COMSIG_MOB_ALTCLICKON, PROC_REF(XenoSlimeClickAlt)) RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT, PROC_REF(XenoSlimeClickShift)) RegisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT, PROC_REF(XenoTurfClickShift)) /obj/machinery/computer/camera_advanced/xenobio/remove_eye_control(mob/living/user) - UnregisterSignal(user, COMSIG_MOB_CTRL_CLICKED) - UnregisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT) - UnregisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT) - UnregisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT) - ..() + UnregisterSignal(user, list( + COMSIG_MOB_CTRL_CLICKED, + COMSIG_MOB_ALTCLICKON, + COMSIG_XENO_SLIME_CLICK_SHIFT, + COMSIG_XENO_TURF_CLICK_SHIFT, + )) + return ..() /obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/used_item, mob/user, params) if(istype(used_item, /obj/item/food/monkeycube)) @@ -355,11 +357,6 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo // // Alternate clicks for slime, monkey and open turf if using a xenobio console - -/mob/living/basic/slime/click_alt(mob/user) - SEND_SIGNAL(user, COMSIG_XENO_SLIME_CLICK_ALT, src) - return CLICK_ACTION_SUCCESS - /mob/living/basic/slime/ShiftClick(mob/user) SEND_SIGNAL(user, COMSIG_XENO_SLIME_CLICK_SHIFT, src) ..() @@ -372,6 +369,10 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo /obj/machinery/computer/camera_advanced/xenobio/proc/XenoSlimeClickAlt(mob/living/user, mob/living/basic/slime/target_slime) SIGNAL_HANDLER + . = COMSIG_MOB_CANCEL_CLICKON + if(!isslime(target_slime)) + return + var/mob/camera/ai_eye/remote/xenobio/remote_eye = user.remote_control var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin @@ -426,13 +427,20 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo if(!isopenturf(target_turf)) return + var/cleanup = FALSE var/mob/camera/ai_eye/remote/xenobio/remote_eye = user.remote_control var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin if(!xeno_console.validate_area(user, remote_eye, target_turf)) return - xeno_console.feed_slime(user, target_turf) + for(var/mob/monkey in target_turf) + if(ismonkey(monkey) && monkey.stat == DEAD) + cleanup = TRUE + xeno_console.monkey_recycle(user, monkey) + + if(!cleanup) + xeno_console.feed_slime(user, target_turf) ///Picks up a dead monkey for recycling /obj/machinery/computer/camera_advanced/xenobio/proc/XenoMonkeyClickCtrl(mob/living/user, mob/living/carbon/human/target_mob) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 34d7f4d507a46..9f22520d6ab10 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -10,7 +10,7 @@ throwforce = 0 throw_speed = 3 throw_range = 6 - grind_results = list() + grind_results = list(/datum/reagent/toxin/slimejelly = 20) ///uses before it goes inert var/extract_uses = 1 ///deletion timer, for delayed reactions @@ -44,11 +44,6 @@ . = ..() create_reagents(100, INJECTABLE | DRAWABLE) -/obj/item/slime_extract/on_grind() - . = ..() - if(extract_uses) - grind_results[/datum/reagent/toxin/slimejelly] = 20 - /** * Effect when activated by a Luminescent. * diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index f8b460a783d0d..d3184cc96c62f 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -20,7 +20,9 @@ // Traits forbided for custom docking var/list/locked_traits = list(ZTRAIT_RESERVED, ZTRAIT_CENTCOM, ZTRAIT_AWAY) var/view_range = 0 + ///x offset for where the camera eye will spawn. Starts from shuttle's docking port var/x_offset = 0 + ///y offset for where the camera eye will spawn. Starts from the shuttle's docking port var/y_offset = 0 var/list/whitelist_turfs = list(/turf/open/space, /turf/open/floor/plating, /turf/open/lava, /turf/open/openspace) var/see_hidden = FALSE diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index fbe3e52e5030f..68a0a41a2e092 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -379,6 +379,7 @@ "whiteship_tram", "whiteship_personalshuttle", "whiteship_obelisk", + "whiteship_birdshot", ) /// Helper proc that tests to ensure all whiteship templates can spawn at their docking port, and logs their sizes diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/shuttle_rotate.dm index 734e2337df518..cb7cad65b6ba1 100644 --- a/code/modules/shuttle/shuttle_rotate.dm +++ b/code/modules/shuttle/shuttle_rotate.dm @@ -12,7 +12,7 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate setDir(angle2dir(rotation+dir2angle(dir))) //resmooth if need be. - if(params & ROTATE_SMOOTH && smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + if(params & ROTATE_SMOOTH && smoothing_flags & USES_SMOOTHING) QUEUE_SMOOTH(src) //rotate the pixel offsets too. diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index e5b4b0eb02439..484fa32ac8777 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -403,7 +403,6 @@ desc = "Communism powerful force." icon = 'icons/effects/96x96.dmi' icon_state = "communist" - layer = ABOVE_OPEN_TURF_LAYER pixel_x = -32 pixel_y = -32 diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index b0b23e9d97d32..a1c056dbe4de0 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -262,7 +262,11 @@ return target // They're just standing around, proceed as normal if(HAS_TRAIT(cast_loc, TRAIT_CASTABLE_LOC)) - return cast_loc // They're in an atom which allows casting, so redirect the caster to loc + if(HAS_TRAIT(cast_loc, TRAIT_SPELLS_TRANSFER_TO_LOC) && ismob(cast_loc.loc)) + return cast_loc.loc + else + return cast_loc + // They're in an atom which allows casting, so redirect the caster to loc return null 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 7e39f778391d4..3bbdf25fa8444 100644 --- a/code/modules/spells/spell_types/conjure_item/_conjure_item.dm +++ b/code/modules/spells/spell_types/conjure_item/_conjure_item.dm @@ -3,7 +3,7 @@ invocation_type = INVOCATION_NONE /// Typepath of whatever item we summon - var/obj/item/item_type + var/obj/item_type /// If TRUE, we delete any previously created items when we cast the spell var/delete_old = TRUE /// List of weakrefs to items summoned @@ -57,7 +57,7 @@ var/mob/mob_caster = cast_on if(istype(mob_caster)) - var/obj/item/existing_item = mob_caster.get_active_held_item() + var/obj/existing_item = mob_caster.get_active_held_item() if(existing_item) mob_caster.dropItemToGround(existing_item) @@ -65,6 +65,10 @@ if(QDELETED(created)) CRASH("[type] tried to create an item, but failed. It's item type is [item_type].") + if(!isitem(created)) + created.forceMove(cast_on.drop_location()) + return + if(istype(mob_caster)) mob_caster.put_in_hands(created, del_on_fail = delete_on_failure) diff --git a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm index 00327111e8915..f61e48e889672 100644 --- a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm +++ b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm @@ -164,6 +164,10 @@ var/consume_sound = 'sound/magic/demon_consume.ogg' /// consume count (statistics and stuff) var/consume_count = 0 + /// Apply damage every 20 seconds if we bloodcrawling + var/jaunt_damage_timer + /// When demon first appears, it does not take damage while in Jaunt. He also doesn't take damage while he's eating someone. + var/resist_jaunt_damage = TRUE /datum/action/cooldown/spell/jaunt/bloodcrawl/slaughter_demon/try_enter_jaunt(obj/effect/decal/cleanable/blood, mob/living/jaunter) // Save this before the actual jaunt @@ -174,12 +178,14 @@ if(!.) return + jaunt_damage_timer = addtimer(CALLBACK(src, PROC_REF(damage_for_lazy_demon), jaunter), 20 SECONDS, TIMER_STOPPABLE) + var/turf/jaunt_turf = get_turf(jaunter) // if we're not pulling anyone, or we can't what we're pulling - if(!isliving(coming_with)) + if(!ishuman(coming_with)) return - var/mob/living/victim = coming_with + var/mob/living/carbon/human/victim = coming_with if(victim.stat == CONSCIOUS) jaunt_turf.visible_message( @@ -204,6 +210,28 @@ return TRUE +/datum/action/cooldown/spell/jaunt/bloodcrawl/slaughter_demon/on_jaunt_exited(obj/effect/dummy/phased_mob/jaunt, mob/living/unjaunter) + deltimer(jaunt_damage_timer) + resist_jaunt_damage = FALSE + return ..() + +/** + * Apply damage to demon when he using bloodcrawl. + * Every 20 SECONDS check if demon still crawling and update timer. + */ +/datum/action/cooldown/spell/jaunt/bloodcrawl/slaughter_demon/proc/damage_for_lazy_demon(mob/living/lazy_demon) + if(QDELETED(lazy_demon)) + return + if(resist_jaunt_damage) + return + if(isturf(lazy_demon.loc)) + return + if(isnull(jaunt_damage_timer)) + return + lazy_demon.apply_damage(lazy_demon.maxHealth * 0.05, BRUTE) + jaunt_damage_timer = addtimer(CALLBACK(src, PROC_REF(damage_for_lazy_demon), lazy_demon), 20 SECONDS, TIMER_STOPPABLE) + to_chat(lazy_demon, span_warning("You feel your flesh dissolving into the sea of blood. You shouldn't stay in Blood Crawl for too long!")) + /** * Consumes the [victim] from the [jaunter], fully healing them * and calling [proc/on_victim_consumed] if successful.) @@ -236,12 +264,18 @@ * Called when a victim starts to be consumed. */ /datum/action/cooldown/spell/jaunt/bloodcrawl/slaughter_demon/proc/on_victim_start_consume(mob/living/victim, mob/living/jaunter) + if(!iscarbon(jaunter)) + resist_jaunt_damage = TRUE + deltimer(jaunt_damage_timer) to_chat(jaunter, span_danger("You begin to feast on [victim]... You can not move while you are doing this.")) /** * Called when a victim is successfully consumed. */ /datum/action/cooldown/spell/jaunt/bloodcrawl/slaughter_demon/proc/on_victim_consumed(mob/living/victim, mob/living/jaunter) + if(!iscarbon(jaunter)) + resist_jaunt_damage = FALSE + jaunt_damage_timer = addtimer(CALLBACK(src, PROC_REF(damage_for_lazy_demon), jaunter), 20 SECONDS, TIMER_STOPPABLE) to_chat(jaunter, span_danger("You devour [victim]. Your health is fully restored.")) qdel(victim) diff --git a/code/modules/spells/spell_types/pointed/_pointed.dm b/code/modules/spells/spell_types/pointed/_pointed.dm index 04c3ed47944b9..edf3dab2179d4 100644 --- a/code/modules/spells/spell_types/pointed/_pointed.dm +++ b/code/modules/spells/spell_types/pointed/_pointed.dm @@ -16,7 +16,7 @@ var/deactive_msg /// The casting range of our spell var/cast_range = 7 - /// Variable dictating if the spell will use turf based aim assist + /// If aim asisst is used. Disable to disable var/aim_assist = TRUE /datum/action/cooldown/spell/pointed/New(Target) @@ -65,17 +65,18 @@ return TRUE /datum/action/cooldown/spell/pointed/InterceptClickOn(mob/living/caller, params, atom/target) - var/atom/aim_assist_target - if(aim_assist && isturf(target)) - // Find any human in the list. We aren't picky, it's aim assist after all - aim_assist_target = locate(/mob/living/carbon/human) in target - if(!aim_assist_target) - // If we didn't find a human, we settle for any living at all - aim_assist_target = locate(/mob/living) in target - + if(aim_assist) + aim_assist_target = aim_assist(caller, target) return ..(caller, params, aim_assist_target || target) +/datum/action/cooldown/spell/pointed/proc/aim_assist(mob/living/caller, atom/target) + if(!isturf(target)) + return + + // Find any human, or if that fails, any living target + return locate(/mob/living/carbon/human) in target || locate(/mob/living) in target + /datum/action/cooldown/spell/pointed/is_valid_target(atom/cast_on) if(cast_on == owner) to_chat(owner, span_warning("You cannot cast [src] on yourself!")) diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index c83f710d1df1d..e2feaa2bc26ed 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -50,13 +50,10 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE) . = ..() AddComponent(/datum/component/simple_rotation) -/obj/machinery/bsa/back/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) //make sure it has a data buffer - return - var/obj/item/multitool/M = I +/obj/machinery/bsa/back/multitool_act(mob/living/user, obj/item/multitool/M) M.set_buffer(src) balloon_alert(user, "saved to multitool buffer") - return TRUE + return ITEM_INTERACT_SUCCESS /obj/machinery/bsa/front name = "Bluespace Artillery Bore" @@ -67,13 +64,10 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE) . = ..() AddComponent(/datum/component/simple_rotation) -/obj/machinery/bsa/front/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) //make sure it has a data buffer - return - var/obj/item/multitool/M = I +/obj/machinery/bsa/front/multitool_act(mob/living/user, obj/item/multitool/M) M.set_buffer(src) balloon_alert(user, "saved to multitool buffer") - return TRUE + return ITEM_INTERACT_SUCCESS /obj/machinery/bsa/middle name = "Bluespace Artillery Fusor" @@ -86,22 +80,19 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE) . = ..() AddComponent(/datum/component/simple_rotation) -/obj/machinery/bsa/middle/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) - return - var/obj/item/multitool/M = I - if(M.buffer) - if(istype(M.buffer, /obj/machinery/bsa/back)) - back_ref = WEAKREF(M.buffer) - to_chat(user, span_notice("You link [src] with [M.buffer].")) - M.set_buffer(null) - else if(istype(M.buffer, /obj/machinery/bsa/front)) - front_ref = WEAKREF(M.buffer) - to_chat(user, span_notice("You link [src] with [M.buffer].")) - M.set_buffer(null) - else - to_chat(user, span_warning("[I]'s data buffer is empty!")) - return TRUE +/obj/machinery/bsa/middle/multitool_act(mob/living/user, obj/item/multitool/tool) + . = NONE + + if(istype(tool.buffer, /obj/machinery/bsa/back)) + back_ref = WEAKREF(tool.buffer) + to_chat(user, span_notice("You link [src] with [tool.buffer].")) + tool.set_buffer(null) + return ITEM_INTERACT_SUCCESS + else if(istype(tool.buffer, /obj/machinery/bsa/front)) + front_ref = WEAKREF(tool.buffer) + to_chat(user, span_notice("You link [src] with [tool.buffer].")) + tool.set_buffer(null) + return ITEM_INTERACT_SUCCESS /obj/machinery/bsa/middle/proc/check_completion() var/obj/machinery/bsa/front/front = front_ref?.resolve() diff --git a/code/modules/surgery/blood_filter.dm b/code/modules/surgery/blood_filter.dm index 0193ee9c01a8d..401a412bc1c9e 100644 --- a/code/modules/surgery/blood_filter.dm +++ b/code/modules/surgery/blood_filter.dm @@ -15,6 +15,13 @@ return ..() /datum/surgery_step/filter_blood/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE) + display_results( + user, + target, + span_notice("You begin filtering [target]'s blood..."), + span_notice("[user] uses [tool] to filter [target]'s blood."), + span_notice("[user] uses [tool] on [target]'s chest."), + ) if(!..()) return while(has_filterable_chems(target, tool)) @@ -33,6 +40,8 @@ */ /datum/surgery_step/filter_blood/proc/has_filterable_chems(mob/living/carbon/target, obj/item/blood_filter/bloodfilter) if(!length(target.reagents?.reagent_list)) + bloodfilter.audible_message(span_notice("[bloodfilter] pings as it reports no chemicals detected in [target]'s blood.")) + playsound(get_turf(target), 'sound/machines/ping.ogg', 75, TRUE, falloff_exponent = 12, falloff_distance = 1) return FALSE if(!length(bloodfilter.whitelist)) @@ -49,16 +58,9 @@ implements = list(/obj/item/blood_filter = 95) repeatable = TRUE time = 2.5 SECONDS - success_sound = 'sound/machines/ping.ogg' + success_sound = 'sound/machines/card_slide.ogg' /datum/surgery_step/filter_blood/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - display_results( - user, - target, - span_notice("You begin filtering [target]'s blood..."), - span_notice("[user] uses [tool] to filter [target]'s blood."), - span_notice("[user] uses [tool] on [target]'s chest."), - ) display_pain(target, "You feel a throbbing pain in your chest!") /datum/surgery_step/filter_blood/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) @@ -66,13 +68,13 @@ if(target.reagents?.total_volume) for(var/datum/reagent/chem as anything in target.reagents.reagent_list) if(!length(bloodfilter.whitelist) || (chem.type in bloodfilter.whitelist)) - target.reagents.remove_reagent(chem.type, min(chem.volume * 0.22, 10)) + target.reagents.remove_reagent(chem.type, min(round(chem.volume * 0.22, 0.2), 10)) display_results( user, target, - span_notice("\The [tool] pings as it finishes filtering [target]'s blood."), - span_notice("\The [tool] pings as it stops pumping [target]'s blood."), - span_notice("\The [tool] pings as it stops pumping."), + span_notice("\The [tool] completes a cycle filtering [target]'s blood."), + span_notice("\The [tool] whirrs as it filters [target]'s blood."), + span_notice("\The [tool] whirrs as it pumps."), ) if(locate(/obj/item/healthanalyzer) in user.held_items) diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index c03a930395ab9..06599c2fb4809 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -351,7 +351,7 @@ check_list += "\t [span_boldwarning("Your [name] is suffering [wound.a_or_from] [LOWER_TEXT(wound.name)]!!!")]" for(var/obj/item/embedded_thing in embedded_objects) - var/stuck_word = embedded_thing.isEmbedHarmless() ? "stuck" : "embedded" + var/stuck_word = embedded_thing.is_embed_harmless() ? "stuck" : "embedded" check_list += "\t There is \a [embedded_thing] [stuck_word] in your [name]!" /obj/item/bodypart/blob_act() @@ -1096,15 +1096,15 @@ if(embed in embedded_objects) // go away return // We don't need to do anything with projectile embedding, because it will never reach this point - RegisterSignal(embed, COMSIG_ITEM_EMBEDDING_UPDATE, PROC_REF(embedded_object_changed)) embedded_objects += embed + RegisterSignal(embed, COMSIG_ITEM_EMBEDDING_UPDATE, PROC_REF(embedded_object_changed)) refresh_bleed_rate() /// INTERNAL PROC, DO NOT USE /// Cleans up any attachment we have to the embedded object, removes it from our list /obj/item/bodypart/proc/_unembed_object(obj/item/unembed) - UnregisterSignal(unembed, COMSIG_ITEM_EMBEDDING_UPDATE) embedded_objects -= unembed + UnregisterSignal(unembed, COMSIG_ITEM_EMBEDDING_UPDATE) refresh_bleed_rate() /obj/item/bodypart/proc/embedded_object_changed(obj/item/embedded_source) @@ -1157,7 +1157,7 @@ cached_bleed_rate += 0.5 for(var/obj/item/embeddies in embedded_objects) - if(!embeddies.isEmbedHarmless()) + if(!embeddies.is_embed_harmless()) cached_bleed_rate += 0.25 for(var/datum/wound/iter_wound as anything in wounds) diff --git a/code/modules/surgery/bodyparts/ghetto_parts.dm b/code/modules/surgery/bodyparts/ghetto_parts.dm index 36c0310dead76..03326f3754e45 100644 --- a/code/modules/surgery/bodyparts/ghetto_parts.dm +++ b/code/modules/surgery/bodyparts/ghetto_parts.dm @@ -14,6 +14,9 @@ brute_modifier = 1.2 burn_modifier = 1.5 bodypart_traits = list(TRAIT_CHUNKYFINGERS) + disabling_threshold_percentage = 1 + bodypart_flags = BODYPART_UNHUSKABLE + biological_state = (BIO_JOINTED) /obj/item/bodypart/arm/left/ghetto/Initialize(mapload, ...) . = ..() @@ -35,6 +38,9 @@ brute_modifier = 1.2 burn_modifier = 1.5 bodypart_traits = list(TRAIT_CHUNKYFINGERS) + disabling_threshold_percentage = 1 + bodypart_flags = BODYPART_UNHUSKABLE + biological_state = (BIO_JOINTED) /obj/item/bodypart/arm/right/ghetto/Initialize(mapload, ...) . = ..() @@ -54,6 +60,9 @@ unarmed_effectiveness = 10 brute_modifier = 1.2 burn_modifier = 1.5 + disabling_threshold_percentage = 1 + bodypart_flags = BODYPART_UNHUSKABLE + biological_state = (BIO_JOINTED) /obj/item/bodypart/leg/left/ghetto/Initialize(mapload, ...) . = ..() @@ -73,6 +82,9 @@ unarmed_effectiveness = 10 brute_modifier = 1.2 burn_modifier = 1.5 + disabling_threshold_percentage = 1 + bodypart_flags = BODYPART_UNHUSKABLE + biological_state = (BIO_JOINTED) /obj/item/bodypart/leg/right/ghetto/Initialize(mapload, ...) . = ..() diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 66f42c1e039ba..16a9a288bf0ba 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -141,7 +141,7 @@ if (!can_dismember) return FALSE - if(owner.stat < HARD_CRIT) + if(!HAS_TRAIT(owner, TRAIT_CURSED) && owner.stat < HARD_CRIT) return FALSE return ..() diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index fb0647d0fb504..a0955af4e46c8 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -48,6 +48,15 @@ which_hand = BODY_ZONE_PRECISE_R_HAND return get_bodypart(check_zone(which_hand)) +/// Gets the inactive hand of the mob. Returns FALSE on non-carbons, otherwise returns the /obj/item/bodypart. +/mob/proc/get_inactive_hand() + return null + +/mob/living/carbon/get_inactive_hand() + var/which_hand = BODY_ZONE_PRECISE_R_HAND + if(!(active_hand_index % RIGHT_HANDS)) + which_hand = BODY_ZONE_PRECISE_L_HAND + return get_bodypart(check_zone(which_hand)) /mob/proc/has_left_hand(check_disabled = TRUE) return TRUE @@ -130,7 +139,7 @@ /mob/living/carbon/proc/has_embedded_objects(include_harmless=FALSE) for(var/obj/item/bodypart/bodypart as anything in bodyparts) for(var/obj/item/embedded in bodypart.embedded_objects) - if(!include_harmless && embedded.isEmbedHarmless()) + if(!include_harmless && embedded.is_embed_harmless()) continue return TRUE diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 97fa50d76c85b..6e3b5ca921bc4 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -48,7 +48,7 @@ old_owner.gib(DROP_ALL_REMAINS) /obj/item/bodypart/chest/can_dismember(obj/item/item) - if(owner.stat < HARD_CRIT || !contents.len) + if((!HAS_TRAIT(owner, TRAIT_CURSED) && owner.stat < HARD_CRIT) || !contents.len) return FALSE return ..() diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm index 3c645f240d484..674f5803f57be 100644 --- a/code/modules/surgery/dental_implant.dm +++ b/code/modules/surgery/dental_implant.dm @@ -1,9 +1,13 @@ +#define MARK_TOOTH 1 + /datum/surgery/dental_implant name = "Dental implant" possible_locs = list(BODY_ZONE_PRECISE_MOUTH) steps = list( /datum/surgery_step/drill/pill, /datum/surgery_step/insert_pill, + /datum/surgery_step/search_teeth, + /datum/surgery_step/close, ) /datum/surgery_step/drill/pill/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -84,3 +88,32 @@ item_target.reagents.trans_to(owner, item_target.reagents.total_volume, transferred_by = owner, methods = INGEST) qdel(target) return TRUE + +/datum/surgery_step/search_teeth + name = "search teeth (hand)" + accept_hand = TRUE + time = 2 SECONDS + repeatable = TRUE + +/datum/surgery_step/search_teeth/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results( + user, + target, + span_notice("You begin looking in [target]'s mouth for implantable teeth..."), + span_notice("[user] begins to look in [target]'s mouth."), + span_notice("[user] begins to examine [target]'s teeth."), + ) + display_pain(target, "You feel fingers poke around at your teeth.") + +/datum/surgery_step/search_teeth/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) + display_results( + user, + target, + span_notice("[user] marks a tooth in [target]'s mouth."), + span_notice("[user] marks a tooth in [target]'s mouth."), + span_notice("[user] prods a tooth in [target]'s mouth."), + ) + surgery.status = MARK_TOOTH + return ..() + +#undef MARK_TOOTH diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 69c246d9e8de5..95c952e7724d4 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -1,5 +1,5 @@ ///How many research points you gain from dissecting a Human. -#define BASE_HUMAN_REWARD 500 +#define BASE_HUMAN_REWARD 10 /datum/surgery/advanced/experimental_dissection name = "Experimental Dissection" diff --git a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm new file mode 100644 index 0000000000000..e9da6197ed273 --- /dev/null +++ b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm @@ -0,0 +1,201 @@ +/*! + * Contains Voltaic Combat Cyberheart + */ +#define DOAFTER_IMPLANTING_HEART "implanting" + +/obj/item/organ/internal/heart/cybernetic/anomalock + name = "Voltaic Combat Cyberheart" + desc = "A cutting-edge cyberheart, originally designed for Nanotrasen killsquad usage but later declassified for normal research. Voltaic technology allows the heart to keep the body upright in dire circumstances, alongside redirecting anomalous flux energy to fully shield the user from shocks and electro-magnetic pulses. Requires a refined Flux core as a power source." + icon_state = "anomalock_heart" + + COOLDOWN_DECLARE(survival_cooldown) + ///Cooldown for the activation of the organ + var/survival_cooldown_time = 5 MINUTES + ///The lightning effect on our mob when the implant is active + var/mutable_appearance/lightning_overlay + ///how long the lightning lasts + var/lightning_timer + + //---- Anomaly core variables: + ///The core item the organ runs off. + var/obj/item/assembly/signaler/anomaly/core + ///Accepted types of anomaly cores. + var/required_anomaly = /obj/item/assembly/signaler/anomaly/flux + ///If this one starts with a core in. + var/prebuilt = FALSE + ///If the core is removable once socketed. + var/core_removable = TRUE + +/obj/item/organ/internal/heart/cybernetic/anomalock/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) + . = ..() + if(!core) + return + add_lightning_overlay(30 SECONDS) + playsound(organ_owner, 'sound/items/eshield_recharge.ogg', 40) + organ_owner.AddElement(/datum/element/empprotection, EMP_PROTECT_SELF|EMP_PROTECT_CONTENTS) + organ_owner.apply_status_effect(/datum/status_effect/stabilized/yellow, src) + RegisterSignal(organ_owner, SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), PROC_REF(activate_survival)) + RegisterSignal(organ_owner, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act)) + +/obj/item/organ/internal/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special) + . = ..() + if(!core) + return + UnregisterSignal(organ_owner, SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION)) + organ_owner.RemoveElement(/datum/element/empprotection, EMP_PROTECT_SELF|EMP_PROTECT_CONTENTS) + organ_owner.remove_status_effect(/datum/status_effect/stabilized/yellow) + tesla_zap(source = organ_owner, zap_range = 20, power = 2.5e5, cutoff = 1e3) + qdel(src) + +/obj/item/organ/internal/heart/cybernetic/anomalock/attack(mob/living/target_mob, mob/living/user, params) + if(target_mob != user || !istype(target_mob) || !core) + return ..() + + if(DOING_INTERACTION(user, DOAFTER_IMPLANTING_HEART)) + return + user.balloon_alert(user, "this will hurt...") + to_chat(user, span_userdanger("Black cyberveins tear your skin apart, pulling the heart into your ribcage. This feels unwise..")) + if(!do_after(user, 5 SECONDS, interaction_key = DOAFTER_IMPLANTING_HEART)) + return ..() + playsound(target_mob, 'sound/weapons/slice.ogg', 100, TRUE) + user.temporarilyRemoveItemFromInventory(src, TRUE) + Insert(user) + user.apply_damage(100, BRUTE, BODY_ZONE_CHEST) + user.emote("scream") + return TRUE + +/obj/item/organ/internal/heart/cybernetic/anomalock/proc/on_emp_act(severity) + SIGNAL_HANDLER + add_lightning_overlay(10 SECONDS) + +/obj/item/organ/internal/heart/cybernetic/anomalock/proc/add_lightning_overlay(time_to_last = 10 SECONDS) + if(lightning_overlay) + lightning_timer = addtimer(CALLBACK(src, PROC_REF(clear_lightning_overlay)), time_to_last, (TIMER_UNIQUE|TIMER_OVERRIDE)) + return + lightning_overlay = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "lightning") + owner.add_overlay(lightning_overlay) + lightning_timer = addtimer(CALLBACK(src, PROC_REF(clear_lightning_overlay)), time_to_last, (TIMER_UNIQUE|TIMER_OVERRIDE)) + +/obj/item/organ/internal/heart/cybernetic/anomalock/proc/clear_lightning_overlay() + owner.cut_overlay(lightning_overlay) + lightning_overlay = null + +/obj/item/organ/internal/heart/cybernetic/anomalock/attack_self(mob/user, modifiers) + . = ..() + if(.) + return + + if(core) + return attack(user, user, modifiers) + +/obj/item/organ/internal/heart/cybernetic/anomalock/on_life(seconds_per_tick, times_fired) + . = ..() + if(owner.blood_volume <= BLOOD_VOLUME_NORMAL) + owner.blood_volume += 5 * seconds_per_tick + if(owner.health <= owner.crit_threshold) + activate_survival(owner) + +///Does a few things to try to help you live whatever you may be going through +/obj/item/organ/internal/heart/cybernetic/anomalock/proc/activate_survival(mob/living/carbon/organ_owner) + if(!COOLDOWN_FINISHED(src, survival_cooldown)) + return + + organ_owner.apply_status_effect(/datum/status_effect/voltaic_overdrive) + add_lightning_overlay(30 SECONDS) + COOLDOWN_START(src, survival_cooldown, survival_cooldown_time) + addtimer(CALLBACK(src, PROC_REF(notify_cooldown), organ_owner), COOLDOWN_TIMELEFT(src, survival_cooldown)) + +///Alerts our owner that the organ is ready to do its thing again +/obj/item/organ/internal/heart/cybernetic/anomalock/proc/notify_cooldown(mob/living/carbon/organ_owner) + balloon_alert(organ_owner, "your heart strenghtens") + playsound(organ_owner, 'sound/items/eshield_recharge.ogg', 40) + +///Returns the mob we are implanted in so that the electricity effect doesn't runtime +/obj/item/organ/internal/heart/cybernetic/anomalock/proc/get_held_mob() + return owner + +/obj/item/organ/internal/heart/cybernetic/anomalock/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, required_anomaly)) + return NONE + if(core) + balloon_alert(user, "core already in!") + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(tool, src)) + return ITEM_INTERACT_BLOCKING + core = tool + balloon_alert(user, "core installed") + playsound(src, 'sound/machines/click.ogg', 30, TRUE) + add_organ_trait(TRAIT_SHOCKIMMUNE) + update_icon_state() + return ITEM_INTERACT_SUCCESS + +/obj/item/organ/internal/heart/cybernetic/anomalock/screwdriver_act(mob/living/user, obj/item/tool) + . = ..() + if(!core) + balloon_alert(user, "no core!") + return + if(!core_removable) + balloon_alert(user, "can't remove core!") + return + balloon_alert(user, "removing core...") + if(!do_after(user, 3 SECONDS, target = src)) + balloon_alert(user, "interrupted!") + return + balloon_alert(user, "core removed") + core.forceMove(drop_location()) + if(Adjacent(user) && !issilicon(user)) + user.put_in_hands(core) + core = null + remove_organ_trait(TRAIT_SHOCKIMMUNE) + update_icon_state() + +/obj/item/organ/internal/heart/cybernetic/anomalock/update_icon_state() + . = ..() + icon_state = initial(icon_state) + (core ? "-core" : "") + +/obj/item/organ/internal/heart/cybernetic/anomalock/prebuilt/Initialize(mapload) + . = ..() + core = new /obj/item/assembly/signaler/anomaly/flux(src) + update_icon_state() + +/datum/status_effect/voltaic_overdrive + id = "voltaic_overdrive" + duration = 30 SECONDS + alert_type = /atom/movable/screen/alert/status_effect/anomalock_active + show_duration = TRUE + +/datum/status_effect/voltaic_overdrive/tick(seconds_between_ticks) + . = ..() + + if(owner.health <= owner.crit_threshold) + owner.heal_overall_damage(5, 5) + owner.adjustOxyLoss(-5) + owner.adjustToxLoss(-5) + +/datum/status_effect/voltaic_overdrive/on_apply() + . = ..() + owner.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) + REMOVE_TRAIT(src, TRAIT_CRITICAL_CONDITION, STAT_TRAIT) + owner.reagents.add_reagent(/datum/reagent/medicine/coagulant, 5) + owner.add_filter("emp_shield", 2, outline_filter(1, "#639BFF")) + to_chat(owner, span_revendanger("You feel a burst of energy! It's do or die!")) + if(iscarbon(owner)) + var/mob/living/carbon/carbon_owner = owner + carbon_owner.gain_trauma(/datum/brain_trauma/special/tenacity, TRAUMA_RESILIENCE_ABSOLUTE) + +/datum/status_effect/voltaic_overdrive/on_remove() + . = ..() + owner.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) + owner.remove_filter("emp_shield") + owner.balloon_alert(owner, "your heart weakens") + if(iscarbon(owner)) + var/mob/living/carbon/carbon_owner = owner + carbon_owner.cure_trauma_type(/datum/brain_trauma/special/tenacity, TRAUMA_RESILIENCE_ABSOLUTE) + + +/atom/movable/screen/alert/status_effect/anomalock_active + name = "voltaic overdrive" + icon_state = "anomalock_heart" + desc = "Voltaic energy is flooding your muscles, keeping your body upright. You have 30 seconds before it falters!" + +#undef DOAFTER_IMPLANTING_HEART diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 17444590cf2ef..a555548e43268 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -124,10 +124,6 @@ if(isnull(step)) return FALSE var/obj/item/tool = user.get_active_held_item() - if(istype(tool, /obj/item/borg/cyborg_omnitool)) //catches borg surgeries - var/obj/item/borg/cyborg_omnitool/toolarm = tool - if(toolarm.selected) - tool = toolarm.selected if(step.try_op(user, target, user.zone_selected, tool, src, try_to_fail)) return TRUE if(tool && tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 6c3ee9c014713..2bd8f485887f8 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -286,8 +286,8 @@ //saws are very accurate and fast at butchering var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/chainsaw) - AddComponent( - /datum/component/slapcrafting,\ + AddElement( + /datum/element/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) @@ -316,6 +316,7 @@ attack_verb_continuous = list("slaps") attack_verb_simple = list("slap") interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_IGNORE_MOBILITY + tool_behaviour = TOOL_DRAPES /obj/item/surgical_drapes/Initialize(mapload) . = ..() diff --git a/code/modules/transport/tram/tram_floors.dm b/code/modules/transport/tram/tram_floors.dm index 9f0b6907fe9c1..f267ccf5cdc84 100644 --- a/code/modules/transport/tram/tram_floors.dm +++ b/code/modules/transport/tram/tram_floors.dm @@ -183,7 +183,7 @@ integrity_failure = 0.75 armor_type = /datum/armor/tram_floor layer = TRAM_FLOOR_LAYER - plane = FLOOR_PLANE + plane = GAME_PLANE obj_flags = BLOCK_Z_OUT_DOWN | BLOCK_Z_OUT_UP appearance_flags = PIXEL_SCALE|KEEP_TOGETHER var/secured = TRUE diff --git a/code/modules/transport/tram/tram_signals.dm b/code/modules/transport/tram/tram_signals.dm index db8aa17ddcb3e..faf4a46e11e28 100644 --- a/code/modules/transport/tram/tram_signals.dm +++ b/code/modules/transport/tram/tram_signals.dm @@ -473,6 +473,7 @@ icon_state = "sensor-base" desc = "Uses an infrared beam to detect passing trams. Works when paired with a sensor on the other side of the track." layer = TRAM_RAIL_LAYER + plane = FLOOR_PLANE use_power = NO_POWER_USE circuit = /obj/item/circuitboard/machine/guideway_sensor /// Sensors work in a married pair diff --git a/code/modules/transport/transport_module.dm b/code/modules/transport/transport_module.dm index 268452743e7b2..104601f2f6ca3 100644 --- a/code/modules/transport/transport_module.dm +++ b/code/modules/transport/transport_module.dm @@ -14,7 +14,7 @@ armor_type = /datum/armor/transport_module max_integrity = 50 layer = TRAM_FLOOR_LAYER - plane = FLOOR_PLANE + plane = GAME_PLANE smoothing_flags = SMOOTH_BITMASK smoothing_groups = SMOOTH_GROUP_INDUSTRIAL_LIFT canSmoothWith = SMOOTH_GROUP_INDUSTRIAL_LIFT diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 3fc6db542196e..8fafe30ac7b93 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -127,6 +127,7 @@ #include "container_sanity.dm" #include "crayons.dm" #include "create_and_destroy.dm" +#include "cyborg_tool.dm" #include "dcs_check_list_arguments.dm" #include "dcs_get_id_from_elements.dm" #include "designs.dm" @@ -179,6 +180,7 @@ #include "map_landmarks.dm" #include "mapload_space_verification.dm" #include "mapping.dm" +#include "mapping_nearstation_test.dm" #include "mecha_damage.dm" #include "medical_wounds.dm" #include "merge_type.dm" @@ -212,6 +214,7 @@ #include "pills.dm" #include "plane_double_transform.dm" #include "plane_dupe_detector.dm" +#include "plane_sanity.dm" #include "plantgrowth_tests.dm" #include "preference_species.dm" #include "preferences.dm" @@ -255,6 +258,7 @@ #include "spell_mindswap.dm" #include "spell_names.dm" #include "spell_shapeshift.dm" +#include "spell_timestop.dm" #include "spies.dm" #include "spritesheets.dm" #include "stack_singular_name.dm" diff --git a/code/modules/unit_tests/cyborg_tool.dm b/code/modules/unit_tests/cyborg_tool.dm new file mode 100644 index 0000000000000..39aed619ec50d --- /dev/null +++ b/code/modules/unit_tests/cyborg_tool.dm @@ -0,0 +1,20 @@ +/// Regression test for the cyborg omnitool to ensure it goes through proper channels +/datum/unit_test/cyborg_tool + var/times_wrenched = 0 + +/datum/unit_test/cyborg_tool/Run() + var/mob/living/carbon/human/consistent/not_a_borg = allocate(__IMPLIED_TYPE__) + var/obj/item/borg/cyborg_omnitool/engineering/tool = allocate(__IMPLIED_TYPE__) + tool.tool_behaviour = TOOL_WRENCH + + not_a_borg.put_in_active_hand(tool) + + var/obj/structure/frame/machine/frame = allocate(__IMPLIED_TYPE__) + RegisterSignal(frame, COMSIG_ATOM_TOOL_ACT(TOOL_WRENCH), PROC_REF(wrenched)) + + not_a_borg.ClickOn(frame) + TEST_ASSERT_EQUAL(times_wrenched, 1, "Wrenching the frame with a cyborg omnitool should have triggered the wrenched signal") + +/datum/unit_test/cyborg_tool/proc/wrenched(...) + SIGNAL_HANDLER + times_wrenched += 1 diff --git a/code/modules/unit_tests/focus_only_tests.dm b/code/modules/unit_tests/focus_only_tests.dm index 15d04ee885233..31f34d9f2fb94 100644 --- a/code/modules/unit_tests/focus_only_tests.dm +++ b/code/modules/unit_tests/focus_only_tests.dm @@ -47,3 +47,6 @@ /// Checks that maploaded mobs with either the `atmos_requirements` or `body_temp_sensitive` /datum/unit_test/focus_only/atmos_and_temp_requirements + +/// Ensures only whitelisted planes can have TOPDOWN_LAYERing, and vis versa +/datum/unit_test/focus_only/topdown_filtering diff --git a/code/modules/unit_tests/lootpanel.dm b/code/modules/unit_tests/lootpanel.dm index 1903c22d54652..41374a1950c02 100644 --- a/code/modules/unit_tests/lootpanel.dm +++ b/code/modules/unit_tests/lootpanel.dm @@ -2,8 +2,8 @@ abstract_type = /datum/unit_test/lootpanel /datum/unit_test/lootpanel/contents/Run() - var/datum/client_interface/mock_client = new() - var/datum/lootpanel/panel = new(mock_client) + var/datum/client_interface/mock_client = allocate(/datum/client_interface) + var/datum/lootpanel/panel = allocate(/datum/lootpanel, mock_client) var/mob/living/carbon/human/labrat = allocate(/mob/living/carbon/human/consistent) mock_client.mob = labrat var/turf/one_over = locate(run_loc_floor_bottom_left.x + 1, run_loc_floor_bottom_left.y, run_loc_floor_bottom_left.z) @@ -32,4 +32,3 @@ TEST_ASSERT_EQUAL(length(panel.contents), 2, "Panel shouldnt dupe searchables if reopened") mock_client.mob = null - diff --git a/code/modules/unit_tests/mapload_space_verification.dm b/code/modules/unit_tests/mapload_space_verification.dm index 35556c85fb482..843de4f8fdde2 100644 --- a/code/modules/unit_tests/mapload_space_verification.dm +++ b/code/modules/unit_tests/mapload_space_verification.dm @@ -32,6 +32,8 @@ var/area/turf_area = get_area(iterated_turf) if(!isspaceturf(iterated_turf) || is_type_in_typecache(turf_area, excluded_area_typecache)) continue // Alright, so let's assume we have intended behavior. If something yorks, we'll get a bare `/area` (maploader?) or a mapper is doing something they shouldn't be doing. + if(HAS_TRAIT(iterated_turf, TRAIT_HYPERSPACE_STOPPED)) + continue // This means that a shuttle with a noop template turf is just temporarily parked ontop of us and that we're not actually a part of it. We don't have to care about it as it will leave us alone when it flies away. // We need turf_area.type for the error message because we have fifteen million ruin areas named "Unexplored Location" and it's completely unhelpful here. TEST_FAIL("Space turf [iterated_turf.type] found in non-allowed area ([turf_area.type]) at [AREACOORD(iterated_turf)]! Please ensure that all space turfs are in an /area/space!") diff --git a/code/modules/unit_tests/mapping_nearstation_test.dm b/code/modules/unit_tests/mapping_nearstation_test.dm new file mode 100644 index 0000000000000..d428b826634b5 --- /dev/null +++ b/code/modules/unit_tests/mapping_nearstation_test.dm @@ -0,0 +1,40 @@ +///Detects movables that may have been accidentally placed in space, as well as movables which do not have the proper nearspace area (meaning they aren't lit properly.) +/datum/unit_test/mapping_nearstation_test + priority = TEST_PRE + +/datum/unit_test/mapping_nearstation_test/Run() + if(SSmapping.is_planetary()) + return //No need to test for orphaned spaced atoms on this map. + + var/list/safe_atoms = typecacheof(list( + /atom/movable/mirage_holder, + /obj/docking_port, + /obj/effect/landmark, + /obj/effect/abstract, + /obj/effect/mapping_error, + )) //Mapping stuff that we don't actually have to be concerned about. + var/list/safe_areas = typecacheof(list( + /area/misc/testroom, + /area/station/holodeck, + )) + + for(var/station_z in SSmapping.levels_by_trait(ZTRAIT_STATION)) + var/list/turfs_to_check = Z_TURFS(station_z) + for(var/turf/station_turf as anything in turfs_to_check) + var/area/turf_area = station_turf.loc + if(turf_area.static_lighting || is_type_in_typecache(turf_area, safe_areas)) //Only care about turfs that don't have lighting enabled. + continue + var/has_thing = FALSE + for(var/atom/movable/thing_on_the_turf as anything in station_turf.contents) //Find an item on the turf, this can help the mapper identify the turf more easily when combined with the exact coords. + if(is_type_in_typecache(thing_on_the_turf, safe_atoms)) + continue + TEST_FAIL("[station_turf.x], [station_turf.y], [station_turf.z]: [thing_on_the_turf.type] with area of type [turf_area.type]") + has_thing = TRUE + break + if(!has_thing && !isspaceturf(station_turf) && !istype(station_turf, /turf/open/openspace)) //In case it's just a turf without an area + if(istype(station_turf, /turf/open/floor/engine/hull/ceiling)) + TEST_FAIL("[station_turf.x], [station_turf.y], [station_turf.z]: [station_turf.type] with area of type [turf_area.type]. The turf on the z-level below is a shuttle dock and generated me! An error landmark has been generated on the map for easier debugging!") + else + TEST_FAIL("[station_turf.x], [station_turf.y], [station_turf.z]: [station_turf.type] with area of type [turf_area.type]") + if(!succeeded) + TEST_FAIL("Movable Atom located without a proper area. Please verify they are supposed to be there. If they are correct, change the area to /area/space/nearstation (or the correct surrounding type).") diff --git a/code/modules/unit_tests/outfit_sanity.dm b/code/modules/unit_tests/outfit_sanity.dm index 554d226ed2e72..36fc4570540f4 100644 --- a/code/modules/unit_tests/outfit_sanity.dm +++ b/code/modules/unit_tests/outfit_sanity.dm @@ -16,7 +16,7 @@ uniform = /obj/item/clothing/under/suit/tuxedo glasses = /obj/item/clothing/glasses/sunglasses - mask = /obj/item/clothing/mask/cigarette/cigar/havana + mask = /obj/item/cigarette/cigar/havana shoes = /obj/item/clothing/shoes/laceup l_hand = /obj/item/stack/spacecash/c1000 r_hand = /obj/item/stack/spacecash/c1000 @@ -25,19 +25,19 @@ /datum/outfit/duffel_user name = "Mr. Runtime" back = /obj/item/storage/backpack/duffelbag - backpack_contents = list(/obj/item/clothing/mask/cigarette/cigar/havana) + backpack_contents = list(/obj/item/cigarette/cigar/havana) /// Satchels too /datum/outfit/stachel_user name = "Mr. Runtime" back = /obj/item/storage/backpack/satchel - backpack_contents = list(/obj/item/clothing/mask/cigarette/cigar/havana) + backpack_contents = list(/obj/item/cigarette/cigar/havana) /// And just in case we'll check backpacks /datum/outfit/backpack_user name = "Mr. Runtime" back = /obj/item/storage/backpack - backpack_contents = list(/obj/item/clothing/mask/cigarette/cigar/havana) + backpack_contents = list(/obj/item/cigarette/cigar/havana) /datum/unit_test/outfit_sanity/Run() var/datum/outfit/prototype_outfit = /datum/outfit diff --git a/code/modules/unit_tests/plane_sanity.dm b/code/modules/unit_tests/plane_sanity.dm new file mode 100644 index 0000000000000..890a0531908a4 --- /dev/null +++ b/code/modules/unit_tests/plane_sanity.dm @@ -0,0 +1,10 @@ +/// Ensures we have no invalid plane/layer combos post init +/datum/unit_test/plane_layer_sanity + priority = TEST_LONGER + +/datum/unit_test/plane_layer_sanity/Run() + // This fucker's gonna be slow, I'm sorry + for(var/mutable_appearance/appearance) + check_topdown_validity(appearance) + for(var/atom/thing) + check_topdown_validity(thing) diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicateinfiltrator.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicateinfiltrator.png index 0a9a5ef08e4ee..4c9212509d2ea 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicateinfiltrator.png and b/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicateinfiltrator.png differ diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicatesleeperagent.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicatesleeperagent.png index 0a9a5ef08e4ee..4c9212509d2ea 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicatesleeperagent.png and b/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicatesleeperagent.png differ diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_traitor.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_traitor.png index 0a9a5ef08e4ee..4c9212509d2ea 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_antag_icons_traitor.png and b/code/modules/unit_tests/screenshots/screenshot_antag_icons_traitor.png differ diff --git a/code/modules/unit_tests/screenshots/screenshot_dynamic_human_icons_syndicate_commando.png b/code/modules/unit_tests/screenshots/screenshot_dynamic_human_icons_syndicate_commando.png index c29a1e742f1f4..adc462ace50d1 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_dynamic_human_icons_syndicate_commando.png and b/code/modules/unit_tests/screenshots/screenshot_dynamic_human_icons_syndicate_commando.png differ diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index 706fe290cccf4..2f4f7a4b70ae7 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -6,7 +6,6 @@ // If you are refactoring a simple_animal, REMOVE it from this list var/list/allowed_types = list( /mob/living/simple_animal/bot, - /mob/living/simple_animal/bot/firebot, /mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/mulebot, /mob/living/simple_animal/bot/mulebot/paranormal, @@ -58,6 +57,7 @@ /mob/living/simple_animal/hostile/megafauna/legion/medium/right, /mob/living/simple_animal/hostile/megafauna/legion/small, /mob/living/simple_animal/hostile/megafauna/wendigo, + /mob/living/simple_animal/hostile/megafauna/wendigo/noportal, /mob/living/simple_animal/hostile/mimic, /mob/living/simple_animal/hostile/mimic/copy, /mob/living/simple_animal/hostile/mimic/copy/machine, diff --git a/code/modules/unit_tests/spell_timestop.dm b/code/modules/unit_tests/spell_timestop.dm new file mode 100644 index 0000000000000..f02900f7f8e77 --- /dev/null +++ b/code/modules/unit_tests/spell_timestop.dm @@ -0,0 +1,30 @@ +/// Regression test for timestop being a 3x3 instead of a 5x5 +/datum/unit_test/timestop + +/datum/unit_test/timestop/Run() + var/mob/living/carbon/human/dio = allocate(/mob/living/carbon/human/consistent) + var/mob/living/carbon/human/kakyoin = allocate(/mob/living/carbon/human/consistent) + var/mob/living/carbon/human/jotaro = allocate(/mob/living/carbon/human/consistent) + + var/turf/center = run_loc_floor_bottom_left + var/turf/in_range = locate(center.x + 2, center.y + 2, center.z) + var/turf/out_of_range = locate(in_range.x + 1, in_range.y + 1, in_range.z) + + dio.forceMove(center) + kakyoin.forceMove(in_range) + jotaro.forceMove(out_of_range) + + var/datum/action/cooldown/spell/timestop/timestop = new(dio) + timestop.spell_requirements = NONE + timestop.Grant(dio) + timestop.Trigger() + var/obj/effect/timestop/time_effect = locate() in center + TEST_ASSERT(time_effect, "Failed to create timestop effect") + sleep(0.1 SECONDS) // timestop is invoked async so let's just wait + + TEST_ASSERT(!dio.IsStun(), "Timestopper should not have frozen themselves when using timestop") + TEST_ASSERT(kakyoin.IsStun(), "Timestopper should have frozen the target within 2 tiles of range when using timestop") + TEST_ASSERT(!jotaro.IsStun(), "Timestopper should not have frozen the target outside of 2 tiles of range when using timestop") + + // cleanup + qdel(time_effect) diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm index afce8392d5828..ed2510b829434 100644 --- a/code/modules/unit_tests/unit_test.dm +++ b/code/modules/unit_tests/unit_test.dm @@ -286,6 +286,10 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) returnable_list += typesof(/obj/effect/anomaly/grav/high) //See above returnable_list += typesof(/obj/effect/timestop) + //Sparks can ignite a number of things, causing a fire to burn the floor away. Only you can prevent CI fires + returnable_list += typesof(/obj/effect/particle_effect/sparks) + //See above - These are one of those things. + returnable_list += typesof(/obj/effect/decal/cleanable/fuel_pool) //Invoke async in init, skippppp returnable_list += typesof(/mob/living/silicon/robot/model) //This lad also sleeps diff --git a/code/modules/uplink/uplink_items/job.dm b/code/modules/uplink/uplink_items/job.dm index 98378a9422a03..5e7ba1daba2be 100644 --- a/code/modules/uplink/uplink_items/job.dm +++ b/code/modules/uplink/uplink_items/job.dm @@ -390,3 +390,4 @@ restricted = TRUE refundable = FALSE purchasable_from = parent_type::purchasable_from & ~UPLINK_SPY + diff --git a/code/modules/vehicles/_vehicle.dm b/code/modules/vehicles/_vehicle.dm index faf95e8cd73c7..7da8fc0314b10 100644 --- a/code/modules/vehicles/_vehicle.dm +++ b/code/modules/vehicles/_vehicle.dm @@ -30,7 +30,7 @@ var/canmove = TRUE var/list/autogrant_actions_passenger //plain list of typepaths var/list/autogrant_actions_controller //assoc list "[bitflag]" = list(typepaths) - var/list/mob/occupant_actions //assoc list mob = list(type = action datum assigned to mob) + var/list/list/datum/action/occupant_actions //assoc list mob = list(type = action datum assigned to mob) ///This vehicle will follow us when we move (like atrailer duh) var/obj/vehicle/trailer var/are_legs_exposed = FALSE diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index f36beee83cd77..d35df3126636e 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -16,6 +16,7 @@ * Clicks are wither translated into mech_melee_attack (see mech_melee_attack.dm) * Or are used to call action() on equipped gear * Cooldown for gear is on the mech because exploits + * Cooldown for melee is on mech_melee_attack also because exploits */ /obj/vehicle/sealed/mecha name = "exosuit" @@ -28,7 +29,6 @@ movedelay = 1 SECONDS move_force = MOVE_FORCE_VERY_STRONG move_resist = MOVE_FORCE_EXTREMELY_STRONG - COOLDOWN_DECLARE(mecha_bump_smash) light_system = OVERLAY_LIGHT_DIRECTIONAL light_on = FALSE light_range = 6 @@ -137,9 +137,18 @@ var/stepsound = 'sound/mecha/mechstep.ogg' ///Sound played when the mech walks var/turnsound = 'sound/mecha/mechturn.ogg' + ///Sounds for types of melee attack + var/brute_attack_sound = 'sound/weapons/punch4.ogg' + var/burn_attack_sound = 'sound/items/welder.ogg' + var/tox_attack_sound = 'sound/effects/spray2.ogg' + ///Sound on wall destroying + var/destroy_wall_sound = 'sound/effects/meteorimpact.ogg' + + ///Melee attack verb + var/list/attack_verbs = list("hit", "hits", "hitting") ///Cooldown duration between melee punches - var/melee_cooldown = 10 + var/melee_cooldown = CLICK_CD_SLOW ///TIme taken to leave the mech var/exit_delay = 2 SECONDS @@ -151,6 +160,8 @@ var/is_currently_ejecting = FALSE ///Safety for weapons. Won't fire if enabled, and toggled by middle click. var/weapons_safety = FALSE + ///Don't play standard sound when set safety if TRUE. + var/safety_sound_custom = FALSE var/datum/effect_system/fluid_spread/smoke/smoke_system @@ -194,9 +205,6 @@ ///Wether we are strafing var/strafe = FALSE - ///Cooldown length between bumpsmashes - var/smashcooldown = 3 - ///Bool for whether this mech can only be used on lavaland var/lavaland_only = FALSE @@ -368,7 +376,8 @@ */ /obj/vehicle/sealed/mecha/proc/set_safety(mob/user) weapons_safety = !weapons_safety - SEND_SOUND(user, sound('sound/machines/beep.ogg', volume = 25)) + if(!safety_sound_custom) + SEND_SOUND(user, sound('sound/machines/beep.ogg', volume = 25)) balloon_alert(user, "equipment [weapons_safety ? "safe" : "ready"]") set_mouse_pointer() SEND_SIGNAL(src, COMSIG_MECH_SAFETIES_TOGGLE, user, weapons_safety) @@ -703,10 +712,9 @@ return use_energy(melee_energy_drain) - SEND_SIGNAL(user, COMSIG_MOB_USED_MECH_MELEE, src) - target.mech_melee_attack(src, user) - TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MELEE_ATTACK, melee_cooldown) - + SEND_SIGNAL(user, COMSIG_MOB_USED_CLICK_MECH_MELEE, src) + if(target.mech_melee_attack(src, user)) + TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MELEE_ATTACK, melee_cooldown) /// Driver alt clicks anything while in mech /obj/vehicle/sealed/mecha/proc/on_click_alt(mob/user, atom/target, params) @@ -909,3 +917,9 @@ act.button_icon_state = "mech_lights_off" balloon_alert(occupant, "lights [mecha_flags & LIGHTS_ON ? "on":"off"]") act.build_all_button_icons() + +/obj/vehicle/sealed/mecha/proc/melee_attack_effect(mob/living/victim, heavy) + if(heavy) + victim.Unconscious(2 SECONDS) + else + victim.Knockdown(4 SECONDS) diff --git a/code/modules/vehicles/mecha/combat/justice.dm b/code/modules/vehicles/mecha/combat/justice.dm new file mode 100644 index 0000000000000..babdb8af17b99 --- /dev/null +++ b/code/modules/vehicles/mecha/combat/justice.dm @@ -0,0 +1,535 @@ +#define DISMEMBER_CHANCE_HIGH 50 +#define DISMEMBER_CHANCE_LOW 25 + +#define MOVEDELAY_ANGRY 4.5 +#define MOVEDELAY_SAFETY 2.5 + +/obj/vehicle/sealed/mecha/justice + name = "\improper Justice" + desc = "Black and red syndicate mech designed for execution orders. \ + For safety reasons, the syndicate advises against standing too close." + icon_state = "justice" + base_icon_state = "justice" + movedelay = MOVEDELAY_SAFETY // fast + max_integrity = 200 // but weak + accesses = list(ACCESS_SYNDICATE) + armor_type = /datum/armor/mecha_justice + max_temperature = 40000 + force = 60 // dangerous in melee + damtype = BRUTE + destruction_sleep_duration = 10 + exit_delay = 10 + wreckage = /obj/structure/mecha_wreckage/justice + mech_type = EXOSUIT_MODULE_JUSTICE + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF + mecha_flags = ID_LOCK_ON | QUIET_STEPS | QUIET_TURNS | CAN_STRAFE | HAS_LIGHTS | MMI_COMPATIBLE | IS_ENCLOSED + destroy_wall_sound = 'sound/mecha/mech_blade_break_wall.ogg' + brute_attack_sound = 'sound/mecha/mech_blade_attack.ogg' + attack_verbs = list("cut", "cuts", "cutting") + weapons_safety = TRUE + safety_sound_custom = TRUE + max_equip_by_category = list( + MECHA_L_ARM = null, + MECHA_R_ARM = null, + MECHA_UTILITY = 3, + MECHA_POWER = 1, + MECHA_ARMOR = 2, + ) + step_energy_drain = 2 + +/datum/armor/mecha_justice + melee = 30 + bullet = 20 + laser = 20 + energy = 30 + fire = 100 + acid = 100 + +/obj/vehicle/sealed/mecha/justice/Initialize(mapload, built_manually) + . = ..() + RegisterSignal(src, COMSIG_MECHA_MELEE_CLICK, PROC_REF(justice_fatality)) //We do not hit those who are in crit or stun. We are finishing them. + transform = transform.Scale(1.04, 1.04) + +/obj/vehicle/sealed/mecha/justice/generate_actions() + . = ..() + initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/invisibility) + initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/charge_attack) + +/obj/vehicle/sealed/mecha/justice/update_icon_state() + . = ..() + if(LAZYLEN(occupants)) + icon_state = weapons_safety ? "[base_icon_state]" : "[base_icon_state]-angry" + if(!has_gravity()) + icon_state = "[icon_state]-fly" + +/obj/vehicle/sealed/mecha/justice/set_safety(mob/user) + . = ..() + if(weapons_safety) + movedelay = MOVEDELAY_SAFETY + else + movedelay = MOVEDELAY_ANGRY + + playsound(src, 'sound/mecha/mech_blade_safty.ogg', 75, FALSE) //everyone need to hear this sound + + update_appearance(UPDATE_ICON_STATE) + +/obj/vehicle/sealed/mecha/justice/Move(newloc, dir) + if(HAS_TRAIT(src, TRAIT_IMMOBILIZED)) + return + . = ..() + update_appearance(UPDATE_ICON_STATE) + +/// Says 1 of 3 epic phrases before attacking and make a finishing blow to targets in stun or crit after 1 SECOND. +/obj/vehicle/sealed/mecha/justice/proc/justice_fatality(datum/source, mob/living/pilot, atom/target, on_cooldown, is_adjacent) + SIGNAL_HANDLER + + if(!ishuman(target)) + return FALSE + var/mob/living/carbon/human/live_or_dead = target + if(live_or_dead.stat < UNCONSCIOUS && live_or_dead.getStaminaLoss() < 100) + return FALSE + var/obj/item/bodypart/check_head = live_or_dead.get_bodypart(BODY_ZONE_HEAD) + if(!check_head) + return FALSE + INVOKE_ASYNC(src, PROC_REF(finish_him), src, pilot, live_or_dead) + return TRUE + +/** + * ## finish_him + * + * Target's head is cut off (if it has one) + * Attack from invisibility and charged attack have higher priority. + * Arguments: + * * finisher - Mech pilot who makes an attack. + * * him - Target at which the mech makes an attack. + */ +/obj/vehicle/sealed/mecha/justice/proc/finish_him(obj/vehicle/sealed/mecha/my_mech, mob/finisher, mob/living/him) + say(pick("Take my Justice-Slash!", "A falling leaf...", "Justice is quite a lonely path"), forced = "Justice Mech") + playsound(src, 'sound/mecha/mech_stealth_pre_attack.ogg', 75, FALSE) + if(!do_after(finisher, 1 SECONDS, him)) + return + if(QDELETED(finisher)) + return + if(QDELETED(him)) + return + if(QDELETED(my_mech)) + return + if(!LAZYLEN(my_mech.occupants)) + return + var/turf/finish_turf = get_step(him, get_dir(my_mech, him)) + var/turf/for_line_turf = get_turf(my_mech) + var/obj/item/bodypart/in_your_head = him.get_bodypart(BODY_ZONE_HEAD) + in_your_head?.dismember(BRUTE) + playsound(src, brute_attack_sound, 75, FALSE) + for_line_turf.Beam(src, icon_state = "mech_charge", time = 8) + forceMove(finish_turf) + +/obj/vehicle/sealed/mecha/justice/melee_attack_effect(mob/living/victim, heavy) + if(!heavy) + victim.Knockdown(4 SECONDS) + return + if(!prob(DISMEMBER_CHANCE_HIGH)) + return + var/obj/item/bodypart/cut_bodypart = victim.get_bodypart(pick(BODY_ZONE_R_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG)) + cut_bodypart?.dismember(BRUTE) + + +/obj/vehicle/sealed/mecha/justice/mob_exit(mob/M, silent, randomstep, forced) + . = ..() + if(alpha == 255) + return + animate(src, alpha = 255, time = 0.5 SECONDS) + playsound(src, 'sound/mecha/mech_stealth_effect.ogg' , 75, FALSE) + +/obj/vehicle/sealed/mecha/justice/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration) + if(LAZYLEN(occupants)) + if(prob(60)) + new /obj/effect/temp_visual/mech_sparks(get_turf(src)) + playsound(src, 'sound/mecha/mech_stealth_effect.ogg' , 75, FALSE) + return + return ..() + +/datum/action/vehicle/sealed/mecha/invisibility + name = "Invisibility" + button_icon_state = "mech_stealth_off" + /// Is invisibility activated. + var/on = FALSE + /// Recharge check. + var/charge = TRUE + /// Varset for invisibility timer + var/invisibility_timer + /// Energy cost to become invisibile + var/energy_cost = 200 + /// Aoe pre attack sound. + var/stealth_pre_attack_sound = 'sound/mecha/mech_stealth_pre_attack.ogg' + /// Aoe attack sound. + var/stealth_attack_sound = 'sound/mecha/mech_stealth_attack.ogg' + +/datum/action/vehicle/sealed/mecha/invisibility/set_chassis(passed_chassis) + . = ..() + RegisterSignal(chassis, COMSIG_MECH_SAFETIES_TOGGLE, PROC_REF(on_toggle_safety)) + +/// update button icon when toggle safety. +/datum/action/vehicle/sealed/mecha/invisibility/proc/on_toggle_safety() + SIGNAL_HANDLER + + build_all_button_icons(UPDATE_BUTTON_STATUS) + +/datum/action/vehicle/sealed/mecha/invisibility/Trigger(trigger_flags) + . = ..() + if(!.) + return + on = !on + if(on) + invisibility_on() + else + invisibility_off() + +/datum/action/vehicle/sealed/mecha/invisibility/IsAvailable(feedback) + . = ..() + if(!.) + return FALSE + if(!chassis.has_charge(energy_cost)) + if(feedback) + owner.balloon_alert(owner, "not enough energy!") + return FALSE + if(chassis.weapons_safety) + if(feedback) + owner.balloon_alert(owner, "safety is on!") + return FALSE + if(!charge) + if(feedback) + owner.balloon_alert(owner, "recharging!") + return FALSE + + return TRUE + +///Called when invisibility activated. +/datum/action/vehicle/sealed/mecha/invisibility/proc/invisibility_on() + new /obj/effect/temp_visual/mech_sparks(get_turf(chassis)) + playsound(chassis, 'sound/mecha/mech_stealth_effect.ogg' , 75, FALSE) + check_charge_attack() + animate(chassis, alpha = 0, time = 0.5 SECONDS) + button_icon_state = "mech_stealth_on" + invisibility_timer = addtimer(CALLBACK(src, PROC_REF(end_stealth)), 20 SECONDS) + RegisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK, PROC_REF(stealth_attack_aoe)) + RegisterSignal(chassis, COMSIG_MOVABLE_BUMP, PROC_REF(bumb_on)) + RegisterSignal(chassis, COMSIG_ATOM_BUMPED, PROC_REF(bumbed_on)) + RegisterSignal(chassis, COMSIG_ATOM_TAKE_DAMAGE, PROC_REF(take_damage)) + chassis.use_energy(energy_cost) + build_all_button_icons() + +///Called when invisibility deactivated. +/datum/action/vehicle/sealed/mecha/invisibility/proc/invisibility_off() + new /obj/effect/temp_visual/mech_sparks(get_turf(chassis)) + playsound(chassis, 'sound/mecha/mech_stealth_effect.ogg' , 75, FALSE) + invisibility_timer = null + charge = FALSE + addtimer(CALLBACK(src, PROC_REF(charge)), 5 SECONDS) + button_icon_state = "mech_stealth_cooldown" + animate(chassis, alpha = 255, time = 0.5 SECONDS) + UnregisterSignal(chassis, list( + COMSIG_MECHA_MELEE_CLICK, + COMSIG_MOVABLE_BUMP, + COMSIG_ATOM_BUMPED, + COMSIG_ATOM_TAKE_DAMAGE + )) + build_all_button_icons() + +///Check if mech use charge attack and deactivate it when we activate invisibility. +/datum/action/vehicle/sealed/mecha/invisibility/proc/check_charge_attack() + for(var/mob/living/occupant in chassis.occupants) + var/datum/action/vehicle/sealed/mecha/charge_attack/charge_action = LAZYACCESSASSOC(chassis.occupant_actions, occupant, /datum/action/vehicle/sealed/mecha/charge_attack) + if(charge_action?.on) + charge_action.on = !on + charge_action.charge_attack_off() +/** + * ## end_stealth + * + * Called when mech runs out of invisibility time. + */ +/datum/action/vehicle/sealed/mecha/invisibility/proc/end_stealth() + make_visible() + +/** + * ## bumb_on + * + * Called when mech bumb on somthing. If is living somthing shutdown mech invisibility. + */ +/datum/action/vehicle/sealed/mecha/invisibility/proc/bumb_on(obj/vehicle/sealed/mecha/our_mech, atom/obstacle) + SIGNAL_HANDLER + + if(!isliving(obstacle)) + return + make_visible() + +/** + * ## bumbed_on + * + * Called when somthing bumbed on mech. If is living somthing shutdown mech invisibility. + */ +/datum/action/vehicle/sealed/mecha/invisibility/proc/bumbed_on(obj/vehicle/sealed/mecha/our_mech, atom/movable/bumped_atom) + SIGNAL_HANDLER + + if(!isliving(bumped_atom)) + return + make_visible() + +/** + * ## take_damage + * + * Called when mech take damage. Shutdown mech invisibility. + */ +/datum/action/vehicle/sealed/mecha/invisibility/proc/take_damage(obj/vehicle/sealed/mecha/our_mech) + SIGNAL_HANDLER + + make_visible() + +/** + * ## make_visible + * + * Called when somthing force invisibility shutdown. + */ +/datum/action/vehicle/sealed/mecha/invisibility/proc/make_visible() + if(!on) + return + on = !on + invisibility_off() + +/** + * Proc makes an AOE attack after 1 SECOND. + * Called by the mech pilot when he is in stealth mode and wants to attack. + * During this, mech cannot move. +*/ +/datum/action/vehicle/sealed/mecha/invisibility/proc/stealth_attack_aoe(datum/source, mob/living/pilot, atom/target, on_cooldown, is_adjacent) + SIGNAL_HANDLER + + if(!charge) + return FALSE + if(chassis.alpha != 0) + UnregisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK) + return FALSE + UnregisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK) + new /obj/effect/temp_visual/mech_attack_aoe_charge(get_turf(chassis)) + ADD_TRAIT(chassis, TRAIT_IMMOBILIZED, REF(src)) + playsound(chassis, stealth_pre_attack_sound, 75, FALSE) + addtimer(CALLBACK(src, PROC_REF(attack_in_aoe), pilot), 1 SECONDS) + return TRUE + +/** + * ## attack_in_aoe + * + * Brings mech out of invisibility. + * Deal everyone in range 3x3 35 damage and 25 chanse to cut off limb. + * Arguments: + * * pilot - occupant inside mech. + */ +/datum/action/vehicle/sealed/mecha/invisibility/proc/attack_in_aoe(mob/living/pilot) + invisibility_off() + new /obj/effect/temp_visual/mech_attack_aoe_attack(get_turf(chassis)) + for(var/mob/living/something_living in range(1, get_turf(chassis))) + if(something_living.stat >= UNCONSCIOUS) + continue + if(something_living.getStaminaLoss() >= 100) + continue + if(something_living == pilot) + continue + if(prob(DISMEMBER_CHANCE_LOW)) + var/obj/item/bodypart/cut_bodypart = something_living.get_bodypart(pick(BODY_ZONE_R_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG)) + cut_bodypart?.dismember(BRUTE) + something_living.apply_damage(35, BRUTE) + playsound(chassis, stealth_attack_sound, 75, FALSE) + REMOVE_TRAIT(chassis, TRAIT_IMMOBILIZED, REF(src)) + on = !on + charge = FALSE + button_icon_state = "mech_stealth_cooldown" + build_all_button_icons() + addtimer(CALLBACK(src, PROC_REF(charge)), 5 SECONDS) + +/** + * ## charge + * + * Recharge invisibility action after 5 SECONDS. + */ +/datum/action/vehicle/sealed/mecha/invisibility/proc/charge() + button_icon_state = "mech_stealth_off" + charge = TRUE + build_all_button_icons() + +/datum/action/vehicle/sealed/mecha/charge_attack + name = "Charge Attack" + button_icon_state = "mech_charge_off" + /// Is charge attack activated. + var/on = FALSE + /// Recharge check. + var/charge = TRUE + /// Energy cost to perform charge attack + var/energy_cost = 400 + /// Maximum range of charge attack. + var/max_charge_range = 7 + /// Sound when mech do charge attack. + var/charge_attack_sound = 'sound/mecha/mech_charge_attack.ogg' + +/datum/action/vehicle/sealed/mecha/charge_attack/set_chassis(passed_chassis) + . = ..() + RegisterSignal(chassis, COMSIG_MECH_SAFETIES_TOGGLE, PROC_REF(on_toggle_safety)) + +/// update button icon when toggle safety. +/datum/action/vehicle/sealed/mecha/charge_attack/proc/on_toggle_safety() + SIGNAL_HANDLER + + build_all_button_icons(UPDATE_BUTTON_STATUS) + +/datum/action/vehicle/sealed/mecha/charge_attack/Trigger(trigger_flags) + . = ..() + if(!.) + return + on = !on + if(on) + charge_attack_on() + else + charge_attack_off() + +/datum/action/vehicle/sealed/mecha/charge_attack/IsAvailable(feedback) + . = ..() + if(!.) + return FALSE + if(!chassis.has_charge(energy_cost)) + if(feedback) + owner.balloon_alert(owner, "not enough energy!") + return FALSE + if(chassis.weapons_safety) + if(feedback) + owner.balloon_alert(owner, "safety is on!") + return FALSE + if(!charge) + if(feedback) + owner.balloon_alert(owner, "recharging!") + return FALSE + + return TRUE + +///Called when charge attack activated +/datum/action/vehicle/sealed/mecha/charge_attack/proc/charge_attack_on() + check_visability() + button_icon_state = "mech_charge_on" + RegisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK, PROC_REF(click_try_charge)) + build_all_button_icons() + +///Called when charge attack deactivated +/datum/action/vehicle/sealed/mecha/charge_attack/proc/charge_attack_off() + button_icon_state = "mech_charge_off" + UnregisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK) + build_all_button_icons() + +///Check if mech use invisibility and deactivate it when we activate charge attack. +/datum/action/vehicle/sealed/mecha/charge_attack/proc/check_visability() + for(var/who_inside in chassis.occupants) + var/mob/living/occupant = who_inside + var/datum/action/vehicle/sealed/mecha/invisibility/stealth_action = LAZYACCESSASSOC(chassis.occupant_actions, occupant, /datum/action/vehicle/sealed/mecha/invisibility) + if(stealth_action?.on) + stealth_action.make_visible() + +///Called when mech attacks with charge attack enabled. +/datum/action/vehicle/sealed/mecha/charge_attack/proc/click_try_charge(datum/source, mob/living/pilot, atom/target, on_cooldown, is_adjacent) + SIGNAL_HANDLER + + var/turf = get_turf(target) + if(!on) + UnregisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK) + return FALSE + if(isnull(turf)) + pilot.balloon_alert(pilot, "invalid direction!") + return FALSE + if(!charge) + pilot.balloon_alert(pilot, "recharging!") + return FALSE + else + if(charge_attack(pilot, turf)) + return TRUE + return FALSE + +/** + * ## charge_attack + * + * Deal everyone in line for mech location to mouse location 35 damage and 25 chanse to cut off limb. + * Teleport mech to the end of line. + * Arguments: + * * charger - occupant inside mech. + * * target - occupant inside mech. + */ +/datum/action/vehicle/sealed/mecha/charge_attack/proc/charge_attack(mob/living/charger, turf/target) + var/turf/start_charge_here = get_turf(charger) + var/charge_range = min(get_dist_euclidean(start_charge_here, target), max_charge_range) + var/turf/but_we_gonna_here = get_ranged_target_turf(start_charge_here, get_dir(start_charge_here, target), floor(charge_range)) + var/turf/here_we_go = start_charge_here + for(var/turf/line_turf in get_line(get_step(start_charge_here, get_dir(start_charge_here, target)), but_we_gonna_here)) + if(get_turf(charger) == get_turf(line_turf)) + continue + if(isclosedturf(line_turf)) + break + var/obj/machinery/power/supermatter_crystal/funny_crystal = locate() in line_turf + if(funny_crystal) + funny_crystal.Bumped(chassis) + break + var/obj/machinery/door/airlock/like_a_wall = locate() in line_turf + if(like_a_wall?.density) + break + if(locate(/obj/structure/window) in line_turf) + break + for(var/mob/living/something_living in line_turf.contents) + if(something_living.stat >= UNCONSCIOUS || something_living.getStaminaLoss() >= 100 || something_living == charger) + continue + if(prob(DISMEMBER_CHANCE_LOW)) + var/obj/item/bodypart/cut_bodypart = something_living.get_bodypart(pick(BODY_ZONE_R_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_HEAD)) + cut_bodypart?.dismember(BRUTE) + something_living.apply_damage(35, BRUTE) + here_we_go = line_turf + + // If the mech didn't move, it didn't charge + if(here_we_go == start_charge_here) + charger.balloon_alert(charger, "invalid direction!") + return FALSE + chassis.forceMove(here_we_go) + start_charge_here.Beam(chassis, icon_state = "mech_charge", time = 8) + playsound(chassis, charge_attack_sound, 75, FALSE) + on = !on + chassis.use_energy(energy_cost) + UnregisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK) + charge = FALSE + button_icon_state = "mech_charge_cooldown" + build_all_button_icons() + addtimer(CALLBACK(src, PROC_REF(charge)), 5 SECONDS) + return TRUE + +/** + * ## charge + * + * Recharge charge attack action after 5 SECONDS. + */ +/datum/action/vehicle/sealed/mecha/charge_attack/proc/charge() + charge = TRUE + button_icon_state = "mech_charge_off" + build_all_button_icons() + +/obj/vehicle/sealed/mecha/justice/loaded + equip_by_category = list( + MECHA_L_ARM = null, + MECHA_R_ARM = null, + MECHA_UTILITY = list(/obj/item/mecha_parts/mecha_equipment/radio, /obj/item/mecha_parts/mecha_equipment/air_tank/full, /obj/item/mecha_parts/mecha_equipment/thrusters/ion), + MECHA_POWER = list(), + MECHA_ARMOR = list(), + ) + +/obj/vehicle/sealed/mecha/justice/loaded/populate_parts() + cell = new /obj/item/stock_parts/power_store/cell/bluespace(src) + scanmod = new /obj/item/stock_parts/scanning_module/triphasic(src) + capacitor = new /obj/item/stock_parts/capacitor/quadratic(src) + servo = new /obj/item/stock_parts/servo/femto(src) + update_part_values() + +#undef DISMEMBER_CHANCE_HIGH +#undef DISMEMBER_CHANCE_LOW + +#undef MOVEDELAY_ANGRY +#undef MOVEDELAY_SAFETY diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm index d13b90e5659f7..0bb691160b373 100644 --- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm +++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm @@ -4,14 +4,22 @@ equipment_slot = MECHA_WEAPON destroy_sound = 'sound/mecha/weapdestr.ogg' mech_flags = EXOSUIT_MODULE_COMBAT + /// The type of bullet generated by the mecha weapon. var/projectile + /// The sound of the mecha weapon firing. var/fire_sound + /// How many shots are fired per action. var/projectiles_per_shot = 1 + /// The degrees by which each individual bullet fans out from a central point. A predictable spray of bullets. var/variance = 0 - var/randomspread = FALSE //use random spread for machineguns, instead of shotgun scatter + /// Whether our bullets go off trajectory while firing randomly. Used to replicate recoil and not a structured, predictable spray. + var/randomspread = FALSE + /// The amount in deciseconds that the weapon sleeps between shots to simulate a 'burst fire'. The delay stops another bullet from being fired while sleeping. var/projectile_delay = 0 - var/firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect //the visual effect appearing when the weapon is fired. - var/kickback = TRUE //Will using this weapon in no grav push mecha back. + //the visual effect appearing when the weapon is fired. + var/firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect + /// Will using this weapon in no grav push mecha back. + var/kickback = TRUE /obj/item/mecha_parts/mecha_equipment/weapon/special_attaching_interaction(attach_right = FALSE, obj/vehicle/sealed/mecha/mech, mob/user, checkonly = FALSE) var/obj/item/mecha_parts/mecha_equipment/concealed_weapon_bay/bay @@ -43,23 +51,25 @@ /obj/item/mecha_parts/mecha_equipment/weapon/action(mob/source, atom/target, list/modifiers) if(!action_checks(target)) return FALSE + + /// Find our mecha, find the opposite direction. Used for kickback while the mecha is drifting in zero-g to launch us in this direction. var/newtonian_target = REVERSE_DIR(chassis.dir) . = ..()//start the cooldown early because of sleeps - for(var/i in 1 to projectiles_per_shot) + for(var/projectiles_to_shoot in 1 to projectiles_per_shot) if(energy_drain && !chassis.has_charge(energy_drain))//in case we run out of energy mid-burst, such as emp break var/spread = 0 if(variance) if(randomspread) - spread = round((rand() - 0.5) * variance) + spread = round((rand(0 , 1) - 0.5) * variance, 1) else - spread = round((i / projectiles_per_shot - 0.5) * variance) + spread = round((projectiles_to_shoot / projectiles_per_shot - 0.5) * variance, 1) var/obj/projectile/projectile_obj = new projectile(get_turf(src)) projectile_obj.log_override = TRUE //we log being fired ourselves a little further down. projectile_obj.firer = chassis projectile_obj.preparePixelProjectile(target, source, modifiers, spread) - if(source.client && isliving(source)) //dont want it to happen from syndie mecha npc mobs, they do direct fire anyways + if(isliving(source) && source.client) //dont want it to happen from syndie mecha npc mobs, they do direct fire anyways var/mob/living/shooter = source projectile_obj.hit_prone_targets = shooter.combat_mode projectile_obj.fire() diff --git a/code/modules/vehicles/mecha/mech_fabricator.dm b/code/modules/vehicles/mecha/mech_fabricator.dm index 47c116cbc6029..c2d37ee6e8348 100644 --- a/code/modules/vehicles/mecha/mech_fabricator.dm +++ b/code/modules/vehicles/mecha/mech_fabricator.dm @@ -49,12 +49,24 @@ /// All designs in the techweb that can be fabricated by this machine, since the last update. var/list/datum/design/cached_designs + //looping sound for printing items + var/datum/looping_sound/lathe_print/print_sound + + /// Local designs that only this mechfab have(using when mechfab emaged so it's illegal designs). + var/list/datum/design/illegal_local_designs + /obj/machinery/mecha_part_fabricator/Initialize(mapload) + print_sound = new(src, FALSE) rmat = AddComponent(/datum/component/remote_materials, mapload && link_on_init) cached_designs = list() + illegal_local_designs = list() RefreshParts() //Recalculating local material sizes if the fab isn't linked return ..() +/obj/machinery/mecha_part_fabricator/Destroy() + QDEL_NULL(print_sound) + return ..() + /obj/machinery/mecha_part_fabricator/post_machine_initialize() . = ..() if(!CONFIG_GET(flag/no_default_techweb_link) && !stored_research) @@ -134,6 +146,26 @@ balloon_alert(user, "rotated to [dir2text(dir)].") return CLICK_ACTION_SUCCESS +/obj/machinery/mecha_part_fabricator/emag_act(mob/user, obj/item/card/emag/emag_card) + if(obj_flags & EMAGGED) + return FALSE + if(user.job != JOB_ROBOTICIST) + to_chat(user, span_warning("You clicking and typing but don’t understand what to do with it")) + return FALSE + obj_flags |= EMAGGED + for(var/found_illegal_mech_nods in SSresearch.techweb_nodes) + var/datum/techweb_node/illegal_mech_node = SSresearch.techweb_nodes[found_illegal_mech_nods] + if(!illegal_mech_node?.illegal_mech_node) + continue + for(var/id in illegal_mech_node.design_ids) + var/datum/design/illegal_mech_design = SSresearch.techweb_design_by_id(id) + illegal_local_designs |= illegal_mech_design + cached_designs |= illegal_mech_design + say("R$c!i&ed ERROR de#i$ns. C@n%ec$%ng to ~NULL~ se%ve$s.") + playsound(src, 'sound/machines/uplinkerror.ogg', 50, TRUE) + update_static_data_for_all_viewers() + return TRUE + /** * Updates the `final_sets` and `buildable_parts` for the current mecha fabricator. */ @@ -163,7 +195,7 @@ /obj/machinery/mecha_part_fabricator/proc/on_start_printing() add_overlay("fab-active") update_use_power(ACTIVE_POWER_USE) - + print_sound.start() /** * Intended to be called when the exofab has stopped working and is no longer printing items. * @@ -174,6 +206,7 @@ update_use_power(IDLE_POWER_USE) desc = initial(desc) process_queue = FALSE + print_sound.stop() /** * Attempts to build the next item in the build queue. @@ -342,7 +375,7 @@ for(var/datum/design/design in cached_designs) var/cost = list() - var/list/materials = design["materials"] + var/list/materials = design.materials for(var/datum/material/mat in materials) cost[mat.name] = OPTIMAL_COST(materials[mat] * component_coeff) @@ -409,7 +442,7 @@ if(!istext(design_id)) continue - if(!stored_research.researched_designs.Find(design_id)) + if(!(stored_research.researched_designs.Find(design_id) || is_type_in_list(SSresearch.techweb_design_by_id(design_id), illegal_local_designs))) continue var/datum/design/design = SSresearch.techweb_design_by_id(design_id) diff --git a/code/modules/vehicles/mecha/mech_melee_attack.dm b/code/modules/vehicles/mecha/mech_melee_attack.dm index 08669ebdd0ca8..655a2f3533936 100644 --- a/code/modules/vehicles/mecha/mech_melee_attack.dm +++ b/code/modules/vehicles/mecha/mech_melee_attack.dm @@ -2,7 +2,7 @@ * ## Mech melee attack * Called when a mech melees a target with fists * Handles damaging the target & associated effects - * return value is number of damage dealt + * return value is number of damage dealt. returning a value puts our mech onto attack cooldown. * Arguments: * * mecha_attacker: Mech attacking this target * * user: mob that initiated the attack from inside the mech as a controller @@ -10,28 +10,35 @@ /atom/proc/mech_melee_attack(obj/vehicle/sealed/mecha/mecha_attacker, mob/living/user) SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_MECH, mecha_attacker, user) - log_combat(user, src, "attacked", mecha_attacker, "(COMBAT MODE: [uppertext(user.combat_mode)] (DAMTYPE: [uppertext(mecha_attacker.damtype)])") + if(!isnull(user)) + log_combat(user, src, "attacked", mecha_attacker, "(COMBAT MODE: [uppertext(user?.combat_mode)] (DAMTYPE: [uppertext(mecha_attacker.damtype)])") return 0 /turf/closed/wall/mech_melee_attack(obj/vehicle/sealed/mecha/mecha_attacker, mob/living/user) + if(!user.combat_mode) + return 0 + mecha_attacker.do_attack_animation(src) switch(mecha_attacker.damtype) if(BRUTE) - playsound(src, 'sound/weapons/punch4.ogg', 50, TRUE) + playsound(src, mecha_attacker.brute_attack_sound, 50, TRUE) if(BURN) - playsound(src, 'sound/items/welder.ogg', 50, TRUE) + playsound(src, mecha_attacker.burn_attack_sound, 50, TRUE) else return 0 mecha_attacker.visible_message(span_danger("[mecha_attacker] hits [src]!"), span_danger("You hit [src]!"), null, COMBAT_MESSAGE_RANGE) if(prob(hardness + mecha_attacker.force) && mecha_attacker.force > 20) dismantle_wall(1) - playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE) + playsound(src, mecha_attacker.destroy_wall_sound, 100, TRUE) else add_dent(WALL_DENT_HIT) ..() return 100 //this is an arbitrary "damage" number since the actual damage is rng dismantle -/obj/mech_melee_attack(obj/vehicle/sealed/mecha/mecha_attacker, mob/living/user) +/obj/structure/mech_melee_attack(obj/vehicle/sealed/mecha/mecha_attacker, mob/living/user) + if(!user.combat_mode) + return 0 + mecha_attacker.do_attack_animation(src) switch(mecha_attacker.damtype) if(BRUTE) @@ -44,13 +51,29 @@ ..() return take_damage(mecha_attacker.force * 3, mecha_attacker.damtype, "melee", FALSE, get_dir(src, mecha_attacker)) // multiplied by 3 so we can hit objs hard but not be overpowered against mobs. +/obj/machinery/mech_melee_attack(obj/vehicle/sealed/mecha/mecha_attacker, mob/living/user) + if(!user.combat_mode) + return 0 + + mecha_attacker.do_attack_animation(src) + switch(mecha_attacker.damtype) + if(BRUTE) + playsound(src, mecha_attacker.brute_attack_sound, 50, TRUE) + if(BURN) + playsound(src, mecha_attacker.burn_attack_sound, 50, TRUE) + else + return 0 + mecha_attacker.visible_message(span_danger("[mecha_attacker] hits [src]!"), span_danger("You hit [src]!"), null, COMBAT_MESSAGE_RANGE) + ..() + return take_damage(mecha_attacker.force * 3, mecha_attacker.damtype, "melee", FALSE, get_dir(src, mecha_attacker)) // multiplied by 3 so we can hit objs hard but not be overpowered against mobs. + /obj/structure/window/mech_melee_attack(obj/vehicle/sealed/mecha/mecha_attacker, mob/living/user) if(!can_be_reached()) return 0 return ..() /mob/living/mech_melee_attack(obj/vehicle/sealed/mecha/mecha_attacker, mob/living/user) - if(!user.combat_mode) + if(istype(user) && !user.combat_mode) step_away(src, mecha_attacker) log_combat(user, src, "pushed", mecha_attacker) visible_message(span_warning("[mecha_attacker] pushes [src] out of the way."), \ @@ -58,36 +81,41 @@ to_chat(mecha_attacker, span_danger("You push [src] out of the way.")) return 0 - if(HAS_TRAIT(user, TRAIT_PACIFISM)) + if(!isnull(user) && HAS_TRAIT(user, TRAIT_PACIFISM)) to_chat(user, span_warning("You don't want to harm other living beings!")) return 0 mecha_attacker.do_attack_animation(src) if(mecha_attacker.damtype == BRUTE) step_away(src, mecha_attacker, 15) var/obj/item/bodypart/selected_zone = get_bodypart(pick(BODY_ZONE_CHEST, BODY_ZONE_CHEST, BODY_ZONE_CHEST, BODY_ZONE_HEAD)) - if(selected_zone) - var/dmg = rand(mecha_attacker.force * 0.5, mecha_attacker.force) - switch(mecha_attacker.damtype) - if(BRUTE) - if(mecha_attacker.force > 35) // durand and other heavy mechas - Unconscious(20) - else if(mecha_attacker.force > 20 && !IsKnockdown()) // lightweight mechas like gygax - Knockdown(40) + var/dmg = rand(mecha_attacker.force * 0.5, mecha_attacker.force) + switch(mecha_attacker.damtype) + if(BRUTE) + if(mecha_attacker.force > 35) // durand and other heavy mechas + mecha_attacker.melee_attack_effect(src, heavy = TRUE) + else if(mecha_attacker.force > 20 && !IsKnockdown()) // lightweight mechas like gygax + mecha_attacker.melee_attack_effect(src, heavy = FALSE) + if(selected_zone) selected_zone.receive_damage(dmg, 0, updating_health = TRUE) - playsound(src, 'sound/weapons/punch4.ogg', 50, TRUE) - if(FIRE) + else + apply_damage(dmg, BRUTE) + playsound(src, mecha_attacker.brute_attack_sound, 50, TRUE) + if(FIRE) + if(selected_zone) selected_zone.receive_damage(0, dmg, updating_health = TRUE) - playsound(src, 'sound/items/welder.ogg', 50, TRUE) - if(TOX) - playsound(src, 'sound/effects/spray2.ogg', 50, TRUE) - if((reagents.get_reagent_amount(/datum/reagent/cryptobiolin) + mecha_attacker.force) < mecha_attacker.force*2) - reagents.add_reagent(/datum/reagent/cryptobiolin, mecha_attacker.force/2) - if((reagents.get_reagent_amount(/datum/reagent/toxin) + mecha_attacker.force) < mecha_attacker.force*2) - reagents.add_reagent(/datum/reagent/toxin, mecha_attacker.force/2.5) else - return 0 - . = dmg - visible_message(span_danger("[mecha_attacker.name] hits [src]!"), \ - span_userdanger("[mecha_attacker.name] hits you!"), span_hear("You hear a sickening sound of flesh hitting flesh!"), COMBAT_MESSAGE_RANGE, list(mecha_attacker)) - to_chat(mecha_attacker, span_danger("You hit [src]!")) + apply_damage(dmg, BURN) + playsound(src, mecha_attacker.burn_attack_sound, 50, TRUE) + if(TOX) + playsound(src, mecha_attacker.tox_attack_sound, 50, TRUE) + if((reagents.get_reagent_amount(/datum/reagent/cryptobiolin) + mecha_attacker.force) < mecha_attacker.force*2) + reagents.add_reagent(/datum/reagent/cryptobiolin, mecha_attacker.force/2) + if((reagents.get_reagent_amount(/datum/reagent/toxin) + mecha_attacker.force) < mecha_attacker.force*2) + reagents.add_reagent(/datum/reagent/toxin, mecha_attacker.force/2.5) + else + return 0 + . = dmg + visible_message(span_danger("[mecha_attacker.name] [mecha_attacker.attack_verbs[1]] [src]!"), \ + span_userdanger("[mecha_attacker.name] [mecha_attacker.attack_verbs[2]] you!"), span_hear("You hear a sickening sound of flesh [mecha_attacker.attack_verbs[3]] flesh!"), COMBAT_MESSAGE_RANGE, list(mecha_attacker)) + to_chat(mecha_attacker, span_danger("You [mecha_attacker.attack_verbs[1]] [src]!")) ..() diff --git a/code/modules/vehicles/mecha/mecha_construction_paths.dm b/code/modules/vehicles/mecha/mecha_construction_paths.dm index f4b1a679596b9..0a305a5db66ae 100644 --- a/code/modules/vehicles/mecha/mecha_construction_paths.dm +++ b/code/modules/vehicles/mecha/mecha_construction_paths.dm @@ -819,3 +819,39 @@ outer_plating = /obj/item/stack/sheet/plasteel outer_plating_amount = 5 + +//Justice +/datum/component/construction/unordered/mecha_chassis/justice + result = /datum/component/construction/mecha/justice + steps = list( + /obj/item/mecha_parts/part/justice_torso, + /obj/item/mecha_parts/part/justice_left_arm, + /obj/item/mecha_parts/part/justice_right_arm, + /obj/item/mecha_parts/part/justice_left_leg, + /obj/item/mecha_parts/part/justice_right_leg + ) + +/datum/component/construction/mecha/justice + result = /obj/vehicle/sealed/mecha/justice + base_icon = "justice" + + inner_plating = /obj/item/stack/telecrystal + inner_plating_amount = 8 + + outer_plating = /obj/item/mecha_parts/part/justice_armor + outer_plating_amount = 1 + +/datum/component/construction/mecha/justice/get_circuit_steps() + return list() + +/datum/component/construction/mecha/justice/get_inner_plating_steps() + return list( + list( + "key" = inner_plating, + "amount" = inner_plating_amount, + "back_key" = TOOL_SCREWDRIVER, + "desc" = "The power cell is secured, and [inner_plating_amount] telecrystals can be added.", + "forward_message" = "added telecrystal", + "backward_message" = "unsecured power cell" + ) + ) diff --git a/code/modules/vehicles/mecha/mecha_movement.dm b/code/modules/vehicles/mecha/mecha_movement.dm index 53e61690aba7f..3c743bd7fb357 100644 --- a/code/modules/vehicles/mecha/mecha_movement.dm +++ b/code/modules/vehicles/mecha/mecha_movement.dm @@ -154,13 +154,17 @@ return if(.) //mech was thrown/door/whatever return - if(bumpsmash) //Need a pilot to push the PUNCH button. - if(COOLDOWN_FINISHED(src, mecha_bump_smash)) - var/list/mob/mobster = return_drivers() - obstacle.mech_melee_attack(src, mobster[1]) - COOLDOWN_START(src, mecha_bump_smash, smashcooldown) - if(!obstacle || obstacle.CanPass(src, get_dir(obstacle, src) || dir)) // The else is in case the obstacle is in the same turf. - step(src,dir) + + // Whether or not we're on our mecha melee cooldown + var/on_cooldown = TIMER_COOLDOWN_RUNNING(src, COOLDOWN_MECHA_MELEE_ATTACK) + + if(bumpsmash && !on_cooldown) + // Our pilot for this evening + var/list/mob/mobster = return_drivers() + if(obstacle.mech_melee_attack(src, mobster[1])) + TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MELEE_ATTACK, melee_cooldown * 0.3) + if(!obstacle || obstacle.CanPass(src, get_dir(obstacle, src) || dir)) // The else is in case the obstacle is in the same turf. + step(src,dir) if(isobj(obstacle)) var/obj/obj_obstacle = obstacle if(!obj_obstacle.anchored && obj_obstacle.move_resist <= move_force) diff --git a/code/modules/vehicles/mecha/mecha_parts.dm b/code/modules/vehicles/mecha/mecha_parts.dm index 7fcee2092590c..474716568eb5b 100644 --- a/code/modules/vehicles/mecha/mecha_parts.dm +++ b/code/modules/vehicles/mecha/mecha_parts.dm @@ -332,6 +332,42 @@ desc="Savannah-Ivanov armor plates. They are uniquely shaped and reinforced to deal with the stresses of two pilots, grandiose leaps, and missiles." icon_state = "savannah_ivanov_armor" +// Justice + +/obj/item/mecha_parts/chassis/justice + name = "\improper Justice chassis" + construct_type = /datum/component/construction/unordered/mecha_chassis/justice + +/obj/item/mecha_parts/part/justice_torso + name="\improper Justice torso" + desc="A Justice torso part." + icon_state = "justice_torso" + +/obj/item/mecha_parts/part/justice_left_arm + name="\improper Justice left arm" + desc="A Justice left arm." + icon_state = "justice_l_arm" + +/obj/item/mecha_parts/part/justice_right_arm + name="\improper Justice right arm" + desc="A Justice left arm." + icon_state = "justice_r_arm" + +/obj/item/mecha_parts/part/justice_left_leg + name="\improper Justice left leg" + desc="A Justice left leg." + icon_state = "justice_l_leg" + +/obj/item/mecha_parts/part/justice_right_leg + name="\improper Justice right leg" + desc="A Justice left leg." + icon_state = "justice_r_leg" + +/obj/item/mecha_parts/part/justice_armor + name="Justice armor" + desc="Justice armor plates." + icon_state = "justice_armor" + ///////// Circuitboards /obj/item/circuitboard/mecha diff --git a/code/modules/vehicles/mecha/mecha_ui.dm b/code/modules/vehicles/mecha/mecha_ui.dm index 712d5f0d712bf..1113a85381361 100644 --- a/code/modules/vehicles/mecha/mecha_ui.dm +++ b/code/modules/vehicles/mecha/mecha_ui.dm @@ -111,16 +111,17 @@ var/module_index = 0 for(var/category in max_equip_by_category) var/max_per_category = max_equip_by_category[category] - for(var/i = 1 to max_per_category) - var/equipment = equip_by_category[category] - var/is_slot_free = islist(equipment) ? i > length(equipment) : isnull(equipment) - if(is_slot_free) - data += list(list( - "slot" = category - )) - if(ui_selected_module_index == module_index) - ui_selected_module_index = null - else + if(max_per_category) + for(var/i = 1 to max_per_category) + var/equipment = equip_by_category[category] + var/is_slot_free = islist(equipment) ? i > length(equipment) : isnull(equipment) + if(is_slot_free) + data += list(list( + "slot" = category + )) + if(ui_selected_module_index == module_index) + ui_selected_module_index = null + continue var/obj/item/mecha_parts/mecha_equipment/module = islist(equipment) ? equipment[i] : equipment data += list(list( "slot" = category, @@ -140,7 +141,7 @@ )) if(isnull(ui_selected_module_index)) ui_selected_module_index = module_index - module_index++ + module_index++ return data /obj/vehicle/sealed/mecha/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) diff --git a/code/modules/vehicles/mecha/mecha_wreckage.dm b/code/modules/vehicles/mecha/mecha_wreckage.dm index dc0414e86063a..8f972ef47815c 100644 --- a/code/modules/vehicles/mecha/mecha_wreckage.dm +++ b/code/modules/vehicles/mecha/mecha_wreckage.dm @@ -245,3 +245,8 @@ /obj/item/mecha_parts/part/odysseus_right_arm, /obj/item/mecha_parts/part/odysseus_left_leg, /obj/item/mecha_parts/part/odysseus_right_leg) + +/obj/structure/mecha_wreckage/justice + name = "\improper Justice wreckage" + icon_state = "justice-broken" + welder_salvage = list(/obj/item/stack/sheet/iron, /obj/item/stack/rods) diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm index 0b842b8ed9cbe..08edbf7886799 100644 --- a/code/modules/vehicles/scooter.dm +++ b/code/modules/vehicles/scooter.dm @@ -206,6 +206,21 @@ to_chat(rider, span_warning("[src] [p_are()] not powerful enough to fly upwards.")) return FALSE +/obj/vehicle/ridden/scooter/skateboard/hoverboard/holyboarded + name = "holy skateboard" + desc = "A board blessed by the gods with the power to grind for our sins. Has the initials 'J.C.' on the underside." + board_item_type = /obj/item/melee/skateboard/holyboard + instability = 3 + icon_state = "hoverboard_holy" +/obj/vehicle/ridden/scooter/skateboard/hoverboard/holyboarded/post_buckle_mob(mob/living/M) + M.AddComponent(/datum/component/anti_magic, MAGIC_RESISTANCE|MAGIC_RESISTANCE_HOLY) + return ..() + +/obj/vehicle/ridden/scooter/skateboard/hoverboard/holyboarded/post_unbuckle_mob(mob/living/M) + if(!has_buckled_mobs()) + qdel (M.GetComponent(/datum/component/anti_magic, MAGIC_RESISTANCE|MAGIC_RESISTANCE_HOLY)) + return ..() + /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin name = "\improper Board Of Directors" desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too." diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm index f8db861449f7a..5f57895d8ac81 100644 --- a/code/modules/vehicles/vehicle_key.dm +++ b/code/modules/vehicles/vehicle_key.dm @@ -33,10 +33,15 @@ attack_verb_continuous = list("stubs", "pokes") attack_verb_simple = list("stub", "poke") sharpness = SHARP_EDGED - embedding = list("pain_mult" = 1, "embed_chance" = 30, "fall_chance" = 70) + embed_type = /datum/embed_data/janicart_key wound_bonus = -1 bare_wound_bonus = 2 +/datum/embed_data/janicart_key + pain_mult = 1 + embed_chance = 30 + fall_chance = 70 + /obj/item/key/janitor/suicide_act(mob/living/carbon/user) switch(user.mind?.get_skill_level(/datum/skill/cleaning)) if(SKILL_LEVEL_NONE to SKILL_LEVEL_NOVICE) //Their mind is too weak to ascend as a janny diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 9ca0d41d85367..737a2993d9bef 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -1074,11 +1074,9 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) var/mob/living/carbon/carbon_target = atom_target for(var/i in 1 to num_shards) var/obj/item/shard/shard = new /obj/item/shard(get_turf(carbon_target)) - shard.embedding = list(embed_chance = 100, ignore_throwspeed_threshold = TRUE, impact_pain_mult = 1, pain_chance = 5) - shard.updateEmbedding() + shard.set_embed(/datum/embed_data/glass_candy) carbon_target.hitby(shard, skipcatch = TRUE, hitpush = FALSE) - shard.embedding = list() - shard.updateEmbedding() + shard.set_embed(initial(shard.embed_type)) return TRUE if (VENDOR_CRUSH_CRIT_PIN) // pin them beneath the machine until someone untilts it if (!isliving(atom_target)) diff --git a/code/modules/vending/cigarette.dm b/code/modules/vending/cigarette.dm index ddcfd9bb244d9..61379e5635468 100644 --- a/code/modules/vending/cigarette.dm +++ b/code/modules/vending/cigarette.dm @@ -17,7 +17,7 @@ /obj/item/storage/fancy/rollingpapers = 5, ) contraband = list( - /obj/item/clothing/mask/vape = 5, + /obj/item/vape = 5, ) premium = list( /obj/item/storage/fancy/cigarettes/cigpack_robustgold = 3, @@ -66,7 +66,7 @@ ) premium = list( /obj/item/storage/fancy/cigarettes/cigpack_mindbreaker = 5, - /obj/item/clothing/mask/vape = 5, + /obj/item/vape = 5, /obj/item/lighter = 3, ) initial_language_holder = /datum/language_holder/beachbum diff --git a/code/modules/vending/subtype.dm b/code/modules/vending/subtype.dm new file mode 100644 index 0000000000000..9b4f212224ea7 --- /dev/null +++ b/code/modules/vending/subtype.dm @@ -0,0 +1,51 @@ + +/obj/machinery/vending/subtype_vendor + name = "\improper subtype vendor" + desc = "A vending machine that vends all subtypes of a specific type." + color = COLOR_ADMIN_PINK + verb_say = "codes" + verb_ask = "queries" + verb_exclaim = "compiles" + armor_type = /datum/armor/machinery_vending + circuit = null + product_slogans = "Spawn \" too annoying? Too lazy to open game panel? This one's for you!;Subtype vendor, for all your debugging woes!" + default_price = 0 + /// Spawns coders by default + var/type_to_vend = /obj/item/food/grown/citrus + +/obj/machinery/vending/subtype_vendor/Initialize(mapload, type_to_vend) + . = ..() + if(type_to_vend) + src.type_to_vend = type_to_vend + load_subtypes() + +/obj/machinery/vending/subtype_vendor/proc/load_subtypes() + products = list() + product_records = list() + + for(var/type in typesof(type_to_vend)) + LAZYADDASSOC(products, type, 50) + + build_inventories() + +/obj/machinery/vending/subtype_vendor/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + + if(!can_interact(user) || !user.can_perform_action(src, ALLOW_SILICON_REACH|FORBID_TELEKINESIS_REACH)) + return + + if(!user.client?.holder?.check_for_rights(R_SERVER|R_DEBUG)) + speak("Hey! You can't use this! Get outta here!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + + var/type_to_vend_now = tgui_input_text(user, "What type to set it to?", "Set type to vend", "/obj/item/toy/plush") + type_to_vend_now = text2path(type_to_vend_now) + if(!ispath(type_to_vend_now)) + speak("That's not a real path, dumbass! Try again!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + + type_to_vend = type_to_vend_now + load_subtypes() + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 0f637e82645d9..c4b8de23ae1c1 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -440,7 +440,7 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE) /obj/item/circuitboard/machine/dish_drive = 1, /obj/item/reagent_containers/cup/rag = 2, /obj/item/radio/headset/headset_srv = 2, - /obj/item/clothing/under/artisan = 2, // MASSMETA ADITION (oguzok) + /obj/item/clothing/under/artisan = 2, // MASSMETA EDIT ADITION (oguzok) ) refill_canister = /obj/item/vending_refill/wardrobe/chef_wardrobe payment_department = ACCOUNT_SRV diff --git a/code/modules/wiremod/shell/controller.dm b/code/modules/wiremod/shell/controller.dm index 9afe0303be85e..126cc8894368f 100644 --- a/code/modules/wiremod/shell/controller.dm +++ b/code/modules/wiremod/shell/controller.dm @@ -81,6 +81,9 @@ */ /obj/item/circuit_component/controller/proc/send_right_signal(atom/source, mob/user) SIGNAL_HANDLER - if(!user.Adjacent(source)) + + if(!user.can_perform_action(source)) return + handle_trigger(source, user, "extra", right) + return CLICK_ACTION_SUCCESS diff --git a/code/modules/wiremod/shell/drone.dm b/code/modules/wiremod/shell/drone.dm index 4627a3cf32624..d2922274b7dab 100644 --- a/code/modules/wiremod/shell/drone.dm +++ b/code/modules/wiremod/shell/drone.dm @@ -9,7 +9,7 @@ icon_state = "setup_medium_med" maxHealth = 300 health = 300 - living_flags = 0 + living_flags = NONE light_system = OVERLAY_LIGHT_DIRECTIONAL light_on = FALSE diff --git a/config/config.txt b/config/config.txt index 6252c3bae659e..2dc555d922d96 100644 --- a/config/config.txt +++ b/config/config.txt @@ -310,6 +310,9 @@ NOTIFY_NEW_PLAYER_ACCOUNT_AGE 1 ## Discord ID of a role that should be pinged when a new player makes their first connection #NEW_PLAYER_ALERT_ROLE_ID 1138188190604341308 +## Whether discord verification is forced or not (for Massmeta) +FORCE_VERIFICATION 0 + ## Deny all new connections by ckeys we haven't seen before (exempts admins and only denies the connection if the database is enabled and connected) ## Requires database #PANIC_BUNKER diff --git a/config/game_options.txt b/config/game_options.txt index 2979648126dde..ef15cbeb123eb 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -539,3 +539,8 @@ NEGATIVE_STATION_TRAITS 3 1 # If set to 0, then players won't be able to select any positive quirks. # If commented-out or undefined, the maximum default is 6. MAX_POSITIVE_QUIRKS 6 + +# A config that skews with the random spawners weights +# If the value is lower than 1, it'll tend to even out the odds +# If higher than 1, it'll lean toward common spawns even more. +RANDOM_LOOT_WEIGHT_MODIFIER 1 \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83811.yml b/html/changelogs/AutoChangeLog-pr-83811.yml deleted file mode 100644 index 2aaf9471f4b48..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83811.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "mc-oofert" -delete-after: True -changes: - - qol: "space dragon can see in the dark and the invalid rift location alert is more informative" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83831.yml b/html/changelogs/AutoChangeLog-pr-83831.yml deleted file mode 100644 index b3e655a55ddf2..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83831.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "carlarctg" -delete-after: True -changes: - - bugfix: "There's now a limit to how many dental implants you can cram into your mouth, which is governed by your species' teeth limit." - - refactor: "Most species have 32 teeth, due to being based on humans, weirding me out when thinking about their teeth, or lack of enough information" - - refactor: "Moths and flypeople have NO teeth. They CAN'T get dental implants. I'm NERFING moths." - - refactor: "Lizards have seventy-five (!!!) teeth. Lizards are weird." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83859.yml b/html/changelogs/AutoChangeLog-pr-83859.yml new file mode 100644 index 0000000000000..3b7090f9ca9e7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-83859.yml @@ -0,0 +1,5 @@ +author: "Xackii" +delete-after: True +changes: + - balance: "Demon: bloodcrawl now deal damage when you using it." + - balance: "Demon: demon can eat only carbon human beings." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84011.yml b/html/changelogs/AutoChangeLog-pr-84011.yml new file mode 100644 index 0000000000000..12b730fefdcdf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84011.yml @@ -0,0 +1,4 @@ +author: "Pickle-Coding" +delete-after: True +changes: + - code_imp: "Supermatter zap power generation takes perspective of the machines subsystem." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84043.yml b/html/changelogs/AutoChangeLog-pr-84043.yml deleted file mode 100644 index 5397404f75b8d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84043.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "mc-oofert" -delete-after: True -changes: - - bugfix: "durand shield doesnt immediately depower the mech when taking stamina damage" - - balance: "durand shield is a bit stronger" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84072.yml b/html/changelogs/AutoChangeLog-pr-84072.yml deleted file mode 100644 index c36813ba598d8..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84072.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "GPeckman" -delete-after: True -changes: - - bugfix: "Analyzers should work on bioscrambler anomalies again." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84075.yml b/html/changelogs/AutoChangeLog-pr-84075.yml deleted file mode 100644 index 427cc4f1ae6d0..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84075.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "GoblinBackwards" -delete-after: True -changes: - - bugfix: "Interacting with an assembly bomb in hand will now allow you to interact with the attached assembly instead of opening the gas tank UI. Right-clicking will display the gas tank UI instead." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84079.yml b/html/changelogs/AutoChangeLog-pr-84079.yml deleted file mode 100644 index f191e2ef2cfad..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84079.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Watermelon, Mayhazah" -delete-after: True -changes: - - balance: "Drastically reduces the power consumption and max charge of power cells" - - balance: "Added a new stock part called the battery, used primarily in the construction of APCs and SMESs." - - rscadd: "Suiciding with a cell/battery will shock you and potentially dust you/shock the people around you if the charge is great enough." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84135.yml b/html/changelogs/AutoChangeLog-pr-84135.yml deleted file mode 100644 index b503e29e311d5..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84135.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Guestify" -delete-after: True -changes: - - bugfix: "The visor of the welding mask no longer goes down when you enable internals" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84143.yml b/html/changelogs/AutoChangeLog-pr-84143.yml deleted file mode 100644 index 68b36d831d4f6..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84143.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ben10Omintrix" -delete-after: True -changes: - - refactor: "vibebots are not basic bots" - - rscadd: "vibebots will now seek out the depressed and cheer them up" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84230.yml b/html/changelogs/AutoChangeLog-pr-84230.yml new file mode 100644 index 0000000000000..165b6de5e2c7a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84230.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - bugfix: "Vent-born wendigos no longer create one-way portals" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84232.yml b/html/changelogs/AutoChangeLog-pr-84232.yml deleted file mode 100644 index def406abaac4a..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84232.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "mc-oofert" -delete-after: True -changes: - - rscadd: "wawastation stand-in shuttle" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84255.yml b/html/changelogs/AutoChangeLog-pr-84255.yml deleted file mode 100644 index 95d0dd0b54f27..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84255.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "FlufflesTheDog" -delete-after: True -changes: - - bugfix: "multi-z hole repair works better, especially when the turf below is blocked by items" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84278.yml b/html/changelogs/AutoChangeLog-pr-84278.yml deleted file mode 100644 index e29caa1b8963f..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84278.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "hyperjll" -delete-after: True -changes: - - balance: "Thanks to incredible strides in selective slime breeding, slimes require substantially less nutrients to grow into adults, and split into children." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84279.yml b/html/changelogs/AutoChangeLog-pr-84279.yml deleted file mode 100644 index 9fcd48259c7bb..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84279.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "jlsnow301" -delete-after: True -changes: - - rscadd: "Bitrunning: You can now choose your hacker alias in prefs." - - rscadd: "Bit avatars get orbit icons." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84282.yml b/html/changelogs/AutoChangeLog-pr-84282.yml deleted file mode 100644 index fe26b6cb2c010..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84282.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SmArtKar" -delete-after: True -changes: - - bugfix: "RND console now properly rounds research points" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84374.yml b/html/changelogs/AutoChangeLog-pr-84374.yml new file mode 100644 index 0000000000000..5b4a368896c57 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84374.yml @@ -0,0 +1,4 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "The power for all science burn chambers across all maps now works properly." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84410.yml b/html/changelogs/AutoChangeLog-pr-84410.yml new file mode 100644 index 0000000000000..60a7947ca34bc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84410.yml @@ -0,0 +1,4 @@ +author: "mc-oofert" +delete-after: True +changes: + - bugfix: "wawastation arrivals has firealarms so you may now leave" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84439.yml b/html/changelogs/AutoChangeLog-pr-84439.yml new file mode 100644 index 0000000000000..fd4591d8f8792 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84439.yml @@ -0,0 +1,4 @@ +author: "Melbert" +delete-after: True +changes: + - rscadd: "Humanizing a monkey removes undergarments such as socks" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84448.yml b/html/changelogs/AutoChangeLog-pr-84448.yml new file mode 100644 index 0000000000000..b579cc85ac2e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84448.yml @@ -0,0 +1,4 @@ +author: "thegrb93" +delete-after: True +changes: + - bugfix: "Game not refocusing after closing a TGUI" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84459.yml b/html/changelogs/AutoChangeLog-pr-84459.yml new file mode 100644 index 0000000000000..221e9cc6e6cbd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84459.yml @@ -0,0 +1,5 @@ +author: "SmArtKar" +delete-after: True +changes: + - qol: "RD's labcoat is now classified as an actual labcoat instead of a glorified jacket, allowing them to put science-related stuffs into it" + - image: "You can now toggle RD's labcoat" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84540.yml b/html/changelogs/AutoChangeLog-pr-84540.yml new file mode 100644 index 0000000000000..c5bfb8bb9a958 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84540.yml @@ -0,0 +1,5 @@ +author: "carlarctg" +delete-after: True +changes: + - code_imp: "Added the subtype vendor which lets admins and coders vend subtypes of a path" + - code_imp: "Added the vendor and both varieties of omnitool to runtime station" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84622.yml b/html/changelogs/AutoChangeLog-pr-84622.yml new file mode 100644 index 0000000000000..1556c8ca97e8a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84622.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - balance: "Bait quality now influences the probabilities of getting a rarer fish compared to the most common one(s)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84656.yml b/html/changelogs/AutoChangeLog-pr-84656.yml new file mode 100644 index 0000000000000..1707af9661022 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84656.yml @@ -0,0 +1,4 @@ +author: "DGamerL" +delete-after: True +changes: + - refactor: "refactored `GetExactComponent` to be 1641 compatible" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84696.yml b/html/changelogs/AutoChangeLog-pr-84696.yml new file mode 100644 index 0000000000000..68e1d169ecee5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84696.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - image: "You can now flip your security helmet's visor up with alt-click! However, doing so will (obviously) expose your eyes." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84704.yml b/html/changelogs/AutoChangeLog-pr-84704.yml new file mode 100644 index 0000000000000..5fd293747bdcb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84704.yml @@ -0,0 +1,5 @@ +author: "mc-oofert" +delete-after: True +changes: + - qol: "blood bros get a hud to see eachother" + - code_imp: "teambased antagonists may not see the HUDs of other teams" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84723.yml b/html/changelogs/AutoChangeLog-pr-84723.yml new file mode 100644 index 0000000000000..ef87b3d8127cf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84723.yml @@ -0,0 +1,4 @@ +author: "Rhials" +delete-after: True +changes: + - admin: "Narrate verbs will now allow you to pick what text formatting span you want to use before you send them, if any." \ No newline at end of file diff --git a/html/changelogs/archive/2024-06.yml b/html/changelogs/archive/2024-06.yml index 267b8ab773265..100647af4323c 100644 --- a/html/changelogs/archive/2024-06.yml +++ b/html/changelogs/archive/2024-06.yml @@ -1153,3 +1153,265 @@ the window, making them nearly impossible to read. zxaber: - bugfix: Refactored borg omnitool code, fixing most of the unique interaction issues. +2024-06-26: + Ben10Omintrix: + - refactor: vibebots are not basic bots + - rscadd: vibebots will now seek out the depressed and cheer them up + FlufflesTheDog: + - bugfix: multi-z hole repair works better, especially when the turf below is blocked + by items + GPeckman: + - bugfix: Analyzers should work on bioscrambler anomalies again. + GoblinBackwards: + - bugfix: Interacting with an assembly bomb in hand will now allow you to interact + with the attached assembly instead of opening the gas tank UI. Right-clicking + will display the gas tank UI instead. + Guestify: + - bugfix: The visor of the welding mask no longer goes down when you enable internals + NewyearnewmeUwu: + - qol: ' The xenobio console''s monkey placing command also clears dead monkeys + on the tile.' + SmArtKar: + - bugfix: Spraycans can once more paint things. + - bugfix: RND console now properly rounds research points + SyncIt21: + - bugfix: alt click runtime no more when using style meter + - code_imp: improved alt & ctrl click code + Vekter: + - balance: The Event Horizon Anti-Existential Beam Rifle now requires Unregulated + Bluespace Research to be constructed. + Watermelon, Mayhazah: + - balance: Drastically reduces the power consumption and max charge of power cells + - balance: Added a new stock part called the battery, used primarily in the construction + of APCs and SMESs. + - rscadd: Suiciding with a cell/battery will shock you and potentially dust you/shock + the people around you if the charge is great enough. + carlarctg: + - bugfix: There's now a limit to how many dental implants you can cram into your + mouth, which is governed by your species' teeth limit. + - refactor: Most species have 32 teeth, due to being based on humans, weirding me + out when thinking about their teeth, or lack of enough information + - refactor: Moths and flypeople have NO teeth. They CAN'T get dental implants. I'm + NERFING moths. + - refactor: Lizards have seventy-five (!!!) teeth. Lizards are weird. + hyperjll: + - balance: Thanks to incredible strides in selective slime breeding, slimes require + substantially less nutrients to grow into adults, and split into children. + jlsnow301: + - rscadd: 'Bitrunning: You can now choose your hacker alias in prefs.' + - rscadd: Bit avatars get orbit icons. + mc-oofert: + - qol: space dragon can see in the dark and the invalid rift location alert is more + informative + - rscadd: wawastation stand-in shuttle + - bugfix: durand shield doesnt immediately depower the mech when taking stamina + damage + - balance: durand shield is a bit stronger +2024-06-28: + Ben10Omintrix: + - refactor: firebots are now basic bots + Deadgebert: + - rscadd: Crystallizer boards added to Delta and Tram HFR rooms + GPeckman: + - bugfix: Protolathes/Circuit Imprinters/Techfabs with better parts should now print + items faster again. + GremlinSeeker: + - bugfix: Fixed disconnected APC on birdshot and other minor service fixes. + Kapu1178: + - bugfix: MODsuit pathfinder module works. Again. + - code_imp: AI pathfinding should produce slightly better paths. + MTandi: + - rscdel: Removed tank dispenser UI to use left/right clicks instead + - rscadd: There is a chance that Spess Knife will be in a mail for engi and clowns + - qol: Updated Microscope UI + - qol: Microscope is easier to use - you can remove dish with right click and swap + dishes + Melbert: + - bugfix: Fixed cyborg omnitools being unusable on some things + - bugfix: Fix timestop being 1 tile too small again, and fixes a lot of other field + effects from being 1-small as well + - sound: Glug-glug sound when dragging a leaking gas tank + - bugfix: Lizards and Moths don't deathgasp twice when they die + Melberte: + - rscadd: Cool Sword Cursor Maintenance App + ShizCalev, SpaceLove: + - refactor: Techweb strings are defined now so to maintain modularity + - balance: Research papers will have less overall point generation. + SmArtKar: + - bugfix: Retracted pens can be put into PDAs + SyncIt21: + - qol: adds examines, screentips & balloon alerts for flatpacker, flatpack box & + cart + - qol: adds correct material colour insertion animation for flat packer, continuous + progress bar animation during printing + - qol: flat packer has a separate icon when you open its maintenance panel, eject + button is disabled when no board is inserted + - qol: ejecting the board will place it in your hand, use ctrl click shortcut to + eject board from flatpacker + - bugfix: you cannot deploy a flat packed box on a turf that has dense objects(like + other flat packed boxes & such) + - bugfix: you cannot insert hologram/abstract items into a flat packer or flatpack + cart, also can hit them with any objects when in combat mode + - bugfix: you can deconstruct a flat packer with a crowbar after opening its maintenance + panel + - bugfix: correct cost of the design scaled with `creation_coefficiency` is displayed + in the UI + - code_imp: overall improved code quality of all things flat pack related + - bugfix: actions buttons can be dragged anywhere again + Viralmilk22: + - rscadd: Shifted up the service departments on Birdshot. + - rscadd: Added an arcade. + alien3301: + - balance: Mediborg surgical omnitool upgrade makes the health analyzer advanced + carlarctg: + - bugfix: Fixed hunger affecting your speed in nograv + hyperjll: + - balance: 'Due to selective breeding of slimes, some species require roughly 3x + more plasma than normal to activate a plasma reaction. Slime extracts affected + are: Oil, Adamantine, Orange, and Gold. Yellow slimes require 3x more blood + to activate a blood reaction.' + - balance: Oil slime extracts have become less potent during a plasma reaction due + to selective breeding conditions. + - balance: Gold slime extracts give rise to one less monster during a plasma reaction + due to selective breeding conditions. + - balance: Yellow slime extracts have become less potent during a blood reaction + due to selective breeding conditions. + - balance: Adamantine golem shells require 3 sheets rather than 1, due to unknown + circumstances. + necromanceranne: + - bugfix: Headprotector modules and constructor modules work properly once more. + - bugfix: Space heaters do not completely drain their starting cell while trying + to change their room temperature by a few degrees. + uaioy: + - bugfix: infiltrator modsuit sprite is not misaligned anymore + vinylspiders: + - qol: 'polypore mycelium no longer contains sugar, preventing it from instantly + creating fringe weaver beverage when ground up. qol: sugar may be acquired from + grinding fireblossoms instead of polypore mycelium.' +2024-06-29: + Bisar: + - rscadd: Ashwalkers now start out allied to lavaland fauna (except for raptors). + Attacking the fauna will break this alliance with the attacked beast and any + who witness it. + - bugfix: Ashwalkers are now actually in the ashwalker faction, instead of the neutral + one. + EnterTheJake: + - rscadd: A new Anomaly organ has been introduced, The Voltaic Combat Cyberheart! + Higgin: + - bugfix: Mood buffs/penalties are now properly equal on both positive/negative + sides. + JackEnoff: + - balance: Changelings regenerate chemicals faster when not on fire + - balance: Changelings regenerate chemicals slower when on fire + MGOOOOOO: + - qol: The "Dental Implant" surgery no longer forces itself to restart after implanting + one pill. Now implanting pills in the surgery has another step to either search + the patient's mouth for another tooth to implant, or cauterization to end the + surgery. + Melbert: + - bugfix: Fixed modsuit interactions slightly. No longer requires combat mode to + use tools on it, plasma core works as intended as well. (Using combat mode, + however, will make you insert the item) + - refactor: Refactored lockboxes + - refactor: Refactored medbot skin application + Moonlit2000: + - bugfix: peg legs can't bleed + ShizCalev: + - bugfix: Toggling ambient ship sounds will now instantly turn it on/off. + - bugfix: Deafened mobs will no longer hear the station's ambient sounds. + - bugfix: Fixed ambient sounds resetting their loop when entering different bodies + (ie admin ghosting, being moved to other mobs, ect.) + - bugfix: Monkeys that become sentient through the sentience helmet will no longer + be notified that they can ventcrawl. + - bugfix: Airlocks will now correctly said what other airlock they are cyclelinked + with. + - bugfix: Portaturrets no longer go invisible when unwrenched from the ground. + SmArtKar: + - code_imp: Rewrote a portion of storage UI code to allow it to be influenced by + UI style. + - image: Prettified storage UI and made it affected by UI theme. + - image: Ripley and Ripley-based mechs now have consistent outlines + SyncIt21: + - bugfix: Holodeck closet & crate items are marked as holograms as well + - bugfix: Holodeck closet & crate items delete themselves when the program is changed + - bugfix: you can access your inventory when lying down + TheBoondock: + - sound: added liquid pouring sounds to pouring of any reagents + Thlumyn: + - bugfix: fixed active turfs in icebox listening post + Vekter: + - bugfix: Fixed the visibility of a pipe in Northstar's ordnance lab + - rscadd: Bitrunners can now access specific bounties asking for the item rewards + from specific bitrunning domains. + - bugfix: Fixed bitrunner pulling from a pool of literally every bounty available. + - bugfix: Fixes the door-bolting buttons in the dorms and bathrooms on Birdshot. + aaaa1023: + - bugfix: Removed a bush trapped inside a wall above morgue on Tramstation + carlarctg: + - rscadd: Reworked blood loss effects on the user to be much more noticeable. + - code_imp: Changed the blood volume defines to be based on the BLOOD_VOLUME_NORMAL + define, with a multiplier of blood loss applied, to be more understandable. + - rscadd: Added tons of new mutations to Genetics, alongside some recipes! + - rscadd: Thermal Adaptation has been made a combination mutation from the stronger + but narrower Cold and Heat adaptations. + - balance: Cryobeams have 9 tile range, and fiery sweat doesn't cause spread on + contact. + - image: Added some neat new sprites for the new mutations, and added a greyscale + version of the magic hand sprites. + - code_imp: Infinitesmally improved mutation code. + delingar: + - bugfix: Lavaland elite are at lavaland fauna faction now + hyperjll: + - bugfix: Inducers now accept megacells AND regular cells. + junkgle01: + - bugfix: added a keycard auth to QM room + necromanceranne: + - bugfix: Emergency firesuits no longer hide your gloves. + - qol: Punching bags are now a equal method of training to the fitness machinery. + - qol: Boxing grants more experience overall for participation. +2024-06-30: + Exester509: + - spellcheck: Fixed two typos in the heretic lore + Ghommie: + - bugfix: cigarettes and vapes are no longer treated as clothing (eg. They no longer + get shredded and need to be repaired with... cloth). + GoblinBackwards: + - bugfix: Fixed gas canister shields turning themselves off in unpowered areas when + they weren't drawing any cell power. + LT3: + - code_imp: Blood filter only pings and says finished when it's actually finished + Sadboysuss: + - bugfix: fixed cyborgs and monkeys not being able to buckle to chairs + SmArtKar: + - bugfix: Storage no longer deletes all of its viewers upon being deleted + - bugfix: Storage UI now renders properly + - bugfix: Guns no longer can be overfilled by 1 bullet + - bugfix: Russian revolvers now spawn with only 1 live round as originally intended, + and click when firing a blank. + Xander3359: + - bugfix: Fix being unable to add a flux core to new the combat heart cybernetic + aaaa1023: + - bugfix: Fixed the camera offset for the navigation console on a handful of Whiteships. + - bugfix: Fixed the Pubby Whiteship drifting sideways through hyperspace when in + flight. + - bugfix: Fixed the Kilo Whiteship flying backwards through hyperspace when in flight. + - bugfix: The Birdshot Whiteship should actually be able to spawn now. + - spellcheck: fixed spelling of "aggressive" in the shuttle manipulator description + for the Birdshot Whiteship. + carlarctg: + - spellcheck: Syndicate jaws of life are now jaws of death! + - spellcheck: Made its desc. more descriptive, stating that its faster. + - rscadd: Heretics can now sacrifice Cultists for sweet loot. + - rscadd: Cultists can now sacrifice Heretics for sick trinkets. + - rscdel: Removed Bastard Blade from the game, code, and life + - balance: Aggressive Spread now rusts non-turfs next to you as well + - balance: Raise Construction cd raised to 7, now breaks rust walls as well, improved + autoaim making it actually usable midfight + - refactor: Auto-aim code now works on any atoms if configured + grungussuss , Kayozz: + - sound: exosuit fabricators, Autolathes and Techfabs will now produce sounds when + printing items + grungususs: + - bugfix: fixed the name of a request console in the medical sec outpost on metastation + mc-oofert: + - bugfix: both engineers and roboticists may now access the controls of a firebot diff --git a/html/changelogs/archive/2024-07.yml b/html/changelogs/archive/2024-07.yml new file mode 100644 index 0000000000000..76b5efc5005a7 --- /dev/null +++ b/html/changelogs/archive/2024-07.yml @@ -0,0 +1,494 @@ +2024-07-01: + Ben10Omintrix: + - balance: raptors will now knock off their rider and disable them if hit by any + energy projectiles or if they recieve any stamina damage + Chestlet: + - bugfix: Nanotrasen sent us a batch of faulty canisters. They've been recalled + and replaced with less faulty canisters. + - bugfix: Zauker SM interaction works correctly now. + DaCoolBoss: + - image: Relics ("strange objects") now have unique sprites. + Iajret: + - bugfix: fixed blood loss knocking you down at somewhat safe (~80%) blood levels + LemonInTheDark: + - rscadd: Shield generators and shield gen walls now glow a light blue. Pretty! + MTandi: + - qol: Made light tiles available in the crafting menu + - qol: Circuit tile variants can be cycled in-hand + - rscadd: Moved loose tiles and wall frames from lathe designs to other tiles and + frames in the crafting menu + Melbert: + - rscadd: Humanizing a monkey removes undergarments such as socks + - qol: Handheld Genetic Scanners fit in Geneticist equipment suit storage + Pickle-Coding: + - code_imp: Supermatter zap power generation takes perspective of the machines subsystem. + Rhials: + - rscadd: Bounty Hunter teams now have personalized announcements for when they + are spawned in. + ShizCalev: + - bugfix: The power for all science burn chambers across all maps now works properly. + SmArtKar: + - image: Captain's spare safe received a new texture + - bugfix: Vent-born wendigos no longer create one-way portals + - image: Decluttered card textures + - bugfix: You can grind slime extracts in reagent grinders once more. + - bugfix: Pyrokinesis bolts no longer have infinite range and create trails of fiery + doom. + - qol: RD's labcoat is now classified as an actual labcoat instead of a glorified + jacket, allowing them to put science-related stuffs into it + - image: You can now toggle RD's labcoat + ViktorKoL: + - rscadd: Added a new UI for heretic research. + Wallem: + - rscadd: The detective now starts with the DET.ekt Skillchip, which allows them + to identify chemicals and bloodtypes by taste. + YesterdaysPromise: + - image: updated halloween metoer sprites. + aaaa1023: + - qol: 'Increased the viewrange in the navigation camera console on the following + shuttles: Silverscale pirate shuttle, the Flying Dutchman pirate shuttle, the + IRS pirate shuttle, and the Greytide pirate shuttle.' + - bugfix: Fixed the Battlecruiser corvette, Silverscale pirate shuttle, and the + Greytide pirate shuttle flying in incorrect directions in hyperspace. + - bugfix: Fixed the Navigation console camera eye on various pirate ships being + off centre. + carlarctg: + - spellcheck: Heretic spell invocations now use one dead language per path. Altered + a few invocation types. + grungussuss: + - qol: Windoors now stay open for 8 seconds instead of 5 + - qol: Secure windoors now stay open for 5 seconds instead of 2 + mc-oofert: + - bugfix: brig cell timer ui works properly now + - bugfix: wawastation arrivals has firealarms so you may now leave + necromanceranne: + - bugfix: Mecha weaponry is capable, for the first time ever, of experiencing recoil. + This was an intended mechanic, I promise. The code just literally never worked. + - bugfix: Mecha bump melee attacks and click melee attacks are now on the same cooldown, + but have varying cooldown timers. You will always bump attack faster than you + will click. + - bugfix: You must be in combat mode to punch objects and to bumpsmash into objects. + - bugfix: Stops mecha being able to punch literally any object and damage them. + - code_imp: Tidies up some of the autodoc comments for mech weapons. + spockye: + - bugfix: fixed Wawastation areas + - bugfix: fixed wawastation disposals + thegrb93: + - bugfix: Game not refocusing after closing a TGUI + xXPawnStarrXx: + - rscdel: Removed cordons on deathmatch maps, since they're autoadded now. +2024-07-02: + 00-Steven: + - code_imp: Moved bedsheet bin interactions to the item interaction code. Please + report any issues. + - qol: Made bedsheet bin tool interactions right click, such that left click is + consistently for putting in items. + - qol: Added usage screentips to bedsheet bins. + - qol: Added more feedback to failing to hide items in bedsheet bins. + - sound: Made putting items in bedsheet bins not silent (If the items have associated + pickup/drop sounds). + - code_imp: Deconstructing light switches now uses the proper tool action and tool + usage code, please report any issues. + - bugfix: Attempting to deconstruct a light switch by unscrewing it no longer makes + you hit it even on a success. + - sound: Deconstructing a light switch actually plays tool usage and deconstruction + sounds. + - qol: Deconstructing light switches is now a left click with a screwdriver parallel + to other unscrewing actions. + - bugfix: Screentips for deconstructing a light switch no longer show up on every + item EXCEPT screwdrivers. + - qol: Added an examine hint denoting light switches are screwed to the wall. + - qol: Added visible messages for someone deconstructing a light switch parallel + to deconstructing intercoms. + Bisar: + - qol: Loot panels should update more predictably and informatively now. + - code_imp: Lootpanels have more consistent logic on when they automatically update. + Jolly: + - code_imp: Behind the scenes, maps had a little bit of tweaking. If you see things + rendering in weird ways, or they don't look like how they used to/supposed to, + please report them on GitHub! + Kapu (ported by StrangeWeirdKitten): + - bugfix: Ambience buzz will now respect ship ambience prefrences for observers. + - sound: Ambience buzz requires APC enviorment power to function + Kocma-san: + - qol: you can now swap pens in pdas + LemonInTheDark: + - bugfix: Some varieties of snow now visually melt properly again when burned + ShizCalev: + - bugfix: Fixed a number of shuttles having parts (such as lattices) completely + disappearing. + - bugfix: Fixed the ceilings above shuttles on station maps being full-bright. + - bugfix: Fixed lattices sometimes appearing at random locations in space on station + maps. + - bugfix: Cleaned up a number of accidentally placed objects in space across all + station maps. + - bugfix: Fixed a false positive with the mapload_space_verification unit test failing + on turfs that weren't actually part of shuttles. + - code_imp: Added a unit test that automatically finds all base space turfs with + objects on them, as well as non-space turfs that are set to space areas (meaning + that these squares weren't lit properly.) + SmArtKar: + - bugfix: You no longer get dusted upon trying to store your supermatter sliver. + - bugfix: Fulton animation is no longer sideways. + - bugfix: Hand of Midas now works point-blank. + TheBoondock: + - sound: added pickup and drop sound for beakers + carlarctg: + - bugfix: Fix /datum/weakref appearing when linking airlock heretic portals + hyperjll: + - bugfix: 'Hostile plant monsters (EX: Killer Tomatoes) no longer act hostile toward + Seedlings.' + jlsnow301: + - bugfix: Fixed some UI bugs in the power monitor screen. + lorwp: + - bugfix: extinguishers now can be filled with subtypes of water again (Namely, + holy water) + mc-oofert: + - balance: Facehuggers dont make people go to sleep but muffles speech + - code_imp: Very very minor xenomorph code cleanup + - refactor: Muzzles are now an element + - balance: portable air scrubbers scrub in a 3x3 square + hold as much gas as a + canister + nikothedude: + - rscadd: Being cursed now enables disembowlements/cranial fissures outside of hardcrit +2024-07-03: + 00-Steven: + - bugfix: Fixed telekinesis letting you grab people at a distance, and teleport + them to you by strangling them. + DaCoolBoss: + - bugfix: Removed three traitor posters from Cargo Warehouse's walls. (Metastation) + - balance: Added one traitor poster each to the QM's Office, Vault and Evidence + Storage to compensate. (Metastation) + - rscadd: Ghost role food truck merchants may occasionally turn up at the station. + - rscadd: Adds a new fugitive hunter type, MI13 secret agents. + DrDiasyl aka DrTuxedo: + - sound: Shoves now produce more meaty sound! + GremlinSeeker: + - bugfix: fixed Birdshot bar and surrounding areas not properly connected to the + power grid. + LT3: + - qol: Crew monitor defaults to sort by vitals + MTandi: + - image: New linen bin / basket sprites + - qol: It is easier to do some required techweb experiments on Charlie station now + - bugfix: Fixed experimental dissection surgeries giving too many points + - balance: 'Techweb: Moved NTNet relay back to tcomms node' + - balance: 'Techweb: Moved blood pack and chem pack to the starting node' + MrDas: + - bugfix: Bolas now slowdown properly. + - bugfix: Cult bolas no longer leave in-hand sprite when they ensnare to non-cult + user. + OrbisAnima: + - bugfix: Fixed the basic Sandwich recipe and tags, now it matches the description + and original intent. + - bugfix: Brought the fishing rewards experiments to normal values. + - bugfix: Bio Emergency crates now bring Bio Suits and Hoods compatible with the + Security Hoods and Suits Schematics. + Rhials: + - balance: All cameras in bathrooms and showers have been removed. + SmArtKar: + - bugfix: Dark matteors no longer claim that they have missed when they actually + impacted the station + - image: Fixed shading on some metal ingots. + Sosmaster9000: + - balance: 'Xenobiologists now have a BZ-filled containment pen. Don''t breathe + that! + + balance:Some items which either cannot be printed elsewhere or are part of game + progression (e.g. teleporter endpoints and, of course, Nanners) have been moved. + Alien Spawnpoints are in the same spot.' + bob-b-b: + - rscadd: Added flatpacker & multitool to all R&D labs + carlarctg: + - rscdel: Removed Trichromatic Larynx per @mothblocks decision that it looks uggo. + - rscdel: Replaced heckacious laryncks' color and size changes with random bolding, + italics, and underlining. + - rscadd: Stoner has been un-locked and replaces TL in the above's recipe. + - bugfix: Fixed elastic arms users being unable to use abstract items like mending + touch or shock touch. + - bugfix: Fixed mending touch being bad + mc-oofert: + - bugfix: portascrubbers also scrub the tile theyre on +2024-07-04: + 00-Steven: + - code_imp: Moved bedsheet interactions to the item interaction code. Please report + any issues. + - bugfix: Bedsheets adjust their offset to match that of the living they're tucking + in. + - sound: Bedsheets use the cloth drop/pickup sounds instead of being silent. + - qol: You can tuck someone in telekinetically. + ArcaneDefence: + - rscadd: You can now microwave station pets that you can pick up, with predictable + outcomes + Ben10Omintrix: + - bugfix: fixes mansus grasp not clearing runes + - bugfix: fixes not being able to clean microwaves + Bisar: + - bugfix: Dastardly clowns will no longer be able to get counted for three times + the steps by moving diagonally. + Ghommie: + - bugfix: Fixed toggleable screen colors for glasses. + - code_imp: De-hardcoded, refactored the above, now-fixed feature. + - rscadd: Pumpkin hardhats and the hood of the flash suit now affect the color of + your screen. + - rscadd: Prism glasses, obtainable through xenobiology crossbreeding, now also + affect the color of your screen. + - qol: You no longer need to reach the very edge of the game screen to reach the + maximum zoom range when scoped. + LT3: + - sound: Changed blood filter cycle sound + MTandi: + - image: Fixed the cargo crate having wrong stripe width in open state + - rscadd: Added Pipe Scrubber portable atmos machine + Melbert: + - rscadd: Humonkeys and random corpse spawns now look more... human. + Paxilmaniac: + - image: The sprites for the projectile dampener field have been updated + Profakos: + - bugfix: Instruments enhanced with portable tuning can perform the rites that have + been granted + SmArtKar: + - image: Some gloves have received new sprites + - bugfix: Mending touch no longer damages non-humans + - rscdel: You can no longer get turned into a dullahan by a genetic meltdown + - refactor: Refactored genetic meltdown code into datums, making it more extendable. + - image: Updated diamond stacks to fit its "unstacked" version. + - refactor: Bayonet attachment is now a component. + SyncIt21: + - bugfix: omni crowbar tool interaction for replacing tiles has been fixed + - bugfix: techfab screentip does not runtime when you hover over it with an omnitool + multitool + - bugfix: medi borgs can do brain surgery again + - code_imp: improved multitool & general tool code for some machines + - bugfix: you can hold your wound while resting via ctrl click + - bugfix: material container won't consume the contents of an item if that item + itself is rejected for any reason + - qol: you can use any storage medium & not just bags/boxes to dump stuff into material + containers + - code_imp: improved mouse drag & drop code + - code_imp: Improves cpu performance of transferring & removing reagents + - bugfix: plumbing machinery should have consistent volumes throughout the course + of its operations + - bugfix: plumbing iv drop now only accepts reagents from ducts but won't put reagents + back into it i.e. it only has a input pipe + Thunder12345: + - bugfix: Birdshot's AI core no longer has windoors concealed under open shutters. + ViktorKoL: + - rscadd: the Feast of Owls now leaves more dramatic messages in your chat + - sound: the Feast of Owls now has a little theme + carlarctg: + - qol: Transhumanist and prosthetic limb no longer conflict. If you pick the same + limb for both it uses the weaker prosthetic (dumbass) + - code_imp: Made the name for prosthetic limb global list more intelligible + jlsnow301: + - bugfix: Reverts the fully interactive lootpanel, please just refresh it if you + want to see new contents + - rscadd: 'Added a bitrunning deathmatch map: Island Brawl. Both ghosts and runners + get many more spawns than normal.' + - bugfix: Lowered the static vision time in domain load in. + - bugfix: Bitrunning hacker aliases are now much more permissive + mc-oofert: + - rscadd: 254 new vox lines + - balance: removed tasers, the unfirable turret gun, death wand, polymorph wands + and the enchanted modsuit from lootbox loot tables + - bugfix: lootbox guns should now mostly not have syndicate firing pins so you can + actually use them + - bugfix: deathmatch OSHA Violator map has actually functioning field gens now + - bugfix: being polymorphed in deathmatch does not count you dead + - bugfix: deathmatch cyborgs may not talk in binary + - qol: deathmatch map names are sorted alphabetically + - spellcheck: deathmatch final destination clown and chef loadouts have been renamed + to avoid confusion + - rscadd: mecha wire that shoots you or anyone nearby if pulsed or cut + - bugfix: mecha shock wire shocks you +2024-07-05: + Absolucy: + - qol: Linked speech now prevents messages from highlighting if its a message you + sent, or if you are the owner of said link.. + - qol: Linked speech messages are now marked as radio messages, for chat tab purposes. + ArcaneMusic: + - rscadd: The Illumination Applications technode now includes a gunkit for a new + gun, the Photon Cannon. + DATA_, with sounds made by Beebblie: + - sound: You will now be able to hear your muffled breathing while using internals. + This can be turned off in the game settings. + Ghommie: + - rscadd: A station trait that fills maintenance with glowsticks. + Iamgoofball: + - rscadd: You can now craft a singularity hammer using all nine anomaly cores and + the supermatter. + LemonInTheDark: + - bugfix: Grass turfs will render properly now. Reworked how floors render, please + report any bugs! + - bugfix: Cameras now properly capture lighting + - bugfix: The layering seen in photos should better match the actual game + MTandi: + - bugfix: 'Techweb: Moved upgraded cyber organs to tier 3 from tier 4' + - qol: 'Techweb: Added fully augmented android scan discount experiment for Advanced + Cybernetic Organs techweb node' + - qol: Data disks are now printed in lathes instead of circuit imprinter + - balance: 'Techweb: High yield explosive is now a discount experiment for Exotic + Ammo node, giving more free points' + - balance: 'Techweb: Replaced the botany/xenobio discount experiments with a new + mutant scan experiment for the Gene Engineering node' + - balance: 'Techweb: Damaged mech scan is a discount experiment for tier 4 Mech + Energy Guns node, giving twice more free points' + - balance: 'Techweb: Added a new anomaly scan experiment that gives full discount + for the Advanced Anomaly Shells, also moving the node to tier 5' + - balance: 'Techweb: Moved mech RCD to the Experimental Tools node' + - balance: 'Techweb: Moved handcuffs to T2 security node, leaving only zipties in + T1' + - balance: 'Techweb: Non-human Autopsy is a discount experiment instead of a required + one now' + - balance: 'Techweb: Parts scan experiments require 6 machines instead of 4' + - rscdel: 'Techweb: Removed the New Toys node moving contents to sec and medbay + trees' + - qol: Made air horn craftable from a spraycan and a bikehorn + - qol: 'Techweb: Better wording on the slime scan experiment' + - refactor: Vat grower is a normal machine now that doesn't need plumbing + - qol: Cytology petri dish smartfridge starts with 3 random samples + - rscadd: Added protein powder condiment bottle, available in the cytology supplies + locker and the cargo pack + - rscdel: Removed science variant of plumbing RCD + - bugfix: Fixed a bug when machines without stock parts didn't spawn frames on deconstruction + - bugfix: Fixed vat grower not growing + - qol: portable scubber, pump and pipe scrubber are buildable as any other machines + OrionTheFox: + - rscadd: updated Icebox's lavaland ruin. The incursion grows... + Rhials: + - admin: Quiet-announce random events still announce to admins and can therefore + be rerolled. + Xackii: + - rscadd: 'New traitor mech: Justice. Emag fabricator to get it.' + Zergspower: + - bugfix: fixes borgs ability to climb + aaaa1023: + - qol: Increased view_range on the Psyker Bounty Hunters' Shuttle navigation console. + - bugfix: 'Fixed the shuttle navigation console camera eye being incorrectly offset + on: the SpacePol van, the Russian bounty hunters, the default bounty hunters, + the Psyker bounty hunters, and the MI13 Foodtruck.' + - bugfix: Fixed the SpacePol van, Russian bounty hunters, default bounty hunters, + and Psyker bounty hunters' shuttles all flying in incorrect directions. + - bugfix: 'Fixed the following shuttles flying in unexpected directions: Pubby escape + pod, Humpback emergency shuttle, Pubby monastery shuttle, Birdboat emergency + shuttle, Birdshot emergency shuttle' +2024-07-06: + 00-Steven: + - image: Goody case locked/unlocked sprites have been swapped again, having a gap + for unlocked and no gap for locked. + ArcaneMusic: + - qol: Examining a windoor will now provide the construction steps, like other standard + buildable objects. + DaCoolBoss: + - code_imp: Cleaned up relic code. + - image: Added necrotech themed relics. + GoblinBackwards: + - bugfix: Firefighting backpack tank nozzle can be used to hit objects and destroy + atmos resin again. + MTandi: + - bugfix: Binary devices no longer ignore the volume of the output pipe network + - bugfix: Fixed the augmented organs experiment + OrionTheFox: + - image: fixed and touched up the icons for the Doorjack and Cryptographic Sequencer + (EMAG) + Seven: + - balance: Bloody footprint trails go a longer distance now. + SyncIt21: + - bugfix: Autolathe won't eat the borg omni tool + carlarctg: + - bugfix: Fixed temp n space adaptations not conflicting + - rscadd: Projectile Dampener field now reduces stuns and stamina damage from incoming + projectiles + hyperjll: + - bugfix: Reagent containers are no longer mysteriously fireproof. + mc-oofert: + - qol: CE and Engineer start with their hardhat as the respective welding hard hat + variant + necromanceranne: + - balance: Settlers are a bit slower on their steeds. +2024-07-07: + Holoo-1: + - bugfix: fixed ninja's adrenaline boost module not being rechargable + SyncIt21: + - bugfix: you can craft the singulo hammer with either a supermatter engine/shard + again +2024-07-08: + 00-Steven: + - bugfix: Fixes hacker alias name preference not working. + Ben10Omintrix: + - bugfix: raptors don't easily stress out in lavaland environments + Ghommie: + - rscadd: Night vision goggles now subtly tint your screen. + - rscadd: You can turn your night vision goggles off. Doing so removes the tint + and the eye protection malus. + - bugfix: Hoverboards properly dysfunction in space without any kind of support + underneath them. + - qol: Mood more promptly reacts to the beauty of an area as it changes, and not + just when changing areas. + - rscadd: Coroners (and potentially other mobs with the morbid trait), now like + degradated-looking rooms. + - rscadd: Aquariums now influence the beauty score of an area based on their contents. + - rscadd: Morbid people now get a positive moodlet when admiring an aquarium full + of dead fish, and a negative one when fish are alive. + - admin: Added a config that regulares random spawners weights. + - rscadd: 12% chance of a ouija board spawning in the chaplain office. Wawastation + always has one. + GremlinSeeker: + - bugfix: ' Birdshot botany is resized. bar is also smaller.' + - bugfix: Birdshot public shrine now uses the correct dirt. (Goodbye chasms) + LT3: + - balance: Advanced Medbay Equipment research node lowered to tier 3 + - balance: Advanced Medbay Equipment now requires haloperidol scan experiment + - balance: Haloperidol and cryostylane experiments can be performed roundstart + - balance: Cryostasis research node raised to tier 4 + - balance: Cryostasis now has Fusion instead of Controlled Plasma as a prerequisite + - balance: Cryostasis cryostylane scan is now a discount experiment + - balance: Crystallizer moved from Controlled Plasma to Fusion + Loafin34: + - rscadd: There's a previously undiscovered variant of a nullrod, recently revealed + from the depths of the skating rink.. + Melbert: + - qol: Vending Machines have a search bar + - qol: Random player characters now look less like rainbow vomit and more like some + of the most average people you know. + SmArtKar: + - bugfix: Added a forgotten firelock on second floor of wawa + - bugfix: Fixed glass shards generated from falling vending machines or tackling + windows not being able to embed into anyone. + - refactor: Refactored embedding code to use datums instead of bespoke elements + and ugly associated lists. + - bugfix: You require breathing once more. + Toastgoats: + - rscadd: Added the designer EVA suit, a unique pirate hardsuit for Silverscales. + - balance: Increased the equipment available to Silverscales + - image: Sprites for the designer EVA suit + carlarctg: + - spellcheck: Renamed the organ thrower module to the 'organizer' + - spellcheck: Made its description more accurate. Did you know it instantly replaces + up to 5 organs in active surgery? + homexp13: + - bugfix: ' Examining a fishing spot twice with sufficiently high fishing skill + (or the skillchip) will get you a list of fishes that can ACTUALLY be caught' + jlsnow301: + - bugfix: Fixed the bluescreen while setting a custom font in tgui panel + - bugfix: Fixed the orbit icons scrolling sometimes + lorwp: + - rscadd: using 'skibidi' as a chaplain deity now gives you brain damage + mc-oofert: + - bugfix: defibrillator no longer has an abstract cell + - code_imp: defibrillator attackby replaced with item_interaction + - balance: All jetpacks are now modsuit jetpack speed + - rscdel: Adv. Ion Jetpack module has been removed + - bugfix: you may now use a legion core on an elite tumor + necromanceranne: + - balance: You can only stun someone with a shove if they have been shoved into + objects or people, or have been hit by telescopic batons, contractor batons + or the Mansus Grasp. + - balance: If someone is knocked to the floor, however, you can still disarm them + of any object with a shove. + - bugfix: Knight helmets no longer burn as though made of cloth. + - rscadd: Fletching starter kit! Make your own bow, shoot your friends in an unfortunate + workplace accident. Replace all those holy arrows you lost. + - bugfix: Bows now properly undraw once they have fired an arrow. + - code_imp: Bows now utilize overlays in order to display loaded arrows. Unique + overlays per arrow. diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index 31f26c3e6e11e..38921a6e48402 100644 Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index fd7bee8ed6075..ae668b0495a56 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/bitrunning.dmi b/icons/effects/bitrunning.dmi index 8efa429389c3a..9a2e9c0228a57 100644 Binary files a/icons/effects/bitrunning.dmi and b/icons/effects/bitrunning.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 96c02aa91f990..1b6e8d68e3682 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/fields.dmi b/icons/effects/fields.dmi index f87e1f3975e86..1e42870787674 100644 Binary files a/icons/effects/fields.dmi and b/icons/effects/fields.dmi differ diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi index ad09351e787f6..47684f4664e89 100644 Binary files a/icons/effects/mapping_helpers.dmi and b/icons/effects/mapping_helpers.dmi differ diff --git a/icons/effects/mouse_pointers/cool_sword.dmi b/icons/effects/mouse_pointers/cool_sword.dmi new file mode 100644 index 0000000000000..a34fa56d87d3c Binary files /dev/null and b/icons/effects/mouse_pointers/cool_sword.dmi differ diff --git a/icons/effects/random_spawners.dmi b/icons/effects/random_spawners.dmi index ed6c0c8702e45..4e5608330030b 100644 Binary files a/icons/effects/random_spawners.dmi and b/icons/effects/random_spawners.dmi differ diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi index e56df0560531a..dda7d6cc635af 100644 Binary files a/icons/hud/screen_alert.dmi and b/icons/hud/screen_alert.dmi differ diff --git a/icons/hud/screen_clockwork.dmi b/icons/hud/screen_clockwork.dmi index 0923e42e7e429..17e0c92972e25 100644 Binary files a/icons/hud/screen_clockwork.dmi and b/icons/hud/screen_clockwork.dmi differ diff --git a/icons/hud/screen_detective.dmi b/icons/hud/screen_detective.dmi index aed6e0d6572a5..9704ca96f4c12 100644 Binary files a/icons/hud/screen_detective.dmi and b/icons/hud/screen_detective.dmi differ diff --git a/icons/hud/screen_glass.dmi b/icons/hud/screen_glass.dmi index 63ad3293921b8..6b6d9d515c5f0 100644 Binary files a/icons/hud/screen_glass.dmi and b/icons/hud/screen_glass.dmi differ diff --git a/icons/hud/screen_midnight.dmi b/icons/hud/screen_midnight.dmi index 5483ddf4564a5..8a6f2e1e8e06c 100644 Binary files a/icons/hud/screen_midnight.dmi and b/icons/hud/screen_midnight.dmi differ diff --git a/icons/hud/screen_operative.dmi b/icons/hud/screen_operative.dmi index f2d60d394acc9..73afee5b3ca40 100644 Binary files a/icons/hud/screen_operative.dmi and b/icons/hud/screen_operative.dmi differ diff --git a/icons/hud/screen_plasmafire.dmi b/icons/hud/screen_plasmafire.dmi index 5423d3855b2b6..b0b2c7999c92d 100644 Binary files a/icons/hud/screen_plasmafire.dmi and b/icons/hud/screen_plasmafire.dmi differ diff --git a/icons/hud/screen_retro.dmi b/icons/hud/screen_retro.dmi index b4252109d6847..a0d5abf3be511 100644 Binary files a/icons/hud/screen_retro.dmi and b/icons/hud/screen_retro.dmi differ diff --git a/icons/hud/screen_slimecore.dmi b/icons/hud/screen_slimecore.dmi index a75fe55c37839..84a7abec2be5f 100644 Binary files a/icons/hud/screen_slimecore.dmi and b/icons/hud/screen_slimecore.dmi differ diff --git a/icons/hud/screen_trasenknox.dmi b/icons/hud/screen_trasenknox.dmi index 2569d2a635edd..00ad01258a36a 100644 Binary files a/icons/hud/screen_trasenknox.dmi and b/icons/hud/screen_trasenknox.dmi differ diff --git a/icons/mob/actions/actions_cult.dmi b/icons/mob/actions/actions_cult.dmi index f73f5bb6367fa..7725ae691b4c6 100644 Binary files a/icons/mob/actions/actions_cult.dmi and b/icons/mob/actions/actions_cult.dmi differ diff --git a/icons/mob/actions/actions_ecult.dmi b/icons/mob/actions/actions_ecult.dmi index 67b6bf1fd2257..3ce72ae54ffe7 100644 Binary files a/icons/mob/actions/actions_ecult.dmi and b/icons/mob/actions/actions_ecult.dmi differ diff --git a/icons/mob/actions/actions_genetic.dmi b/icons/mob/actions/actions_genetic.dmi index 9ead1795fe72e..497abffe67451 100644 Binary files a/icons/mob/actions/actions_genetic.dmi and b/icons/mob/actions/actions_genetic.dmi differ diff --git a/icons/mob/actions/actions_mecha.dmi b/icons/mob/actions/actions_mecha.dmi index 7c659ca3b573c..60df1b5ed1ae5 100644 Binary files a/icons/mob/actions/actions_mecha.dmi and b/icons/mob/actions/actions_mecha.dmi differ diff --git a/icons/mob/actions/actions_spells.dmi b/icons/mob/actions/actions_spells.dmi index fb8c121218ffc..b8d3c3ce34b54 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/back.dmi b/icons/mob/clothing/back.dmi index eb3f87d9c71f0..be83d83d4228c 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index 44ede20f2a5a1..a2d318adfb7d1 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/eyes.dmi b/icons/mob/clothing/eyes.dmi index 20bf4d18381fd..92b155f62d547 100644 Binary files a/icons/mob/clothing/eyes.dmi and b/icons/mob/clothing/eyes.dmi differ diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index a670c33b7dcf6..ded01542e31b6 100644 Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ diff --git a/icons/mob/clothing/head/helmet.dmi b/icons/mob/clothing/head/helmet.dmi index 8b29c935f5ea7..116f0256a6276 100644 Binary files a/icons/mob/clothing/head/helmet.dmi and b/icons/mob/clothing/head/helmet.dmi differ diff --git a/icons/mob/clothing/head/spacehelm.dmi b/icons/mob/clothing/head/spacehelm.dmi index 0b9f3d4a36eb4..d9a634a63c771 100644 Binary files a/icons/mob/clothing/head/spacehelm.dmi and b/icons/mob/clothing/head/spacehelm.dmi differ diff --git a/icons/mob/clothing/modsuit/mod_clothing.dmi b/icons/mob/clothing/modsuit/mod_clothing.dmi index 613559b726a7d..64affedb2de4c 100644 Binary files a/icons/mob/clothing/modsuit/mod_clothing.dmi and b/icons/mob/clothing/modsuit/mod_clothing.dmi differ diff --git a/icons/mob/clothing/neck.dmi b/icons/mob/clothing/neck.dmi index a193fbd74a8e3..ed0bb34b46449 100644 Binary files a/icons/mob/clothing/neck.dmi and b/icons/mob/clothing/neck.dmi differ diff --git a/icons/mob/clothing/suits/jacket.dmi b/icons/mob/clothing/suits/jacket.dmi index fa93a85c7c6f1..869966528b2e9 100644 Binary files a/icons/mob/clothing/suits/jacket.dmi and b/icons/mob/clothing/suits/jacket.dmi differ diff --git a/icons/mob/clothing/suits/labcoat.dmi b/icons/mob/clothing/suits/labcoat.dmi index 37cb0e8696bdb..7edbf91840518 100644 Binary files a/icons/mob/clothing/suits/labcoat.dmi and b/icons/mob/clothing/suits/labcoat.dmi differ diff --git a/icons/mob/clothing/suits/spacesuit.dmi b/icons/mob/clothing/suits/spacesuit.dmi index 0067c4bf36a8c..1f691729a3031 100644 Binary files a/icons/mob/clothing/suits/spacesuit.dmi and b/icons/mob/clothing/suits/spacesuit.dmi differ diff --git a/icons/mob/effects/genetics.dmi b/icons/mob/effects/genetics.dmi index ebaad5028a25a..76d5224b3c7e7 100644 Binary files a/icons/mob/effects/genetics.dmi and b/icons/mob/effects/genetics.dmi differ diff --git a/icons/mob/inhands/64x64_lefthand.dmi b/icons/mob/inhands/64x64_lefthand.dmi index e0545c0d89395..d15a47206f984 100644 Binary files a/icons/mob/inhands/64x64_lefthand.dmi and b/icons/mob/inhands/64x64_lefthand.dmi differ diff --git a/icons/mob/inhands/64x64_righthand.dmi b/icons/mob/inhands/64x64_righthand.dmi index bf101ad0ea700..88ad954734bf5 100644 Binary files a/icons/mob/inhands/64x64_righthand.dmi and b/icons/mob/inhands/64x64_righthand.dmi differ diff --git a/icons/mob/inhands/clothing/gloves_lefthand.dmi b/icons/mob/inhands/clothing/gloves_lefthand.dmi index 6277d146ffc3d..4d191e42939b7 100644 Binary files a/icons/mob/inhands/clothing/gloves_lefthand.dmi and b/icons/mob/inhands/clothing/gloves_lefthand.dmi differ diff --git a/icons/mob/inhands/clothing/gloves_righthand.dmi b/icons/mob/inhands/clothing/gloves_righthand.dmi index 7479dd8c505cc..f8ce306cc9850 100644 Binary files a/icons/mob/inhands/clothing/gloves_righthand.dmi and b/icons/mob/inhands/clothing/gloves_righthand.dmi differ diff --git a/icons/mob/inhands/clothing/masks_lefthand.dmi b/icons/mob/inhands/clothing/masks_lefthand.dmi index 64fcf4d70bd27..cac122916bdd2 100644 Binary files a/icons/mob/inhands/clothing/masks_lefthand.dmi and b/icons/mob/inhands/clothing/masks_lefthand.dmi differ diff --git a/icons/mob/inhands/clothing/masks_righthand.dmi b/icons/mob/inhands/clothing/masks_righthand.dmi index 99f45bd1b17c0..f68f2d905e627 100644 Binary files a/icons/mob/inhands/clothing/masks_righthand.dmi and b/icons/mob/inhands/clothing/masks_righthand.dmi differ diff --git a/icons/mob/inhands/items/touchspell_lefthand.dmi b/icons/mob/inhands/items/touchspell_lefthand.dmi index 1fc8d962aec11..2cf040fcf8d18 100644 Binary files a/icons/mob/inhands/items/touchspell_lefthand.dmi and b/icons/mob/inhands/items/touchspell_lefthand.dmi differ diff --git a/icons/mob/inhands/items/touchspell_righthand.dmi b/icons/mob/inhands/items/touchspell_righthand.dmi index cc3adf5eb1032..d4815fe6b65dc 100644 Binary files a/icons/mob/inhands/items/touchspell_righthand.dmi and b/icons/mob/inhands/items/touchspell_righthand.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 967968b339ba7..86bd5020f4f32 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index beb3c84860d64..a6de8b974644c 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/nonhuman-player/cult.dmi b/icons/mob/nonhuman-player/cult.dmi index 9241b138227c5..683ee9bd6fe32 100644 Binary files a/icons/mob/nonhuman-player/cult.dmi and b/icons/mob/nonhuman-player/cult.dmi differ diff --git a/icons/mob/rideables/mech_construct.dmi b/icons/mob/rideables/mech_construct.dmi index c25eb971f2e36..656322b8187a7 100644 Binary files a/icons/mob/rideables/mech_construct.dmi and b/icons/mob/rideables/mech_construct.dmi differ diff --git a/icons/mob/rideables/mech_construction.dmi b/icons/mob/rideables/mech_construction.dmi index f26dbe17fd036..6e1cdbc3a2d4a 100644 Binary files a/icons/mob/rideables/mech_construction.dmi and b/icons/mob/rideables/mech_construction.dmi differ diff --git a/icons/mob/rideables/mecha.dmi b/icons/mob/rideables/mecha.dmi index 76b089534e6f9..5960d05413781 100644 Binary files a/icons/mob/rideables/mecha.dmi and b/icons/mob/rideables/mecha.dmi differ diff --git a/icons/mob/rideables/vehicles.dmi b/icons/mob/rideables/vehicles.dmi index 7e2b8a05f204c..08923668d2663 100644 Binary files a/icons/mob/rideables/vehicles.dmi and b/icons/mob/rideables/vehicles.dmi differ diff --git a/icons/obj/antags/cult/items.dmi b/icons/obj/antags/cult/items.dmi index 9a3435dcd833e..fcd5f13c85bf5 100644 Binary files a/icons/obj/antags/cult/items.dmi and b/icons/obj/antags/cult/items.dmi differ diff --git a/icons/obj/antags/cult/structures.dmi b/icons/obj/antags/cult/structures.dmi index 373371f5a2f98..982742e876492 100644 Binary files a/icons/obj/antags/cult/structures.dmi and b/icons/obj/antags/cult/structures.dmi differ diff --git a/icons/obj/antags/eldritch.dmi b/icons/obj/antags/eldritch.dmi index 7f6af6bfe2e65..664311e5c7c47 100644 Binary files a/icons/obj/antags/eldritch.dmi and b/icons/obj/antags/eldritch.dmi differ diff --git a/icons/obj/canisters.dmi b/icons/obj/canisters.dmi index 436467648880b..1555cf0a4782e 100644 Binary files a/icons/obj/canisters.dmi and b/icons/obj/canisters.dmi differ diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 95453cb46edc8..e26731f384667 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi index 3612c747f50e2..1be85df6c156d 100644 Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index fd898d3105fd8..97f692551f9e3 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index d5099c64e7f65..465340870dd48 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/head/helmet.dmi b/icons/obj/clothing/head/helmet.dmi index 4d43b542051fc..fe52d505e439d 100644 Binary files a/icons/obj/clothing/head/helmet.dmi and b/icons/obj/clothing/head/helmet.dmi differ diff --git a/icons/obj/clothing/head/spacehelm.dmi b/icons/obj/clothing/head/spacehelm.dmi index c2830a9d9335f..980d2a07a50be 100644 Binary files a/icons/obj/clothing/head/spacehelm.dmi and b/icons/obj/clothing/head/spacehelm.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 5cb090978ae7c..436785ce6e5e9 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/modsuit/mod_modules.dmi b/icons/obj/clothing/modsuit/mod_modules.dmi index 8b4b549eda2ae..6ec143a849e1c 100644 Binary files a/icons/obj/clothing/modsuit/mod_modules.dmi and b/icons/obj/clothing/modsuit/mod_modules.dmi differ diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi index e937d125ec2a4..e8726cfcb73a5 100644 Binary files a/icons/obj/clothing/neck.dmi and b/icons/obj/clothing/neck.dmi differ diff --git a/icons/obj/clothing/suits/jacket.dmi b/icons/obj/clothing/suits/jacket.dmi index 30e1a99d9eed4..b867e7da3a710 100644 Binary files a/icons/obj/clothing/suits/jacket.dmi and b/icons/obj/clothing/suits/jacket.dmi differ diff --git a/icons/obj/clothing/suits/labcoat.dmi b/icons/obj/clothing/suits/labcoat.dmi index 430d11d5f96ab..4d5796a12b856 100644 Binary files a/icons/obj/clothing/suits/labcoat.dmi and b/icons/obj/clothing/suits/labcoat.dmi differ diff --git a/icons/obj/clothing/suits/spacesuit.dmi b/icons/obj/clothing/suits/spacesuit.dmi index 922ad05c35e7a..7fe01246352d6 100644 Binary files a/icons/obj/clothing/suits/spacesuit.dmi and b/icons/obj/clothing/suits/spacesuit.dmi differ diff --git a/icons/obj/devices/artefacts.dmi b/icons/obj/devices/artefacts.dmi new file mode 100644 index 0000000000000..75a6f754fbbed Binary files /dev/null and b/icons/obj/devices/artefacts.dmi differ diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi index 6c2eda1986633..f20b54d9c31f0 100644 Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ diff --git a/icons/obj/machines/lathes.dmi b/icons/obj/machines/lathes.dmi index 0e7d91484216c..4a90132ae60a1 100644 Binary files a/icons/obj/machines/lathes.dmi and b/icons/obj/machines/lathes.dmi differ diff --git a/icons/obj/medical/organs/organs.dmi b/icons/obj/medical/organs/organs.dmi index 0d04f7fae3ce4..62a45426e186e 100644 Binary files a/icons/obj/medical/organs/organs.dmi and b/icons/obj/medical/organs/organs.dmi differ diff --git a/icons/obj/meteor.dmi b/icons/obj/meteor.dmi index 9fde3f3ef68ea..6b47fe485c34b 100644 Binary files a/icons/obj/meteor.dmi and b/icons/obj/meteor.dmi differ diff --git a/icons/obj/meteor_spooky.dmi b/icons/obj/meteor_spooky.dmi deleted file mode 100644 index 287d5b47bd0f7..0000000000000 Binary files a/icons/obj/meteor_spooky.dmi and /dev/null differ diff --git a/icons/obj/pipes_n_cables/atmos.dmi b/icons/obj/pipes_n_cables/atmos.dmi index 91badbf3ccf9b..fc67ff54158f9 100644 Binary files a/icons/obj/pipes_n_cables/atmos.dmi and b/icons/obj/pipes_n_cables/atmos.dmi differ diff --git a/icons/obj/pipes_n_cables/hydrochem/plumbers.dmi b/icons/obj/pipes_n_cables/hydrochem/plumbers.dmi index 555b6c6328b02..2f10725a0a8f3 100644 Binary files a/icons/obj/pipes_n_cables/hydrochem/plumbers.dmi and b/icons/obj/pipes_n_cables/hydrochem/plumbers.dmi differ diff --git a/icons/obj/science/vatgrowing.dmi b/icons/obj/science/vatgrowing.dmi index 646aad055cc3c..ec8b5dcb6acd9 100644 Binary files a/icons/obj/science/vatgrowing.dmi and b/icons/obj/science/vatgrowing.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index b4617915e86ed..f13b10bdf4a8a 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/icons/obj/storage/case.dmi b/icons/obj/storage/case.dmi index a47c86eea9fb3..a29fd3a6f37c0 100644 Binary files a/icons/obj/storage/case.dmi and b/icons/obj/storage/case.dmi differ diff --git a/icons/obj/storage/crates.dmi b/icons/obj/storage/crates.dmi index 0a8640860eced..34d5db6f3e898 100644 Binary files a/icons/obj/storage/crates.dmi and b/icons/obj/storage/crates.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index c7b38cb6d1aab..becab20e591de 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/wallmounts.dmi b/icons/obj/wallmounts.dmi index e020a8818e186..e70024a9edb23 100644 Binary files a/icons/obj/wallmounts.dmi and b/icons/obj/wallmounts.dmi differ diff --git a/icons/obj/weapons/bows/arrows.dmi b/icons/obj/weapons/bows/arrows.dmi index 4453d4ca5f247..956a82dd9bf1f 100644 Binary files a/icons/obj/weapons/bows/arrows.dmi and b/icons/obj/weapons/bows/arrows.dmi differ diff --git a/icons/obj/weapons/bows/bows.dmi b/icons/obj/weapons/bows/bows.dmi index 81b2fc4822058..4de9d4fca35ab 100644 Binary files a/icons/obj/weapons/bows/bows.dmi and b/icons/obj/weapons/bows/bows.dmi differ diff --git a/icons/obj/weapons/guns/energy.dmi b/icons/obj/weapons/guns/energy.dmi index 5d607026f0133..6e8e5c60f684a 100644 Binary files a/icons/obj/weapons/guns/energy.dmi and b/icons/obj/weapons/guns/energy.dmi differ diff --git a/icons/obj/weapons/guns/projectiles.dmi b/icons/obj/weapons/guns/projectiles.dmi index 98a2e59dbc9c3..3be26b2c43fad 100644 Binary files a/icons/obj/weapons/guns/projectiles.dmi and b/icons/obj/weapons/guns/projectiles.dmi differ diff --git a/icons/obj/weapons/hand.dmi b/icons/obj/weapons/hand.dmi index 5d8827e0a7b9b..071113138a7a5 100644 Binary files a/icons/obj/weapons/hand.dmi and b/icons/obj/weapons/hand.dmi differ diff --git a/icons/obj/weapons/khopesh.dmi b/icons/obj/weapons/khopesh.dmi index 95774e7f6c733..3c4ba40b34ac1 100644 Binary files a/icons/obj/weapons/khopesh.dmi and b/icons/obj/weapons/khopesh.dmi differ diff --git a/icons/obj/weapons/sword.dmi b/icons/obj/weapons/sword.dmi index 9b5a989a0514d..d9a443cfc2699 100644 Binary files a/icons/obj/weapons/sword.dmi and b/icons/obj/weapons/sword.dmi differ diff --git a/icons/ui_icons/antags/heretic/knowledge.dmi b/icons/ui_icons/antags/heretic/knowledge.dmi new file mode 100644 index 0000000000000..d24de1a5f0e81 Binary files /dev/null and b/icons/ui_icons/antags/heretic/knowledge.dmi differ diff --git a/interface/skin.dmf b/interface/skin.dmf index 941791fbbf4b3..42c626c6ddd4a 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -54,7 +54,7 @@ menu "menu" category = "&Help" saved-params = "is-checked" -// MASSMETA ADDITION (lil bit better ui) +//MASSMETA EDIT ADDITION BEGIN (better ui) elem name = "Refresh TGUI" command = "refresh-tgui" @@ -85,7 +85,7 @@ menu "menu" category = "&Players" saved-params = "is-checked" -// EDIT END +//MASSMETA EDIT ADDITION END window "mainwindow" elem "mainwindow" @@ -97,7 +97,7 @@ window "mainwindow" is-default = true saved-params = "pos;size;is-minimized;is-maximized" statusbar = false - icon = 'massmeta\\icons\\ui_icons\\common\\massmeta_64.png' + icon = 'massmeta\\icons\\ui_icons\\common\\massmeta_64.png' //MASSMETA EDIT CHANGE (server main icon) macro = "default" menu = "menu" elem "split" @@ -157,7 +157,7 @@ window "mapwindow" is-default = true right-click = true saved-params = "zoom;letterbox;zoom-mode" - style = ".center { text-align: center; } .maptext { font-family: 'MS Serif'; font-size: 7pt; -dm-text-outline: 1px black; color: white; line-height: 1.0; } .command_headset { font-weight: bold; } .context { font-family: 'Pixellari'; font-size: 12pt; -dm-text-outline: 1px black; } .subcontext { font-family: 'TinyUnicode'; font-size: 12pt; line-height: 0.75; } .small { font-family: 'Spess Font'; font-size: 6pt; line-height: 1.4; } .big { font-family: 'Pixellari'; font-size: 12pt; } .reallybig { font-size: 12pt; } .extremelybig { font-size: 12pt; } .greentext { color: #00FF00; font-size: 6pt; } .redtext { color: #FF0000; font-size: 6pt; } .clown { color: #FF69BF; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-size: 6px; }" + style = ".center { text-align: center; } .maptext { font-family: 'MS Serif'; font-size: 7pt; -dm-text-outline: 1px black; color: white; line-height: 1.0; } .command_headset { font-weight: bold; } .context { font-family: 'Pixellari'; font-size: 12pt; -dm-text-outline: 1px black; } .subcontext { font-family: 'TinyUnicode'; font-size: 12pt; line-height: 0.75; } .small { font-family: 'Spess Font'; font-size: 6pt; line-height: 1.4; } .big { font-family: 'Pixellari'; font-size: 12pt; } .reallybig { font-size: 12pt; } .extremelybig { font-size: 12pt; } .greentext { color: #00FF00; font-size: 6pt; } .redtext { color: #FF0000; font-size: 6pt; } .clown { color: #FF69BF; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-size: 6px; }" //MASSMETA EDIT CHANGE (cyrillic) elem "status_bar" type = LABEL pos = 0,464 @@ -216,6 +216,7 @@ window "infowindow" saved-params = "is-checked" text = "Wiki" command = "wiki" + //MASSMETA EDIT CHANGE BEGIN (forum -> discord) elem "discord" type = BUTTON pos = 275,5 @@ -225,6 +226,7 @@ window "infowindow" saved-params = "is-checked" text = "Discord" command = "discord" + //MASSMETA EDIT CHANGE END elem "github" type = BUTTON pos = 365,5 diff --git a/massmeta/code/__HELPERS/names.dm b/massmeta/code/__HELPERS/names.dm index 75ba0566c0dac..bf703b95fa3d4 100644 --- a/massmeta/code/__HELPERS/names.dm +++ b/massmeta/code/__HELPERS/names.dm @@ -31,34 +31,29 @@ if(1)//1 and 2 can only be selected once each to prevent more than two specific names/places/etc. switch(rand(1,2))//Mainly to add more options later. if(1) - if(names.len && prob(70)) + if(length(names) && prob(70)) . += pick(names) else - if(prob(10)) - . += pick(GLOB.lizard_names_male,GLOB.lizard_names_female) - else - var/new_name = pick(pick(GLOB.first_names_male,GLOB.first_names_female)) - new_name += " " - new_name += pick(GLOB.last_names) - . += new_name + . += generate_random_name() + if(2) - . += pick(GLOB.jobs)//Returns a job. + . += LOWER_TEXT(pick(GLOB.jobs))//Returns a job. safety -= 1 if(2) switch(rand(1,2))//Food, drinks, or places. Only selectable once. if(1) - . += pick(GLOB.cocktails) + . += LOWER_TEXT(pick(GLOB.cocktails)) if(2) - . += pick(GLOB.locations) + . += LOWER_TEXT(pick(GLOB.locations)) safety -= 2 if(3) switch(rand(1,3))//Abstract nouns, adjectives, verbs. Can be selected more than once. if(1) - . += pick(GLOB.ru_nouns) + . += LOWER_TEXT(pick(GLOB.ru_nouns)) if(2) - . += pick(GLOB.ru_adjectives) + . += LOWER_TEXT(pick(GLOB.ru_adjectives)) if(3) - . += pick(GLOB.ru_verbs) + . += LOWER_TEXT(pick(GLOB.ru_verbs)) if(!return_list) if(words == 1) . += "." diff --git a/massmeta/code/modules/antags/wizard/equipment/spellbook_entries/offensive.dm b/massmeta/code/modules/antags/wizard/equipment/spellbook_entries/offensive.dm new file mode 100644 index 0000000000000..fe97eaf69bc14 --- /dev/null +++ b/massmeta/code/modules/antags/wizard/equipment/spellbook_entries/offensive.dm @@ -0,0 +1,11 @@ +#define SPELLBOOK_CATEGORY_OFFENSIVE "Offensive" +// Offensive wizard spells + +/datum/spellbook_entry/testicular_torsion + name = "Testicular Torsion" + desc = "A dark spell capable of exploding victim's balls." + spell_type = /datum/action/cooldown/spell/touch/testicular_torsion + cost = 1 + category = SPELLBOOK_CATEGORY_OFFENSIVE + +#undef SPELLBOOK_CATEGORY_OFFENSIVE diff --git a/massmeta/code/modules/clothing/masks/moustache_ru.dm b/massmeta/code/modules/clothing/masks/moustache_ru.dm index e6d6fe21928fe..3a96584447a2d 100644 --- a/massmeta/code/modules/clothing/masks/moustache_ru.dm +++ b/massmeta/code/modules/clothing/masks/moustache_ru.dm @@ -2,16 +2,16 @@ var/message = speech_args[SPEECH_MESSAGE] if(message[1] != "*") var/static/regex/words = new(@"(?>>>>> their-feature:foobar.dm +``` + +В данном случае в череду коммитов /TG/station внедряется дополнительный, про который известно только нам самим. ГитХаб, видя подобное несоответствие - даёт нам сделать выбор. + +Например, нам нужно оставить только Наше изменение, то просто удаляем все что нам добавил ГитХаб и оставляем только нужное, + +```byond +var/something = 2 //MASSMETA EDIT +``` + +Подобного рода конфликты разрешаются именно ручками, однако есть другие подходы в виде модульного кода, о которых мы расскажем далее в данном руководстве. + +Подробнее про [Ветвления и Слияния](https://git-scm.com/book/ru/v2/Ветвление-в-Git-Основы-ветвления-и-слияния). + +## Протокол модуляризации 🛠️ + +У Вашего модуля должно быть короткое и информативное название в документации, например - **`shuttle_toggle`**. + +Этим уникальным **ID** Вы затем назовёте: + +- Свою модульную папку `modular_meta/features/shuttle_toggle/`, в которой вы будете локально работать. + +- А также в дальнейшем Вы будете помечать все **Немодульные** изменения в коде /TG/station. + +Теперь подробнее про виды модуляризации. + +### Не Модульные Изменения + +Время от времени наступает момент, когда редактирование **оригинальных** файлов /TG/station становится неизбежным. + +📌 Пожалуйста, не забудьте записать факт их изменения под пунктом **"Original TG Changes"** в **`readme.md`** вашего модуля. + +В этих случаях мы решили применять следующую стандартизацию: + +- **Добавление:** + + ```byond + //MASSMETA EDIT ADDITION BEGIN (shuttle_toggle) + var/adminEmergencyNoRecall = FALSE + var/lastMode = SHUTTLE_IDLE + var/lastCallTime = 6000 + //MASSMETA EDIT ADDITION END + ``` + +- **Удаление:** + + ```byond + //MASSMETA EDIT REMOVAL BEGIN (shuttle_toggle) + /* + for(var/obj/docking_port/stationary/S in stationary) + if(S.id = id) + return S + */ + //MASSMETA EDIT REMOVAL END + ``` + +- **Изменения:** + + ```byond + //MASSMETA EDIT CHANGE BEGIN (shuttle_toggle) + /* ORIGINAL + if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE) + */ + if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE, SHUTTLE_DISABLED) + //MASSMETA EDIT CHANGE END + return 1 + ``` + + 💡 Если предполагается **"Масштабное"** изменений кода, то такое переопределение уже можно переместить в модуль. Однако на месте удаления обязательно допишите: (Moved to: modular_meta/features/shuttle_toggle/randomverbs.dm) + + ⚠️ Обязательно оставляем все что было до вашего вмешательства под пометкой **ORIGINAL**! + +### Полностью Модульные Изменения + +В нашем проекте присутствует папка **`modular_meta/`**, там будут храниться все наши **"Модульные"** изменения кода /TG/station. + +💡 Она полностью независима и этим мы гарантируем, что кодеры с /TG/station не будут туда вмешиваться. + +В этой папке есть ещё несколько подпапок и файлов: + +| Папка/Файл | +| ------------------------------- | +| **~meta_defines/** 📂 | +| **features/** 📂 | +| **reverts/** 📂 | +| **tools/** 📂 | +| **modular_meta_defines.dm** 📄 | +| **modular_meta_features.dm** 📄 | +| **modular_meta_reverts.dm** 📄 | +| **modularization_guide.md** 📝 | +| **module_template.md** 📝 | +| **readme.md** 📝 | + +Теперь подробнее про каждую из Папок: + +- **`~meta_defines/`** 📂 + + Здесь лежат все наши модульные "определения" (они же defines). + + Вынесена отдельно из папки **`features/`** вследствии нюансов связанных с самим проектом /TG/station. (т.к. сам byond работает с дефайнами только в директории **`code/__DEFINES/`**, туда идёт переопределение наших файлов.) + + Если у вас есть **define**, который используется более чем в одном файле вашего кода, то он **обязательно** должен быть объявлен в файле этой папки. + + 💡 Если **define** применяется только в рамках одного файла, то его достаточно объявить вверху и внизу файла. + + ```byond + #define MY_DEFINE + //some code with MY_DEFINE here + #undef MY_DEFINE + ``` + + 📌 Пожалуйста, не забудьте записать факт их добавления под пунктом **"Defines:"** в **`readme.md`** вашего модуля. + + Все файлы в папке включены в **`modular_meta/modular_meta_defines.dm`**. + +- **`features/`** 📂 + + Здесь лежат все модульные файлы **"Новых Фич"**, которых нет в апстриме. Каждой присвоен уникальный **module_id**. + + Подробнее про строение папок отдельных модулей расскажем чуть ниже. + + Только `includes.dm` файлы каждого модуля включены в **`modular_meta_features.dm`**. + +- **`reverts/`** 📂 + + Папка аналогичная `features/`, но там располагаются недавние откаты плохих и возвраты хороших по нашему мнению фич, введёных апстримом /TG/station. + + ❗ Если фича была уже выпилена давно или же апстрим произвел её полное удаление сразу, то она уже может рассматриваться как самостоятельный модуль. Такое помещаем её уже в папку `features/`! + + Такой модуль именовать уже обязательно с припиской **"revert_"**, например вот так: **revert_module_id**. + + ⚠️ Обязательно укажите в файле **`readme.md`** модуля ссылку на пиар, который откатываевается! + + Только `includes.dm` файлы каждого модуля включены в **`modular_meta_reverts.dm`**. + +- **`tools/`** 📂 + + Тут лежат все дополнительные инструменты проверки нашего кода. + + Они проверяют только файлы в модульной папке, помогая нам не совершать дополнительных ошибкок. + + К ним идет прямое обращение только в файле: **`.github/workflows/ci_suite.yml`**. + +## Подробнее про наполнение папок (features/ и reverts/) + +Чтобы сохранить общий стиль и обеспечить удобную навигацию по большинству модулей, а также контролировать количество файлов и папок в репозитории, Вы должны располагать определённые типы файлов по своим папкам. + +⚠️ Каждый модуль обязан содержать в себе файл документации модуля – `readme.md`. + +| Папка/Файл | Содержимое | +| ------------------ | ---------------------------------------------------------- | +| **code/** 📁 | Файлы кода: **`.dm`** | +| **icon/** 📁 | Файлы иконок и картинок: **`.dmi`** и **`.png`** | +| **sound/** 📁 | Звуковые файлы: **`.ogg`** и **`.waw`** | +| **includes.dm** 📄 | Перечисление всех файлов в папке **code/** | +| **readme.md** 📝 | Полная документация к модулю, [пример](module_template.md) | + +⚠️ Файлы строк: **`.txt`** и **`.json`** вы помещаете в папку `strings/massmeta/`, т.к. код /TG/station не может работать нормально со всеми файлами-строк вне этой папки. Укажите факт из добавления в **`readme.md`** вашего модуля. + +⛔ У проектов **Skyrat** присуствует папка `master_files/`, однако у нас в проекте её НЕТ! Все переопредения кода у нас помещается полностью в модуль с особыми пометками! Пояснения будут позже. + +❗ Также у проектов **Skyrat** стандартно все новые файлы сразу включаются в общий файл **`tgstation.dme`**, что я считаю достаточно трудным для дальнейшней поддрежки, да и в целом это не особо согласуется с их модульным принципом. У нашего проекта другой поход в этом моменте, как Вы видите. + +### Подробнее про папку **`code/`** + +⚠️ В этих файлах не должно быть закомментированного кода, тем более полностью закомментированных файлов! А вот пояснения к коду оставлять можно, порой даже и нужно. + +Здесь располагается код двух типов: + +#### Абсолютно новые функции и объекты 🆕 + +Просто ложите все свои новые файлы кода в папку `code/` своего модуля. + +💡 Можете разбивать Ваш под по подпапкам, если в этом есть нужда. + +Не забывайте проставлять все ваши пути к иконкам и звуку правильно! + +#### Переопределение объектов и функций /TG/station 🔀 + +С помощью этих файлов мы косвенно изменяем основной код /TG/station. Это позволяет нам очень изящно внедрять свои коррективы, не вмешиваясь напрямую в основной код. Тем самым не нарушая их череду коммитов и не создавая для нас самих в будущем **Конфликтов Слияния**. + +Однако это является и минусом такого подхода. Гитхаб не сможет нам оперативно подсказать где файл поменялся из-за вмешательства апстрима и где следует учесть измененое или дополнительное переопределение. Иногда прямые изменения кода через `//MASSMETA EDIT` предпочтительнее. Старайтесь использовать здравый смысл в этом вопросе. + +⚠️ У данных файлов **Не надо соблюдать Иерархию** аналогичной папки `code/` у /TG/station! Просто ложите вместе со всеми файлами в модуль. + +Эти файлы выносите в "отдельную группу" с помощью пометки `"master_"`, например: `master_tg_filename.dm`. + +⚠️ Над каждым блоком таких функций/объектов **подписывайте в каком оригинальном файле /TG/station они расположены**. Таким образом нам будет проще смекнуть что к чему. + +📌 Пожалуйста, не забудьте записать факт таких переопределений под пунктом **"Modular Overrides:"** в **`readme.md`** вашего модуля. + +- **Пример модульного переопределения объекта** 💡 + + Например, Вы решили модульно переопределить иконку и описание у мольберта (easel). + + Оригинальный объект в коде /TG/station по пути `code/modules/art/paintings.dm`: + + ```byond + /obj/structure/easel + name = "easel" + desc = "Only for the finest of art!" + icon = 'icons/obj/art/artstuff.dmi' + icon_state = "easel" + density = TRUE + resistance_flags = FLAMMABLE + max_integrity = 60 + var/obj/item/canvas/painting = null + ``` + + Для этого создайте новый файл желательно с таким же именем как у оригинала и расположите в папке `code/` вашего модуля: `code/master_paintings.dm`. + + Для выполнения нашей цели, наполнение даного файла будет выглядеть примерно так: + + ```byond + //ORIGINAL: code/modules/art/paintings.dm + /obj/structure/easel + desc = "Let yourself draw!" + icon = 'massmeta/features/art/icons/artstuff.dmi' + icon_state = "new_easel" + ``` + + Теперь при компилировании проекта, данное переопределение подменит эти переменные у оригинального объекта мольберта. Тем самым в готовом проекте у мольберта будет уже Новая иконка и описание. Даже код /TG/station менять не пришлось! 🎉 + +- **Пример модульного добавления фичи в функцию** 💡 + + Для простоты предположим, что вы хотите заставить оружие искрить при выстреле для имитации дульной вспышки. + + Также Вы хотите, чтобы это можно было использовать со всеми видами оружия, использующими эту функцию. + + В модульном файле объекта можно начать с добавления новой переменной `var/muzzle_flash`. + + ```byond + /obj/item/gun + var/muzzle_flash = TRUE + ``` + + Теперь у Вас будет **у каждого** наследника этого объекта доступна эта переменная. После этого, допустим, вы захотите проверять её и вызвать искры после выстрела. + + У этого объекта уже есть процедура, что вызывается при стрельбе: + + ```byond + /obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) + ``` + + Теперь мы начинаем **добавлять код** для работы нашей фичи в дочернюю процедуру `/obj/item/gun/shoot_live_shot()`. + + ```byond + /obj/item/gun/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) + . = ..() + if(muzzle_flash) + spawn_sparks(src) + ``` + + Тут мы обязательно вызываем такую конструкцию **`. = ..()`**, она по сути своей говорит, что мы наследуемся от родительской функции. После данной конструкции добаляем весь наш **Новый** код. + + Теперь при компилировании проекта, данные "добавления" допишутся в оригинальный объект и функцию. Этим мы добились того, что оружие при выстреле ещё и искрит, при том не вмешиваясь в функции /TG/station напрямую! 🎉 + +### **`. = ..()`** для чайников + +Как вы уже могли заметить, у языка DM частично заложена парадигма ООП, нас в данном случае интересует процесс наследования объектов и их функций. + +💡 Вы также можете нажать F1 в Dream Maker и прочитать подробный мануал на английском. + +- `.` – это возвращаемое значение нашей функции по умолчанию. Изначально оно равно `null`. + +- `..` – это возвращаемое значение родительской функции. + + Через `..()` Вы обращаетесь к родительской функции, этим вызывая её в нужном месте Вашей функции-наследника. + +И теперь, если вы сделаетете подобый манёвр `. = ..()`, то Вы вызовите родительскую функцию и присвоите её значение возвращаемому значению нашей функции. После этого можете свободно дополнять свою `.` чем хотите. + +Так же в случае, если Вы не хотите возвращать родительский вывод, то Вы можете сохранить его в любую переменную или просто использовать `..()` + +Мы так же можем вообще не вызывать `..()` - тогда функция оверрайдится полностью. Но я бы не рекомендовал делать подобное, ради перемещения ориг. функции в модуль и дальнейшей модификации её уже там, ибо когда /TG/station поменяет её у себя, то пиши пропало. + +Также учтите, что вы не сможете при модульном дополнии функции использовать те переменные, которые были объявленны в функции оригинале! + +## Карты 🗺️ + +### Не Модульное Изменение Карт + +Используются карты: +* 🔴 Оригинальные с офф ТГ (без прямых наших изменений) +* 🟡 Заимствованные с других билдов (некоторые желательно не менять, т.к. мы можем подтягивать обновления в других билдов) +* 🟢 Наши самодельные, они же полностью независимые, например, ProtoBoxStation (меняем и чиним как хотим) + +Все наши Новые карты лежат по пути **`massmeta/_maps/map_files/`** (не в модульной папке). + +К каждой карте идёт дополнительно **`.json`** файл-конфигурации в **`massmeta/_maps/`**, не забудьте добавить его тоже! + +### Модульное Изменение Карт (Авто-мапперы) + +⚠️ Не изменяйте оригинальные карты /TG/station напрямую, Вы стокнётесь потом с таким же хаосом, как если вы бы меняли файлы иконок! Для внесения изменений ипользуйте способы ниже. + +Когда вы добавляете новый элемент на карту, то вы должны сперва определеить масштаб переделок. + +- Если это **небольшое изменение на 1 предмет**, то используйте простой автоматизатор области. + + Автомаппер простых областей использует записи точек отсчета, чтобы поместить один элемент в область карты, которая имеет определенный смысл. + +- Если речь идет об **изменении целой комнаты**, то используйте автоматизатор шаблонов. + + Автомаппер использует готовые шаблоны для переопределения участков карты, используя координаты для определения начального местоположения. Примеры смотрите в файле automapper_config.toml. + +## Модульный TGUI (TG User Interface) + +**TGUI** - еще один исключительный случай, поскольку он использует Javascript, который не может быть модульным, нежели же код DM. + +ВСЕ файлы TGUI находятся в папке `/tgui/packages/tgui/interfaces/` и ее подкаталогах. Нет какой-то конкретной папки для Наших TGUI файлов! + +📌 Пожалуйста, не забудьте записать факт их добавления/изменения под пунктом **"TGUI Files:"** в **`readme.md`** вашего модуля. + +### Изменение оригинальных файлов /TG/station + +При изменении оригинальных файлов TGUI поступаем аналогично, как и при изменении вышележащего кода DM, однако схема написания комментариев тут несколько иная. + +Вы можете использовать как `// MASSMETA EDIT`, так и `/* MASSMETA EDIT */`, хотя в некоторых случаях вам придется использовать одно вместо другого. (в некотрых языках '//' - могут не являться комментированием, учтите это) + +В целом, старайтесь, чтобы комментарии к изменениям находились на той же строке, что и само изменение. Предпочтительно внутри JSX-тега. Например: + +```js + +``` + +```js + +``` + +```js + +``` + +В крайнем случае Вы можете заключить ваше редактирование в фигурные скобки, например так: + +```js +{/* MASSMETA EDIT ADDITION START */} + + someProp="whatever" + +{/* MASSMETA EDIT ADDITION END */} +``` + +### Создание новых файлов TGUI + +⚠️ При создании нового файла TGUI с нуля, пожалуйста, добавьте **Заголовочный Комментарий** самом верху файла: + +```js +// THIS IS A MASSMETA UI FILE +``` + +Таким образом, они легко идентифицируются как **Наши** модульные файлы TGUI `.tsx` и `.jsx`. + +Собственно ничего больше делать и не нужно, комментарии `// MASSMETA EDIT` в таком файле TGUI излишне. + + + +## В заключении + +Терпение и труд – ТГ к*дера перетрут. Если мы будем последовательны, то в конечном итоге это избавит НАС от будущих болей в области ГМ, когда Нам (Вам) же придется разрешать конфликты вручную. +Благодаря более скрупулезному документированию будет сразу понятно, какие изменения были сделаны, где и с помощью каких функций, и все станет гораздо менее двусмысленным и запутанным. + +Желаю удачи в ТГ кодинге. Помните, что сообщество всегда готово помочь Вам, если вдруг понадобится помощь. + +Оригинальное руководство: Skyrat/NovaSector. Перевод + дополнения: Artemchik542. Рецензент текста: SmArtKar. diff --git a/massmeta/module_template.md b/massmeta/module_template.md index ff9d70955b9fe..28c7491a4beae 100644 --- a/massmeta/module_template.md +++ b/massmeta/module_template.md @@ -1,28 +1,26 @@ - + -https://github.com/Huz2e/massmeta/pull/ - -## \ <!--Title of your addition.--> - -Module ID: <!-- Uppercase, UNDERSCORE_CONNECTED name of your module, that you use to mark files. This is so people can case-sensitive search for your edits, if any. --> +## Module ID: <!--Впишите сюда свой уникальный ID вашего модуля--> ### Description: -<!-- Here, try to describe what your PR does, what features it provides and any other directly useful information. --> +<!-- Здесь опишите Ваш PR, расскажите что он добавляет/убирает в проект ну и любую другую непосредственно полезную информацию. +Если Вы делаете модуль Реверта фичи, то обязательно укажте ссылку на оригинальный пиар /TG/station, который вы вернули. +--> -### TG Proc/File Changes: +### Original TG Changes: - N/A -<!-- If you edited any core procs, you should list them here. You should specify the files and procs you changed. -E.g: +<!-- Если вы редактировали какие-либо объекты/процедуры в файлах /TG/station, то укажите их здесь. Укажите файлы и желательно ещё и процедуры, которые вы изменили в них. +Например: - `code/modules/mob/living.dm`: `proc/overriden_proc`, `var/overriden_var` --> ### Modular Overrides: - N/A -<!-- If you added a new modular override (file or code-wise) for your module, you should list it here. Code files should specify what procs they changed, in case of multiple modules using the same file. -E.g: +<!-- Если вы добавили новое модульное переопределение кода /TG/station для вашего модуля, то вы должны указать его здесь. В файлах кода следует указать, какие процедуры были изменены, в случае, если несколько модулей используют один и тот же файл. +Например: - `modular_meta/master_files/sound/my_cool_sound.ogg` - `modular_meta/master_files/code/my_modular_override.dm`: `proc/overriden_proc`, `var/overriden_var` --> @@ -30,13 +28,14 @@ E.g: ### Defines: - N/A -<!-- If you needed to add any defines, mention the files you added those defines in, along with the name of the defines. --> +<!-- Если вам потребовалось добавить какие-либо defines (определения), то укажите файлы, в которые вы добавили эти определения, а также их названия. --> -### Included files that are not contained in this module: +### TGUI Files: - N/A -<!-- Likewise, be it a non-modular file or a modular one that's not contained within the folder belonging to this specific module, it should be mentioned here. Good examples are icons or sounds that are used between multiple modules, or other such edge-cases. --> +<!-- Файлы TGUI, новые или измененные под ваш модуль. Обратите внимание, что TGUI не может быть модульным, как .dm код! --> ### Credits: -<!-- Here go the credits to you, dear coder, and in case of collaborative work or ports, credits to the original source of the code. --> +- N/A +<!-- Укажите здесь авторство кода (по желанию) --> diff --git a/massmeta/readme.md b/massmeta/readme.md index 501e1078d689e..776ec7697e849 100644 --- a/massmeta/readme.md +++ b/massmeta/readme.md @@ -1,399 +1,21 @@ -# Руководство по модуляризации кода - MassMeta style, v0.3 +### Это модульная папка проекта МассМета -## Чем тщательнее вы соблюдаете правила из этого руководства - тем меньше претензий будет к вам и ваш PR будет быстрее замержан в репозиторий. +Здесь находятся: -## Вступление -Разработка и поддержка отдельной код-базы, что постоянно подсасывает обновления с основного проекта (в нашем случае это /TG/station) - это ну ооочень непростая задача, многие подобные "типо модульные" проекты утонули в грязном коде (посмотри в код Монке-станции), а подобные "Авгиевые конюшни" поддерживать - та ещё запара. +| Папка/Файл | Описание +| ------------------------------- | -------------------------------------------------------------| +| **~meta_defines** 📁 | Папка со всеми нашими модульно определенными defines | +| **master_files** 📁 | Файлы, что мы модульно Переопределили у /TG/Station | +| **modules** 📁 | Все Новые модульные файлы | +| **tools** 📁 | Инструменты, что позволяют удобнее вести проект | +| **modular_meta.dm** 📄 | Файл, где описаны все наши модули, что мы добавляем в проект | +| **modular_meta_defines.dm** 📄 | Файл, где описаны все наши модульно определенные defines | +| **modularization_guide.md** 📝 | Инструкция по модульному ведению проекта (на Русском) | +| **module_template.md** 📝 | Примерный шаблон, как должно выглядеть описание вашего PR'а | -Поймите, чем больше разрастается наш модульный код - тем тщательнее нужно его поддерживать для дальнейшей нашей работы. +⚠️ Все Defines, применяющиеся в вашем модуле, должны быть реализованы в папке **~meta_defines**! ⚠️ -Удобство сопровождения вашего дополнительного кода - является одной из основных причин соблюдения МОДУЛЬНОСТИ у нашего проекта. +📚 Вам предоставлено **modularization_guide.md** пособие на Русском, о том как модульно вести проект. -Хорошо организованный и документированный код избавляет наш Моск при дальнейшем "обновлении до оффов ТГ" или внесении или удалении "фичи". **Сделай все сразу качественно как можешь.** - -Этот документ будет обновляться и изменяться каждый раз, когда в него будут добавляться новые исключения. Возможно, время от времени стоит проверять, возможно тут появится более правильный/удобный прием модуляризации. - -GitHub - это одна из многих видов систем контроля версий (СКВ). Мы на ней т.к. оффы ТГ тоже на ней. Сам Git одновременно и достаточно проработан в плане алгоритмов, он ими же и ограничен. Они не всегда могут однозначно разрешить определенные изменения в коде, что приводит к конфликтам, которые придется Вам починять вручную. - -**Все Баг-фиксы и прочую дичь Ты льешь только в корневой проект ТГ** - -### Важное примечание - ТЕСТИРУЙТЕ СВОИ PR'ы - -Как ответственный ТГ К*дер - Вы несете ответственность за тестирование вашего контента. Ты - это и тестировщик, что тестирует свой продукт для клиентов - игроков. А игроков на сервере обычно больше 1-го, то порой нужно проверять вашу фичу вдвоем/втроем/итд. - -Если вам нужен отдельный клиент для тестирования, вы можете использовать гостевой аккаунт, выйдя из BYOND-хаба и зайдя на локалку как Guest. Как только вас уже доконал этот кодинг фичи - закидывай PR на репозиторий и жди пока тебе его починят (заставят переделывать твоими же ручками). - -## Из-за чего же весь сыр-бор? - -### Итак, у Вас возник конфликт... - -Предположим в оригинале у нас было так: - -```byond -var/something = 1 -``` - -и вдруг нам протребовалось изменить значение с 1 на 2 для нашего проекта, - -```diff -- var/something = 1 -+ var/something = 2 //MASSMETA EDIT -``` - -но внезапно наш доблестный ТГ К*дер с оффов вносит свои изменения в основную код-базу, меняя её с 1 на 4, - -```diff -- var/something = 1 -+ var/something = 4 -``` -затем мы решили синхронизировать изменения ни о чём не подозревая, однако видим следующее, - -```byond -var/something = 2 //MASSMETA EDIT -``` - -Как бы ни был прост данный пример, но он приводит к относительно простому конфликту. - -Где мы начинаем думать головой, чтобы выбрать наилучший вариант вручную. - -### Выходы из ситуации - -ТЫ - ТОТ КТО РЕШАЕТ КОНФЛИКТЫ, ПРОГРАММА - ГЛУПА И ГОТОВА В ЛЮБОЙ МОМЕНТ ПОДСТАВИТЬ ТЕБЯ, НЕ НАДЕЙСЯ НА НЕЁ! - -Ну так о чем мы... Ах да, МОДУЛЯРИЗАЦИЯ! - -**Модуляризация** означает, что большинство изменений и дополнений, которые мы делаем, будут храниться в отдельной папке **`modular_meta/`**, там наш код полностью независим от основного кода. Однако не всегда возможно все сделать полностью модульным, подобные случаи должны быть особым образом отмечены комментариями, указывающими, где начинаются изменения, где они заканчиваются, и к какой функции они относятся. - -## Протокол модуляризации - -«Как корабль назовешь, так он и поплывет». Придумайте короткое (но информативное) название для своего пиара для дальнейших пометок ваших изменений в коде. (Вы аналогично можете назвать вашу ветку (Branch) в вашем репозитории). После того как вы придумали название - то проверь, нет ли уже подобного в проекте! - -Например, `DNA-FEATURE-WINGS` или `XENOARCHEAOLOGY` или `SHUTTLE_TOGGLE` - Мы будем использовать его в будущей документации, как некий уникальный ID. Он должен быть единым во всех ваших изменениях/дополнениях. Все пометки ДОЛЖНЫ быть абсолютно одинаковыми! Это необходимо для удобства поиска. - -Затем вам нужно создать основную папку, в которой вы будете локально работать, назови сразу её подобно ID твоего модуля. Например, `modular_meta/modules/shuttle_toggle`. - -### Карты - -В нашем репозитории не предполагается держать модульные карты (это которые с применением авто-мапперов). - -Используются карты: -* оригинальные с офф ТГ (без изменений) -* заимствованные с других билдов (некоторые желательно не менять, уточните) -* наши самодельные = полностью независимые (например: ProtoBoxStation) - -### Ресурсы: изображения (.png), звуки (.ogg), значки (.dmi) и прочие бинарники (= не Текст). - -Git сам по себе может справиться с конфликтами двоичных файлов, однако Вы - нет. Для вас бинарник будет выглядеть как беспорядочный набор всякого, поэтому вносить изменения в основные Бинарные файлы категорически не рекомендуется. - -Все (кроме TGUI, строк и конфигов со строками) добавленные нами файлы должны быть помещены в ту же модульную папку, что и ваш код. Это означает, что все локаально хранится в папке вашего модуля: звуки, значки и файлы кода. - УДОБНО! - -- ***Пример:*** Решили Вы добавить нового моба для лаваленда. - - Прежде всего вы создаете свою модульную папку. Например: `modular_meta/modules/lavalandmob` - - Далее Вы создаете подпапки для каждого компонента (если нужно). - Например: - * `/code` для кода - * `/sounds` для звуковых файлов - * `/icons` для любых файлов картинок/значков. - - После этого вам нужно будет установить ссылки на ваши файлы в коде. - - ```byond - /mob/lavaland/newmob - icon = 'modular_meta/modules/lavalandmob/icons/mob.dmi' - icon_state = "dead_1" - sound = 'modular_meta/modules/lavalandmob/sounds/boom.ogg' - ``` - - Это гарантирует нам, что ваш код является полностью модульным и облегчит его будущие изменения. - -- С прочими "нетекстовыми" файлами следует обращаться аналогичным образом, в зависимости от контекста каждого конкретного случая. Если у вас есть сомнения, обратитесь за советами и предложениями к сопровождающему проекта или другим участникам. - -- Any additional clothing icon files you add MUST go into the existing files in master_files clothing section. (непонятно что имел ввиду автор) - -### Папка `master_files` (oh yes Sir!) - -Вы всегда должны помещать любые модульные переопределения значков, звуков, кода и т. д. в эту папку, и они **должны** соответствовать структуре папки основного кода. - -Пример: `code/modules/mob/living/living.dm` -> `modular_meta/master_files/code/modules/mob/living/living.dm` - -Это сделано для того, чтобы было проще выяснить, что вы или кто-то другой поменяли в Базовом файле, без необходимости поиска в определениях процедур. - -Это также помогает предотвратить многократное переопределение одного и того же процесса модулями. Более подробная информация об этих типах редактирования расскажется позже. - -### Полностью модульные части вашего кода - -Раздел ниже относительно прост, там будет рассказано об основах Модульности с понятными примерами, так как руководство предназначено, скорее, для новичков. - -Правило гласит, что если вы сможете обойтись без этого, то не следует вносить изменения в файлы основной код-базы. За некоторыми исключениями, которые будут упомянуты в ближайшее время. - -Короче говоря, большая часть модульного кода будет размещена во вложенных папках вашей основной папки модуля **`modular_meta/modules/yourmodule/code/`**, с теми же правилами, что и в случае с остальными файлами. Не отражайте структуру папок основного кода в модульной папке! - -Например, `modular_meta/modules/xenoarcheaology/code`, содержит весь код, инструменты, предметы и прочее, связанное с этим. - -Такие модули, за исключением _очень_ простых, **должны** иметь в своей папке `readme.md`, содержащий следующее: - -- ссылки на PR'ы, которые внедрили этот модуль или внесли в него какие-либо существенные изменения -- краткое описание модуля -- список файлов, измененных в основном коде, с кратким описанием изменений, а также список изменений в других модульных файлах, не являющихся частью того же модуля, которые были необходимы для правильной работы этого модуля -- (опционально) немного более подробная документация для корректировки кода на будущее, которая будет полезна при дальнейшем развитии и сопровождении -- авторство - -***Примерный Шаблон:*** [Тык](module_template.md) - -## Модульные переопределения (важно!!) - -Обратите внимание, что можно модульно добавлять код перед или за основной процедурой, не редактируя исходную процедуру, а обращаясь к родительской процедуре с помощью `. = ..()` или `..()`. Аналогичным образом можно добавить новый var к существующему datum или obj, не редактируя напрямую файлы офф ТГ. - -**Примечание о переопределении proc: Если вы можете, это не значит, что вы должны!!!** - -В целом, такой подход является хорошей идеей и поощряется, когда это возможно. Однако это не жесткое правило, и иногда "//MASSMETA EDIT" предпочтительнее. Просто постарайтесь использовать здравый смысл в этом вопросе. - -Например: пожалуйста, не вставляйте всю TG-процедуру в модульную переопределённую процедуру, внесите одно небольшое изменение, а затем объявите её "полностью модульной". Эти процедуры - абсолютный кошмар для поддержки, потому что как только что-то изменится, вам придется обновлять переопределенную процедуру. - -Иногда вы даже не знаете о существовании переопределения, если оно компилируется нормально и не вызывает никаких ошибок. Это часто приводит к тому, что функции, которые были добавлены выше по течению, здесь отсутствуют. Так что да. Избегайте этого. Нет ничего страшного, если что-то не является полностью модульным. Иногда это лучший выбор из двух зол. - -Лучшими кандидатами для модульных переопределений proc являются те, в которых вы можете просто добавить что-то после вызова родителя или ловко вплести вызов родителя в середину, чтобы достичь желаемого эффекта. - -Производительность также следует учитывать, когда вы переопределяете горячую (часто вызываемую) процедуру (например, Life()), поскольку каждый дополнительный вызов увеличивает накладные расходы сервера. В таких случаях редактирование "//MASSMETA EDIT" намного критичны к общей производительности кода. Однако для большинства процедур об этом даже и не нужно беспокоиться. - -### Эти модульные переопределения должны храниться именно в `master_files`, и вам следует по возможности избегать их размещения внутри модулей. - -Для простоты предположим, что вы хотите заставить оружие искрить при выстреле для имитации дульной вспышки и вы хотите, чтобы это можно было использовать с любыми видами оружия. - -В модульном файле можно начать с добавления переменной var. - -```byond -/obj/item/gun - var/muzzle_flash = TRUE -``` - -И все будет работать как полагается. После этого, допустим, вы захотите проверить var и вызвать искры после выстрела. -Зная, что исходный proc, вызываемый при стрельбе, является - -```byond -/obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) -``` - -вы можете определить для него дочернюю процедуру, которая будет вставлена в цепочку наследования связанных с ней процедур (выглядит на вид сложно, но в таких простых случаях, как этот, вам не нужно беспокоиться) - -```byond -/obj/item/gun/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) - . = ..() //. is the default return value, we assign what the parent proc returns to it, as we call it before ours - if(muzzle_flash) - spawn_sparks(src) //For simplicity, I assume you've already made a proc for this -``` - -На этом мы закончили с основами. - -### Немодульные изменения основного кода - ВАЖНО - -Время от времени наступает момент, когда редактирование основных файлов становится неизбежным. - -Пожалуйста, не забудьте записать факт их изменения в readme.md вашего модуля. - -В этих случаях мы решили применить следующую стандартизацию с примерами: - -- **Добавление:** - - ```byond - //MASSMETA EDIT ADDITION BEGIN - SHUTTLE_TOGGLE - (Optional Reason/comment) - var/adminEmergencyNoRecall = FALSE - var/lastMode = SHUTTLE_IDLE - var/lastCallTime = 6000 - //MASSMETA EDIT ADDITION END - ``` - -- **Удаление:** - - ```byond - //MASSMETA EDIT REMOVAL BEGIN - SHUTTLE_TOGGLE - (Optional Reason/comment) - /* - for(var/obj/docking_port/stationary/S in stationary) - if(S.id = id) - return S - */ - //MASSMETA EDIT REMOVAL END - WARNING("couldn't find dock with id: [id]") - ``` - - И для любых удалений, которые перемещаются в другие файлы: - - ```byond - //MASSMETA EDIT REMOVAL BEGIN - SHUTTLE_TOGGLE - (Moved to modular_meta/shuttle_toggle/randomverbs.dm) - /* - /client/proc/admin_call_shuttle() - set category = "Admin - Events" - set name = "Call Shuttle" - - if(EMERGENCY_AT_LEAST_DOCKED) - return - - if(!check_rights(R_ADMIN)) - return - - var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No") - if(confirm != "Yes") - return - - SSshuttle.emergency.request() - SSblackbox.record_feedback("tally", "admin_verb", 1, "Call Shuttle") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] admin-called the emergency shuttle.") - message_admins(span_adminnotice("[key_name_admin(usr)] admin-called the emergency shuttle.")) - return - */ - //MASSMETA EDIT REMOVAL END - ``` - -- **Изменения:** - - ```byond - //MASSMETA EDIT CHANGE BEGIN - SHUTTLE_TOGGLE - (Optional Reason/comment) - //if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE) - MASSMETA EDIT - ORIGINAL - if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE, SHUTTLE_DISABLED) - //MASSMETA EDIT CHANGE END - return 1 - ``` - - при небольшом локальном изменении кода хорошим тоном будет в комментарии указать то что было там до вашего вмешательства. - -## Особые случаи модульного кода - -Из каждого правила есть исключения, обусловленные множеством обстоятельств. - -### Определения -Свои модульные определения (defines) помещаем именно в папку **`massmeta/~meta_defines`**. - -Если у вас есть определение, которое используется более чем в одном файле, оно **обязательно** должно быть объявлено там. - -Если у вас есть define, который используется в одном файле и больше нигде не предполагается, объявите его вверху файла, а `#undef MY_DEFINE` - внизу файла. Это нужно для того, чтобы сохранить чистоту контекстных меню и не запутать тех, кто использует IDE (по типу VS Code) с автозаполнением. - -(Сам byond работает с дефайнами только в директории **`code/__DEFINES`**, туда идет переопределение нашего файла.) - -### Компоновка модульной папки -Чтобы сохранить общий стиль и обеспечить удобную навигацию по большинству модулей, а также контролировать количество файлов и папок в репозитории, вы должны следовать этой схеме. - -Убедитесь, что имена папок точно соответствуют указанным. - -Самая верхняя папка: module_id - -**НЕ КОПИРУЙТЕ ФАЙЛОВУЮ СТРУКТУРУ ОСНОВНОГО КОДА ОФФОВ ТГ В СВОЙ МОДУЛЬ!!!** - -**Code** (код): Все файлы .DM должны располагаться здесь. - -- Делай так: /modular_meta/modules/module_id/code/disease_mob.dm -- НЕ так: /modular_meta/modules/module_id/code/modules/antagonists/disease/disease_mob.dm - -**Icons** (изображения/иконки): Все файлы .DMI должны располагаться здесь. - -- Делай так: /modular_meta/modules/module_id/icons/mining_righthand.dmi -- НЕ так: /modular_meta/modules/module_id/icons/mob/inhands/equipment/mining_righthand.dmi - -**Sound** (звуки/музыка): Все файлы .OGG должны располагаться здесь. - -- Делай так: /modular_meta/modules/module_id/sound/space_dragon_roar.ogg -- НЕ так: /modular_meta/modules/module_id/sound/creatures/space_dragon_roar.ogg - -Файл Readme следует поместить в родительскую папку /modular_meta/modules/module_id. - -**ДЕРЖИТЕ РАЗНЫЕ ТИПЫ ФАЙЛОВ ПО СВОИ ПАПКАМ!** - -### Комментировнный код (= неиспользуемый) - НЕ ДЕЛАЙТЕ ЭТОГО - -Если вы комментируете избыточный код в модулях - значит его нужно полностью удалить. - -Даже если вы думаете, что кто-то собирается переделать то, что вы закомментировали, не делайте этого, gitblame существует не просто так, (прим. от переводчика: есть такая команда 'git blame', что позволяет показать, историю редактирования конкретной строки кода). - -Это относится и к файлам, не комментируйте целые файлы, просто удалите это безобразие. Это поможет нам избежать их раздувания и бессмысленных комментариев. Тем более вы всегда можете посмотреть что было именно в этом файле просто нажав в гите "Посмотреть историю изменений". - -**Это не относится к немодульным изменениям.** - -### Иерархия инклюдов (includes.dm) ваших модулей - -У Скайратов (в данном случае у Nova Sector) все новые файлы сразу включаются в общий файл tgstation.dme, что я считаю достаточно трудным для дальнейшней поддрежки, да и в целом не особо согласуется с их модульным принципом. - -В корне папки /modular_meta лежит файл modular_meta.dm (он включен в общий tgstation.dme) - -В этом файле описаны все дополнения, которые мы добавили в наш проект модульно. Они тоже представлены в виде .dm файлов. (например hardsuits.dm) - -Каждый такой .dm файл в каждом модуле содержит в себе все наши дополнительные модульные-файлы (тоже .dm). - -Таким образом мы соблюдаем некую красивую иерархию. - -### Вставка в код своих строковых (.txt .json) и config файлов - -Помещаете свои файлы в подпапку **`strings/~modular_meta_strings`**. -По аналогии и config-файлами **`config/~modular_meta_config`**. - -Не забывайте выставлять правильный файловый путь к вашему файлу с учетом новой подпапки! - -## Модульный TGUI (TG User Interface) - -TGUI - еще один исключительный случай, поскольку он использует javascript и не может быть модульным, нежели же код DM. - -ВСЕ файлы tgui находятся в папке `/tgui/packages/tgui/interfaces` и ее подкаталогах; отдельной папки для пользовательских интерфейсов Massmeta не существует. - -### Изменение файлов самих офф ТГ - -При изменении оригинальных файлов TGUI действуют те же правила, что и при изменении вышележащего кода DM, однако схема написания комментариев порой тут несколько иная. - -Вы можете использовать как `// MASSMETA EDIT`, так и `/* MASSMETA EDIT */`, хотя в некоторых случаях вам придется использовать одно вместо другого. (в некотрых языках '//' - могут не являться комментированием, учтите это) - -В целом, старайтесь, чтобы комментарии к изменениям находились на той же строке, что и само изменение. Предпочтительно внутри JSX-тега. Например: - -```js -<Button - onClick={() => act('spin', { high_quality: true })} - icon="rat" // MASSMETA EDIT ADDITION -</Button> -``` - -```js -<Button - onClick={() => act('spin', { high_quality: true })} - // MASSMETA EDIT ADDITION START - another example, multiline changes - icon="rat" - tooltip="spin the rat." - // MASSMETA EDIT ADDITION END -</Button> -``` - -```js -<SomeThing someProp="whatever" /* it also works in self-closing tags */ /> -``` - -Если это не представляется возможным, вы можете заключить ваше редактирование в фигурные скобки, например так: - -```js -{/* MASSMETA EDIT ADDITION START */} -<SomeThing> - someProp="whatever" -</SomeThing> -{/* MASSMETA EDIT ADDITION END */} -``` - -### Создание новых файлов TGUI - -** ВАЖНО! При создании нового файла TGUI с нуля, пожалуйста, добавьте следующее в самом верху файла (строка 1):** - -```js -// THIS IS A MASSMETA UI FILE -``` - -Таким образом, они легко идентифицируются как модульные файлы TGUI .tsx/.jsx. Собственно ничего больше делать и не нужно, комментарии "// MASSMETA EDIT" в модульном файле TGUI не нужны. - -<!-- ## Exemplary PR's // TODO: REPLACE THESE! - -Here are a couple PR's that are great examples of the guide being followed, reference them if you are stuck: - -- <https://github.com/Skyrat-SS13/Skyrat-tg/pull/241> -- <https://github.com/Skyrat-SS13/Skyrat-tg/pull/111> --> - -## В заключении - -Терпение и труд - ТГ к*дера перетрут. Если мы будем последовательны, то в конечном итоге это избавит НАС от будущих болей в области ГМ, когда Нам (Вам) же придется разрешать конфликты вручную. -Благодаря более скрупулезному документированию будет сразу понятно, какие изменения были сделаны, где и с помощью каких функций, и все станет гораздо менее двусмысленным и запутанным. - -Желаю удачи в ТГ к*динге. Помните, что сообщество всегда готово помочь вам, если вдруг понадобится помощь. +💡 Для вашего удобства предоставленна примерная схема содержания вашего PR'а на наш репозиторй в **module_template.md**. diff --git a/massmeta/tools/massmeta_check_grep.sh b/massmeta/tools/massmeta_check_grep.sh new file mode 100644 index 0000000000000..653128b6b3e30 --- /dev/null +++ b/massmeta/tools/massmeta_check_grep.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +#ANSI Escape Codes for colors to increase contrast of errors +RED="\033[0;31m" +GREEN="\033[0;32m" +BLUE="\033[0;34m" +NC="\033[0m" # No Color + +echo -e "${BLUE}Re-running grep checks, but looking in modular_meta/features/...${NC}" + +# Run the linters again, but modular massmeta code (features). +sed 's/code\/\*\*\/\*\*.dm/massmeta\/features\/\*\*\/\*\*.dm/g' <tools/ci/check_grep.sh | bash + +echo -e "${BLUE}Re-running grep checks, but looking in modular_meta/master_files/...${NC}" + +# Run the linters again, but modular massmeta code (master_files). +sed 's/code\/\*\*\/\*\*.dm/massmeta\/master_files\/\*\*\/\*\*.dm/g' <tools/ci/check_grep.sh | bash diff --git a/massmeta/tools/readme.md b/massmeta/tools/readme.md new file mode 100644 index 0000000000000..0df2c4ad2cf3b --- /dev/null +++ b/massmeta/tools/readme.md @@ -0,0 +1,3 @@ +## Тут лежат все наши Новые Инструменты проверки нашего кода. + +Они находятся только в данной папке. К ним идет обращение в файле: **.github/workflows/ci_suite.yml** diff --git a/massmeta/tools/ticked_file_enforcement/schemas/modular_meta.json b/massmeta/tools/ticked_file_enforcement/schemas/modular_meta.json new file mode 100644 index 0000000000000..d7204d7555c34 --- /dev/null +++ b/massmeta/tools/ticked_file_enforcement/schemas/modular_meta.json @@ -0,0 +1,7 @@ +{ + "file": "massmeta/modular_meta.dm", + "scannable_directory": "massmeta/features/", + "subdirectories": true, + "excluded_files": [], + "forbidden_includes": [] +} diff --git a/massmeta/tools/ticked_file_enforcement/schemas/modular_meta_defines.json b/massmeta/tools/ticked_file_enforcement/schemas/modular_meta_defines.json new file mode 100644 index 0000000000000..e2a72f9ed5d35 --- /dev/null +++ b/massmeta/tools/ticked_file_enforcement/schemas/modular_meta_defines.json @@ -0,0 +1,7 @@ +{ + "file": "massmeta/modular_meta_defines.dm", + "scannable_directory": "massmeta/~meta_defines/", + "subdirectories": true, + "excluded_files": [], + "forbidden_includes": [] +} diff --git a/massmeta/tools/ticked_file_enforcement/schemas/modular_meta_master.json b/massmeta/tools/ticked_file_enforcement/schemas/modular_meta_master.json new file mode 100644 index 0000000000000..fe4c9bf68f2a4 --- /dev/null +++ b/massmeta/tools/ticked_file_enforcement/schemas/modular_meta_master.json @@ -0,0 +1,7 @@ +{ + "file": "massmeta/modular_meta_master.dm", + "scannable_directory": "massmeta/master_files/", + "subdirectories": true, + "excluded_files": [], + "forbidden_includes": [] +} diff --git a/massmeta/tools/ticked_file_enforcement/ticked_file_enforcement.py b/massmeta/tools/ticked_file_enforcement/ticked_file_enforcement.py new file mode 100644 index 0000000000000..32fe9db93df66 --- /dev/null +++ b/massmeta/tools/ticked_file_enforcement/ticked_file_enforcement.py @@ -0,0 +1,212 @@ +import codecs +import fnmatch +import functools +import glob +import json +import os +import sys + +# simple way to check if we're running on github actions, or on a local machine +on_github = os.getenv("GITHUB_ACTIONS") == "true" + +def green(text): + return "\033[32m" + str(text) + "\033[0m" + +def red(text): + return "\033[31m" + str(text) + "\033[0m" + +def blue(text): + return "\033[34m" + str(text) + "\033[0m" + +schema = json.load(sys.stdin) +file_reference = schema["file"] +file_reference_basename = os.path.basename(file_reference) +scannable_directory = schema["scannable_directory"] +subdirectories = schema["subdirectories"] +FORBIDDEN_INCLUDES = schema["forbidden_includes"] +excluded_files = schema["excluded_files"] + +def post_error(string): + print(red(f"Ticked File Enforcement [{file_reference}]: " + string)) + if on_github: + print(f"::error file={file_reference},line=1,title=Ticked File Enforcement::{string}") + +for excluded_file in excluded_files: + full_file_path = scannable_directory + excluded_file + if not os.path.isfile(full_file_path): + post_error(f"Excluded file {full_file_path} does not exist, please remove it!") + sys.exit(1) + +file_extensions = ("dm", "dmf") + +reading = False +lines = [] +total = 0 + +# need just for better logs look +if (scannable_directory == "massmeta/features/") or (scannable_directory == "massmeta/~meta_defines/") or (scannable_directory == "massmeta/master_files/"): + print(blue(f"Scanning Modular Code...")) + print(blue(f" Checking files in [{scannable_directory}]")) + +with open(file_reference, 'r') as file: + for line in file: + total += 1 + line = line.strip() + + if line == "// BEGIN_INCLUDE": + reading = True + continue + elif line == "// END_INCLUDE": + break + elif not reading: + continue + + # need to make full path + if (scannable_directory == "massmeta/features/") or (scannable_directory == "massmeta/~meta_defines/") or (scannable_directory == "massmeta/master_files/"): + line = line[:10] + "massmeta\\" + line[10:] + + # checks defines folder + fail_no_include_modular = False + if scannable_directory == "massmeta/~meta_defines/": + module_file_path = line.replace('\\', '/') + module_file_path_clean = module_file_path[10:-1] + print(f" [{module_file_path_clean}]") + if (module_file_path_clean[9:22] != "~meta_defines"): + print(red(f" File [{module_file_path_clean}] must be in \"~meta_defines/\" folder")) + fail_no_include_modular = True + + # checks master folder + if scannable_directory == "massmeta/master_files/": + module_file_path = line.replace('\\', '/') + module_file_path_clean = module_file_path[10:-1] + print(f" [{module_file_path_clean}]") + if (module_file_path_clean[9:21] != "master_files"): + print(red(f" File [{module_file_path_clean}] must be in \"master_files/\" folder")) + fail_no_include_modular = True + + lines.append(line) + + # checks main module folder + if scannable_directory == "massmeta/features/": + module_file_path = line.replace('\\', '/') + module_file_path_clean = module_file_path[10:-1] + print(f" [{module_file_path_clean}] with in it:") + if module_file_path_clean[-11:] != "includes.dm": + print(red(f" File [{module_file_path_clean}] must be named \"includes.dm\", skipping the file.")) + fail_no_include_modular = True + continue + + with open(module_file_path_clean, 'r') as extra_file: + for extra_line in extra_file: + total += 1 + extra_line = extra_line.strip() + if (extra_line[10:14] != "code"): + print(red(f" File [{extra_line}] must be in \"code/\" folder")) + fail_no_include_modular = True + + # make full path + extra_line = line[:-12] + extra_line[10:] + lines.append(extra_line) + extra_line.replace('\\', '/') + print(f" [{extra_line[10:-1]}]") + + if fail_no_include_modular: + post_error(f"Modular Ticked File Enforcement has failed!") + sys.exit(1) + +offset = total - len(lines) +print(blue(f"Ticked File Enforcement: {offset} lines were ignored in output for [{file_reference}].")) +fail_no_include = False + +scannable_files = [] +for file_extension in file_extensions: + compiled_directory = f"{scannable_directory}/**/*.{file_extension}" + scannable_files += glob.glob(compiled_directory, recursive=True) + +if len(scannable_files) == 0: + post_error(f"No files were found in {scannable_directory}. Ticked File Enforcement has failed!") + sys.exit(1) + +for code_file in scannable_files: + dm_path = "" + + if subdirectories is True: + dm_path = code_file.replace('/', '\\') + else: + dm_path = os.path.basename(code_file) + + included = f"#include \"{dm_path}\"" in lines + + forbid_include = False + for forbidable in FORBIDDEN_INCLUDES: + if not fnmatch.fnmatch(code_file, forbidable): + continue + + forbid_include = True + + if included: + post_error(f"{dm_path} should NOT be included.") + fail_no_include = True + + if forbid_include: + continue + + if not included: + if(dm_path == file_reference_basename): + continue + + if(dm_path in excluded_files): + continue + + post_error(f"Missing include for {dm_path}.") + fail_no_include = True + +if fail_no_include: + sys.exit(1) + +def compare_lines(a, b): + # Remove initial include as well as the final quotation mark + a = a[len("#include \""):-1].lower() + b = b[len("#include \""):-1].lower() + + split_by_period = a.split('.') + a_suffix = "" + if len(split_by_period) >= 2: + a_suffix = split_by_period[len(split_by_period) - 1] + split_by_period = b.split('.') + b_suffix = "" + if len(split_by_period) >= 2: + b_suffix = split_by_period[len(split_by_period) - 1] + + a_segments = a.split('\\') + b_segments = b.split('\\') + + for (a_segment, b_segment) in zip(a_segments, b_segments): + a_is_file = a_segment.endswith(file_extensions) + b_is_file = b_segment.endswith(file_extensions) + + # code\something.dm will ALWAYS come before code\directory\something.dm + if a_is_file and not b_is_file: + return -1 + + if b_is_file and not a_is_file: + return 1 + + # interface\something.dm will ALWAYS come after code\something.dm + if a_segment != b_segment: + # if we're at the end of a compare, then this is about the file name + # files with longer suffixes come after ones with shorter ones + if a_suffix != b_suffix: + return (a_suffix > b_suffix) - (a_suffix < b_suffix) + return (a_segment > b_segment) - (a_segment < b_segment) + + print(f"Two lines were exactly the same ({a} vs. {b})") + sys.exit(1) + +sorted_lines = sorted(lines, key = functools.cmp_to_key(compare_lines)) +for (index, line) in enumerate(lines): + if sorted_lines[index] != line: + post_error(f"The include at line {index + offset} is out of order ({line}, expected {sorted_lines[index]})") + sys.exit(1) + +print(green(f"Ticked File Enforcement: [{file_reference}] All includes (for {len(scannable_files)} scanned files) are in order!")) diff --git a/massmeta/~meta_defines/readme.md b/massmeta/~meta_defines/readme.md index 7647433003d31..e25a2d40f5a8b 100644 --- a/massmeta/~meta_defines/readme.md +++ b/massmeta/~meta_defines/readme.md @@ -1 +1,3 @@ -На этот файл идёт переадресация из code/__DEFINES/~meta_defines_include.dm +## Тут лежат все наши Новые Defines, что мы определили в нашем модуле, они все добавлены в файле: + +**massmeta/modular_meta_defines.dm** diff --git a/sound/ambience/antag/heretic/heretic_gain_intense.ogg b/sound/ambience/antag/heretic/heretic_gain_intense.ogg new file mode 100644 index 0000000000000..5e6d4f4174fc9 Binary files /dev/null and b/sound/ambience/antag/heretic/heretic_gain_intense.ogg differ diff --git a/sound/attributions.txt b/sound/attributions.txt index 528542e59ca78..123fde0794c19 100644 --- a/sound/attributions.txt +++ b/sound/attributions.txt @@ -193,6 +193,19 @@ valve_opening.ogg was made by mixing water flowing samples from: https://freesound.org/people/scriotxstudios/sounds/349111/?attribution=1 and squeaky scrape sound from: https://freesound.org/people/Department64/sounds/669028/ which was modified with lower pitch +liquid_pour2.ogg and liquid_pour3.ogg were cut from +https://freesound.org/people/MattRuthSound/sounds/561896/ +https://freesound.org/people/MattRuthSound/sounds/561895/ + ayylien.ogg was made by remixing: SCIRetro_Energy Swells Synth_Funky Audio_Sonics Spices by Funky_Audio under CC0 -- https://freesound.org/people/realtheremin/sounds/119011/ -scifi_scare_a.aiff by realtheremin under CC0 -- https://freesound.org/people/Funky_Audio/sounds/729392/ \ No newline at end of file +scifi_scare_a.aiff by realtheremin under CC0 -- https://freesound.org/people/Funky_Audio/sounds/729392/ + +solarflare.ogg was made by ArcaneMusic, using the following sources from Freesound.org. +"Flashbang Explosion Designed 14m" by modusmogulus https://freesound.org/people/modusmogulus/sounds/734095/ under CC 0 +"Hammer and anvil" by Duasun -- https://freesound.org/people/Duasun/sounds/321889/ under CC 0 + +beaker_pickup.ogg was made by lowering pitch: +Bottle Tap.wav by alex_alexalex -- https://freesound.org/s/395492/ -- License: Attribution NonCommercial 3.0 +beaker_place.ogg was made by cutting and lowering pitch: +place glass object.wav by milpower -- https://freesound.org/s/353105/ -- License: Creative Commons 0 diff --git a/sound/effects/glug.ogg b/sound/effects/glug.ogg new file mode 100644 index 0000000000000..268ff4557e8e6 Binary files /dev/null and b/sound/effects/glug.ogg differ diff --git a/sound/effects/liquid_pour1.ogg b/sound/effects/liquid_pour1.ogg new file mode 100644 index 0000000000000..71e57ad19f7ef Binary files /dev/null and b/sound/effects/liquid_pour1.ogg differ diff --git a/sound/effects/liquid_pour2.ogg b/sound/effects/liquid_pour2.ogg new file mode 100644 index 0000000000000..773b30e59e5c0 Binary files /dev/null and b/sound/effects/liquid_pour2.ogg differ diff --git a/sound/effects/liquid_pour3.ogg b/sound/effects/liquid_pour3.ogg new file mode 100644 index 0000000000000..0548d7b14a4ed Binary files /dev/null and b/sound/effects/liquid_pour3.ogg differ diff --git a/sound/items/attributions.txt b/sound/items/attributions.txt new file mode 100644 index 0000000000000..de55b8daebe95 --- /dev/null +++ b/sound/items/attributions.txt @@ -0,0 +1 @@ +night_vision_on.ogg by Syna-Max -- https://freesound.org/s/60345/ -- License: Attribution NonCommercial 4.0 diff --git a/sound/items/eshield_recharge.ogg b/sound/items/eshield_recharge.ogg new file mode 100644 index 0000000000000..747ad4563e5c1 Binary files /dev/null and b/sound/items/eshield_recharge.ogg differ diff --git a/sound/items/handling/beaker_pickup.ogg b/sound/items/handling/beaker_pickup.ogg new file mode 100644 index 0000000000000..c31bf6856dcaf Binary files /dev/null and b/sound/items/handling/beaker_pickup.ogg differ diff --git a/sound/items/handling/beaker_place.ogg b/sound/items/handling/beaker_place.ogg new file mode 100644 index 0000000000000..14b3868d0673d Binary files /dev/null and b/sound/items/handling/beaker_place.ogg differ diff --git a/sound/items/night_vision_on.ogg b/sound/items/night_vision_on.ogg new file mode 100644 index 0000000000000..13ca202669c4b Binary files /dev/null and b/sound/items/night_vision_on.ogg differ diff --git a/sound/machines/attributions.txt b/sound/machines/attributions.txt new file mode 100644 index 0000000000000..b459be3d3e158 --- /dev/null +++ b/sound/machines/attributions.txt @@ -0,0 +1 @@ +sound/machines/lathe/lathe_print.ogg - made by kayozzx (discord) , license: CCbySA diff --git a/sound/machines/lathe/lathe_print.ogg b/sound/machines/lathe/lathe_print.ogg new file mode 100644 index 0000000000000..eace2da907558 Binary files /dev/null and b/sound/machines/lathe/lathe_print.ogg differ diff --git a/sound/mecha/mech_blade_attack.ogg b/sound/mecha/mech_blade_attack.ogg new file mode 100644 index 0000000000000..f6c9274762b1f Binary files /dev/null and b/sound/mecha/mech_blade_attack.ogg differ diff --git a/sound/mecha/mech_blade_break_wall.ogg b/sound/mecha/mech_blade_break_wall.ogg new file mode 100644 index 0000000000000..cec9c7a667cb0 Binary files /dev/null and b/sound/mecha/mech_blade_break_wall.ogg differ diff --git a/sound/mecha/mech_blade_safty.ogg b/sound/mecha/mech_blade_safty.ogg new file mode 100644 index 0000000000000..80e06388127f0 Binary files /dev/null and b/sound/mecha/mech_blade_safty.ogg differ diff --git a/sound/mecha/mech_charge_attack.ogg b/sound/mecha/mech_charge_attack.ogg new file mode 100644 index 0000000000000..b6d202c8e26d0 Binary files /dev/null and b/sound/mecha/mech_charge_attack.ogg differ diff --git a/sound/mecha/mech_stealth_attack.ogg b/sound/mecha/mech_stealth_attack.ogg new file mode 100644 index 0000000000000..e12ff890c7de5 Binary files /dev/null and b/sound/mecha/mech_stealth_attack.ogg differ diff --git a/sound/mecha/mech_stealth_effect.ogg b/sound/mecha/mech_stealth_effect.ogg new file mode 100644 index 0000000000000..b7a5a513308df Binary files /dev/null and b/sound/mecha/mech_stealth_effect.ogg differ diff --git a/sound/mecha/mech_stealth_pre_attack.ogg b/sound/mecha/mech_stealth_pre_attack.ogg new file mode 100644 index 0000000000000..15b2c04ab5c2a Binary files /dev/null and b/sound/mecha/mech_stealth_pre_attack.ogg differ diff --git a/sound/voice/breathing.ogg b/sound/voice/breathing.ogg new file mode 100644 index 0000000000000..f940a1b211a6b Binary files /dev/null and b/sound/voice/breathing.ogg differ diff --git a/sound/voice/firebot/candle_tip.ogg b/sound/voice/firebot/candle_tip.ogg new file mode 100644 index 0000000000000..0f29f18e3f969 Binary files /dev/null and b/sound/voice/firebot/candle_tip.ogg differ diff --git a/sound/voice/firebot/electric_fire_tip.ogg b/sound/voice/firebot/electric_fire_tip.ogg new file mode 100644 index 0000000000000..29910024b1995 Binary files /dev/null and b/sound/voice/firebot/electric_fire_tip.ogg differ diff --git a/sound/voice/firebot/gasoline_tip.ogg b/sound/voice/firebot/gasoline_tip.ogg new file mode 100644 index 0000000000000..838c0d267e65e Binary files /dev/null and b/sound/voice/firebot/gasoline_tip.ogg differ diff --git a/sound/vox_fem/absorb.ogg b/sound/vox_fem/absorb.ogg new file mode 100644 index 0000000000000..e05b4aa464570 Binary files /dev/null and b/sound/vox_fem/absorb.ogg differ diff --git a/sound/vox_fem/absorbed.ogg b/sound/vox_fem/absorbed.ogg new file mode 100644 index 0000000000000..726f1aa8c6ffb Binary files /dev/null and b/sound/vox_fem/absorbed.ogg differ diff --git a/sound/vox_fem/absorbing.ogg b/sound/vox_fem/absorbing.ogg new file mode 100644 index 0000000000000..8b8c1f575c744 Binary files /dev/null and b/sound/vox_fem/absorbing.ogg differ diff --git a/sound/vox_fem/activating.ogg b/sound/vox_fem/activating.ogg new file mode 100644 index 0000000000000..8082efb691143 Binary files /dev/null and b/sound/vox_fem/activating.ogg differ diff --git a/sound/vox_fem/activation.ogg b/sound/vox_fem/activation.ogg new file mode 100644 index 0000000000000..f06d33245df5b Binary files /dev/null and b/sound/vox_fem/activation.ogg differ diff --git a/sound/vox_fem/active.ogg b/sound/vox_fem/active.ogg new file mode 100644 index 0000000000000..54d0c1eb45f5c Binary files /dev/null and b/sound/vox_fem/active.ogg differ diff --git a/sound/vox_fem/affect.ogg b/sound/vox_fem/affect.ogg new file mode 100644 index 0000000000000..4c9b7aaeaad67 Binary files /dev/null and b/sound/vox_fem/affect.ogg differ diff --git a/sound/vox_fem/affected.ogg b/sound/vox_fem/affected.ogg new file mode 100644 index 0000000000000..c634e08f73421 Binary files /dev/null and b/sound/vox_fem/affected.ogg differ diff --git a/sound/vox_fem/affecting.ogg b/sound/vox_fem/affecting.ogg new file mode 100644 index 0000000000000..18f2e3c0c7a67 Binary files /dev/null and b/sound/vox_fem/affecting.ogg differ diff --git a/sound/vox_fem/alcohol.ogg b/sound/vox_fem/alcohol.ogg new file mode 100644 index 0000000000000..a304167a27f85 Binary files /dev/null and b/sound/vox_fem/alcohol.ogg differ diff --git a/sound/vox_fem/align.ogg b/sound/vox_fem/align.ogg new file mode 100644 index 0000000000000..bcf4b6465a89d Binary files /dev/null and b/sound/vox_fem/align.ogg differ diff --git a/sound/vox_fem/allow.ogg b/sound/vox_fem/allow.ogg new file mode 100644 index 0000000000000..ea0b8098fd75a Binary files /dev/null and b/sound/vox_fem/allow.ogg differ diff --git a/sound/vox_fem/alongside.ogg b/sound/vox_fem/alongside.ogg new file mode 100644 index 0000000000000..a96b9e7ba25d0 Binary files /dev/null and b/sound/vox_fem/alongside.ogg differ diff --git a/sound/vox_fem/amount.ogg b/sound/vox_fem/amount.ogg new file mode 100644 index 0000000000000..19b59e8263cf8 Binary files /dev/null and b/sound/vox_fem/amount.ogg differ diff --git a/sound/vox_fem/annihilate.ogg b/sound/vox_fem/annihilate.ogg new file mode 100644 index 0000000000000..375dfda691fd1 Binary files /dev/null and b/sound/vox_fem/annihilate.ogg differ diff --git a/sound/vox_fem/annihilated.ogg b/sound/vox_fem/annihilated.ogg new file mode 100644 index 0000000000000..823cc93dc6a6c Binary files /dev/null and b/sound/vox_fem/annihilated.ogg differ diff --git a/sound/vox_fem/annihilating.ogg b/sound/vox_fem/annihilating.ogg new file mode 100644 index 0000000000000..95a507df8503f Binary files /dev/null and b/sound/vox_fem/annihilating.ogg differ diff --git a/sound/vox_fem/annihilation.ogg b/sound/vox_fem/annihilation.ogg new file mode 100644 index 0000000000000..6acb85503388c Binary files /dev/null and b/sound/vox_fem/annihilation.ogg differ diff --git a/sound/vox_fem/anti-noblium.ogg b/sound/vox_fem/anti-noblium.ogg new file mode 100644 index 0000000000000..70f89e82229a7 Binary files /dev/null and b/sound/vox_fem/anti-noblium.ogg differ diff --git a/sound/vox_fem/arc.ogg b/sound/vox_fem/arc.ogg new file mode 100644 index 0000000000000..3ebed29740dd1 Binary files /dev/null and b/sound/vox_fem/arc.ogg differ diff --git a/sound/vox_fem/arcs.ogg b/sound/vox_fem/arcs.ogg new file mode 100644 index 0000000000000..cb32908d5b84e Binary files /dev/null and b/sound/vox_fem/arcs.ogg differ diff --git a/sound/vox_fem/around.ogg b/sound/vox_fem/around.ogg new file mode 100644 index 0000000000000..76183f92cda08 Binary files /dev/null and b/sound/vox_fem/around.ogg differ diff --git a/sound/vox_fem/ask.ogg b/sound/vox_fem/ask.ogg new file mode 100644 index 0000000000000..c8d00b0039996 Binary files /dev/null and b/sound/vox_fem/ask.ogg differ diff --git a/sound/vox_fem/ate.ogg b/sound/vox_fem/ate.ogg new file mode 100644 index 0000000000000..8dcdd461d11c2 Binary files /dev/null and b/sound/vox_fem/ate.ogg differ diff --git a/sound/vox_fem/beaker.ogg b/sound/vox_fem/beaker.ogg new file mode 100644 index 0000000000000..6863afc5c79af Binary files /dev/null and b/sound/vox_fem/beaker.ogg differ diff --git a/sound/vox_fem/began.ogg b/sound/vox_fem/began.ogg new file mode 100644 index 0000000000000..548143aff53c5 Binary files /dev/null and b/sound/vox_fem/began.ogg differ diff --git a/sound/vox_fem/begin.ogg b/sound/vox_fem/begin.ogg new file mode 100644 index 0000000000000..5c70cebbb0966 Binary files /dev/null and b/sound/vox_fem/begin.ogg differ diff --git a/sound/vox_fem/begins.ogg b/sound/vox_fem/begins.ogg new file mode 100644 index 0000000000000..5fedd2ef4b59b Binary files /dev/null and b/sound/vox_fem/begins.ogg differ diff --git a/sound/vox_fem/bottle.ogg b/sound/vox_fem/bottle.ogg new file mode 100644 index 0000000000000..b5bd1f34e761b Binary files /dev/null and b/sound/vox_fem/bottle.ogg differ diff --git a/sound/vox_fem/broke.ogg b/sound/vox_fem/broke.ogg new file mode 100644 index 0000000000000..a1a075d6769c9 Binary files /dev/null and b/sound/vox_fem/broke.ogg differ diff --git a/sound/vox_fem/broken.ogg b/sound/vox_fem/broken.ogg new file mode 100644 index 0000000000000..589dabc0a3924 Binary files /dev/null and b/sound/vox_fem/broken.ogg differ diff --git a/sound/vox_fem/bump.ogg b/sound/vox_fem/bump.ogg new file mode 100644 index 0000000000000..c6892a3412fa5 Binary files /dev/null and b/sound/vox_fem/bump.ogg differ diff --git a/sound/vox_fem/bumped.ogg b/sound/vox_fem/bumped.ogg new file mode 100644 index 0000000000000..6d111a8731d1a Binary files /dev/null and b/sound/vox_fem/bumped.ogg differ diff --git a/sound/vox_fem/bumps.ogg b/sound/vox_fem/bumps.ogg new file mode 100644 index 0000000000000..a7fff16f04802 Binary files /dev/null and b/sound/vox_fem/bumps.ogg differ diff --git a/sound/vox_fem/can.ogg b/sound/vox_fem/can.ogg new file mode 100644 index 0000000000000..0d77353ad99e1 Binary files /dev/null and b/sound/vox_fem/can.ogg differ diff --git a/sound/vox_fem/cascade.ogg b/sound/vox_fem/cascade.ogg new file mode 100644 index 0000000000000..cc7e70ed00d25 Binary files /dev/null and b/sound/vox_fem/cascade.ogg differ diff --git a/sound/vox_fem/cause.ogg b/sound/vox_fem/cause.ogg new file mode 100644 index 0000000000000..2294d0405d037 Binary files /dev/null and b/sound/vox_fem/cause.ogg differ diff --git a/sound/vox_fem/caused.ogg b/sound/vox_fem/caused.ogg new file mode 100644 index 0000000000000..c91eecaa90db4 Binary files /dev/null and b/sound/vox_fem/caused.ogg differ diff --git a/sound/vox_fem/causes.ogg b/sound/vox_fem/causes.ogg new file mode 100644 index 0000000000000..019430ccb4a07 Binary files /dev/null and b/sound/vox_fem/causes.ogg differ diff --git a/sound/vox_fem/causing.ogg b/sound/vox_fem/causing.ogg new file mode 100644 index 0000000000000..e41ab06c2b4ae Binary files /dev/null and b/sound/vox_fem/causing.ogg differ diff --git a/sound/vox_fem/charge.ogg b/sound/vox_fem/charge.ogg new file mode 100644 index 0000000000000..b5adb81d83b57 Binary files /dev/null and b/sound/vox_fem/charge.ogg differ diff --git a/sound/vox_fem/clog.ogg b/sound/vox_fem/clog.ogg new file mode 100644 index 0000000000000..31e6bf604ec49 Binary files /dev/null and b/sound/vox_fem/clog.ogg differ diff --git a/sound/vox_fem/clothing.ogg b/sound/vox_fem/clothing.ogg new file mode 100644 index 0000000000000..912a7532fe3a4 Binary files /dev/null and b/sound/vox_fem/clothing.ogg differ diff --git a/sound/vox_fem/coil.ogg b/sound/vox_fem/coil.ogg new file mode 100644 index 0000000000000..d9a76618eb4f5 Binary files /dev/null and b/sound/vox_fem/coil.ogg differ diff --git a/sound/vox_fem/coils.ogg b/sound/vox_fem/coils.ogg new file mode 100644 index 0000000000000..12d0d54fd3e8f Binary files /dev/null and b/sound/vox_fem/coils.ogg differ diff --git a/sound/vox_fem/combat.ogg b/sound/vox_fem/combat.ogg new file mode 100644 index 0000000000000..51a438ea95325 Binary files /dev/null and b/sound/vox_fem/combat.ogg differ diff --git a/sound/vox_fem/combatant.ogg b/sound/vox_fem/combatant.ogg new file mode 100644 index 0000000000000..d82f5dddd0092 Binary files /dev/null and b/sound/vox_fem/combatant.ogg differ diff --git a/sound/vox_fem/complete.ogg b/sound/vox_fem/complete.ogg new file mode 100644 index 0000000000000..134d280d068ff Binary files /dev/null and b/sound/vox_fem/complete.ogg differ diff --git a/sound/vox_fem/completed.ogg b/sound/vox_fem/completed.ogg new file mode 100644 index 0000000000000..bdeca3b4fe34d Binary files /dev/null and b/sound/vox_fem/completed.ogg differ diff --git a/sound/vox_fem/completion.ogg b/sound/vox_fem/completion.ogg new file mode 100644 index 0000000000000..c4d65fbdad0c7 Binary files /dev/null and b/sound/vox_fem/completion.ogg differ diff --git a/sound/vox_fem/conditions.ogg b/sound/vox_fem/conditions.ogg new file mode 100644 index 0000000000000..79e0a6bfe8f3a Binary files /dev/null and b/sound/vox_fem/conditions.ogg differ diff --git a/sound/vox_fem/configure.ogg b/sound/vox_fem/configure.ogg new file mode 100644 index 0000000000000..753339e761e8a Binary files /dev/null and b/sound/vox_fem/configure.ogg differ diff --git a/sound/vox_fem/configured.ogg b/sound/vox_fem/configured.ogg new file mode 100644 index 0000000000000..544ed189add4f Binary files /dev/null and b/sound/vox_fem/configured.ogg differ diff --git a/sound/vox_fem/configuring.ogg b/sound/vox_fem/configuring.ogg new file mode 100644 index 0000000000000..eb81a1bb1df1c Binary files /dev/null and b/sound/vox_fem/configuring.ogg differ diff --git a/sound/vox_fem/container.ogg b/sound/vox_fem/container.ogg new file mode 100644 index 0000000000000..59fe11b5f48c7 Binary files /dev/null and b/sound/vox_fem/container.ogg differ diff --git a/sound/vox_fem/cool.ogg b/sound/vox_fem/cool.ogg new file mode 100644 index 0000000000000..0e8c39a92608c Binary files /dev/null and b/sound/vox_fem/cool.ogg differ diff --git a/sound/vox_fem/cooling.ogg b/sound/vox_fem/cooling.ogg new file mode 100644 index 0000000000000..eef866ca1b16b Binary files /dev/null and b/sound/vox_fem/cooling.ogg differ diff --git a/sound/vox_fem/could.ogg b/sound/vox_fem/could.ogg new file mode 100644 index 0000000000000..fdbd14f696c29 Binary files /dev/null and b/sound/vox_fem/could.ogg differ diff --git a/sound/vox_fem/couldnt.ogg b/sound/vox_fem/couldnt.ogg new file mode 100644 index 0000000000000..80550544ee497 Binary files /dev/null and b/sound/vox_fem/couldnt.ogg differ diff --git a/sound/vox_fem/countdown.ogg b/sound/vox_fem/countdown.ogg new file mode 100644 index 0000000000000..93b0f64961575 Binary files /dev/null and b/sound/vox_fem/countdown.ogg differ diff --git a/sound/vox_fem/create.ogg b/sound/vox_fem/create.ogg new file mode 100644 index 0000000000000..f4f1797202af2 Binary files /dev/null and b/sound/vox_fem/create.ogg differ diff --git a/sound/vox_fem/creating.ogg b/sound/vox_fem/creating.ogg new file mode 100644 index 0000000000000..ca2a92d5d7264 Binary files /dev/null and b/sound/vox_fem/creating.ogg differ diff --git a/sound/vox_fem/delaminating.ogg b/sound/vox_fem/delaminating.ogg new file mode 100644 index 0000000000000..3c023387abf4a Binary files /dev/null and b/sound/vox_fem/delaminating.ogg differ diff --git a/sound/vox_fem/delamination.ogg b/sound/vox_fem/delamination.ogg new file mode 100644 index 0000000000000..993c06fd4eae7 Binary files /dev/null and b/sound/vox_fem/delamination.ogg differ diff --git a/sound/vox_fem/deny.ogg b/sound/vox_fem/deny.ogg new file mode 100644 index 0000000000000..df6b5cb40fb63 Binary files /dev/null and b/sound/vox_fem/deny.ogg differ diff --git a/sound/vox_fem/detect.ogg b/sound/vox_fem/detect.ogg new file mode 100644 index 0000000000000..e5ea9092f0af4 Binary files /dev/null and b/sound/vox_fem/detect.ogg differ diff --git a/sound/vox_fem/detecting.ogg b/sound/vox_fem/detecting.ogg new file mode 100644 index 0000000000000..1b849cd836ddb Binary files /dev/null and b/sound/vox_fem/detecting.ogg differ diff --git a/sound/vox_fem/different.ogg b/sound/vox_fem/different.ogg new file mode 100644 index 0000000000000..dfce0903818db Binary files /dev/null and b/sound/vox_fem/different.ogg differ diff --git a/sound/vox_fem/direct.ogg b/sound/vox_fem/direct.ogg new file mode 100644 index 0000000000000..f1268e34a0968 Binary files /dev/null and b/sound/vox_fem/direct.ogg differ diff --git a/sound/vox_fem/dont.ogg b/sound/vox_fem/dont.ogg new file mode 100644 index 0000000000000..20723c8687ca3 Binary files /dev/null and b/sound/vox_fem/dont.ogg differ diff --git a/sound/vox_fem/double.ogg b/sound/vox_fem/double.ogg new file mode 100644 index 0000000000000..3c3eb3157bc36 Binary files /dev/null and b/sound/vox_fem/double.ogg differ diff --git a/sound/vox_fem/dress.ogg b/sound/vox_fem/dress.ogg new file mode 100644 index 0000000000000..84cc7fe79b99f Binary files /dev/null and b/sound/vox_fem/dress.ogg differ diff --git a/sound/vox_fem/dressed.ogg b/sound/vox_fem/dressed.ogg new file mode 100644 index 0000000000000..4a9ef3515a63f Binary files /dev/null and b/sound/vox_fem/dressed.ogg differ diff --git a/sound/vox_fem/dressing.ogg b/sound/vox_fem/dressing.ogg new file mode 100644 index 0000000000000..dded3edabb3b4 Binary files /dev/null and b/sound/vox_fem/dressing.ogg differ diff --git a/sound/vox_fem/easily.ogg b/sound/vox_fem/easily.ogg new file mode 100644 index 0000000000000..cadf6f9291fbb Binary files /dev/null and b/sound/vox_fem/easily.ogg differ diff --git a/sound/vox_fem/eat.ogg b/sound/vox_fem/eat.ogg new file mode 100644 index 0000000000000..b33c5a3503459 Binary files /dev/null and b/sound/vox_fem/eat.ogg differ diff --git a/sound/vox_fem/eaten.ogg b/sound/vox_fem/eaten.ogg new file mode 100644 index 0000000000000..9005930d0f6ad Binary files /dev/null and b/sound/vox_fem/eaten.ogg differ diff --git a/sound/vox_fem/education.ogg b/sound/vox_fem/education.ogg new file mode 100644 index 0000000000000..9a7ed1d17d12c Binary files /dev/null and b/sound/vox_fem/education.ogg differ diff --git a/sound/vox_fem/effects.ogg b/sound/vox_fem/effects.ogg new file mode 100644 index 0000000000000..59eb22c67fe4c Binary files /dev/null and b/sound/vox_fem/effects.ogg differ diff --git a/sound/vox_fem/electrical.ogg b/sound/vox_fem/electrical.ogg new file mode 100644 index 0000000000000..08e40b2367c55 Binary files /dev/null and b/sound/vox_fem/electrical.ogg differ diff --git a/sound/vox_fem/emitted.ogg b/sound/vox_fem/emitted.ogg new file mode 100644 index 0000000000000..d31b6307a3d1d Binary files /dev/null and b/sound/vox_fem/emitted.ogg differ diff --git a/sound/vox_fem/emitter.ogg b/sound/vox_fem/emitter.ogg new file mode 100644 index 0000000000000..6662ece8be40c Binary files /dev/null and b/sound/vox_fem/emitter.ogg differ diff --git a/sound/vox_fem/emitting.ogg b/sound/vox_fem/emitting.ogg new file mode 100644 index 0000000000000..377f792c08016 Binary files /dev/null and b/sound/vox_fem/emitting.ogg differ diff --git a/sound/vox_fem/end.ogg b/sound/vox_fem/end.ogg new file mode 100644 index 0000000000000..95b430e8b6434 Binary files /dev/null and b/sound/vox_fem/end.ogg differ diff --git a/sound/vox_fem/ends.ogg b/sound/vox_fem/ends.ogg new file mode 100644 index 0000000000000..34e06feb39ef7 Binary files /dev/null and b/sound/vox_fem/ends.ogg differ diff --git a/sound/vox_fem/enough.ogg b/sound/vox_fem/enough.ogg new file mode 100644 index 0000000000000..b7056903b955e Binary files /dev/null and b/sound/vox_fem/enough.ogg differ diff --git a/sound/vox_fem/even.ogg b/sound/vox_fem/even.ogg new file mode 100644 index 0000000000000..75294ef40251a Binary files /dev/null and b/sound/vox_fem/even.ogg differ diff --git a/sound/vox_fem/every.ogg b/sound/vox_fem/every.ogg new file mode 100644 index 0000000000000..6468158bd7dca Binary files /dev/null and b/sound/vox_fem/every.ogg differ diff --git a/sound/vox_fem/everybody.ogg b/sound/vox_fem/everybody.ogg new file mode 100644 index 0000000000000..8d8cc97489485 Binary files /dev/null and b/sound/vox_fem/everybody.ogg differ diff --git a/sound/vox_fem/everyone.ogg b/sound/vox_fem/everyone.ogg new file mode 100644 index 0000000000000..19e137b9a0cb6 Binary files /dev/null and b/sound/vox_fem/everyone.ogg differ diff --git a/sound/vox_fem/exploded.ogg b/sound/vox_fem/exploded.ogg new file mode 100644 index 0000000000000..1534b362892c6 Binary files /dev/null and b/sound/vox_fem/exploded.ogg differ diff --git a/sound/vox_fem/exploding.ogg b/sound/vox_fem/exploding.ogg new file mode 100644 index 0000000000000..a6980e6b53b70 Binary files /dev/null and b/sound/vox_fem/exploding.ogg differ diff --git a/sound/vox_fem/external.ogg b/sound/vox_fem/external.ogg new file mode 100644 index 0000000000000..d6f39b2651e0b Binary files /dev/null and b/sound/vox_fem/external.ogg differ diff --git a/sound/vox_fem/extra.ogg b/sound/vox_fem/extra.ogg new file mode 100644 index 0000000000000..0b5b16c6957b4 Binary files /dev/null and b/sound/vox_fem/extra.ogg differ diff --git a/sound/vox_fem/feature.ogg b/sound/vox_fem/feature.ogg new file mode 100644 index 0000000000000..59a3f68d456a6 Binary files /dev/null and b/sound/vox_fem/feature.ogg differ diff --git a/sound/vox_fem/featured.ogg b/sound/vox_fem/featured.ogg new file mode 100644 index 0000000000000..e087b0d7cc668 Binary files /dev/null and b/sound/vox_fem/featured.ogg differ diff --git a/sound/vox_fem/features.ogg b/sound/vox_fem/features.ogg new file mode 100644 index 0000000000000..745992b760a7a Binary files /dev/null and b/sound/vox_fem/features.ogg differ diff --git a/sound/vox_fem/featuring.ogg b/sound/vox_fem/featuring.ogg new file mode 100644 index 0000000000000..72578f2bb19d6 Binary files /dev/null and b/sound/vox_fem/featuring.ogg differ diff --git a/sound/vox_fem/few.ogg b/sound/vox_fem/few.ogg new file mode 100644 index 0000000000000..5ba76619c0f4f Binary files /dev/null and b/sound/vox_fem/few.ogg differ diff --git a/sound/vox_fem/filter.ogg b/sound/vox_fem/filter.ogg new file mode 100644 index 0000000000000..3b2ae95e37ff1 Binary files /dev/null and b/sound/vox_fem/filter.ogg differ diff --git a/sound/vox_fem/filters.ogg b/sound/vox_fem/filters.ogg new file mode 100644 index 0000000000000..204b82da198eb Binary files /dev/null and b/sound/vox_fem/filters.ogg differ diff --git a/sound/vox_fem/foolish.ogg b/sound/vox_fem/foolish.ogg new file mode 100644 index 0000000000000..214ed30f2c43c Binary files /dev/null and b/sound/vox_fem/foolish.ogg differ diff --git a/sound/vox_fem/freon.ogg b/sound/vox_fem/freon.ogg new file mode 100644 index 0000000000000..82128fee24109 Binary files /dev/null and b/sound/vox_fem/freon.ogg differ diff --git a/sound/vox_fem/gases.ogg b/sound/vox_fem/gases.ogg new file mode 100644 index 0000000000000..0605a2605566f Binary files /dev/null and b/sound/vox_fem/gases.ogg differ diff --git a/sound/vox_fem/gave.ogg b/sound/vox_fem/gave.ogg new file mode 100644 index 0000000000000..beb35f1f4215b Binary files /dev/null and b/sound/vox_fem/gave.ogg differ diff --git a/sound/vox_fem/gear.ogg b/sound/vox_fem/gear.ogg new file mode 100644 index 0000000000000..629667e5df418 Binary files /dev/null and b/sound/vox_fem/gear.ogg differ diff --git a/sound/vox_fem/geared.ogg b/sound/vox_fem/geared.ogg new file mode 100644 index 0000000000000..7188c657589d4 Binary files /dev/null and b/sound/vox_fem/geared.ogg differ diff --git a/sound/vox_fem/gearing.ogg b/sound/vox_fem/gearing.ogg new file mode 100644 index 0000000000000..9e27a7956943d Binary files /dev/null and b/sound/vox_fem/gearing.ogg differ diff --git a/sound/vox_fem/generate.ogg b/sound/vox_fem/generate.ogg new file mode 100644 index 0000000000000..ceb09ec3b4360 Binary files /dev/null and b/sound/vox_fem/generate.ogg differ diff --git a/sound/vox_fem/generated.ogg b/sound/vox_fem/generated.ogg new file mode 100644 index 0000000000000..42a49e7d43e54 Binary files /dev/null and b/sound/vox_fem/generated.ogg differ diff --git a/sound/vox_fem/generating.ogg b/sound/vox_fem/generating.ogg new file mode 100644 index 0000000000000..a90e62d9dd760 Binary files /dev/null and b/sound/vox_fem/generating.ogg differ diff --git a/sound/vox_fem/give.ogg b/sound/vox_fem/give.ogg new file mode 100644 index 0000000000000..8144ba82cccea Binary files /dev/null and b/sound/vox_fem/give.ogg differ diff --git a/sound/vox_fem/given.ogg b/sound/vox_fem/given.ogg new file mode 100644 index 0000000000000..63f86c4878f8a Binary files /dev/null and b/sound/vox_fem/given.ogg differ diff --git a/sound/vox_fem/halon.ogg b/sound/vox_fem/halon.ogg new file mode 100644 index 0000000000000..0cab7dee9a5c9 Binary files /dev/null and b/sound/vox_fem/halon.ogg differ diff --git a/sound/vox_fem/hard.ogg b/sound/vox_fem/hard.ogg new file mode 100644 index 0000000000000..be1a80c3f091b Binary files /dev/null and b/sound/vox_fem/hard.ogg differ diff --git a/sound/vox_fem/hardly.ogg b/sound/vox_fem/hardly.ogg new file mode 100644 index 0000000000000..bb4de217a1767 Binary files /dev/null and b/sound/vox_fem/hardly.ogg differ diff --git a/sound/vox_fem/harness.ogg b/sound/vox_fem/harness.ogg new file mode 100644 index 0000000000000..a81840955f4b7 Binary files /dev/null and b/sound/vox_fem/harness.ogg differ diff --git a/sound/vox_fem/harnessed.ogg b/sound/vox_fem/harnessed.ogg new file mode 100644 index 0000000000000..d1f259c7bdfd4 Binary files /dev/null and b/sound/vox_fem/harnessed.ogg differ diff --git a/sound/vox_fem/harnessing.ogg b/sound/vox_fem/harnessing.ogg new file mode 100644 index 0000000000000..3dbdd03af886d Binary files /dev/null and b/sound/vox_fem/harnessing.ogg differ diff --git a/sound/vox_fem/heal.ogg b/sound/vox_fem/heal.ogg new file mode 100644 index 0000000000000..f31b53c1cba5b Binary files /dev/null and b/sound/vox_fem/heal.ogg differ diff --git a/sound/vox_fem/healed.ogg b/sound/vox_fem/healed.ogg new file mode 100644 index 0000000000000..80eea8068a5b7 Binary files /dev/null and b/sound/vox_fem/healed.ogg differ diff --git a/sound/vox_fem/healing.ogg b/sound/vox_fem/healing.ogg new file mode 100644 index 0000000000000..6ebcc588294ff Binary files /dev/null and b/sound/vox_fem/healing.ogg differ diff --git a/sound/vox_fem/healium.ogg b/sound/vox_fem/healium.ogg new file mode 100644 index 0000000000000..79b4fd19de329 Binary files /dev/null and b/sound/vox_fem/healium.ogg differ diff --git a/sound/vox_fem/heated.ogg b/sound/vox_fem/heated.ogg new file mode 100644 index 0000000000000..e3db67adee43b Binary files /dev/null and b/sound/vox_fem/heated.ogg differ diff --git a/sound/vox_fem/heating.ogg b/sound/vox_fem/heating.ogg new file mode 100644 index 0000000000000..553b4d5576605 Binary files /dev/null and b/sound/vox_fem/heating.ogg differ diff --git a/sound/vox_fem/hydrogen.ogg b/sound/vox_fem/hydrogen.ogg new file mode 100644 index 0000000000000..050a3bc028cc5 Binary files /dev/null and b/sound/vox_fem/hydrogen.ogg differ diff --git a/sound/vox_fem/hyper-noblium.ogg b/sound/vox_fem/hyper-noblium.ogg new file mode 100644 index 0000000000000..4fda6b404689f Binary files /dev/null and b/sound/vox_fem/hyper-noblium.ogg differ diff --git a/sound/vox_fem/inert.ogg b/sound/vox_fem/inert.ogg new file mode 100644 index 0000000000000..00826c23b2afa Binary files /dev/null and b/sound/vox_fem/inert.ogg differ diff --git a/sound/vox_fem/internal.ogg b/sound/vox_fem/internal.ogg new file mode 100644 index 0000000000000..0cc275bd471c1 Binary files /dev/null and b/sound/vox_fem/internal.ogg differ diff --git a/sound/vox_fem/irradiate.ogg b/sound/vox_fem/irradiate.ogg new file mode 100644 index 0000000000000..d14b296179828 Binary files /dev/null and b/sound/vox_fem/irradiate.ogg differ diff --git a/sound/vox_fem/its.ogg b/sound/vox_fem/its.ogg new file mode 100644 index 0000000000000..b5c2c22dd5720 Binary files /dev/null and b/sound/vox_fem/its.ogg differ diff --git a/sound/vox_fem/job.ogg b/sound/vox_fem/job.ogg new file mode 100644 index 0000000000000..5b8186d0f7266 Binary files /dev/null and b/sound/vox_fem/job.ogg differ diff --git a/sound/vox_fem/jobs.ogg b/sound/vox_fem/jobs.ogg new file mode 100644 index 0000000000000..3fd3529e06c38 Binary files /dev/null and b/sound/vox_fem/jobs.ogg differ diff --git a/sound/vox_fem/kelvin.ogg b/sound/vox_fem/kelvin.ogg new file mode 100644 index 0000000000000..dd759e02214f6 Binary files /dev/null and b/sound/vox_fem/kelvin.ogg differ diff --git a/sound/vox_fem/limit.ogg b/sound/vox_fem/limit.ogg new file mode 100644 index 0000000000000..d88bd43e01d91 Binary files /dev/null and b/sound/vox_fem/limit.ogg differ diff --git a/sound/vox_fem/limited.ogg b/sound/vox_fem/limited.ogg new file mode 100644 index 0000000000000..df3d3b3ebe4c1 Binary files /dev/null and b/sound/vox_fem/limited.ogg differ diff --git a/sound/vox_fem/list.ogg b/sound/vox_fem/list.ogg new file mode 100644 index 0000000000000..1c3d643983307 Binary files /dev/null and b/sound/vox_fem/list.ogg differ diff --git a/sound/vox_fem/made.ogg b/sound/vox_fem/made.ogg new file mode 100644 index 0000000000000..3540661b5c1c9 Binary files /dev/null and b/sound/vox_fem/made.ogg differ diff --git a/sound/vox_fem/making.ogg b/sound/vox_fem/making.ogg new file mode 100644 index 0000000000000..d2ee9ab93e3dd Binary files /dev/null and b/sound/vox_fem/making.ogg differ diff --git a/sound/vox_fem/mean.ogg b/sound/vox_fem/mean.ogg new file mode 100644 index 0000000000000..d53391b033fdb Binary files /dev/null and b/sound/vox_fem/mean.ogg differ diff --git a/sound/vox_fem/means.ogg b/sound/vox_fem/means.ogg new file mode 100644 index 0000000000000..068cb7bfd1a73 Binary files /dev/null and b/sound/vox_fem/means.ogg differ diff --git a/sound/vox_fem/medium.ogg b/sound/vox_fem/medium.ogg new file mode 100644 index 0000000000000..0bd964ffe35b9 Binary files /dev/null and b/sound/vox_fem/medium.ogg differ diff --git a/sound/vox_fem/meson.ogg b/sound/vox_fem/meson.ogg new file mode 100644 index 0000000000000..5bd85d3292003 Binary files /dev/null and b/sound/vox_fem/meson.ogg differ diff --git a/sound/vox_fem/method.ogg b/sound/vox_fem/method.ogg new file mode 100644 index 0000000000000..4da8e60475f38 Binary files /dev/null and b/sound/vox_fem/method.ogg differ diff --git a/sound/vox_fem/miasma.ogg b/sound/vox_fem/miasma.ogg new file mode 100644 index 0000000000000..5956b203f87a1 Binary files /dev/null and b/sound/vox_fem/miasma.ogg differ diff --git a/sound/vox_fem/minute.ogg b/sound/vox_fem/minute.ogg new file mode 100644 index 0000000000000..fe29d747120de Binary files /dev/null and b/sound/vox_fem/minute.ogg differ diff --git a/sound/vox_fem/mixture.ogg b/sound/vox_fem/mixture.ogg new file mode 100644 index 0000000000000..63525110a7a70 Binary files /dev/null and b/sound/vox_fem/mixture.ogg differ diff --git a/sound/vox_fem/most.ogg b/sound/vox_fem/most.ogg new file mode 100644 index 0000000000000..472837fced880 Binary files /dev/null and b/sound/vox_fem/most.ogg differ diff --git a/sound/vox_fem/moved.ogg b/sound/vox_fem/moved.ogg new file mode 100644 index 0000000000000..e8eb17787ef4f Binary files /dev/null and b/sound/vox_fem/moved.ogg differ diff --git a/sound/vox_fem/moving.ogg b/sound/vox_fem/moving.ogg new file mode 100644 index 0000000000000..258c38a711668 Binary files /dev/null and b/sound/vox_fem/moving.ogg differ diff --git a/sound/vox_fem/near.ogg b/sound/vox_fem/near.ogg new file mode 100644 index 0000000000000..0c48f322133a8 Binary files /dev/null and b/sound/vox_fem/near.ogg differ diff --git a/sound/vox_fem/nearly.ogg b/sound/vox_fem/nearly.ogg new file mode 100644 index 0000000000000..2b76f6323f834 Binary files /dev/null and b/sound/vox_fem/nearly.ogg differ diff --git a/sound/vox_fem/none.ogg b/sound/vox_fem/none.ogg new file mode 100644 index 0000000000000..6c16899ce9264 Binary files /dev/null and b/sound/vox_fem/none.ogg differ diff --git a/sound/vox_fem/normal.ogg b/sound/vox_fem/normal.ogg new file mode 100644 index 0000000000000..cf68ed5ec5e29 Binary files /dev/null and b/sound/vox_fem/normal.ogg differ diff --git a/sound/vox_fem/normally.ogg b/sound/vox_fem/normally.ogg new file mode 100644 index 0000000000000..81d7c16d366d4 Binary files /dev/null and b/sound/vox_fem/normally.ogg differ diff --git a/sound/vox_fem/notably.ogg b/sound/vox_fem/notably.ogg new file mode 100644 index 0000000000000..d6f604390502f Binary files /dev/null and b/sound/vox_fem/notably.ogg differ diff --git a/sound/vox_fem/object.ogg b/sound/vox_fem/object.ogg new file mode 100644 index 0000000000000..091c4b6b190e6 Binary files /dev/null and b/sound/vox_fem/object.ogg differ diff --git a/sound/vox_fem/ordered.ogg b/sound/vox_fem/ordered.ogg new file mode 100644 index 0000000000000..a483e355544f8 Binary files /dev/null and b/sound/vox_fem/ordered.ogg differ diff --git a/sound/vox_fem/ordering.ogg b/sound/vox_fem/ordering.ogg new file mode 100644 index 0000000000000..e05a1534d3c5b Binary files /dev/null and b/sound/vox_fem/ordering.ogg differ diff --git a/sound/vox_fem/output.ogg b/sound/vox_fem/output.ogg new file mode 100644 index 0000000000000..fc3e5312c4eaf Binary files /dev/null and b/sound/vox_fem/output.ogg differ diff --git a/sound/vox_fem/own.ogg b/sound/vox_fem/own.ogg new file mode 100644 index 0000000000000..e978ba4a8da1e Binary files /dev/null and b/sound/vox_fem/own.ogg differ diff --git a/sound/vox_fem/pda.ogg b/sound/vox_fem/pda.ogg new file mode 100644 index 0000000000000..72407e2b0e324 Binary files /dev/null and b/sound/vox_fem/pda.ogg differ diff --git a/sound/vox_fem/plating.ogg b/sound/vox_fem/plating.ogg new file mode 100644 index 0000000000000..d0783ca5e351e Binary files /dev/null and b/sound/vox_fem/plating.ogg differ diff --git a/sound/vox_fem/pluoxium.ogg b/sound/vox_fem/pluoxium.ogg new file mode 100644 index 0000000000000..cb52c5ac29856 Binary files /dev/null and b/sound/vox_fem/pluoxium.ogg differ diff --git a/sound/vox_fem/portion.ogg b/sound/vox_fem/portion.ogg new file mode 100644 index 0000000000000..7f2f699da1900 Binary files /dev/null and b/sound/vox_fem/portion.ogg differ diff --git a/sound/vox_fem/powered.ogg b/sound/vox_fem/powered.ogg new file mode 100644 index 0000000000000..d03eb08d5645e Binary files /dev/null and b/sound/vox_fem/powered.ogg differ diff --git a/sound/vox_fem/powering.ogg b/sound/vox_fem/powering.ogg new file mode 100644 index 0000000000000..7c13b590846c2 Binary files /dev/null and b/sound/vox_fem/powering.ogg differ diff --git a/sound/vox_fem/premature.ogg b/sound/vox_fem/premature.ogg new file mode 100644 index 0000000000000..19fb67b8f3b87 Binary files /dev/null and b/sound/vox_fem/premature.ogg differ diff --git a/sound/vox_fem/prematurely.ogg b/sound/vox_fem/prematurely.ogg new file mode 100644 index 0000000000000..b3422a535f6ae Binary files /dev/null and b/sound/vox_fem/prematurely.ogg differ diff --git a/sound/vox_fem/priority.ogg b/sound/vox_fem/priority.ogg new file mode 100644 index 0000000000000..5084584a44e12 Binary files /dev/null and b/sound/vox_fem/priority.ogg differ diff --git a/sound/vox_fem/projectile.ogg b/sound/vox_fem/projectile.ogg new file mode 100644 index 0000000000000..ec6d297926ac9 Binary files /dev/null and b/sound/vox_fem/projectile.ogg differ diff --git a/sound/vox_fem/protect.ogg b/sound/vox_fem/protect.ogg new file mode 100644 index 0000000000000..512d7e30e27d1 Binary files /dev/null and b/sound/vox_fem/protect.ogg differ diff --git a/sound/vox_fem/protected.ogg b/sound/vox_fem/protected.ogg new file mode 100644 index 0000000000000..7f6c8c0f6efdc Binary files /dev/null and b/sound/vox_fem/protected.ogg differ diff --git a/sound/vox_fem/protection.ogg b/sound/vox_fem/protection.ogg new file mode 100644 index 0000000000000..90b6a508e2aa9 Binary files /dev/null and b/sound/vox_fem/protection.ogg differ diff --git a/sound/vox_fem/proto-nitrate.ogg b/sound/vox_fem/proto-nitrate.ogg new file mode 100644 index 0000000000000..13f3aed7b450e Binary files /dev/null and b/sound/vox_fem/proto-nitrate.ogg differ diff --git a/sound/vox_fem/pull.ogg b/sound/vox_fem/pull.ogg new file mode 100644 index 0000000000000..9ac8e2c399ad7 Binary files /dev/null and b/sound/vox_fem/pull.ogg differ diff --git a/sound/vox_fem/pulled.ogg b/sound/vox_fem/pulled.ogg new file mode 100644 index 0000000000000..ef3388a25c9a7 Binary files /dev/null and b/sound/vox_fem/pulled.ogg differ diff --git a/sound/vox_fem/pulling.ogg b/sound/vox_fem/pulling.ogg new file mode 100644 index 0000000000000..5a2b5532e5acb Binary files /dev/null and b/sound/vox_fem/pulling.ogg differ diff --git a/sound/vox_fem/pump.ogg b/sound/vox_fem/pump.ogg new file mode 100644 index 0000000000000..07400cb2b8c26 Binary files /dev/null and b/sound/vox_fem/pump.ogg differ diff --git a/sound/vox_fem/pumps.ogg b/sound/vox_fem/pumps.ogg new file mode 100644 index 0000000000000..eba663d3963c4 Binary files /dev/null and b/sound/vox_fem/pumps.ogg differ diff --git a/sound/vox_fem/release.ogg b/sound/vox_fem/release.ogg new file mode 100644 index 0000000000000..4a9350168483f Binary files /dev/null and b/sound/vox_fem/release.ogg differ diff --git a/sound/vox_fem/releasing.ogg b/sound/vox_fem/releasing.ogg new file mode 100644 index 0000000000000..3d2a5d0ed70bd Binary files /dev/null and b/sound/vox_fem/releasing.ogg differ diff --git a/sound/vox_fem/remove.ogg b/sound/vox_fem/remove.ogg new file mode 100644 index 0000000000000..e9b2cb3bc1204 Binary files /dev/null and b/sound/vox_fem/remove.ogg differ diff --git a/sound/vox_fem/removed.ogg b/sound/vox_fem/removed.ogg new file mode 100644 index 0000000000000..2a7d78e9280b5 Binary files /dev/null and b/sound/vox_fem/removed.ogg differ diff --git a/sound/vox_fem/removing.ogg b/sound/vox_fem/removing.ogg new file mode 100644 index 0000000000000..638d20b0c354d Binary files /dev/null and b/sound/vox_fem/removing.ogg differ diff --git a/sound/vox_fem/resistant.ogg b/sound/vox_fem/resistant.ogg new file mode 100644 index 0000000000000..4401519979172 Binary files /dev/null and b/sound/vox_fem/resistant.ogg differ diff --git a/sound/vox_fem/resisting.ogg b/sound/vox_fem/resisting.ogg new file mode 100644 index 0000000000000..c3c23d267fd94 Binary files /dev/null and b/sound/vox_fem/resisting.ogg differ diff --git a/sound/vox_fem/resonance.ogg b/sound/vox_fem/resonance.ogg new file mode 100644 index 0000000000000..0d569574c8363 Binary files /dev/null and b/sound/vox_fem/resonance.ogg differ diff --git a/sound/vox_fem/sabotaged.ogg b/sound/vox_fem/sabotaged.ogg new file mode 100644 index 0000000000000..9d883d12218c0 Binary files /dev/null and b/sound/vox_fem/sabotaged.ogg differ diff --git a/sound/vox_fem/sabotaging.ogg b/sound/vox_fem/sabotaging.ogg new file mode 100644 index 0000000000000..a8b5d6680c329 Binary files /dev/null and b/sound/vox_fem/sabotaging.ogg differ diff --git a/sound/vox_fem/same.ogg b/sound/vox_fem/same.ogg new file mode 100644 index 0000000000000..38adb22168bca Binary files /dev/null and b/sound/vox_fem/same.ogg differ diff --git a/sound/vox_fem/saw.ogg b/sound/vox_fem/saw.ogg new file mode 100644 index 0000000000000..fa3c7b1994d11 Binary files /dev/null and b/sound/vox_fem/saw.ogg differ diff --git a/sound/vox_fem/scan.ogg b/sound/vox_fem/scan.ogg new file mode 100644 index 0000000000000..36026e8f8c471 Binary files /dev/null and b/sound/vox_fem/scan.ogg differ diff --git a/sound/vox_fem/scanned.ogg b/sound/vox_fem/scanned.ogg new file mode 100644 index 0000000000000..bc9bb80ac4c9c Binary files /dev/null and b/sound/vox_fem/scanned.ogg differ diff --git a/sound/vox_fem/scanner.ogg b/sound/vox_fem/scanner.ogg new file mode 100644 index 0000000000000..2098a81a34c8f Binary files /dev/null and b/sound/vox_fem/scanner.ogg differ diff --git a/sound/vox_fem/scanners.ogg b/sound/vox_fem/scanners.ogg new file mode 100644 index 0000000000000..74bbdae300aa7 Binary files /dev/null and b/sound/vox_fem/scanners.ogg differ diff --git a/sound/vox_fem/scanning.ogg b/sound/vox_fem/scanning.ogg new file mode 100644 index 0000000000000..84701910e997f Binary files /dev/null and b/sound/vox_fem/scanning.ogg differ diff --git a/sound/vox_fem/screw.ogg b/sound/vox_fem/screw.ogg new file mode 100644 index 0000000000000..ae9325f69a658 Binary files /dev/null and b/sound/vox_fem/screw.ogg differ diff --git a/sound/vox_fem/seen.ogg b/sound/vox_fem/seen.ogg new file mode 100644 index 0000000000000..7ad89a173ab59 Binary files /dev/null and b/sound/vox_fem/seen.ogg differ diff --git a/sound/vox_fem/set.ogg b/sound/vox_fem/set.ogg new file mode 100644 index 0000000000000..f2f8c19c27842 Binary files /dev/null and b/sound/vox_fem/set.ogg differ diff --git a/sound/vox_fem/sever.ogg b/sound/vox_fem/sever.ogg new file mode 100644 index 0000000000000..3bc2e2102f72e Binary files /dev/null and b/sound/vox_fem/sever.ogg differ diff --git a/sound/vox_fem/severed.ogg b/sound/vox_fem/severed.ogg new file mode 100644 index 0000000000000..4f6f7e47bf0a8 Binary files /dev/null and b/sound/vox_fem/severed.ogg differ diff --git a/sound/vox_fem/severing.ogg b/sound/vox_fem/severing.ogg new file mode 100644 index 0000000000000..1ddad6209efb0 Binary files /dev/null and b/sound/vox_fem/severing.ogg differ diff --git a/sound/vox_fem/shame.ogg b/sound/vox_fem/shame.ogg new file mode 100644 index 0000000000000..f90b1306da05f Binary files /dev/null and b/sound/vox_fem/shame.ogg differ diff --git a/sound/vox_fem/shameful.ogg b/sound/vox_fem/shameful.ogg new file mode 100644 index 0000000000000..526b70909f66b Binary files /dev/null and b/sound/vox_fem/shameful.ogg differ diff --git a/sound/vox_fem/shameless.ogg b/sound/vox_fem/shameless.ogg new file mode 100644 index 0000000000000..804a92e29615f Binary files /dev/null and b/sound/vox_fem/shameless.ogg differ diff --git a/sound/vox_fem/shard.ogg b/sound/vox_fem/shard.ogg new file mode 100644 index 0000000000000..2a6b0c195804e Binary files /dev/null and b/sound/vox_fem/shard.ogg differ diff --git a/sound/vox_fem/shift.ogg b/sound/vox_fem/shift.ogg new file mode 100644 index 0000000000000..70e7d3ca6d17d Binary files /dev/null and b/sound/vox_fem/shift.ogg differ diff --git a/sound/vox_fem/shifts.ogg b/sound/vox_fem/shifts.ogg new file mode 100644 index 0000000000000..f2caa538efc61 Binary files /dev/null and b/sound/vox_fem/shifts.ogg differ diff --git a/sound/vox_fem/sides.ogg b/sound/vox_fem/sides.ogg new file mode 100644 index 0000000000000..cef8d153207bf Binary files /dev/null and b/sound/vox_fem/sides.ogg differ diff --git a/sound/vox_fem/single.ogg b/sound/vox_fem/single.ogg new file mode 100644 index 0000000000000..1d5912ecc57ed Binary files /dev/null and b/sound/vox_fem/single.ogg differ diff --git a/sound/vox_fem/siphon.ogg b/sound/vox_fem/siphon.ogg new file mode 100644 index 0000000000000..789653f5cbb67 Binary files /dev/null and b/sound/vox_fem/siphon.ogg differ diff --git a/sound/vox_fem/siphoning.ogg b/sound/vox_fem/siphoning.ogg new file mode 100644 index 0000000000000..163f2ed4734b8 Binary files /dev/null and b/sound/vox_fem/siphoning.ogg differ diff --git a/sound/vox_fem/soft.ogg b/sound/vox_fem/soft.ogg new file mode 100644 index 0000000000000..ea9361ea8c980 Binary files /dev/null and b/sound/vox_fem/soft.ogg differ diff --git a/sound/vox_fem/source.ogg b/sound/vox_fem/source.ogg new file mode 100644 index 0000000000000..824dd3f0a8c1c Binary files /dev/null and b/sound/vox_fem/source.ogg differ diff --git a/sound/vox_fem/special.ogg b/sound/vox_fem/special.ogg new file mode 100644 index 0000000000000..f0f219c13974b Binary files /dev/null and b/sound/vox_fem/special.ogg differ diff --git a/sound/vox_fem/spew.ogg b/sound/vox_fem/spew.ogg new file mode 100644 index 0000000000000..b9d20048d2651 Binary files /dev/null and b/sound/vox_fem/spew.ogg differ diff --git a/sound/vox_fem/start.ogg b/sound/vox_fem/start.ogg new file mode 100644 index 0000000000000..b07dc5faf259b Binary files /dev/null and b/sound/vox_fem/start.ogg differ diff --git a/sound/vox_fem/starts.ogg b/sound/vox_fem/starts.ogg new file mode 100644 index 0000000000000..fca5914927f2d Binary files /dev/null and b/sound/vox_fem/starts.ogg differ diff --git a/sound/vox_fem/stations.ogg b/sound/vox_fem/stations.ogg new file mode 100644 index 0000000000000..c0a495263698c Binary files /dev/null and b/sound/vox_fem/stations.ogg differ diff --git a/sound/vox_fem/stationwide.ogg b/sound/vox_fem/stationwide.ogg new file mode 100644 index 0000000000000..b7b000b3b9f8c Binary files /dev/null and b/sound/vox_fem/stationwide.ogg differ diff --git a/sound/vox_fem/such.ogg b/sound/vox_fem/such.ogg new file mode 100644 index 0000000000000..a85d0642e6ed1 Binary files /dev/null and b/sound/vox_fem/such.ogg differ diff --git a/sound/vox_fem/suited.ogg b/sound/vox_fem/suited.ogg new file mode 100644 index 0000000000000..36b2b45c5275a Binary files /dev/null and b/sound/vox_fem/suited.ogg differ diff --git a/sound/vox_fem/super.ogg b/sound/vox_fem/super.ogg new file mode 100644 index 0000000000000..6d110152fdc23 Binary files /dev/null and b/sound/vox_fem/super.ogg differ diff --git a/sound/vox_fem/tesla.ogg b/sound/vox_fem/tesla.ogg new file mode 100644 index 0000000000000..70cb9e4ca82b9 Binary files /dev/null and b/sound/vox_fem/tesla.ogg differ diff --git a/sound/vox_fem/tick.ogg b/sound/vox_fem/tick.ogg new file mode 100644 index 0000000000000..bb986534a5bbb Binary files /dev/null and b/sound/vox_fem/tick.ogg differ diff --git a/sound/vox_fem/tile.ogg b/sound/vox_fem/tile.ogg new file mode 100644 index 0000000000000..2d794c26a1291 Binary files /dev/null and b/sound/vox_fem/tile.ogg differ diff --git a/sound/vox_fem/touched.ogg b/sound/vox_fem/touched.ogg new file mode 100644 index 0000000000000..e4cb940d71fc6 Binary files /dev/null and b/sound/vox_fem/touched.ogg differ diff --git a/sound/vox_fem/touching.ogg b/sound/vox_fem/touching.ogg new file mode 100644 index 0000000000000..b1ef04d443a6a Binary files /dev/null and b/sound/vox_fem/touching.ogg differ diff --git a/sound/vox_fem/trigger.ogg b/sound/vox_fem/trigger.ogg new file mode 100644 index 0000000000000..22ed22d489039 Binary files /dev/null and b/sound/vox_fem/trigger.ogg differ diff --git a/sound/vox_fem/triggered.ogg b/sound/vox_fem/triggered.ogg new file mode 100644 index 0000000000000..7fe30ad804606 Binary files /dev/null and b/sound/vox_fem/triggered.ogg differ diff --git a/sound/vox_fem/triggering.ogg b/sound/vox_fem/triggering.ogg new file mode 100644 index 0000000000000..8cb4788155618 Binary files /dev/null and b/sound/vox_fem/triggering.ogg differ diff --git a/sound/vox_fem/triple.ogg b/sound/vox_fem/triple.ogg new file mode 100644 index 0000000000000..6b6679258100a Binary files /dev/null and b/sound/vox_fem/triple.ogg differ diff --git a/sound/vox_fem/tritium.ogg b/sound/vox_fem/tritium.ogg new file mode 100644 index 0000000000000..7e62eddb9c504 Binary files /dev/null and b/sound/vox_fem/tritium.ogg differ diff --git a/sound/vox_fem/turned.ogg b/sound/vox_fem/turned.ogg new file mode 100644 index 0000000000000..2d9c59edfac3f Binary files /dev/null and b/sound/vox_fem/turned.ogg differ diff --git a/sound/vox_fem/unique.ogg b/sound/vox_fem/unique.ogg new file mode 100644 index 0000000000000..cb773507fcbb9 Binary files /dev/null and b/sound/vox_fem/unique.ogg differ diff --git a/sound/vox_fem/unwrench.ogg b/sound/vox_fem/unwrench.ogg new file mode 100644 index 0000000000000..bd31681fe3171 Binary files /dev/null and b/sound/vox_fem/unwrench.ogg differ diff --git a/sound/vox_fem/unwrenching.ogg b/sound/vox_fem/unwrenching.ogg new file mode 100644 index 0000000000000..6f4d8b7de7ef9 Binary files /dev/null and b/sound/vox_fem/unwrenching.ogg differ diff --git a/sound/vox_fem/useful.ogg b/sound/vox_fem/useful.ogg new file mode 100644 index 0000000000000..dfd8e6952a594 Binary files /dev/null and b/sound/vox_fem/useful.ogg differ diff --git a/sound/vox_fem/useless.ogg b/sound/vox_fem/useless.ogg new file mode 100644 index 0000000000000..5b9bb7aa2941c Binary files /dev/null and b/sound/vox_fem/useless.ogg differ diff --git a/sound/vox_fem/way.ogg b/sound/vox_fem/way.ogg new file mode 100644 index 0000000000000..fdc121629c9cf Binary files /dev/null and b/sound/vox_fem/way.ogg differ diff --git a/sound/vox_fem/ways.ogg b/sound/vox_fem/ways.ogg new file mode 100644 index 0000000000000..8fa99a1c4b74e Binary files /dev/null and b/sound/vox_fem/ways.ogg differ diff --git a/sound/vox_fem/weld.ogg b/sound/vox_fem/weld.ogg new file mode 100644 index 0000000000000..6273ba147a6d4 Binary files /dev/null and b/sound/vox_fem/weld.ogg differ diff --git a/sound/vox_fem/which.ogg b/sound/vox_fem/which.ogg new file mode 100644 index 0000000000000..ae1486f816afc Binary files /dev/null and b/sound/vox_fem/which.ogg differ diff --git a/sound/vox_fem/work.ogg b/sound/vox_fem/work.ogg new file mode 100644 index 0000000000000..8ddb06ef1d522 Binary files /dev/null and b/sound/vox_fem/work.ogg differ diff --git a/sound/vox_fem/worked.ogg b/sound/vox_fem/worked.ogg new file mode 100644 index 0000000000000..7ea59ff0b2b97 Binary files /dev/null and b/sound/vox_fem/worked.ogg differ diff --git a/sound/vox_fem/working.ogg b/sound/vox_fem/working.ogg new file mode 100644 index 0000000000000..8e49779ee5c5b Binary files /dev/null and b/sound/vox_fem/working.ogg differ diff --git a/sound/vox_fem/works.ogg b/sound/vox_fem/works.ogg new file mode 100644 index 0000000000000..c35984171ab37 Binary files /dev/null and b/sound/vox_fem/works.ogg differ diff --git a/sound/vox_fem/would.ogg b/sound/vox_fem/would.ogg new file mode 100644 index 0000000000000..2df534769afe8 Binary files /dev/null and b/sound/vox_fem/would.ogg differ diff --git a/sound/vox_fem/wouldnt.ogg b/sound/vox_fem/wouldnt.ogg new file mode 100644 index 0000000000000..0c3b01facee79 Binary files /dev/null and b/sound/vox_fem/wouldnt.ogg differ diff --git a/sound/vox_fem/wrench.ogg b/sound/vox_fem/wrench.ogg new file mode 100644 index 0000000000000..98cf94db09a5f Binary files /dev/null and b/sound/vox_fem/wrench.ogg differ diff --git a/sound/vox_fem/wrenching.ogg b/sound/vox_fem/wrenching.ogg new file mode 100644 index 0000000000000..b61b70fd363c6 Binary files /dev/null and b/sound/vox_fem/wrenching.ogg differ diff --git a/sound/vox_fem/zap.ogg b/sound/vox_fem/zap.ogg new file mode 100644 index 0000000000000..233653de9131a Binary files /dev/null and b/sound/vox_fem/zap.ogg differ diff --git a/sound/vox_fem/zauker.ogg b/sound/vox_fem/zauker.ogg new file mode 100644 index 0000000000000..ed586c6c3f0f3 Binary files /dev/null and b/sound/vox_fem/zauker.ogg differ diff --git a/sound/weapons/shove.ogg b/sound/weapons/shove.ogg new file mode 100644 index 0000000000000..eb10eabed26a4 Binary files /dev/null and b/sound/weapons/shove.ogg differ diff --git a/sound/weapons/solarflare.ogg b/sound/weapons/solarflare.ogg new file mode 100644 index 0000000000000..48f6c5e892292 Binary files /dev/null and b/sound/weapons/solarflare.ogg differ diff --git a/strings/heckacious.json b/strings/heckacious.json new file mode 100644 index 0000000000000..1c648ce123815 --- /dev/null +++ b/strings/heckacious.json @@ -0,0 +1,98 @@ +{ + "heckacious": { + "your": "youre", + "fucking": "banging", + "economy": "econony", + "know": "no", + "ing": "in", + "they are": "there", + "sometimes": "some times", + "do": "does", + "hug": "bro hug bump", + "we're": "where", + "game": "big game", + "has": "hass", + "downtown": "down town", + "jimmy": "geromy", + "jeremy": "geromy", + "anywhere": "anywear", + "smoking": "toking up", + "lying": "lyong", + "AH": "AUGH", + "distraction": "distaction", + "lie": "ruse", + "angle": "angel", + "drink": "pour", + "the": "thef", + "backward": [ "back ward", "awayways" ], + "god damn": "GOD DAMN", + "goddamn": "GOD DAMN", + "trick": "dunk", + "impossible": "unreal", + "court": "coart", + "holding": "holdung", + "reverse": "flip", + "inverse": "flip", + "around": "turn-ways", + "difference": "differance", + "values": "vaules", + "inside": "insine", + "pipe": "punpe", + "suspicious": "plot thicken", + "awesome": "hella", + "reference": "refrance", + "amazing": "fucking incredible", + "woman": "wonan", + "god": "gog", + "bible": "bibble", + "jesus": "jescus", + "christ": [ "chris", "dick" ], + "sigh": "sign", + "bathroom": "banthroom", + "remember": "remender", + "night": "nite", + "nachos": "nachoes", + "nacho": "nancho", + "dorito": "nancho", + "party": "panty", + "dumbass": "dumpass", + "they": "their", + "okay": "ohh kayy", + "stupid": "stutid", + "reagent": "regent", + "idiot": "fuckass", + "awful": "conksuck", + "moron": "PIECE OF SHIT", + "more": "wider", + "serious": "keeping it real", + "extreme": "x-treme", + "guaranteed": "garganted", + "black": "blapck", + "glow": "glowns", + "deadly": "deudly", + "flying": "lifdoff", + "cloud": "cloun", + "seeing": "scoping", + "great": "choice", + "look": "lonk", + "battery": "babbery", + "retard": "dicktard", + "gay": "homo", + "close": "closte", + "wrong": "wrog", + "who": "whoof", + "new": "newd", + "holy": "hopy", + "um": "unm", + "horse": "hornse", + "this": "thits", + "then": "than", + "quick": "soon", + "bro": [ "brah", "bro" ], + "dude": [ "duge", "bro", "brah" ], + "'": [ "'", "" ], + "i'm": [ "im", "i am" ], + "shit": [ "balls warmed oveur", "shit" ], + "he's": [ "hes", "he is", "he'ss" ] + } +} diff --git a/strings/massmeta/italian_replacement_ru.json b/strings/massmeta/oguzok.json similarity index 81% rename from strings/massmeta/italian_replacement_ru.json rename to strings/massmeta/oguzok.json index 5d4f44a48a692..1dadfda8a11b0 100644 --- a/strings/massmeta/italian_replacement_ru.json +++ b/strings/massmeta/oguzok.json @@ -1,6 +1,6 @@ { - "italian": { + "oguzok": { "ассистент": [ "дармоед", "холоп" @@ -9,6 +9,38 @@ "дармоеды", "холопы" ], + "ассистента": [ + "дармоеда", + "холопа" + ], + "ассистентов": [ + "дармоедов", + "холопов" + ], + "ассистенту": [ + "дармоеду", + "холопу" + ], + "ассистентам": [ + "дармоедам", + "холопам" + ], + "ассистентом": [ + "дармоедом", + "холопом" + ], + "ассистентами": [ + "дармоедами", + "холопами" + ], + "ассистенте": [ + "дармоеде", + "холопе" + ], + "ассистентах": [ + "дармоедах", + "холопах" + ], "ассистентская": "притон дармоедов", "ассистентской": "притоне дармоедов", "ассистос": [ diff --git a/strings/massmeta/traumas.json b/strings/massmeta/traumas.json index d288bdd75b52c..6c995cbd5d859 100644 --- a/strings/massmeta/traumas.json +++ b/strings/massmeta/traumas.json @@ -1,20 +1,20 @@ { - "brain_damage": [ - "@pick(bug)", - "@pick(semicolon) @pick(admins) грифят ПОМГИЕТ!!!", - "@pick(semicolon)Я розавая вульпв", - "@pick(semicolon)ИИ заког 22 аткрывай", - "@pick(semicolon)шатыл зовитею", - "@pick(semicolon)я вошел в кристал и пропал?? @pick(bug)", - "@pick(semicolon)Н-НЯЯЯЯЯЯЯЯЯ~", - "@pick(semicolon)@pick(admins) @pick(create_verbs) @pick(create_nouns)???", - "@pick(semicolon)уву ><", - "@pick(semicolon)ии с боргами метакомят проверте", - "@pick(semicolon)чоо??????????? @pick(bug)", + "brain_damage": [ + "@pick(bug)", + "@pick(semicolon)@pick(admins) грифят ПОМГИЕТ!!!", + "@pick(semicolon)Я розавая вульпв", + "@pick(semicolon)ИИ заког 22 аткрывай", + "@pick(semicolon)шатыл зовитею", + "@pick(semicolon)я вошел в кристал и пропал?? @pick(bug)", + "@pick(semicolon)Н-НЯЯЯЯЯЯЯЯЯ~", + "@pick(semicolon)@pick(admins) @pick(create_verbs) @pick(create_nouns)???", + "@pick(semicolon)уву ><", + "@pick(semicolon)ии с боргами метакомят проверте", + "@pick(semicolon)чоо??????????? @pick(bug)", "@pick(semicolon)КАК ЖЕ ЗАЕБАЛИ ХУЕСОСЫ КОТОРЫЙ ПРОВОЦИРУЮТ СБ РАДИ ПОПИЗДИТЬСЯ!!", - "ебало @pick(admins) претставили?", - "Мне пожалуйста @pick(powergame_tools), @pick(powergame_shoes), @pick(powergame_potions), @pick(powergame_acronym), @pick(powergame_animal), @pick(powergame_implant), @pick(powergame_hud), @pick(powergame_pump), @pick(powergame_tube), @pick(powergame_anti), @pick(powergame_ator), @pick(powergame_ammo)", - "да чо этот вашь @pick(random_gibberish) знгачит??????", + "ебало @pick(admins) претставили?", + "Мне пожалуйста @pick(powergame_tools), @pick(powergame_shoes), @pick(powergame_potions), @pick(powergame_acronym), @pick(powergame_animal), @pick(powergame_implant), @pick(powergame_hud), @pick(powergame_pump), @pick(powergame_tube), @pick(powergame_anti), @pick(powergame_ator), @pick(powergame_ammo)", + "да чо этот вашь @pick(random_gibberish) знгачит??????", "калий потассиум вода", "это убевает игровую атмосферу!", "это жесткий абъюз механник который сводит на нет ролевой отыгрыш", @@ -28,19 +28,19 @@ "А это валидное имя для моли?", "ПРОКЛЯТИЕ 220!!!", "МАМУ УКРАЛИ!!" - ], + ], - "powergame_tools": [ - "легендарные инструменты абдукторов", + "powergame_tools": [ + "легендарные инструменты абдукторов", "инженерные инструменты абдукторов", "хирургические инструменты абдукторов", "музыкальные инструменты абдукторов" - ], + ], - "powergame_shoes": [ + "powergame_shoes": [ "джампбутсы", - "магбутсы", - "подкрадутсы" + "магбутсы", + "подкрадутсы" ], "powergame_potions": [ @@ -115,79 +115,79 @@ "тазерслаги" ], - "admins": [ - "одмины", - "педали", - "пидали", - "говно на педаляъ" - ], + "admins": [ + "одмины", + "педали", + "пидали", + "говно на педаляъ" + ], - "random_gibberish": [ - "Z", - "V", + "random_gibberish": [ + "Z", + "V", "ГОЙДА", - "шкибиди" - ], - - "servers": [ - "масмета", - "мамета", - "ссмета", - "массмеит" - ], - - "create_verbs": [ - "дай", - "делай", - "мне сюда", - "меня" - ], - - "create_nouns": [ - "аптуктарами", - "антагум", - "прищельцам", - "блоп", - "ривинантом", - "кошмаром" - ], - - "bug": [ - "", - "накодил гавна!!!", - "хуйню накодлил??", - "не роабоает,/", + "шкибиди" + ], + + "servers": [ + "масмета", + "мамета", + "ссмета", + "массмеит" + ], + + "create_verbs": [ + "дай", + "делай", + "мне сюда", + "меня" + ], + + "create_nouns": [ + "аптуктарами", + "антагум", + "прищельцам", + "блоп", + "ривинантом", + "кошмаром" + ], + + "bug": [ + "", + "накодил гавна!!!", + "хуйню накодлил??", + "не роабоает,/", "тг кодер момен" - ], + ], - "semicolon": [ - "", - ";", - ".h" - ], + "semicolon": [ + "", + ";", + ".h" + ], - "god_foe": [ + "god_foe": [ "BLASPHEMERS", "PARASITES", "PEASANTS", "UNBELIEVERS", "WEAKLINGS", - "HERETICS", - "INSECTS", - "MORTALS" - ], + "HERETICS", + "INSECTS", + "MORTALS" + ], - "god_aggressive": [ + "god_aggressive": [ "ALL WILL FALL BEFORE ME!", "BURN, @pick(god_foe)!", "DEATH TO @pick(god_foe)!", "ENDLESS SUFFERING AWAITS YOU, @pick(god_foe).", - "BEGONE, @pick(god_foe)!", - "BLEED, @pick(god_foe)!", - "DIE, @pick(god_foe)!" - ], + "BEGONE, @pick(god_foe)!", + "BLEED, @pick(god_foe)!", + "DIE, @pick(god_foe)!" + ], - "god_neutral": [ + "god_neutral": [ "BE HEALED, MORTALS. I AM FEELING MERCIFUL.", "BEGONE, MORTALS.", "DANCE FOR ME, LITTLE MORTALS.", @@ -198,22 +198,22 @@ "SEE THE TRUTH BEFORE YOU, MORTALS.", "YOU MORTALS MAKE ME SICK.", "YOU. STOP.", - "BE SILENT.", - "QUIET", - "STOP" - ], + "BE SILENT.", + "QUIET", + "STOP" + ], - "god_unstun": [ + "god_unstun": [ "GET UP, PRIEST.", "GET UP. I HAVE NO TIME TO LOSE.", "GET UP." - ], + ], - "god_heal": [ + "god_heal": [ "BE HEALED, PRIEST.", "YOU SHALL SURVIVE THIS, MY PRIEST.", "YOU WILL LIVE TO SEE ANOTHER DAY.", "YOUR LIFE IS IMPORTANT. KEEP IT." - ] + ] } diff --git a/tgstation.dme b/tgstation.dme index f5a47895674b2..9b09ef9539c00 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -389,6 +389,7 @@ #include "code\__DEFINES\research\anomalies.dm" #include "code\__DEFINES\research\research_categories.dm" #include "code\__DEFINES\research\slimes.dm" +#include "code\__DEFINES\research\techweb_nodes.dm" #include "code\__DEFINES\traits\_traits.dm" #include "code\__DEFINES\traits\declarations.dm" #include "code\__DEFINES\traits\macros.dm" @@ -452,7 +453,6 @@ #include "code\__HELPERS\radio.dm" #include "code\__HELPERS\randoms.dm" #include "code\__HELPERS\reagents.dm" -#include "code\__HELPERS\records.dm" #include "code\__HELPERS\ref.dm" #include "code\__HELPERS\roundend.dm" #include "code\__HELPERS\sanitize_values.dm" @@ -777,6 +777,7 @@ #include "code\datums\dog_fashion.dm" #include "code\datums\ductnet.dm" #include "code\datums\eigenstate.dm" +#include "code\datums\embed_data.dm" #include "code\datums\emotes.dm" #include "code\datums\ert.dm" #include "code\datums\hailer_phrase.dm" @@ -784,6 +785,7 @@ #include "code\datums\hotkeys_help.dm" #include "code\datums\http.dm" #include "code\datums\hud.dm" +#include "code\datums\instability_meltdown.dm" #include "code\datums\json_database.dm" #include "code\datums\json_savefile.dm" #include "code\datums\lazy_template.dm" @@ -1016,6 +1018,7 @@ #include "code\datums\components\ai_has_target_timer.dm" #include "code\datums\components\ai_listen_to_weather.dm" #include "code\datums\components\ai_retaliate_advanced.dm" +#include "code\datums\components\amputating_limbs.dm" #include "code\datums\components\anti_magic.dm" #include "code\datums\components\appearance_on_aggro.dm" #include "code\datums\components\aquarium_content.dm" @@ -1029,6 +1032,7 @@ #include "code\datums\components\basic_inhands.dm" #include "code\datums\components\basic_mob_attack_telegraph.dm" #include "code\datums\components\basic_ranged_ready_overlay.dm" +#include "code\datums\components\bayonet_attachable.dm" #include "code\datums\components\beetlejuice.dm" #include "code\datums\components\blob_minion.dm" #include "code\datums\components\blood_walk.dm" @@ -1269,7 +1273,6 @@ #include "code\datums\components\crafting\misc.dm" #include "code\datums\components\crafting\ranged_weapon.dm" #include "code\datums\components\crafting\robot.dm" -#include "code\datums\components\crafting\slapcrafting.dm" #include "code\datums\components\crafting\structures.dm" #include "code\datums\components\crafting\tailoring.dm" #include "code\datums\components\crafting\tiles.dm" @@ -1372,7 +1375,6 @@ #include "code\datums\elements\ai_retaliate.dm" #include "code\datums\elements\ai_swap_combat_mode.dm" #include "code\datums\elements\ai_target_damagesource.dm" -#include "code\datums\elements\amputating_limbs.dm" #include "code\datums\elements\animal_variety.dm" #include "code\datums\elements\art.dm" #include "code\datums\elements\atmos_requirements.dm" @@ -1458,6 +1460,7 @@ #include "code\datums\elements\kneejerk.dm" #include "code\datums\elements\knockback.dm" #include "code\datums\elements\lazy_fishing_spot.dm" +#include "code\datums\elements\leeching_walk.dm" #include "code\datums\elements\lifesteal.dm" #include "code\datums\elements\light_blocking.dm" #include "code\datums\elements\light_eaten.dm" @@ -1472,6 +1475,7 @@ #include "code\datums\elements\move_force_on_death.dm" #include "code\datums\elements\movement_turf_changer.dm" #include "code\datums\elements\movetype_handler.dm" +#include "code\datums\elements\muffles_speech.dm" #include "code\datums\elements\nerfed_pulling.dm" #include "code\datums\elements\noisy_movement.dm" #include "code\datums\elements\noticable_organ.dm" @@ -1500,6 +1504,7 @@ #include "code\datums\elements\simple_flying.dm" #include "code\datums\elements\skill_reward.dm" #include "code\datums\elements\skittish.dm" +#include "code\datums\elements\slapcrafting.dm" #include "code\datums\elements\soft_landing.dm" #include "code\datums\elements\spooky.dm" #include "code\datums\elements\squish.dm" @@ -1528,6 +1533,7 @@ #include "code\datums\elements\wall_walker.dm" #include "code\datums\elements\watery_tile.dm" #include "code\datums\elements\weapon_description.dm" +#include "code\datums\elements\wearable_client_colour.dm" #include "code\datums\elements\weather_listener.dm" #include "code\datums\elements\web_walker.dm" #include "code\datums\elements\wheel.dm" @@ -1590,6 +1596,7 @@ #include "code\datums\keybinding\robot.dm" #include "code\datums\looping_sounds\_looping_sound.dm" #include "code\datums\looping_sounds\acid.dm" +#include "code\datums\looping_sounds\breathing.dm" #include "code\datums\looping_sounds\burning.dm" #include "code\datums\looping_sounds\choking.dm" #include "code\datums\looping_sounds\cyborg.dm" @@ -1643,6 +1650,7 @@ #include "code\datums\mood_events\needs_events.dm" #include "code\datums\mutations\_combined.dm" #include "code\datums\mutations\_mutations.dm" +#include "code\datums\mutations\active.dm" #include "code\datums\mutations\adaptation.dm" #include "code\datums\mutations\antenna.dm" #include "code\datums\mutations\autotomy.dm" @@ -1650,13 +1658,14 @@ #include "code\datums\mutations\chameleon.dm" #include "code\datums\mutations\cold.dm" #include "code\datums\mutations\fire_breath.dm" +#include "code\datums\mutations\hot.dm" #include "code\datums\mutations\hulk.dm" #include "code\datums\mutations\olfaction.dm" #include "code\datums\mutations\passive.dm" #include "code\datums\mutations\radioactive.dm" +#include "code\datums\mutations\reach.dm" #include "code\datums\mutations\sight.dm" #include "code\datums\mutations\speech.dm" -#include "code\datums\mutations\telekinesis.dm" #include "code\datums\mutations\telepathy.dm" #include "code\datums\mutations\tongue_spike.dm" #include "code\datums\mutations\touch.dm" @@ -1855,6 +1864,7 @@ #include "code\datums\status_effects\debuffs\slime\slime_leech.dm" #include "code\datums\status_effects\debuffs\slime\slimed.dm" #include "code\datums\storage\storage.dm" +#include "code\datums\storage\storage_interface.dm" #include "code\datums\storage\subtypes\backpack.dm" #include "code\datums\storage\subtypes\bag_of_holding.dm" #include "code\datums\storage\subtypes\cards.dm" @@ -2459,6 +2469,7 @@ #include "code\game\objects\items\granters\crafting\combat_baking.dm" #include "code\game\objects\items\granters\crafting\death_sandwich.dm" #include "code\game\objects\items\granters\crafting\desserts.dm" +#include "code\game\objects\items\granters\crafting\fletching.dm" #include "code\game\objects\items\granters\crafting\pipegun.dm" #include "code\game\objects\items\granters\crafting\rebarxbowsyndie.dm" #include "code\game\objects\items\granters\crafting\regal_condor.dm" @@ -3047,7 +3058,6 @@ #include "code\modules\antagonists\clown_ops\clownop.dm" #include "code\modules\antagonists\clown_ops\outfits.dm" #include "code\modules\antagonists\cult\blood_magic.dm" -#include "code\modules\antagonists\cult\cult_bastard_sword.dm" #include "code\modules\antagonists\cult\cult_comms.dm" #include "code\modules\antagonists\cult\cult_items.dm" #include "code\modules\antagonists\cult\cult_objectives.dm" @@ -3060,6 +3070,7 @@ #include "code\modules\antagonists\cult\cult_turf_overlay.dm" #include "code\modules\antagonists\cult\rune_spawn_action.dm" #include "code\modules\antagonists\cult\runes.dm" +#include "code\modules\antagonists\cult\sword_fling.dm" #include "code\modules\antagonists\cult\datums\constructs.dm" #include "code\modules\antagonists\cult\datums\cult_team.dm" #include "code\modules\antagonists\cult\datums\cultist.dm" @@ -3082,6 +3093,7 @@ #include "code\modules\antagonists\heretic\knife_effect.dm" #include "code\modules\antagonists\heretic\moon_lunatic.dm" #include "code\modules\antagonists\heretic\rust_effect.dm" +#include "code\modules\antagonists\heretic\soultrapped_heretic.dm" #include "code\modules\antagonists\heretic\transmutation_rune.dm" #include "code\modules\antagonists\heretic\items\corrupted_organs.dm" #include "code\modules\antagonists\heretic\items\eldritch_flask.dm" @@ -3439,6 +3451,7 @@ #include "code\modules\atmospherics\machinery\pipes\heat_exchange\manifold4w.dm" #include "code\modules\atmospherics\machinery\pipes\heat_exchange\simple.dm" #include "code\modules\atmospherics\machinery\portable\canister.dm" +#include "code\modules\atmospherics\machinery\portable\pipe_scrubber.dm" #include "code\modules\atmospherics\machinery\portable\portable_atmospherics.dm" #include "code\modules\atmospherics\machinery\portable\pump.dm" #include "code\modules\atmospherics\machinery\portable\scrubber.dm" @@ -3492,6 +3505,13 @@ #include "code\modules\bitrunning\components\netpod_healing.dm" #include "code\modules\bitrunning\components\npc_friendly.dm" #include "code\modules\bitrunning\components\virtual_entity.dm" +#include "code\modules\bitrunning\netpod\_netpod.dm" +#include "code\modules\bitrunning\netpod\container.dm" +#include "code\modules\bitrunning\netpod\outfitting.dm" +#include "code\modules\bitrunning\netpod\signals.dm" +#include "code\modules\bitrunning\netpod\tools.dm" +#include "code\modules\bitrunning\netpod\ui.dm" +#include "code\modules\bitrunning\netpod\utils.dm" #include "code\modules\bitrunning\objects\byteforge.dm" #include "code\modules\bitrunning\objects\clothing.dm" #include "code\modules\bitrunning\objects\debug.dm" @@ -3501,7 +3521,6 @@ #include "code\modules\bitrunning\objects\landmarks.dm" #include "code\modules\bitrunning\objects\loot_box.dm" #include "code\modules\bitrunning\objects\loot_crate.dm" -#include "code\modules\bitrunning\objects\netpod.dm" #include "code\modules\bitrunning\objects\quantum_console.dm" #include "code\modules\bitrunning\objects\vendor.dm" #include "code\modules\bitrunning\orders\bepis.dm" @@ -3531,6 +3550,7 @@ #include "code\modules\bitrunning\virtual_domain\domains\fredingtonfastingbear.dm" #include "code\modules\bitrunning\virtual_domain\domains\gondola_asteroid.dm" #include "code\modules\bitrunning\virtual_domain\domains\hierophant.dm" +#include "code\modules\bitrunning\virtual_domain\domains\island_brawl.dm" #include "code\modules\bitrunning\virtual_domain\domains\pipedream.dm" #include "code\modules\bitrunning\virtual_domain\domains\pirates.dm" #include "code\modules\bitrunning\virtual_domain\domains\psyker_shuffle.dm" @@ -3592,6 +3612,7 @@ #include "code\modules\cargo\universal_scanner.dm" #include "code\modules\cargo\bounties\assistant.dm" #include "code\modules\cargo\bounties\atmos.dm" +#include "code\modules\cargo\bounties\bitrunning.dm" #include "code\modules\cargo\bounties\botany.dm" #include "code\modules\cargo\bounties\chef.dm" #include "code\modules\cargo\bounties\engineering.dm" @@ -4394,6 +4415,7 @@ #include "code\modules\library\skill_learning\job_skillchips\_job.dm" #include "code\modules\library\skill_learning\job_skillchips\chef.dm" #include "code\modules\library\skill_learning\job_skillchips\clown.dm" +#include "code\modules\library\skill_learning\job_skillchips\detective.dm" #include "code\modules\library\skill_learning\job_skillchips\janitor.dm" #include "code\modules\library\skill_learning\job_skillchips\miner.dm" #include "code\modules\library\skill_learning\job_skillchips\psychologist.dm" @@ -4472,6 +4494,7 @@ #include "code\modules\mapfluff\ruins\lavaland_ruin_code.dm" #include "code\modules\mapfluff\ruins\icemoonruin_code\commsagent.dm" #include "code\modules\mapfluff\ruins\icemoonruin_code\hotsprings.dm" +#include "code\modules\mapfluff\ruins\icemoonruin_code\lavaland_incursion.dm" #include "code\modules\mapfluff\ruins\icemoonruin_code\library.dm" #include "code\modules\mapfluff\ruins\icemoonruin_code\mailroom.dm" #include "code\modules\mapfluff\ruins\icemoonruin_code\mining_site.dm" @@ -4660,6 +4683,8 @@ #include "code\modules\mob\living\basic\bots\cleanbot\cleanbot.dm" #include "code\modules\mob\living\basic\bots\cleanbot\cleanbot_abilities.dm" #include "code\modules\mob\living\basic\bots\cleanbot\cleanbot_ai.dm" +#include "code\modules\mob\living\basic\bots\firebot\firebot.dm" +#include "code\modules\mob\living\basic\bots\firebot\firebot_ai.dm" #include "code\modules\mob\living\basic\bots\honkbots\honkbot.dm" #include "code\modules\mob\living\basic\bots\honkbots\honkbot_abilities.dm" #include "code\modules\mob\living\basic\bots\honkbots\honkbot_ai.dm" @@ -5115,7 +5140,6 @@ #include "code\modules\mob\living\simple_animal\bot\bot_announcement.dm" #include "code\modules\mob\living\simple_animal\bot\construction.dm" #include "code\modules\mob\living\simple_animal\bot\ed209bot.dm" -#include "code\modules\mob\living\simple_animal\bot\firebot.dm" #include "code\modules\mob\living\simple_animal\bot\floorbot.dm" #include "code\modules\mob\living\simple_animal\bot\mulebot.dm" #include "code\modules\mob\living\simple_animal\bot\secbot.dm" @@ -5257,6 +5281,7 @@ #include "code\modules\modular_computers\file_system\programs\chatroom\ntnrc_client.dm" #include "code\modules\modular_computers\file_system\programs\maintenance\_maintenance_program.dm" #include "code\modules\modular_computers\file_system\programs\maintenance\camera.dm" +#include "code\modules\modular_computers\file_system\programs\maintenance\cool_sword.dm" #include "code\modules\modular_computers\file_system\programs\maintenance\modsuit.dm" #include "code\modules\modular_computers\file_system\programs\maintenance\phys_scanner.dm" #include "code\modules\modular_computers\file_system\programs\maintenance\spectre_meter.dm" @@ -5331,10 +5356,10 @@ #include "code\modules\plumbing\plumbers\plumbing_buffer.dm" #include "code\modules\plumbing\plumbers\pumps.dm" #include "code\modules\plumbing\plumbers\reaction_chamber.dm" +#include "code\modules\plumbing\plumbers\simple_machines.dm" #include "code\modules\plumbing\plumbers\splitters.dm" #include "code\modules\plumbing\plumbers\synthesizer.dm" #include "code\modules\plumbing\plumbers\teleporter.dm" -#include "code\modules\plumbing\plumbers\vatgrower.dm" #include "code\modules\point\point.dm" #include "code\modules\power\battery.dm" #include "code\modules\power\cable.dm" @@ -5509,6 +5534,7 @@ #include "code\modules\projectiles\projectile\energy\net_snare.dm" #include "code\modules\projectiles\projectile\energy\ninja.dm" #include "code\modules\projectiles\projectile\energy\nuclear_particle.dm" +#include "code\modules\projectiles\projectile\energy\photon.dm" #include "code\modules\projectiles\projectile\energy\radiation.dm" #include "code\modules\projectiles\projectile\energy\stun.dm" #include "code\modules\projectiles\projectile\energy\tesla.dm" @@ -5727,6 +5753,7 @@ #include "code\modules\research\xenobiology\vatgrowing\microscope.dm" #include "code\modules\research\xenobiology\vatgrowing\petri_dish.dm" #include "code\modules\research\xenobiology\vatgrowing\swab.dm" +#include "code\modules\research\xenobiology\vatgrowing\vatgrower.dm" #include "code\modules\research\xenobiology\vatgrowing\samples\_micro_organism.dm" #include "code\modules\research\xenobiology\vatgrowing\samples\_sample.dm" #include "code\modules\research\xenobiology\vatgrowing\samples\cell_lines\common.dm" @@ -5937,6 +5964,7 @@ #include "code\modules\surgery\organs\internal\ears\_ears.dm" #include "code\modules\surgery\organs\internal\eyes\_eyes.dm" #include "code\modules\surgery\organs\internal\heart\_heart.dm" +#include "code\modules\surgery\organs\internal\heart\heart_anomalock.dm" #include "code\modules\surgery\organs\internal\heart\heart_ethereal.dm" #include "code\modules\surgery\organs\internal\liver\_liver.dm" #include "code\modules\surgery\organs\internal\liver\liver_golem.dm" @@ -6075,6 +6103,7 @@ #include "code\modules\vehicles\mecha\combat\durand.dm" #include "code\modules\vehicles\mecha\combat\gygax.dm" #include "code\modules\vehicles\mecha\combat\honker.dm" +#include "code\modules\vehicles\mecha\combat\justice.dm" #include "code\modules\vehicles\mecha\combat\marauder.dm" #include "code\modules\vehicles\mecha\combat\phazon.dm" #include "code\modules\vehicles\mecha\combat\reticence.dm" @@ -6119,6 +6148,7 @@ #include "code\modules\vending\security.dm" #include "code\modules\vending\snack.dm" #include "code\modules\vending\sovietsoda.dm" +#include "code\modules\vending\subtype.dm" #include "code\modules\vending\sustenance.dm" #include "code\modules\vending\toys.dm" #include "code\modules\vending\wardrobes.dm" @@ -6278,4 +6308,5 @@ #include "interface\fonts\tiny_unicode.dm" #include "interface\fonts\vcr_osd_mono.dm" #include "massmeta\modular_meta.dm" +#include "massmeta\modular_meta_master.dm" // END_INCLUDE diff --git a/tgui/packages/tgui-panel/settings/SettingsGeneral.tsx b/tgui/packages/tgui-panel/settings/SettingsGeneral.tsx new file mode 100644 index 0000000000000..8203f0313951d --- /dev/null +++ b/tgui/packages/tgui-panel/settings/SettingsGeneral.tsx @@ -0,0 +1,173 @@ +import { toFixed } from 'common/math'; +import { capitalize } from 'common/string'; +import { useState } from 'react'; +import { useDispatch, useSelector } from 'tgui/backend'; +import { + Button, + Collapsible, + Divider, + Input, + LabeledList, + NumberInput, + Section, + Stack, +} from 'tgui/components'; + +import { clearChat, saveChatToDisk } from '../chat/actions'; +import { THEMES } from '../themes'; +import { updateSettings } from './actions'; +import { FONTS } from './constants'; +import { selectSettings } from './selectors'; + +export function SettingsGeneral(props) { + const { theme, fontFamily, fontSize, lineHeight } = + useSelector(selectSettings); + const dispatch = useDispatch(); + const [freeFont, setFreeFont] = useState(false); + + return ( + <Section> + <LabeledList> + <LabeledList.Item label="Theme"> + {THEMES.map((THEME) => ( + <Button + key={THEME} + selected={theme === THEME} + color="transparent" + onClick={() => + dispatch( + updateSettings({ + theme: THEME, + }), + ) + } + > + {capitalize(THEME)} + </Button> + ))} + </LabeledList.Item> + <LabeledList.Item label="Font style"> + <Stack.Item> + {!freeFont ? ( + <Collapsible + title={fontFamily} + width={'100%'} + buttons={ + <Button + icon={freeFont ? 'lock-open' : 'lock'} + color={freeFont ? 'good' : 'bad'} + onClick={() => { + setFreeFont(!freeFont); + }} + > + Custom font + </Button> + } + > + {FONTS.map((FONT) => ( + <Button + key={FONT} + fontFamily={FONT} + selected={fontFamily === FONT} + color="transparent" + onClick={() => + dispatch( + updateSettings({ + fontFamily: FONT, + }), + ) + } + > + {FONT} + </Button> + ))} + </Collapsible> + ) : ( + <Stack> + <Input + width={'100%'} + value={fontFamily} + onChange={(e, value) => + dispatch( + updateSettings({ + fontFamily: value, + }), + ) + } + /> + <Button + ml={0.5} + icon={freeFont ? 'lock-open' : 'lock'} + color={freeFont ? 'good' : 'bad'} + onClick={() => { + setFreeFont(!freeFont); + }} + > + Custom font + </Button> + </Stack> + )} + </Stack.Item> + </LabeledList.Item> + <LabeledList.Item label="Font size"> + <NumberInput + width="4.2em" + step={1} + stepPixelSize={10} + minValue={8} + maxValue={32} + value={fontSize} + unit="px" + format={(value) => toFixed(value)} + onChange={(value) => + dispatch( + updateSettings({ + fontSize: value, + }), + ) + } + /> + </LabeledList.Item> + <LabeledList.Item label="Line height"> + <NumberInput + width="4.2em" + step={0.01} + stepPixelSize={2} + minValue={0.8} + maxValue={5} + value={lineHeight} + format={(value) => toFixed(value, 2)} + onDrag={(value) => + dispatch( + updateSettings({ + lineHeight: value, + }), + ) + } + /> + </LabeledList.Item> + </LabeledList> + <Divider /> + <Stack fill> + <Stack.Item grow mt={0.15}> + <Button + icon="save" + tooltip="Export current tab history into HTML file" + onClick={() => dispatch(saveChatToDisk())} + > + Save chat log + </Button> + </Stack.Item> + <Stack.Item mt={0.15}> + <Button.Confirm + icon="trash" + tooltip="Erase current tab history" + onClick={() => dispatch(clearChat())} + > + Clear chat + </Button.Confirm> + </Stack.Item> + </Stack> + </Section> + ); +} diff --git a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx b/tgui/packages/tgui-panel/settings/SettingsPanel.jsx deleted file mode 100644 index e5691037bba68..0000000000000 --- a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx +++ /dev/null @@ -1,371 +0,0 @@ -/** - * @file - * @copyright 2020 Aleksej Komarov - * @license MIT - */ - -import { toFixed } from 'common/math'; -import { capitalize } from 'common/string'; -import { useLocalState } from 'tgui/backend'; -import { useDispatch, useSelector } from 'tgui/backend'; -import { - Box, - Button, - Collapsible, - ColorBox, - Divider, - Input, - LabeledList, - NumberInput, - Section, - Stack, - Tabs, - TextArea, -} from 'tgui/components'; - -import { ChatPageSettings } from '../chat'; -import { clearChat, rebuildChat, saveChatToDisk } from '../chat/actions'; -import { THEMES } from '../themes'; -import { - addHighlightSetting, - changeSettingsTab, - removeHighlightSetting, - updateHighlightSetting, - updateSettings, -} from './actions'; -import { FONTS, MAX_HIGHLIGHT_SETTINGS, SETTINGS_TABS } from './constants'; -import { - selectActiveTab, - selectHighlightSettingById, - selectHighlightSettings, - selectSettings, -} from './selectors'; - -export const SettingsPanel = (props) => { - const activeTab = useSelector(selectActiveTab); - const dispatch = useDispatch(); - return ( - <Stack fill> - <Stack.Item> - <Section fitted fill minHeight="8em"> - <Tabs vertical> - {SETTINGS_TABS.map((tab) => ( - <Tabs.Tab - key={tab.id} - selected={tab.id === activeTab} - onClick={() => - dispatch( - changeSettingsTab({ - tabId: tab.id, - }), - ) - } - > - {tab.name} - </Tabs.Tab> - ))} - </Tabs> - </Section> - </Stack.Item> - <Stack.Item grow={1} basis={0}> - {activeTab === 'general' && <SettingsGeneral />} - {activeTab === 'chatPage' && <ChatPageSettings />} - {activeTab === 'textHighlight' && <TextHighlightSettings />} - </Stack.Item> - </Stack> - ); -}; - -export const SettingsGeneral = (props) => { - const { theme, fontFamily, fontSize, lineHeight } = - useSelector(selectSettings); - const dispatch = useDispatch(); - const [freeFont, setFreeFont] = useLocalState('freeFont', false); - return ( - <Section> - <LabeledList> - <LabeledList.Item label="Theme"> - {THEMES.map((THEME) => ( - <Button - key={THEME} - content={capitalize(THEME)} - selected={theme === THEME} - color="transparent" - onClick={() => - dispatch( - updateSettings({ - theme: THEME, - }), - ) - } - /> - ))} - </LabeledList.Item> - <LabeledList.Item label="Font style"> - <Stack.Item> - {(!freeFont && ( - <Collapsible - title={fontFamily} - width={'100%'} - buttons={ - <Button - content="Custom font" - icon={freeFont ? 'lock-open' : 'lock'} - color={freeFont ? 'good' : 'bad'} - onClick={() => { - setFreeFont(!freeFont); - }} - /> - } - > - {FONTS.map((FONT) => ( - <Button - key={FONT} - content={FONT} - fontFamily={FONT} - selected={fontFamily === FONT} - color="transparent" - onClick={() => - dispatch( - updateSettings({ - fontFamily: FONT, - }), - ) - } - /> - ))} - </Collapsible> - )) || ( - <Stack> - <Input - width={'100%'} - value={fontFamily} - onChange={(value) => - dispatch( - updateSettings({ - fontFamily: value, - }), - ) - } - /> - <Button - ml={0.5} - content="Custom font" - icon={freeFont ? 'lock-open' : 'lock'} - color={freeFont ? 'good' : 'bad'} - onClick={() => { - setFreeFont(!freeFont); - }} - /> - </Stack> - )} - </Stack.Item> - </LabeledList.Item> - <LabeledList.Item label="Font size"> - <NumberInput - width="4.2em" - step={1} - stepPixelSize={10} - minValue={8} - maxValue={32} - value={fontSize} - unit="px" - format={(value) => toFixed(value)} - onChange={(value) => - dispatch( - updateSettings({ - fontSize: value, - }), - ) - } - /> - </LabeledList.Item> - <LabeledList.Item label="Line height"> - <NumberInput - width="4.2em" - step={0.01} - stepPixelSize={2} - minValue={0.8} - maxValue={5} - value={lineHeight} - format={(value) => toFixed(value, 2)} - onDrag={(value) => - dispatch( - updateSettings({ - lineHeight: value, - }), - ) - } - /> - </LabeledList.Item> - </LabeledList> - <Divider /> - <Stack fill> - <Stack.Item grow mt={0.15}> - <Button - content="Save chat log" - icon="save" - tooltip="Export current tab history into HTML file" - onClick={() => dispatch(saveChatToDisk())} - /> - </Stack.Item> - <Stack.Item mt={0.15}> - <Button.Confirm - content="Clear chat" - icon="trash" - tooltip="Erase current tab history" - onClick={() => dispatch(clearChat())} - /> - </Stack.Item> - </Stack> - </Section> - ); -}; - -const TextHighlightSettings = (props) => { - const highlightSettings = useSelector(selectHighlightSettings); - const dispatch = useDispatch(); - return ( - <Section fill scrollable height="250px"> - <Stack vertical> - {highlightSettings.map((id, i) => ( - <TextHighlightSetting - key={i} - id={id} - mb={i + 1 === highlightSettings.length ? 0 : '10px'} - /> - ))} - {highlightSettings.length < MAX_HIGHLIGHT_SETTINGS && ( - <Stack.Item> - <Button - color="transparent" - icon="plus" - content="Add Highlight Setting" - onClick={() => { - dispatch(addHighlightSetting()); - }} - /> - </Stack.Item> - )} - </Stack> - <Divider /> - <Box> - <Button icon="check" onClick={() => dispatch(rebuildChat())}> - Apply now - </Button> - <Box inline fontSize="0.9em" ml={1} color="label"> - Can freeze the chat for a while. - </Box> - </Box> - </Section> - ); -}; - -const TextHighlightSetting = (props) => { - const { id, ...rest } = props; - const highlightSettingById = useSelector(selectHighlightSettingById); - const dispatch = useDispatch(); - const { - highlightColor, - highlightText, - highlightWholeMessage, - matchWord, - matchCase, - } = highlightSettingById[id]; - return ( - <Stack.Item {...rest}> - <Stack mb={1} color="label" align="baseline"> - <Stack.Item grow> - <Button - content="Delete" - color="transparent" - icon="times" - onClick={() => - dispatch( - removeHighlightSetting({ - id: id, - }), - ) - } - /> - </Stack.Item> - <Stack.Item> - <Button.Checkbox - checked={highlightWholeMessage} - content="Whole Message" - tooltip="If this option is selected, the entire message will be highlighted in yellow." - onClick={() => - dispatch( - updateHighlightSetting({ - id: id, - highlightWholeMessage: !highlightWholeMessage, - }), - ) - } - /> - </Stack.Item> - <Stack.Item> - <Button.Checkbox - content="Exact" - checked={matchWord} - tooltipPosition="bottom-start" - tooltip="If this option is selected, only exact matches (no extra letters before or after) will trigger. Not compatible with punctuation. Overriden if regex is used." - onClick={() => - dispatch( - updateHighlightSetting({ - id: id, - matchWord: !matchWord, - }), - ) - } - /> - </Stack.Item> - <Stack.Item> - <Button.Checkbox - content="Case" - tooltip="If this option is selected, the highlight will be case-sensitive." - checked={matchCase} - onClick={() => - dispatch( - updateHighlightSetting({ - id: id, - matchCase: !matchCase, - }), - ) - } - /> - </Stack.Item> - <Stack.Item> - <ColorBox mr={1} color={highlightColor} /> - <Input - width="5em" - monospace - placeholder="#ffffff" - value={highlightColor} - onInput={(e, value) => - dispatch( - updateHighlightSetting({ - id: id, - highlightColor: value, - }), - ) - } - /> - </Stack.Item> - </Stack> - <TextArea - height="3em" - value={highlightText} - placeholder="Put words to highlight here. Separate terms with commas, i.e. (term1, term2, term3)" - onChange={(e, value) => - dispatch( - updateHighlightSetting({ - id: id, - highlightText: value, - }), - ) - } - /> - </Stack.Item> - ); -}; diff --git a/tgui/packages/tgui-panel/settings/SettingsPanel.tsx b/tgui/packages/tgui-panel/settings/SettingsPanel.tsx new file mode 100644 index 0000000000000..abb0ef86f6335 --- /dev/null +++ b/tgui/packages/tgui-panel/settings/SettingsPanel.tsx @@ -0,0 +1,51 @@ +/** + * @file + * @copyright 2020 Aleksej Komarov + * @license MIT + */ + +import { useDispatch, useSelector } from 'tgui/backend'; +import { Section, Stack, Tabs } from 'tgui/components'; + +import { ChatPageSettings } from '../chat'; +import { changeSettingsTab } from './actions'; +import { SETTINGS_TABS } from './constants'; +import { selectActiveTab } from './selectors'; +import { SettingsGeneral } from './SettingsGeneral'; +import { TextHighlightSettings } from './TextHighlight'; + +export function SettingsPanel(props) { + const activeTab = useSelector(selectActiveTab); + const dispatch = useDispatch(); + + return ( + <Stack fill> + <Stack.Item> + <Section fitted fill minHeight="8em"> + <Tabs vertical> + {SETTINGS_TABS.map((tab) => ( + <Tabs.Tab + key={tab.id} + selected={tab.id === activeTab} + onClick={() => + dispatch( + changeSettingsTab({ + tabId: tab.id, + }), + ) + } + > + {tab.name} + </Tabs.Tab> + ))} + </Tabs> + </Section> + </Stack.Item> + <Stack.Item grow basis={0}> + {activeTab === 'general' && <SettingsGeneral />} + {activeTab === 'chatPage' && <ChatPageSettings />} + {activeTab === 'textHighlight' && <TextHighlightSettings />} + </Stack.Item> + </Stack> + ); +} diff --git a/tgui/packages/tgui-panel/settings/TextHighlight.tsx b/tgui/packages/tgui-panel/settings/TextHighlight.tsx new file mode 100644 index 0000000000000..76512cf3770f6 --- /dev/null +++ b/tgui/packages/tgui-panel/settings/TextHighlight.tsx @@ -0,0 +1,178 @@ +import { useDispatch, useSelector } from 'tgui/backend'; +import { + Box, + Button, + ColorBox, + Divider, + Input, + Section, + Stack, + TextArea, +} from 'tgui/components'; + +import { rebuildChat } from '../chat/actions'; +import { + addHighlightSetting, + removeHighlightSetting, + updateHighlightSetting, +} from './actions'; +import { MAX_HIGHLIGHT_SETTINGS } from './constants'; +import { + selectHighlightSettingById, + selectHighlightSettings, +} from './selectors'; + +export function TextHighlightSettings(props) { + const highlightSettings = useSelector(selectHighlightSettings); + const dispatch = useDispatch(); + + return ( + <Section fill scrollable height="250px"> + <Stack vertical> + {highlightSettings.map((id, i) => ( + <TextHighlightSetting + key={i} + id={id} + mb={i + 1 === highlightSettings.length ? 0 : '10px'} + /> + ))} + {highlightSettings.length < MAX_HIGHLIGHT_SETTINGS && ( + <Stack.Item> + <Button + color="transparent" + icon="plus" + onClick={() => { + dispatch(addHighlightSetting()); + }} + > + Add Highlight Setting + </Button> + </Stack.Item> + )} + </Stack> + <Divider /> + <Box> + <Button icon="check" onClick={() => dispatch(rebuildChat())}> + Apply now + </Button> + <Box inline fontSize="0.9em" ml={1} color="label"> + Can freeze the chat for a while. + </Box> + </Box> + </Section> + ); +} + +function TextHighlightSetting(props) { + const { id, ...rest } = props; + const highlightSettingById = useSelector(selectHighlightSettingById); + const dispatch = useDispatch(); + const { + highlightColor, + highlightText, + highlightWholeMessage, + matchWord, + matchCase, + } = highlightSettingById[id]; + + return ( + <Stack.Item {...rest}> + <Stack mb={1} color="label" align="baseline"> + <Stack.Item grow> + <Button + color="transparent" + icon="times" + onClick={() => + dispatch( + removeHighlightSetting({ + id: id, + }), + ) + } + > + Delete + </Button> + </Stack.Item> + <Stack.Item> + <Button.Checkbox + checked={highlightWholeMessage} + tooltip="If this option is selected, the entire message will be highlighted in yellow." + onClick={() => + dispatch( + updateHighlightSetting({ + id: id, + highlightWholeMessage: !highlightWholeMessage, + }), + ) + } + > + Whole Message + </Button.Checkbox> + </Stack.Item> + <Stack.Item> + <Button.Checkbox + checked={matchWord} + tooltipPosition="bottom-start" + tooltip="If this option is selected, only exact matches (no extra letters before or after) will trigger. Not compatible with punctuation. Overriden if regex is used." + onClick={() => + dispatch( + updateHighlightSetting({ + id: id, + matchWord: !matchWord, + }), + ) + } + > + Exact + </Button.Checkbox> + </Stack.Item> + <Stack.Item> + <Button.Checkbox + tooltip="If this option is selected, the highlight will be case-sensitive." + checked={matchCase} + onClick={() => + dispatch( + updateHighlightSetting({ + id: id, + matchCase: !matchCase, + }), + ) + } + > + Case + </Button.Checkbox> + </Stack.Item> + <Stack.Item> + <ColorBox mr={1} color={highlightColor} /> + <Input + width="5em" + monospace + placeholder="#ffffff" + value={highlightColor} + onInput={(e, value) => + dispatch( + updateHighlightSetting({ + id: id, + highlightColor: value, + }), + ) + } + /> + </Stack.Item> + </Stack> + <TextArea + height="3em" + value={highlightText} + placeholder="Put words to highlight here. Separate terms with commas, i.e. (term1, term2, term3)" + onChange={(e, value) => + dispatch( + updateHighlightSetting({ + id: id, + highlightText: value, + }), + ) + } + /> + </Stack.Item> + ); +} diff --git a/tgui/packages/tgui-panel/settings/middleware.js b/tgui/packages/tgui-panel/settings/middleware.js deleted file mode 100644 index edb16a51c4c41..0000000000000 --- a/tgui/packages/tgui-panel/settings/middleware.js +++ /dev/null @@ -1,90 +0,0 @@ -/** - * @file - * @copyright 2020 Aleksej Komarov - * @license MIT - */ - -import { storage } from 'common/storage'; - -import { setClientTheme } from '../themes'; -import { - addHighlightSetting, - loadSettings, - removeHighlightSetting, - updateHighlightSetting, - updateSettings, -} from './actions'; -import { FONTS_DISABLED } from './constants'; -import { selectSettings } from './selectors'; - -let overrideRule = null; -let overrideFontFamily = null; -let overrideFontSize = null; - -const updateGlobalOverrideRule = () => { - let fontFamily = ''; - - if (overrideFontFamily !== null) { - fontFamily = `font-family: ${overrideFontFamily} !important;`; - } - - const constructedRule = `body * :not(.Icon) { - ${fontFamily} - }`; - - if (overrideRule === null) { - overrideRule = document.createElement('style'); - document.querySelector('head').append(overrideRule); - } - - // no other way to force a CSS refresh other than to update its innerText - overrideRule.innerText = constructedRule; - - document.body.style.setProperty('font-size', overrideFontSize); -}; - -const setGlobalFontSize = (fontSize) => { - overrideFontSize = `${fontSize}px`; -}; - -const setGlobalFontFamily = (fontFamily) => { - if (fontFamily === FONTS_DISABLED) fontFamily = null; - overrideFontFamily = fontFamily; -}; - -export const settingsMiddleware = (store) => { - let initialized = false; - return (next) => (action) => { - const { type, payload } = action; - if (!initialized) { - initialized = true; - storage.get('panel-settings').then((settings) => { - store.dispatch(loadSettings(settings)); - }); - } - if ( - type === updateSettings.type || - type === loadSettings.type || - type === addHighlightSetting.type || - type === removeHighlightSetting.type || - type === updateHighlightSetting.type - ) { - // Set client theme - const theme = payload?.theme; - if (theme) { - setClientTheme(theme); - } - // Pass action to get an updated state - next(action); - const settings = selectSettings(store.getState()); - // Update global UI font size - setGlobalFontSize(settings.fontSize); - setGlobalFontFamily(settings.fontFamily); - updateGlobalOverrideRule(); - // Save settings to the web storage - storage.set('panel-settings', settings); - return; - } - return next(action); - }; -}; diff --git a/tgui/packages/tgui-panel/settings/middleware.ts b/tgui/packages/tgui-panel/settings/middleware.ts new file mode 100644 index 0000000000000..01ad88561904f --- /dev/null +++ b/tgui/packages/tgui-panel/settings/middleware.ts @@ -0,0 +1,98 @@ +/** + * @file + * @copyright 2020 Aleksej Komarov + * @license MIT + */ + +import { storage } from 'common/storage'; + +import { setClientTheme } from '../themes'; +import { + addHighlightSetting, + loadSettings, + removeHighlightSetting, + updateHighlightSetting, + updateSettings, +} from './actions'; +import { FONTS_DISABLED } from './constants'; +import { selectSettings } from './selectors'; + +let overrideRule: HTMLStyleElement; +let overrideFontFamily: string | undefined; +let overrideFontSize: string; + +/** Updates the global CSS rule to override the font family and size. */ +function updateGlobalOverrideRule() { + let fontFamily = ''; + + if (overrideFontFamily !== undefined) { + fontFamily = `font-family: ${overrideFontFamily} !important;`; + } + + const constructedRule = `body * :not(.Icon) { + ${fontFamily} + }`; + + if (overrideRule === undefined) { + overrideRule = document.createElement('style'); + document.querySelector('head')!.append(overrideRule); + } + + // no other way to force a CSS refresh other than to update its innerText + overrideRule.innerText = constructedRule; + + document.body.style.setProperty('font-size', overrideFontSize); +} + +function setGlobalFontSize(fontSize: string) { + overrideFontSize = `${fontSize}px`; +} + +function setGlobalFontFamily(fontFamily: string) { + overrideFontFamily = fontFamily === FONTS_DISABLED ? undefined : fontFamily; +} + +export function settingsMiddleware(store) { + let initialized = false; + + return (next) => (action) => { + const { type, payload } = action; + + if (!initialized) { + initialized = true; + storage.get('panel-settings').then((settings) => { + store.dispatch(loadSettings(settings)); + }); + } + if ( + type !== updateSettings.type && + type !== loadSettings.type && + type !== addHighlightSetting.type && + type !== removeHighlightSetting.type && + type !== updateHighlightSetting.type + ) { + return next(action); + } + + // Set client theme + const theme = payload?.theme; + if (theme) { + setClientTheme(theme); + } + + // Pass action to get an updated state + next(action); + + const settings = selectSettings(store.getState()); + + // Update global UI font size + setGlobalFontSize(settings.fontSize); + setGlobalFontFamily(settings.fontFamily); + updateGlobalOverrideRule(); + + // Save settings to the web storage + storage.set('panel-settings', settings); + + return; + }; +} diff --git a/tgui/packages/tgui-panel/settings/reducer.js b/tgui/packages/tgui-panel/settings/reducer.js deleted file mode 100644 index 1240198df8a3d..0000000000000 --- a/tgui/packages/tgui-panel/settings/reducer.js +++ /dev/null @@ -1,184 +0,0 @@ -/** - * @file - * @copyright 2020 Aleksej Komarov - * @license MIT - */ - -import { - addHighlightSetting, - changeSettingsTab, - loadSettings, - openChatSettings, - removeHighlightSetting, - toggleSettings, - updateHighlightSetting, - updateSettings, -} from './actions'; -import { FONTS, MAX_HIGHLIGHT_SETTINGS, SETTINGS_TABS } from './constants'; -import { createDefaultHighlightSetting } from './model'; - -const defaultHighlightSetting = createDefaultHighlightSetting(); - -const initialState = { - version: 1, - fontSize: 13, - fontFamily: FONTS[0], - lineHeight: 1.2, - theme: 'light', - adminMusicVolume: 0.5, - // Keep these two state vars for compatibility with other servers - highlightText: '', - highlightColor: '#ffdd44', - // END compatibility state vars - highlightSettings: [defaultHighlightSetting.id], - highlightSettingById: { - [defaultHighlightSetting.id]: defaultHighlightSetting, - }, - view: { - visible: false, - activeTab: SETTINGS_TABS[0].id, - }, -}; - -export const settingsReducer = (state = initialState, action) => { - const { type, payload } = action; - if (type === updateSettings.type) { - return { - ...state, - ...payload, - }; - } - if (type === loadSettings.type) { - // Validate version and/or migrate state - if (!payload?.version) { - return state; - } - - delete payload.view; - const nextState = { - ...state, - ...payload, - }; - // Lazy init the list for compatibility reasons - if (!nextState.highlightSettings) { - nextState.highlightSettings = [defaultHighlightSetting.id]; - nextState.highlightSettingById[defaultHighlightSetting.id] = - defaultHighlightSetting; - } - // Compensating for mishandling of default highlight settings - else if (!nextState.highlightSettingById[defaultHighlightSetting.id]) { - nextState.highlightSettings = [ - defaultHighlightSetting.id, - ...nextState.highlightSettings, - ]; - nextState.highlightSettingById[defaultHighlightSetting.id] = - defaultHighlightSetting; - } - // Update the highlight settings for default highlight - // settings compatibility - const highlightSetting = - nextState.highlightSettingById[defaultHighlightSetting.id]; - highlightSetting.highlightColor = nextState.highlightColor; - highlightSetting.highlightText = nextState.highlightText; - return nextState; - } - if (type === toggleSettings.type) { - return { - ...state, - view: { - ...state.view, - visible: !state.view.visible, - }, - }; - } - if (type === openChatSettings.type) { - return { - ...state, - view: { - ...state.view, - visible: true, - activeTab: 'chatPage', - }, - }; - } - if (type === changeSettingsTab.type) { - const { tabId } = payload; - return { - ...state, - view: { - ...state.view, - activeTab: tabId, - }, - }; - } - if (type === addHighlightSetting.type) { - const highlightSetting = payload; - if (state.highlightSettings.length >= MAX_HIGHLIGHT_SETTINGS) { - return state; - } - return { - ...state, - highlightSettings: [...state.highlightSettings, highlightSetting.id], - highlightSettingById: { - ...state.highlightSettingById, - [highlightSetting.id]: highlightSetting, - }, - }; - } - if (type === removeHighlightSetting.type) { - const { id } = payload; - const nextState = { - ...state, - highlightSettings: [...state.highlightSettings], - highlightSettingById: { - ...state.highlightSettingById, - }, - }; - if (id === defaultHighlightSetting.id) { - nextState.highlightSettings[defaultHighlightSetting.id] = - defaultHighlightSetting; - } else { - delete nextState.highlightSettingById[id]; - nextState.highlightSettings = nextState.highlightSettings.filter( - (sid) => sid !== id, - ); - if (!nextState.highlightSettings.length) { - nextState.highlightSettings.push(defaultHighlightSetting.id); - nextState.highlightSettingById[defaultHighlightSetting.id] = - defaultHighlightSetting; - } - } - return nextState; - } - if (type === updateHighlightSetting.type) { - const { id, ...settings } = payload; - const nextState = { - ...state, - highlightSettings: [...state.highlightSettings], - highlightSettingById: { - ...state.highlightSettingById, - }, - }; - - // Transfer this data from the default highlight setting - // so they carry over to other servers - if (id === defaultHighlightSetting.id) { - if (settings.highlightText) { - nextState.highlightText = settings.highlightText; - } - if (settings.highlightColor) { - nextState.highlightColor = settings.highlightColor; - } - } - - if (nextState.highlightSettingById[id]) { - nextState.highlightSettingById[id] = { - ...nextState.highlightSettingById[id], - ...settings, - }; - } - - return nextState; - } - return state; -}; diff --git a/tgui/packages/tgui-panel/settings/reducer.ts b/tgui/packages/tgui-panel/settings/reducer.ts new file mode 100644 index 0000000000000..62d08986a1479 --- /dev/null +++ b/tgui/packages/tgui-panel/settings/reducer.ts @@ -0,0 +1,208 @@ +/** + * @file + * @copyright 2020 Aleksej Komarov + * @license MIT + */ + +import { + addHighlightSetting, + changeSettingsTab, + loadSettings, + openChatSettings, + removeHighlightSetting, + toggleSettings, + updateHighlightSetting, + updateSettings, +} from './actions'; +import { FONTS, MAX_HIGHLIGHT_SETTINGS, SETTINGS_TABS } from './constants'; +import { createDefaultHighlightSetting } from './model'; + +const defaultHighlightSetting = createDefaultHighlightSetting(); + +const initialState = { + version: 1, + fontSize: 13, + fontFamily: FONTS[0], + lineHeight: 1.2, + theme: 'light', + adminMusicVolume: 0.5, + // Keep these two state vars for compatibility with other servers + highlightText: '', + highlightColor: '#ffdd44', + // END compatibility state vars + highlightSettings: [defaultHighlightSetting.id], + highlightSettingById: { + [defaultHighlightSetting.id]: defaultHighlightSetting, + }, + view: { + visible: false, + activeTab: SETTINGS_TABS[0].id, + }, +} as const; + +export function settingsReducer( + state = initialState, + action: { type: string; payload: any }, +) { + const { type, payload } = action; + + switch (type) { + case updateSettings.type: + return { + ...state, + ...payload, + }; + + case loadSettings.type: { + { + // Validate version and/or migrate state + if (!payload?.version) { + return state; + } + + delete payload.view; + const nextState = { + ...state, + ...payload, + }; + // Lazy init the list for compatibility reasons + if (!nextState.highlightSettings) { + nextState.highlightSettings = [defaultHighlightSetting.id]; + nextState.highlightSettingById[defaultHighlightSetting.id] = + defaultHighlightSetting; + } + // Compensating for mishandling of default highlight settings + else if (!nextState.highlightSettingById[defaultHighlightSetting.id]) { + nextState.highlightSettings = [ + defaultHighlightSetting.id, + ...nextState.highlightSettings, + ]; + nextState.highlightSettingById[defaultHighlightSetting.id] = + defaultHighlightSetting; + } + + // Update the highlight settings for default highlight + // settings compatibility + const highlightSetting = + nextState.highlightSettingById[defaultHighlightSetting.id]; + highlightSetting.highlightColor = nextState.highlightColor; + highlightSetting.highlightText = nextState.highlightText; + + return nextState; + } + } + + case toggleSettings.type: { + return { + ...state, + view: { + ...state.view, + visible: !state.view.visible, + }, + }; + } + + case openChatSettings.type: { + return { + ...state, + view: { + ...state.view, + visible: true, + activeTab: 'chatPage', + }, + }; + } + + case changeSettingsTab.type: { + const { tabId } = payload; + + return { + ...state, + view: { + ...state.view, + activeTab: tabId, + }, + }; + } + + case addHighlightSetting.type: { + const highlightSetting = payload; + + if (state.highlightSettings.length >= MAX_HIGHLIGHT_SETTINGS) { + return state; + } + + return { + ...state, + highlightSettings: [...state.highlightSettings, highlightSetting.id], + highlightSettingById: { + ...state.highlightSettingById, + [highlightSetting.id]: highlightSetting, + }, + }; + } + + case removeHighlightSetting.type: { + const { id } = payload; + + const nextState = { + ...state, + highlightSettings: [...state.highlightSettings], + highlightSettingById: { + ...state.highlightSettingById, + }, + }; + + if (id === defaultHighlightSetting.id) { + nextState.highlightSettings[defaultHighlightSetting.id] = + defaultHighlightSetting; + } else { + delete nextState.highlightSettingById[id]; + nextState.highlightSettings = nextState.highlightSettings.filter( + (sid) => sid !== id, + ); + if (!nextState.highlightSettings.length) { + nextState.highlightSettings.push(defaultHighlightSetting.id); + nextState.highlightSettingById[defaultHighlightSetting.id] = + defaultHighlightSetting; + } + } + + return nextState; + } + + case updateHighlightSetting.type: { + const { id, ...settings } = payload; + + const nextState = { + ...state, + highlightSettings: [...state.highlightSettings], + highlightSettingById: { + ...state.highlightSettingById, + }, + }; + + // Transfer this data from the default highlight setting + // so they carry over to other servers + if (id === defaultHighlightSetting.id) { + if (settings.highlightText) { + nextState.highlightText = settings.highlightText; + } + if (settings.highlightColor) { + nextState.highlightColor = settings.highlightColor; + } + } + + if (nextState.highlightSettingById[id]) { + nextState.highlightSettingById[id] = { + ...nextState.highlightSettingById[id], + ...settings, + }; + } + + return nextState; + } + } + + return state; +} diff --git a/tgui/packages/tgui/components/DmIcon.tsx b/tgui/packages/tgui/components/DmIcon.tsx index fb6816576ac0c..bb785fc6e3968 100644 --- a/tgui/packages/tgui/components/DmIcon.tsx +++ b/tgui/packages/tgui/components/DmIcon.tsx @@ -29,7 +29,7 @@ type Props = { /** Frame number. Default is 1 */ frame: number; /** Movement state. Default is false */ - movement: boolean; + movement: any; }> & BoxProps; @@ -49,7 +49,7 @@ export function DmIcon(props: Props) { const [iconRef, setIconRef] = useState(''); - const query = `${iconRef}?state=${icon_state}&dir=${direction}&movement=${movement}&frame=${frame}`; + const query = `${iconRef}?state=${icon_state}&dir=${direction}&movement=${!!movement}&frame=${frame}`; useEffect(() => { async function fetchRefMap() { diff --git a/tgui/packages/tgui/interfaces/AbductorConsole.jsx b/tgui/packages/tgui/interfaces/AbductorConsole.jsx index e870089a1bcf4..bb2f1dffccfe3 100644 --- a/tgui/packages/tgui/interfaces/AbductorConsole.jsx +++ b/tgui/packages/tgui/interfaces/AbductorConsole.jsx @@ -1,5 +1,12 @@ +import { + Button, + LabeledList, + NoticeBox, + Section, + Tabs, +} from 'tgui-core/components'; + import { useBackend, useSharedState } from '../backend'; -import { Button, LabeledList, NoticeBox, Section, Tabs } from '../components'; import { Window } from '../layouts'; import { GenericUplink } from './Uplink/GenericUplink'; diff --git a/tgui/packages/tgui/interfaces/AccountingConsole.tsx b/tgui/packages/tgui/interfaces/AccountingConsole.tsx index f737234fc6a6c..726abb78ece78 100644 --- a/tgui/packages/tgui/interfaces/AccountingConsole.tsx +++ b/tgui/packages/tgui/interfaces/AccountingConsole.tsx @@ -1,7 +1,4 @@ -import { BooleanLike } from 'common/react'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { BlockQuote, Collapsible, @@ -9,7 +6,10 @@ import { Section, Stack, Tabs, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/Achievements.jsx b/tgui/packages/tgui/interfaces/Achievements.jsx index a9b6b914b9ee9..ccb7c2807f698 100644 --- a/tgui/packages/tgui/interfaces/Achievements.jsx +++ b/tgui/packages/tgui/interfaces/Achievements.jsx @@ -1,7 +1,7 @@ import { useState } from 'react'; +import { Box, Flex, Icon, Table, Tabs, Tooltip } from 'tgui-core/components'; import { useBackend } from '../backend'; -import { Box, Flex, Icon, Table, Tabs, Tooltip } from '../components'; import { Window } from '../layouts'; export const Achievements = (props) => { diff --git a/tgui/packages/tgui/interfaces/AdminFax.jsx b/tgui/packages/tgui/interfaces/AdminFax.jsx index 3e6026d4ce46e..37bdd523c4196 100644 --- a/tgui/packages/tgui/interfaces/AdminFax.jsx +++ b/tgui/packages/tgui/interfaces/AdminFax.jsx @@ -1,6 +1,4 @@ import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -12,7 +10,9 @@ import { Section, TextArea, Tooltip, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; export const AdminFax = (props) => { diff --git a/tgui/packages/tgui/interfaces/AdminPDA.jsx b/tgui/packages/tgui/interfaces/AdminPDA.jsx index fa83f200e52c7..da06e7d294d68 100644 --- a/tgui/packages/tgui/interfaces/AdminPDA.jsx +++ b/tgui/packages/tgui/interfaces/AdminPDA.jsx @@ -1,5 +1,6 @@ +import { Box, Dropdown, Input, Section, TextArea } from 'tgui-core/components'; + import { useBackend, useLocalState } from '../backend'; -import { Box, Dropdown, Input, Section, TextArea } from '../components'; import { Button } from '../components/Button'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/Adminhelp.tsx b/tgui/packages/tgui/interfaces/Adminhelp.tsx index 7e29a807f1d4e..af1e273b68523 100644 --- a/tgui/packages/tgui/interfaces/Adminhelp.tsx +++ b/tgui/packages/tgui/interfaces/Adminhelp.tsx @@ -1,8 +1,15 @@ -import { BooleanLike } from 'common/react'; import { useState } from 'react'; +import { + Box, + Button, + Input, + NoticeBox, + Stack, + TextArea, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Box, Button, Input, NoticeBox, Stack, TextArea } from '../components'; import { Window } from '../layouts'; type AdminhelpData = { diff --git a/tgui/packages/tgui/interfaces/AdventureBrowser.tsx b/tgui/packages/tgui/interfaces/AdventureBrowser.tsx index cb43f6f319d47..86e05231952a6 100644 --- a/tgui/packages/tgui/interfaces/AdventureBrowser.tsx +++ b/tgui/packages/tgui/interfaces/AdventureBrowser.tsx @@ -1,5 +1,6 @@ +import { Box, Button, NoticeBox, Section, Table } from 'tgui-core/components'; + import { useBackend, useLocalState } from '../backend'; -import { Box, Button, NoticeBox, Section, Table } from '../components'; import { formatTime } from '../format'; import { Window } from '../layouts'; import { AdventureDataProvider, AdventureScreen } from './ExodroneConsole'; diff --git a/tgui/packages/tgui/interfaces/AiAirlock.jsx b/tgui/packages/tgui/interfaces/AiAirlock.jsx index b74735d8e6a12..bf9cdf4a7ffe5 100644 --- a/tgui/packages/tgui/interfaces/AiAirlock.jsx +++ b/tgui/packages/tgui/interfaces/AiAirlock.jsx @@ -1,5 +1,6 @@ +import { Button, LabeledList, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, LabeledList, Section } from '../components'; import { Window } from '../layouts'; const dangerMap = { diff --git a/tgui/packages/tgui/interfaces/AiRestorer.tsx b/tgui/packages/tgui/interfaces/AiRestorer.tsx index 1add6b5e934bb..a7987145a2c77 100644 --- a/tgui/packages/tgui/interfaces/AiRestorer.tsx +++ b/tgui/packages/tgui/interfaces/AiRestorer.tsx @@ -1,6 +1,3 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -8,7 +5,10 @@ import { NoticeBox, ProgressBar, Section, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/AiVoiceChanger.tsx b/tgui/packages/tgui/interfaces/AiVoiceChanger.tsx index 09c1aa04e57f1..a9bd489c7b0b1 100644 --- a/tgui/packages/tgui/interfaces/AiVoiceChanger.tsx +++ b/tgui/packages/tgui/interfaces/AiVoiceChanger.tsx @@ -1,7 +1,13 @@ -import { BooleanLike } from 'common/react'; +import { + Button, + Dropdown, + Input, + LabeledList, + Section, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, Dropdown, Input, LabeledList, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/AirAlarm.tsx b/tgui/packages/tgui/interfaces/AirAlarm.tsx index bacfe259fe182..f5d439915e991 100644 --- a/tgui/packages/tgui/interfaces/AirAlarm.tsx +++ b/tgui/packages/tgui/interfaces/AirAlarm.tsx @@ -1,7 +1,4 @@ -import { BooleanLike } from 'common/react'; import { Fragment } from 'react'; - -import { useBackend, useLocalState } from '../backend'; import { Box, Button, @@ -11,7 +8,10 @@ import { Section, Table, VirtualList, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend, useLocalState } from '../backend'; import { Window } from '../layouts'; import { Scrubber, diff --git a/tgui/packages/tgui/interfaces/AirlockButtonController.tsx b/tgui/packages/tgui/interfaces/AirlockButtonController.tsx index 98a3f7c91135d..83f984974896c 100644 --- a/tgui/packages/tgui/interfaces/AirlockButtonController.tsx +++ b/tgui/packages/tgui/interfaces/AirlockButtonController.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Button, NoticeBox, Section, Stack } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, NoticeBox, Section, Stack } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/AirlockController.tsx b/tgui/packages/tgui/interfaces/AirlockController.tsx index ca3551c3415a4..81a10f75bc52d 100644 --- a/tgui/packages/tgui/interfaces/AirlockController.tsx +++ b/tgui/packages/tgui/interfaces/AirlockController.tsx @@ -1,5 +1,6 @@ +import { Box, Button, Icon, LabeledList, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Box, Button, Icon, LabeledList, Section } from '../components'; import { Window } from '../layouts'; type AirlockControllerData = { diff --git a/tgui/packages/tgui/interfaces/AirlockElectronics.tsx b/tgui/packages/tgui/interfaces/AirlockElectronics.tsx index b90e8ac3b578f..2a0e535ac8842 100644 --- a/tgui/packages/tgui/interfaces/AirlockElectronics.tsx +++ b/tgui/packages/tgui/interfaces/AirlockElectronics.tsx @@ -1,7 +1,13 @@ -import { BooleanLike } from 'common/react'; +import { + Button, + Input, + LabeledList, + Section, + Stack, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, Input, LabeledList, Section, Stack } from '../components'; import { Window } from '../layouts'; import { AccessConfig, Region } from './common/AccessConfig'; diff --git a/tgui/packages/tgui/interfaces/AlertModal.tsx b/tgui/packages/tgui/interfaces/AlertModal.tsx index 5924dc7ae7cf2..8341d5dbd66c0 100644 --- a/tgui/packages/tgui/interfaces/AlertModal.tsx +++ b/tgui/packages/tgui/interfaces/AlertModal.tsx @@ -1,9 +1,9 @@ -import { isEscape, KEY } from 'common/keys'; -import { BooleanLike } from 'common/react'; import { KeyboardEvent, useState } from 'react'; +import { Autofocus, Box, Button, Section, Stack } from 'tgui-core/components'; +import { isEscape, KEY } from 'tgui-core/keys'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Autofocus, Box, Button, Section, Stack } from '../components'; import { Window } from '../layouts'; import { Loader } from './common/Loader'; diff --git a/tgui/packages/tgui/interfaces/AnomalyRefinery.jsx b/tgui/packages/tgui/interfaces/AnomalyRefinery.jsx index 89f95e28c4a64..870bb5c264649 100644 --- a/tgui/packages/tgui/interfaces/AnomalyRefinery.jsx +++ b/tgui/packages/tgui/interfaces/AnomalyRefinery.jsx @@ -1,4 +1,3 @@ -import { useBackend, useSharedState } from '../backend'; import { Box, Button, @@ -7,7 +6,9 @@ import { Modal, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend, useSharedState } from '../backend'; import { Window } from '../layouts'; import { GasmixParser } from './common/GasmixParser'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoBlob.tsx b/tgui/packages/tgui/interfaces/AntagInfoBlob.tsx index fccf02a8b1c77..dfb2bd5bb2c89 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoBlob.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoBlob.tsx @@ -1,4 +1,3 @@ -import { useBackend } from '../backend'; import { Box, Collapsible, @@ -6,7 +5,9 @@ import { LabeledList, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { Objective } from './common/Objectives'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoBrainwashed.tsx b/tgui/packages/tgui/interfaces/AntagInfoBrainwashed.tsx index a506171504a9b..dfa05895bd047 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoBrainwashed.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoBrainwashed.tsx @@ -1,5 +1,6 @@ +import { Box, Icon, Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Box, Icon, Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective, ObjectivePrintout } from './common/Objectives'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoBrother.tsx b/tgui/packages/tgui/interfaces/AntagInfoBrother.tsx index 294fc10113590..731e24e485fe5 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoBrother.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoBrother.tsx @@ -1,5 +1,6 @@ +import { Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective, ObjectivePrintout } from './common/Objectives'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx b/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx index 2f41fa7c46d05..ada2aa8cd2a92 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoChangeling.tsx @@ -1,7 +1,4 @@ -import { BooleanLike } from 'common/react'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Button, Dimmer, @@ -9,7 +6,10 @@ import { NoticeBox, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { Objective, diff --git a/tgui/packages/tgui/interfaces/AntagInfoDemon.tsx b/tgui/packages/tgui/interfaces/AntagInfoDemon.tsx index 1dceb6a60a6c1..aaa02521167c8 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoDemon.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoDemon.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Box, Section, Stack } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Box, Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective, ObjectivePrintout } from './common/Objectives'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoGeneric.tsx b/tgui/packages/tgui/interfaces/AntagInfoGeneric.tsx index 8aeae3510c4f8..c4a81426585d8 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoGeneric.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoGeneric.tsx @@ -1,5 +1,6 @@ +import { Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective, ObjectivePrintout } from './common/Objectives'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoGlitch.tsx b/tgui/packages/tgui/interfaces/AntagInfoGlitch.tsx index 0fd7d18a47c56..469215a7f4595 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoGlitch.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoGlitch.tsx @@ -1,5 +1,6 @@ +import { Divider, Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Divider, Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective } from './common/Objectives'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoHeretic.tsx b/tgui/packages/tgui/interfaces/AntagInfoHeretic.tsx index 30908b606fa2f..097a417829c04 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoHeretic.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoHeretic.tsx @@ -1,9 +1,16 @@ -import { BooleanLike } from 'common/react'; import { useState } from 'react'; +import { + Box, + Button, + DmIcon, + Flex, + Section, + Stack, + Tabs, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { BlockQuote, Box, Button, Section, Stack, Tabs } from '../components'; -import { CssColor } from '../constants'; import { Window } from '../layouts'; import { Objective, @@ -35,20 +42,33 @@ const hereticYellow = { color: 'yellow', }; +type IconParams = { + icon: string; + state: string; + frame: number; + dir: number; + moving: BooleanLike; +}; + type Knowledge = { path: string; + icon_params: IconParams; name: string; desc: string; gainFlavor: string; cost: number; - disabled: boolean; - hereticPath: string; - color: CssColor; + bgr: string; + disabled: BooleanLike; + finished: BooleanLike; + ascension: BooleanLike; }; type KnowledgeInfo = { - learnableKnowledge: Knowledge[]; - learnedKnowledge: Knowledge[]; + knowledge_tiers: KnowledgeTier[]; +}; + +type KnowledgeTier = { + nodes: Knowledge[]; }; type Info = { @@ -219,63 +239,96 @@ const InformationSection = (props) => { ); }; -const ResearchedKnowledge = (props) => { - const { data } = useBackend<KnowledgeInfo>(); - const { learnedKnowledge } = data; +const KnowledgeTree = (props) => { + const { data, act } = useBackend<KnowledgeInfo>(); + const { knowledge_tiers } = data; return ( - <Stack.Item grow> - <Section title="Researched Knowledge" fill scrollable> - <Stack vertical> - {(!learnedKnowledge.length && 'None!') || - learnedKnowledge.map((learned) => ( - <Stack.Item key={learned.name}> - <Button - width="100%" - color={learned.color} - content={`${learned.hereticPath} - ${learned.name}`} - tooltip={learned.desc} - /> + <Section title="Research Tree" fill scrollable> + <Box textAlign="center" fontSize="32px"> + <span style={hereticYellow}>DAWN</span> + </Box> + <Stack vertical> + {knowledge_tiers.length === 0 + ? 'None!' + : knowledge_tiers.map((tier, i) => ( + <Stack.Item key={i}> + <Flex + justify="center" + align="center" + backgroundColor="transparent" + wrap="wrap" + > + {tier.nodes.map((node) => ( + <Flex.Item key={node.name}> + <Button + color="transparent" + tooltip={`${node.name}: + ${node.desc}`} + onClick={ + node.disabled || node.finished + ? undefined + : () => act('research', { path: node.path }) + } + width={node.ascension ? '192px' : '64px'} + height={node.ascension ? '192px' : '64px'} + m="8px" + style={{ + borderRadius: '50%', + }} + > + <DmIcon + icon="icons/ui_icons/antags/heretic/knowledge.dmi" + icon_state={ + node.disabled + ? 'node_locked' + : node.finished + ? 'node_finished' + : node.bgr + } + height={node.ascension ? '192px' : '64px'} + width={node.ascension ? '192px' : '64px'} + top="0px" + left="0px" + position="absolute" + /> + <DmIcon + icon={node.icon_params.icon} + icon_state={node.icon_params.state} + frame={node.icon_params.frame} + direction={node.icon_params.dir} + movement={node.icon_params.moving} + height={node.ascension ? '152px' : '64px'} + width={node.ascension ? '152px' : '64px'} + top={node.ascension ? '20px' : '0px'} + left={node.ascension ? '20px' : '0px'} + position="absolute" + /> + <Box + position="absolute" + top="0px" + left="0px" + backgroundColor="black" + textColor="white" + bold + > + {!node.finished && + (node.cost > 0 ? node.cost : 'FREE')} + </Box> + </Button> + {!!node.ascension && ( + <Box textAlign="center" fontSize="32px"> + <span style={hereticPurple}>DUSK</span> + </Box> + )} + </Flex.Item> + ))} + </Flex> + <hr /> </Stack.Item> ))} - </Stack> - </Section> - </Stack.Item> - ); -}; - -const KnowledgeShop = (props) => { - const { data, act } = useBackend<KnowledgeInfo>(); - const { learnableKnowledge } = data; - - return ( - <Stack.Item grow> - <Section title="Potential Knowledge" fill scrollable> - {(!learnableKnowledge.length && 'None!') || - learnableKnowledge.map((toLearn) => ( - <Stack.Item key={toLearn.name} mb={1}> - <Button - width="100%" - color={toLearn.color} - disabled={toLearn.disabled} - content={`${toLearn.hereticPath} - ${ - toLearn.cost > 0 - ? `${toLearn.name}: ${toLearn.cost} - point${toLearn.cost !== 1 ? 's' : ''}` - : toLearn.name - }`} - tooltip={toLearn.desc} - onClick={() => act('research', { path: toLearn.path })} - /> - {!!toLearn.gainFlavor && ( - <BlockQuote> - <i>{toLearn.gainFlavor}</i> - </BlockQuote> - )} - </Stack.Item> - ))} - </Section> - </Stack.Item> + </Stack> + </Section> ); }; @@ -284,23 +337,16 @@ const ResearchInfo = (props) => { const { charges } = data; return ( - <Stack justify="space-evenly" height="100%" width="100%"> + <Stack vertical fill> + <Stack.Item fontSize="20px" textAlign="center"> + You have <b>{charges || 0}</b>  + <span style={hereticBlue}> + knowledge point{charges !== 1 ? 's' : ''} + </span>{' '} + to spend. + </Stack.Item> <Stack.Item grow> - <Stack vertical height="100%"> - <Stack.Item fontSize="20px" textAlign="center"> - You have <b>{charges || 0}</b>  - <span style={hereticBlue}> - knowledge point{charges !== 1 ? 's' : ''} - </span>{' '} - to spend. - </Stack.Item> - <Stack.Item grow> - <Stack height="100%"> - <ResearchedKnowledge /> - <KnowledgeShop /> - </Stack> - </Stack.Item> - </Stack> + <KnowledgeTree /> </Stack.Item> </Stack> ); diff --git a/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx b/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx index a996899c5288f..e64673ed5a596 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx @@ -1,8 +1,8 @@ -import { BooleanLike } from 'common/react'; import { useState } from 'react'; +import { BlockQuote, Button, Section, Stack, Tabs } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { BlockQuote, Button, Section, Stack, Tabs } from '../components'; import { Window } from '../layouts'; import { Objective, diff --git a/tgui/packages/tgui/interfaces/AntagInfoMorph.tsx b/tgui/packages/tgui/interfaces/AntagInfoMorph.tsx index e6ce213d3e72d..c4f8e5a442fec 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoMorph.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoMorph.tsx @@ -1,4 +1,5 @@ -import { BlockQuote, Stack } from '../components'; +import { BlockQuote, Stack } from 'tgui-core/components'; + import { Window } from '../layouts'; const goodstyle = { diff --git a/tgui/packages/tgui/interfaces/AntagInfoNightmare.tsx b/tgui/packages/tgui/interfaces/AntagInfoNightmare.tsx index f0b897e764545..3c27598101f89 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoNightmare.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoNightmare.tsx @@ -1,4 +1,5 @@ -import { BlockQuote, LabeledList, Section, Stack } from '../components'; +import { BlockQuote, LabeledList, Section, Stack } from 'tgui-core/components'; + import { Window } from '../layouts'; const tipstyle = { diff --git a/tgui/packages/tgui/interfaces/AntagInfoNinja.tsx b/tgui/packages/tgui/interfaces/AntagInfoNinja.tsx index 7ffc1b8413e87..c846b748b491b 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoNinja.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoNinja.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Icon, Section, Stack } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Icon, Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective, diff --git a/tgui/packages/tgui/interfaces/AntagInfoSentient.jsx b/tgui/packages/tgui/interfaces/AntagInfoSentient.jsx index d3d939b50c62d..5d3c901c9fc4a 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoSentient.jsx +++ b/tgui/packages/tgui/interfaces/AntagInfoSentient.jsx @@ -1,5 +1,6 @@ +import { BlockQuote, Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { BlockQuote, Section, Stack } from '../components'; import { Window } from '../layouts'; export const AntagInfoSentient = (props) => { diff --git a/tgui/packages/tgui/interfaces/AntagInfoSeparatist.tsx b/tgui/packages/tgui/interfaces/AntagInfoSeparatist.tsx index 1a14c6203c6f7..2999024659d35 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoSeparatist.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoSeparatist.tsx @@ -1,5 +1,6 @@ +import { Icon, Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Icon, Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective, ObjectivePrintout } from './common/Objectives'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoShade.jsx b/tgui/packages/tgui/interfaces/AntagInfoShade.jsx index 4a44a323f7d92..3929d0ca68ad5 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoShade.jsx +++ b/tgui/packages/tgui/interfaces/AntagInfoShade.jsx @@ -1,5 +1,6 @@ +import { Icon, Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Icon, Section, Stack } from '../components'; import { Window } from '../layouts'; export const AntagInfoShade = (props) => { diff --git a/tgui/packages/tgui/interfaces/AntagInfoSpy.tsx b/tgui/packages/tgui/interfaces/AntagInfoSpy.tsx index a26266bceb4d0..98ed0ae72d2eb 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoSpy.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoSpy.tsx @@ -1,5 +1,6 @@ +import { Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective, ObjectivePrintout } from './common/Objectives'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoTraitor.tsx b/tgui/packages/tgui/interfaces/AntagInfoTraitor.tsx index f574919a16d71..9d3f2369661de 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoTraitor.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoTraitor.tsx @@ -1,7 +1,13 @@ -import { BooleanLike } from 'common/react'; +import { + BlockQuote, + Button, + Dimmer, + Section, + Stack, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { BlockQuote, Button, Dimmer, Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective, ObjectivePrintout } from './common/Objectives'; diff --git a/tgui/packages/tgui/interfaces/AntagInfoWizard.tsx b/tgui/packages/tgui/interfaces/AntagInfoWizard.tsx index a2b4136f81d10..93c0c67409bc0 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoWizard.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoWizard.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Box, Section, Stack } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Box, Section, Stack } from '../components'; import { Window } from '../layouts'; import { Objective, diff --git a/tgui/packages/tgui/interfaces/Apc.jsx b/tgui/packages/tgui/interfaces/Apc.jsx index 13a8984f9d4c0..e4f3ebe94b92a 100644 --- a/tgui/packages/tgui/interfaces/Apc.jsx +++ b/tgui/packages/tgui/interfaces/Apc.jsx @@ -1,4 +1,3 @@ -import { useBackend } from '../backend'; import { Box, Button, @@ -6,7 +5,9 @@ import { NoticeBox, ProgressBar, Section, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { InterfaceLockNoticeBox } from './common/InterfaceLockNoticeBox'; diff --git a/tgui/packages/tgui/interfaces/ApcControl.jsx b/tgui/packages/tgui/interfaces/ApcControl.jsx index fb29c78032d8a..caeb5ee1bed6e 100644 --- a/tgui/packages/tgui/interfaces/ApcControl.jsx +++ b/tgui/packages/tgui/interfaces/ApcControl.jsx @@ -1,8 +1,6 @@ import { map, sortBy } from 'common/collections'; import { flow } from 'common/fp'; import { useState } from 'react'; - -import { useBackend, useLocalState } from '../backend'; import { Box, Button, @@ -12,7 +10,9 @@ import { Stack, Table, Tabs, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend, useLocalState } from '../backend'; import { Window } from '../layouts'; import { AreaCharge, powerRank } from './PowerMonitor'; diff --git a/tgui/packages/tgui/interfaces/ApprenticeContract.tsx b/tgui/packages/tgui/interfaces/ApprenticeContract.tsx index b61f9ea598421..ca89a36e1d3d7 100644 --- a/tgui/packages/tgui/interfaces/ApprenticeContract.tsx +++ b/tgui/packages/tgui/interfaces/ApprenticeContract.tsx @@ -1,6 +1,14 @@ +import { + BlockQuote, + Box, + Button, + Icon, + Section, + Stack, +} from 'tgui-core/components'; + import { resolveAsset } from '../assets'; import { useBackend } from '../backend'; -import { BlockQuote, Box, Button, Icon, Section, Stack } from '../components'; import { Window } from '../layouts'; export const ApprenticeContract = (props) => { diff --git a/tgui/packages/tgui/interfaces/Aquarium.tsx b/tgui/packages/tgui/interfaces/Aquarium.tsx index 259844d58a8d7..caa0c65d75f65 100644 --- a/tgui/packages/tgui/interfaces/Aquarium.tsx +++ b/tgui/packages/tgui/interfaces/Aquarium.tsx @@ -1,6 +1,3 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Button, Flex, @@ -8,7 +5,10 @@ import { LabeledControls, NumberInput, Section, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/AtmosAlertConsole.tsx b/tgui/packages/tgui/interfaces/AtmosAlertConsole.tsx index 1202c5d73bd5f..e27ddaa139655 100644 --- a/tgui/packages/tgui/interfaces/AtmosAlertConsole.tsx +++ b/tgui/packages/tgui/interfaces/AtmosAlertConsole.tsx @@ -1,5 +1,6 @@ +import { Button, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/AtmosControlConsole.tsx b/tgui/packages/tgui/interfaces/AtmosControlConsole.tsx index 52852e908e243..0fb88d386f964 100644 --- a/tgui/packages/tgui/interfaces/AtmosControlConsole.tsx +++ b/tgui/packages/tgui/interfaces/AtmosControlConsole.tsx @@ -1,6 +1,4 @@ import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -9,7 +7,9 @@ import { NumberInput, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { AtmosHandbookContent, diff --git a/tgui/packages/tgui/interfaces/AtmosControlPanel.jsx b/tgui/packages/tgui/interfaces/AtmosControlPanel.jsx index c39778c410f28..36d0b40e0eb29 100644 --- a/tgui/packages/tgui/interfaces/AtmosControlPanel.jsx +++ b/tgui/packages/tgui/interfaces/AtmosControlPanel.jsx @@ -1,7 +1,7 @@ import { map, sortBy } from 'common/collections'; +import { Box, Button, Flex, Section, Table } from 'tgui-core/components'; import { useBackend } from '../backend'; -import { Box, Button, Flex, Section, Table } from '../components'; import { Window } from '../layouts'; export const AtmosControlPanel = (props) => { diff --git a/tgui/packages/tgui/interfaces/AtmosFilter.tsx b/tgui/packages/tgui/interfaces/AtmosFilter.tsx index e99c09c6695c1..1a4134e615d16 100644 --- a/tgui/packages/tgui/interfaces/AtmosFilter.tsx +++ b/tgui/packages/tgui/interfaces/AtmosFilter.tsx @@ -1,7 +1,12 @@ -import { BooleanLike } from 'common/react'; +import { + Button, + LabeledList, + NumberInput, + Section, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, LabeledList, NumberInput, Section } from '../components'; import { getGasLabel } from '../constants'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/AtmosMixer.tsx b/tgui/packages/tgui/interfaces/AtmosMixer.tsx index 5f1578a69e7e4..87643c4dd596c 100644 --- a/tgui/packages/tgui/interfaces/AtmosMixer.tsx +++ b/tgui/packages/tgui/interfaces/AtmosMixer.tsx @@ -1,7 +1,12 @@ -import { BooleanLike } from 'common/react'; +import { + Button, + LabeledList, + NumberInput, + Section, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, LabeledList, NumberInput, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/AtmosPump.tsx b/tgui/packages/tgui/interfaces/AtmosPump.tsx index 002af582fb5d9..5cdd8764a6c39 100644 --- a/tgui/packages/tgui/interfaces/AtmosPump.tsx +++ b/tgui/packages/tgui/interfaces/AtmosPump.tsx @@ -1,7 +1,12 @@ -import { BooleanLike } from 'common/react'; +import { + Button, + LabeledList, + NumberInput, + Section, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, LabeledList, NumberInput, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/AtmosTempGate.tsx b/tgui/packages/tgui/interfaces/AtmosTempGate.tsx index 11c1356b7cce3..049adbdc49af5 100644 --- a/tgui/packages/tgui/interfaces/AtmosTempGate.tsx +++ b/tgui/packages/tgui/interfaces/AtmosTempGate.tsx @@ -1,7 +1,12 @@ -import { BooleanLike } from 'common/react'; +import { + Button, + LabeledList, + NumberInput, + Section, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, LabeledList, NumberInput, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/AtmosTempPump.tsx b/tgui/packages/tgui/interfaces/AtmosTempPump.tsx index 48d7234fd8713..f398f9969ccff 100644 --- a/tgui/packages/tgui/interfaces/AtmosTempPump.tsx +++ b/tgui/packages/tgui/interfaces/AtmosTempPump.tsx @@ -1,7 +1,12 @@ -import { BooleanLike } from 'common/react'; +import { + Button, + LabeledList, + NumberInput, + Section, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, LabeledList, NumberInput, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/Autolathe.tsx b/tgui/packages/tgui/interfaces/Autolathe.tsx index cf110806830fc..26b5254072684 100644 --- a/tgui/packages/tgui/interfaces/Autolathe.tsx +++ b/tgui/packages/tgui/interfaces/Autolathe.tsx @@ -1,7 +1,3 @@ -import { BooleanLike, classes } from 'common/react'; -import { capitalize } from 'common/string'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -12,7 +8,11 @@ import { Section, Stack, Tooltip, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike, classes } from 'tgui-core/react'; +import { capitalize } from 'tgui-core/string'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { DesignBrowser } from './Fabrication/DesignBrowser'; import { MaterialCostSequence } from './Fabrication/MaterialCostSequence'; diff --git a/tgui/packages/tgui/interfaces/AutomatedAnnouncement.tsx b/tgui/packages/tgui/interfaces/AutomatedAnnouncement.tsx index 6446ac5f6de34..f08ee83fd4ffd 100644 --- a/tgui/packages/tgui/interfaces/AutomatedAnnouncement.tsx +++ b/tgui/packages/tgui/interfaces/AutomatedAnnouncement.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Button, Input, LabeledList, Section } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, Input, LabeledList, Section } from '../components'; import { Window } from '../layouts'; const TOOLTIP_TEXT = ` diff --git a/tgui/packages/tgui/interfaces/AuxBaseConsole.tsx b/tgui/packages/tgui/interfaces/AuxBaseConsole.tsx index c1b966674a78d..baae00676f591 100644 --- a/tgui/packages/tgui/interfaces/AuxBaseConsole.tsx +++ b/tgui/packages/tgui/interfaces/AuxBaseConsole.tsx @@ -1,8 +1,8 @@ -import { BooleanLike } from 'common/react'; import { useState } from 'react'; +import { Button, NoticeBox, Section, Table, Tabs } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, NoticeBox, Section, Table, Tabs } from '../components'; import { Window } from '../layouts'; import { ShuttleConsoleContent } from './ShuttleConsole'; diff --git a/tgui/packages/tgui/interfaces/AvatarHelp.tsx b/tgui/packages/tgui/interfaces/AvatarHelp.tsx index d25beb6aa3621..0a57d9cc8f047 100644 --- a/tgui/packages/tgui/interfaces/AvatarHelp.tsx +++ b/tgui/packages/tgui/interfaces/AvatarHelp.tsx @@ -1,5 +1,6 @@ +import { Box, Icon, Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Box, Icon, Section, Stack } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/BankMachine.tsx b/tgui/packages/tgui/interfaces/BankMachine.tsx index c45cc424fa6b7..005b94da0aad9 100644 --- a/tgui/packages/tgui/interfaces/BankMachine.tsx +++ b/tgui/packages/tgui/interfaces/BankMachine.tsx @@ -1,13 +1,13 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { AnimatedNumber, Button, LabeledList, NoticeBox, Section, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { formatMoney } from '../format'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/BasketballPanel.tsx b/tgui/packages/tgui/interfaces/BasketballPanel.tsx index 6de429e923464..d5d2865a81aa7 100644 --- a/tgui/packages/tgui/interfaces/BasketballPanel.tsx +++ b/tgui/packages/tgui/interfaces/BasketballPanel.tsx @@ -1,5 +1,6 @@ +import { Button, NoticeBox, Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, NoticeBox, Section, Stack } from '../components'; import { Window } from '../layouts'; type BasketballPanelData = { diff --git a/tgui/packages/tgui/interfaces/BattleArcade.tsx b/tgui/packages/tgui/interfaces/BattleArcade.tsx index a400628575f8b..d455bfe8e528e 100644 --- a/tgui/packages/tgui/interfaces/BattleArcade.tsx +++ b/tgui/packages/tgui/interfaces/BattleArcade.tsx @@ -1,6 +1,7 @@ +import { Box, Button, Image, Section } from 'tgui-core/components'; + import { resolveAsset } from '../assets'; import { useBackend } from '../backend'; -import { Box, Button, Image, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/Biogenerator.tsx b/tgui/packages/tgui/interfaces/Biogenerator.tsx index 2459740439627..f87eb73d903f9 100644 --- a/tgui/packages/tgui/interfaces/Biogenerator.tsx +++ b/tgui/packages/tgui/interfaces/Biogenerator.tsx @@ -1,8 +1,4 @@ -import { BooleanLike } from 'common/react'; -import { classes } from 'common/react'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -15,7 +11,11 @@ import { Stack, Table, Tabs, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; +import { classes } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/BlackMarketUplink.tsx b/tgui/packages/tgui/interfaces/BlackMarketUplink.tsx index 0f2915f5a0df6..51d397d500cd8 100644 --- a/tgui/packages/tgui/interfaces/BlackMarketUplink.tsx +++ b/tgui/packages/tgui/interfaces/BlackMarketUplink.tsx @@ -1,4 +1,3 @@ -import { useBackend } from '../backend'; import { AnimatedNumber, Box, @@ -7,7 +6,9 @@ import { Section, Stack, Tabs, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { formatMoney } from '../format'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/BloodFilter.tsx b/tgui/packages/tgui/interfaces/BloodFilter.tsx index 4e1d553edfd0f..57ac279428731 100644 --- a/tgui/packages/tgui/interfaces/BloodFilter.tsx +++ b/tgui/packages/tgui/interfaces/BloodFilter.tsx @@ -1,5 +1,6 @@ +import { Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Stack } from '../components'; import { Window } from '../layouts'; import { ChemFilterPane } from './ChemFilter'; diff --git a/tgui/packages/tgui/interfaces/Blueprints.tsx b/tgui/packages/tgui/interfaces/Blueprints.tsx index 644412a9a777e..2a2369188c445 100644 --- a/tgui/packages/tgui/interfaces/Blueprints.tsx +++ b/tgui/packages/tgui/interfaces/Blueprints.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Box, Button, Divider, Section, Stack } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Box, Button, Divider, Section, Stack } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/BluespaceArtillery.tsx b/tgui/packages/tgui/interfaces/BluespaceArtillery.tsx index dbaf0caa0b264..004407ed30ce2 100644 --- a/tgui/packages/tgui/interfaces/BluespaceArtillery.tsx +++ b/tgui/packages/tgui/interfaces/BluespaceArtillery.tsx @@ -1,7 +1,13 @@ -import { BooleanLike } from 'common/react'; +import { + Box, + Button, + LabeledList, + NoticeBox, + Section, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Box, Button, LabeledList, NoticeBox, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/BluespaceLocator.tsx b/tgui/packages/tgui/interfaces/BluespaceLocator.tsx index 9b08accd34124..5d8f177b4adee 100644 --- a/tgui/packages/tgui/interfaces/BluespaceLocator.tsx +++ b/tgui/packages/tgui/interfaces/BluespaceLocator.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; +import { Icon, ProgressBar, Tabs } from 'tgui-core/components'; import { useBackend } from '../backend'; -import { Icon, ProgressBar, Tabs } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/BluespaceSender.tsx b/tgui/packages/tgui/interfaces/BluespaceSender.tsx index 2f94af4cfaa9d..823090eeb4eb6 100644 --- a/tgui/packages/tgui/interfaces/BluespaceSender.tsx +++ b/tgui/packages/tgui/interfaces/BluespaceSender.tsx @@ -1,8 +1,4 @@ import { filter, sortBy } from 'common/collections'; -import { toFixed } from 'common/math'; -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -12,7 +8,11 @@ import { ProgressBar, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { toFixed } from 'tgui-core/math'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { getGasColor } from '../constants'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/BluespaceVendor.tsx b/tgui/packages/tgui/interfaces/BluespaceVendor.tsx index 7b9619de26e55..76f6594e45565 100644 --- a/tgui/packages/tgui/interfaces/BluespaceVendor.tsx +++ b/tgui/packages/tgui/interfaces/BluespaceVendor.tsx @@ -1,15 +1,15 @@ import { filter, sortBy } from 'common/collections'; -import { toFixed } from 'common/math'; -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Button, NumberInput, ProgressBar, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { toFixed } from 'tgui-core/math'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Table, TableCell, TableRow } from '../components/Table'; import { getGasColor } from '../constants'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/BorgHypo.tsx b/tgui/packages/tgui/interfaces/BorgHypo.tsx index 8fa8d2c8131b3..bafa2fc302c5d 100644 --- a/tgui/packages/tgui/interfaces/BorgHypo.tsx +++ b/tgui/packages/tgui/interfaces/BorgHypo.tsx @@ -1,7 +1,13 @@ -import { toFixed } from 'common/math'; +import { + Button, + Flex, + NoticeBox, + ProgressBar, + Section, +} from 'tgui-core/components'; +import { toFixed } from 'tgui-core/math'; import { useBackend } from '../backend'; -import { Button, Flex, NoticeBox, ProgressBar, Section } from '../components'; import { Window } from '../layouts'; type BorgHypoContext = { diff --git a/tgui/packages/tgui/interfaces/BorgPanel.jsx b/tgui/packages/tgui/interfaces/BorgPanel.jsx index 96b536af0aa81..b9ef7ed45c5b6 100644 --- a/tgui/packages/tgui/interfaces/BorgPanel.jsx +++ b/tgui/packages/tgui/interfaces/BorgPanel.jsx @@ -1,5 +1,12 @@ +import { + Box, + Button, + LabeledList, + ProgressBar, + Section, +} from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Box, Button, LabeledList, ProgressBar, Section } from '../components'; import { Window } from '../layouts'; export const BorgPanel = (props) => { diff --git a/tgui/packages/tgui/interfaces/BorgShaker.tsx b/tgui/packages/tgui/interfaces/BorgShaker.tsx index c77bf32ea8c38..b16a68a39181c 100644 --- a/tgui/packages/tgui/interfaces/BorgShaker.tsx +++ b/tgui/packages/tgui/interfaces/BorgShaker.tsx @@ -1,5 +1,6 @@ +import { Button, NoticeBox, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, NoticeBox, Section } from '../components'; import { Window } from '../layouts'; type BorgShakerContext = { diff --git a/tgui/packages/tgui/interfaces/BotAnnouncement.tsx b/tgui/packages/tgui/interfaces/BotAnnouncement.tsx index 3292e81a0e75f..4064df6ffd6f0 100644 --- a/tgui/packages/tgui/interfaces/BotAnnouncement.tsx +++ b/tgui/packages/tgui/interfaces/BotAnnouncement.tsx @@ -1,7 +1,4 @@ -import { createSearch } from 'common/string'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -11,7 +8,10 @@ import { Section, Stack, Tabs, -} from '../components'; +} from 'tgui-core/components'; +import { createSearch } from 'tgui-core/string'; + +import { useBackend } from '../backend'; import { RADIO_CHANNELS } from '../constants'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/BountyBoard.tsx b/tgui/packages/tgui/interfaces/BountyBoard.tsx index 2f271bfb4f9de..9b892b3ca7023 100644 --- a/tgui/packages/tgui/interfaces/BountyBoard.tsx +++ b/tgui/packages/tgui/interfaces/BountyBoard.tsx @@ -1,4 +1,3 @@ -import { useBackend } from '../backend'; import { BlockQuote, Box, @@ -9,7 +8,9 @@ import { Section, Stack, TextArea, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { formatMoney } from '../format'; import { Window } from '../layouts'; import { UserDetails } from './Vending'; diff --git a/tgui/packages/tgui/interfaces/BrigTimer.tsx b/tgui/packages/tgui/interfaces/BrigTimer.tsx index 18527b9aab470..2069b5a8626e5 100644 --- a/tgui/packages/tgui/interfaces/BrigTimer.tsx +++ b/tgui/packages/tgui/interfaces/BrigTimer.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Button, Section } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/CTFPanel.tsx b/tgui/packages/tgui/interfaces/CTFPanel.tsx index b4760bb619d87..7dbfa75296401 100644 --- a/tgui/packages/tgui/interfaces/CTFPanel.tsx +++ b/tgui/packages/tgui/interfaces/CTFPanel.tsx @@ -1,6 +1,7 @@ +import { Box, Button, Flex, Section, Stack } from 'tgui-core/components'; + import { BooleanLike } from '../../common/react'; import { useBackend } from '../backend'; -import { Box, Button, Flex, Section, Stack } from '../components'; import { Window } from '../layouts'; type CTFPanelData = diff --git a/tgui/packages/tgui/interfaces/CameraConsole.tsx b/tgui/packages/tgui/interfaces/CameraConsole.tsx index 3dafe1240dfe3..b47f043e3eb5f 100644 --- a/tgui/packages/tgui/interfaces/CameraConsole.tsx +++ b/tgui/packages/tgui/interfaces/CameraConsole.tsx @@ -1,9 +1,5 @@ import { filter, sort } from 'common/collections'; -import { BooleanLike, classes } from 'common/react'; -import { createSearch } from 'common/string'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Button, ByondUi, @@ -11,7 +7,11 @@ import { NoticeBox, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike, classes } from 'tgui-core/react'; +import { createSearch } from 'tgui-core/string'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/Canister.tsx b/tgui/packages/tgui/interfaces/Canister.tsx index f650085df463e..7a2d63f734542 100644 --- a/tgui/packages/tgui/interfaces/Canister.tsx +++ b/tgui/packages/tgui/interfaces/Canister.tsx @@ -1,7 +1,3 @@ -import { toFixed } from 'common/math'; -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -13,7 +9,11 @@ import { RoundGauge, Section, Tooltip, -} from '../components'; +} from 'tgui-core/components'; +import { toFixed } from 'tgui-core/math'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { formatSiUnit } from '../format'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/Canvas.tsx b/tgui/packages/tgui/interfaces/Canvas.tsx index 648418e7abd06..3621c12eb3cb7 100644 --- a/tgui/packages/tgui/interfaces/Canvas.tsx +++ b/tgui/packages/tgui/interfaces/Canvas.tsx @@ -1,9 +1,9 @@ -import { Color } from 'common/color'; -import { decodeHtmlEntities } from 'common/string'; import { Component, createRef, RefObject } from 'react'; +import { Color } from 'tgui-core/color'; +import { Box, Button, Flex, Icon, Tooltip } from 'tgui-core/components'; +import { decodeHtmlEntities } from 'tgui-core/string'; import { useBackend } from '../backend'; -import { Box, Button, Flex, Icon, Tooltip } from '../components'; import { Window } from '../layouts'; const LEFT_CLICK = 0; diff --git a/tgui/packages/tgui/interfaces/CargoExpress.tsx b/tgui/packages/tgui/interfaces/CargoExpress.tsx index 83947b5adc473..9115695645516 100644 --- a/tgui/packages/tgui/interfaces/CargoExpress.tsx +++ b/tgui/packages/tgui/interfaces/CargoExpress.tsx @@ -1,13 +1,13 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { AnimatedNumber, Box, Button, LabeledList, Section, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { CargoCatalog } from './Cargo/CargoCatalog'; import { InterfaceLockNoticeBox } from './common/InterfaceLockNoticeBox'; diff --git a/tgui/packages/tgui/interfaces/CargoHoldTerminal.tsx b/tgui/packages/tgui/interfaces/CargoHoldTerminal.tsx index 6a392a3840208..818706d57e75b 100644 --- a/tgui/packages/tgui/interfaces/CargoHoldTerminal.tsx +++ b/tgui/packages/tgui/interfaces/CargoHoldTerminal.tsx @@ -1,13 +1,13 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { AnimatedNumber, Box, Button, LabeledList, Section, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/CellularEmporium.tsx b/tgui/packages/tgui/interfaces/CellularEmporium.tsx index 77c3943cddf58..a766bcae3e576 100644 --- a/tgui/packages/tgui/interfaces/CellularEmporium.tsx +++ b/tgui/packages/tgui/interfaces/CellularEmporium.tsx @@ -1,7 +1,4 @@ import { useState } from 'react'; - -import { BooleanLike } from '../../common/react'; -import { useBackend } from '../backend'; import { Box, Button, @@ -11,7 +8,10 @@ import { NoticeBox, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; + +import { BooleanLike } from '../../common/react'; +import { useBackend } from '../backend'; import { Window } from '../layouts'; type typePath = string; diff --git a/tgui/packages/tgui/interfaces/Changelog.jsx b/tgui/packages/tgui/interfaces/Changelog.jsx index 8af62faa84859..7c1ed8b933c47 100644 --- a/tgui/packages/tgui/interfaces/Changelog.jsx +++ b/tgui/packages/tgui/interfaces/Changelog.jsx @@ -1,10 +1,6 @@ -import { classes } from 'common/react'; import dateformat from 'dateformat'; import yaml from 'js-yaml'; import { Component, Fragment } from 'react'; - -import { resolveAsset } from '../assets'; -import { useBackend } from '../backend'; import { Box, Button, @@ -13,7 +9,11 @@ import { Section, Stack, Table, -} from '../components'; +} from 'tgui-core/components'; +import { classes } from 'tgui-core/react'; + +import { resolveAsset } from '../assets'; +import { useBackend } from '../backend'; import { Window } from '../layouts'; const icons = { diff --git a/tgui/packages/tgui/interfaces/CheckboxInput.tsx b/tgui/packages/tgui/interfaces/CheckboxInput.tsx index ab98a8a1f02a2..6ff49847df41f 100644 --- a/tgui/packages/tgui/interfaces/CheckboxInput.tsx +++ b/tgui/packages/tgui/interfaces/CheckboxInput.tsx @@ -1,7 +1,4 @@ -import { createSearch, decodeHtmlEntities } from 'common/string'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Button, Icon, @@ -11,7 +8,10 @@ import { Stack, Table, Tooltip, -} from '../components'; +} from 'tgui-core/components'; +import { createSearch, decodeHtmlEntities } from 'tgui-core/string'; + +import { useBackend } from '../backend'; import { TableCell, TableRow } from '../components/Table'; import { Window } from '../layouts'; import { InputButtons } from './common/InputButtons'; diff --git a/tgui/packages/tgui/interfaces/ChemAcclimator.tsx b/tgui/packages/tgui/interfaces/ChemAcclimator.tsx index 622b7055ddf1b..f400030bf23a8 100644 --- a/tgui/packages/tgui/interfaces/ChemAcclimator.tsx +++ b/tgui/packages/tgui/interfaces/ChemAcclimator.tsx @@ -1,7 +1,12 @@ -import { BooleanLike } from 'common/react'; +import { + Button, + LabeledList, + NumberInput, + Section, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, LabeledList, NumberInput, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/ChemDebugSynthesizer.tsx b/tgui/packages/tgui/interfaces/ChemDebugSynthesizer.tsx index 06af6c1727f03..b0a5b7a7681af 100644 --- a/tgui/packages/tgui/interfaces/ChemDebugSynthesizer.tsx +++ b/tgui/packages/tgui/interfaces/ChemDebugSynthesizer.tsx @@ -1,5 +1,6 @@ +import { Button, NumberInput, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, NumberInput, Section } from '../components'; import { Window } from '../layouts'; import { Beaker, BeakerDisplay } from './common/BeakerDisplay'; diff --git a/tgui/packages/tgui/interfaces/ChemDispenser.tsx b/tgui/packages/tgui/interfaces/ChemDispenser.tsx index 2bb50df59de26..421c9353e0983 100644 --- a/tgui/packages/tgui/interfaces/ChemDispenser.tsx +++ b/tgui/packages/tgui/interfaces/ChemDispenser.tsx @@ -1,8 +1,4 @@ -import { BooleanLike } from 'common/react'; -import { toTitleCase } from 'common/string'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -10,7 +6,11 @@ import { LabeledList, ProgressBar, Section, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; +import { toTitleCase } from 'tgui-core/string'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { Beaker, BeakerDisplay } from './common/BeakerDisplay'; diff --git a/tgui/packages/tgui/interfaces/ChemFilter.tsx b/tgui/packages/tgui/interfaces/ChemFilter.tsx index 7615ec7de7b6c..f9ccb78fcb912 100644 --- a/tgui/packages/tgui/interfaces/ChemFilter.tsx +++ b/tgui/packages/tgui/interfaces/ChemFilter.tsx @@ -1,7 +1,7 @@ import { Fragment } from 'react'; +import { Button, Section, Stack } from 'tgui-core/components'; import { useBackend } from '../backend'; -import { Button, Section, Stack } from '../components'; import { CssColor } from '../constants'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/ChemHeater.tsx b/tgui/packages/tgui/interfaces/ChemHeater.tsx index adf8020ba21b5..08df90ad4bd28 100644 --- a/tgui/packages/tgui/interfaces/ChemHeater.tsx +++ b/tgui/packages/tgui/interfaces/ChemHeater.tsx @@ -1,6 +1,3 @@ -import { round, toFixed } from '../../common/math'; -import { BooleanLike } from '../../common/react'; -import { useBackend } from '../backend'; import { AnimatedNumber, Box, @@ -12,7 +9,11 @@ import { RoundGauge, Section, Table, -} from '../components'; +} from 'tgui-core/components'; + +import { round, toFixed } from '../../common/math'; +import { BooleanLike } from '../../common/react'; +import { useBackend } from '../backend'; import { COLORS } from '../constants'; import { Window } from '../layouts'; import { Beaker, BeakerSectionDisplay } from './common/BeakerDisplay'; diff --git a/tgui/packages/tgui/interfaces/ChemMaster.tsx b/tgui/packages/tgui/interfaces/ChemMaster.tsx index c23ca29f8d9ec..62692588c6516 100644 --- a/tgui/packages/tgui/interfaces/ChemMaster.tsx +++ b/tgui/packages/tgui/interfaces/ChemMaster.tsx @@ -1,8 +1,4 @@ -import { BooleanLike, classes } from 'common/react'; -import { capitalize } from 'common/string'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { AnimatedNumber, Box, @@ -16,7 +12,11 @@ import { Stack, Table, Tooltip, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike, classes } from 'tgui-core/react'; +import { capitalize } from 'tgui-core/string'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { Beaker, BeakerReagent } from './common/BeakerDisplay'; diff --git a/tgui/packages/tgui/interfaces/ChemMixingChamber.tsx b/tgui/packages/tgui/interfaces/ChemMixingChamber.tsx index a82fad9d465ea..765862ab4b86c 100644 --- a/tgui/packages/tgui/interfaces/ChemMixingChamber.tsx +++ b/tgui/packages/tgui/interfaces/ChemMixingChamber.tsx @@ -1,8 +1,4 @@ -import { round, toFixed } from 'common/math'; -import { BooleanLike } from 'common/react'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { AnimatedNumber, Box, @@ -10,7 +6,11 @@ import { NumberInput, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { round, toFixed } from 'tgui-core/math'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Reagent = { diff --git a/tgui/packages/tgui/interfaces/ChemPress.tsx b/tgui/packages/tgui/interfaces/ChemPress.tsx index 58e578f8027a4..ce54f04c8a562 100644 --- a/tgui/packages/tgui/interfaces/ChemPress.tsx +++ b/tgui/packages/tgui/interfaces/ChemPress.tsx @@ -1,7 +1,4 @@ -import { capitalizeAll } from 'common/string'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -9,7 +6,10 @@ import { LabeledList, NumberInput, Section, -} from '../components'; +} from 'tgui-core/components'; +import { capitalizeAll } from 'tgui-core/string'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Product = { diff --git a/tgui/packages/tgui/interfaces/ChemReactionChamber.tsx b/tgui/packages/tgui/interfaces/ChemReactionChamber.tsx index 8104065c88f12..cdc2b6fac97b9 100644 --- a/tgui/packages/tgui/interfaces/ChemReactionChamber.tsx +++ b/tgui/packages/tgui/interfaces/ChemReactionChamber.tsx @@ -1,7 +1,4 @@ -import { round, toFixed } from 'common/math'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { AnimatedNumber, Box, @@ -11,7 +8,10 @@ import { RoundGauge, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { round, toFixed } from 'tgui-core/math'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { MixingData } from './ChemMixingChamber'; diff --git a/tgui/packages/tgui/interfaces/ChemRecipeDebug.tsx b/tgui/packages/tgui/interfaces/ChemRecipeDebug.tsx index 5ebdd7d1e0832..4fe2340757e3c 100644 --- a/tgui/packages/tgui/interfaces/ChemRecipeDebug.tsx +++ b/tgui/packages/tgui/interfaces/ChemRecipeDebug.tsx @@ -1,7 +1,4 @@ -import { BooleanLike } from 'common/react'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -11,7 +8,10 @@ import { Section, Stack, Tabs, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { ActiveReaction, ReactionDisplay } from './ChemHeater'; import { Beaker, BeakerSectionDisplay } from './common/BeakerDisplay'; diff --git a/tgui/packages/tgui/interfaces/ChemSeparator.tsx b/tgui/packages/tgui/interfaces/ChemSeparator.tsx index e6be430466f70..6a6a83a771baa 100644 --- a/tgui/packages/tgui/interfaces/ChemSeparator.tsx +++ b/tgui/packages/tgui/interfaces/ChemSeparator.tsx @@ -1,6 +1,3 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -8,7 +5,10 @@ import { LabeledList, ProgressBar, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type RegHolderData = { diff --git a/tgui/packages/tgui/interfaces/ChemSplitter.tsx b/tgui/packages/tgui/interfaces/ChemSplitter.tsx index 75089e9a96151..688cfa28020e9 100644 --- a/tgui/packages/tgui/interfaces/ChemSplitter.tsx +++ b/tgui/packages/tgui/interfaces/ChemSplitter.tsx @@ -1,7 +1,7 @@ -import { toFixed } from 'common/math'; +import { LabeledList, NumberInput, Section } from 'tgui-core/components'; +import { toFixed } from 'tgui-core/math'; import { useBackend } from '../backend'; -import { LabeledList, NumberInput, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/ChemSynthesizer.tsx b/tgui/packages/tgui/interfaces/ChemSynthesizer.tsx index 898ac07b2928b..440460c5d1ce0 100644 --- a/tgui/packages/tgui/interfaces/ChemSynthesizer.tsx +++ b/tgui/packages/tgui/interfaces/ChemSynthesizer.tsx @@ -1,7 +1,7 @@ -import { toFixed } from 'common/math'; +import { Box, Button, Section } from 'tgui-core/components'; +import { toFixed } from 'tgui-core/math'; import { useBackend } from '../backend'; -import { Box, Button, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/CircuitAccessChecker.tsx b/tgui/packages/tgui/interfaces/CircuitAccessChecker.tsx index f37414a86f52f..baddb0ea65efd 100644 --- a/tgui/packages/tgui/interfaces/CircuitAccessChecker.tsx +++ b/tgui/packages/tgui/interfaces/CircuitAccessChecker.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Button, LabeledList } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, LabeledList } from '../components'; import { Window } from '../layouts'; import { AccessConfig, Region } from './common/AccessConfig'; diff --git a/tgui/packages/tgui/interfaces/CircuitAdminPanel.tsx b/tgui/packages/tgui/interfaces/CircuitAdminPanel.tsx index e95c7714dcd7c..8b4628bb90005 100644 --- a/tgui/packages/tgui/interfaces/CircuitAdminPanel.tsx +++ b/tgui/packages/tgui/interfaces/CircuitAdminPanel.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Button, Stack, Table } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, Stack, Table } from '../components'; import { Window } from '../layouts'; type CircuitAdminPanelData = { diff --git a/tgui/packages/tgui/interfaces/CircuitModule.jsx b/tgui/packages/tgui/interfaces/CircuitModule.jsx index bbb323e5e5a7e..9aa3a61664424 100644 --- a/tgui/packages/tgui/interfaces/CircuitModule.jsx +++ b/tgui/packages/tgui/interfaces/CircuitModule.jsx @@ -1,5 +1,6 @@ +import { Button, Dropdown, Input, Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, Dropdown, Input, Section, Stack } from '../components'; import { Window } from '../layouts'; export const CircuitModule = (props) => { diff --git a/tgui/packages/tgui/interfaces/CircuitSignalHandler.tsx b/tgui/packages/tgui/interfaces/CircuitSignalHandler.tsx index 66d04644391c3..43e4895d06bbe 100644 --- a/tgui/packages/tgui/interfaces/CircuitSignalHandler.tsx +++ b/tgui/packages/tgui/interfaces/CircuitSignalHandler.tsx @@ -1,8 +1,15 @@ -import { BooleanLike } from 'common/react'; import { Component, KeyboardEvent, MouseEvent } from 'react'; +import { + Box, + Button, + Dropdown, + Input, + Section, + Stack, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Box, Button, Dropdown, Input, Section, Stack } from '../components'; import { Window } from '../layouts'; type Response = { diff --git a/tgui/packages/tgui/interfaces/CivCargoHoldTerminal.jsx b/tgui/packages/tgui/interfaces/CivCargoHoldTerminal.jsx index 438030e39472c..a1cceecc7d77f 100644 --- a/tgui/packages/tgui/interfaces/CivCargoHoldTerminal.jsx +++ b/tgui/packages/tgui/interfaces/CivCargoHoldTerminal.jsx @@ -1,4 +1,3 @@ -import { useBackend } from '../backend'; import { Box, Button, @@ -6,7 +5,9 @@ import { LabeledList, NoticeBox, Section, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; export const CivCargoHoldTerminal = (props) => { diff --git a/tgui/packages/tgui/interfaces/Clipboard.tsx b/tgui/packages/tgui/interfaces/Clipboard.tsx index 67cb86a1a984a..119b0e800429d 100644 --- a/tgui/packages/tgui/interfaces/Clipboard.tsx +++ b/tgui/packages/tgui/interfaces/Clipboard.tsx @@ -1,6 +1,3 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -8,7 +5,10 @@ import { Flex, LabeledList, Section, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/CodexGigas.tsx b/tgui/packages/tgui/interfaces/CodexGigas.tsx index cd0f3dc55e0bf..581341fb67acb 100644 --- a/tgui/packages/tgui/interfaces/CodexGigas.tsx +++ b/tgui/packages/tgui/interfaces/CodexGigas.tsx @@ -1,5 +1,6 @@ +import { Button, LabeledList, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, LabeledList, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/ColorBlindTester.tsx b/tgui/packages/tgui/interfaces/ColorBlindTester.tsx index 3f33edcedc78b..be0b89cd0e6a1 100644 --- a/tgui/packages/tgui/interfaces/ColorBlindTester.tsx +++ b/tgui/packages/tgui/interfaces/ColorBlindTester.tsx @@ -1,5 +1,6 @@ +import { Box, Button, NoticeBox, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Box, Button, NoticeBox, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/ColorMatrixEditor.tsx b/tgui/packages/tgui/interfaces/ColorMatrixEditor.tsx index edf75dcf161d9..c0d515b4d2726 100644 --- a/tgui/packages/tgui/interfaces/ColorMatrixEditor.tsx +++ b/tgui/packages/tgui/interfaces/ColorMatrixEditor.tsx @@ -1,6 +1,3 @@ -import { toFixed } from 'common/math'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -8,7 +5,10 @@ import { NumberInput, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { toFixed } from 'tgui-core/math'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/CommandReport.tsx b/tgui/packages/tgui/interfaces/CommandReport.tsx index 9185bebb5b4cd..8153ab81c7266 100644 --- a/tgui/packages/tgui/interfaces/CommandReport.tsx +++ b/tgui/packages/tgui/interfaces/CommandReport.tsx @@ -1,6 +1,4 @@ import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -9,7 +7,9 @@ import { Section, Stack, TextArea, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/CommunicationsConsole.jsx b/tgui/packages/tgui/interfaces/CommunicationsConsole.jsx index 48a7d98a40155..7affe96bf198b 100644 --- a/tgui/packages/tgui/interfaces/CommunicationsConsole.jsx +++ b/tgui/packages/tgui/interfaces/CommunicationsConsole.jsx @@ -1,8 +1,5 @@ import { sortBy } from 'common/collections'; -import { capitalize } from 'common/string'; import { useState } from 'react'; - -import { useBackend, useLocalState } from '../backend'; import { Blink, Box, @@ -13,7 +10,10 @@ import { Modal, Section, TextArea, -} from '../components'; +} from 'tgui-core/components'; +import { capitalize } from 'tgui-core/string'; + +import { useBackend, useLocalState } from '../backend'; import { Window } from '../layouts'; import { sanitizeText } from '../sanitize'; import { StatusDisplayControls } from './common/StatusDisplayControls'; diff --git a/tgui/packages/tgui/interfaces/ComponentPrinter.tsx b/tgui/packages/tgui/interfaces/ComponentPrinter.tsx index 7c8f16a8c5350..9baf102e9513a 100644 --- a/tgui/packages/tgui/interfaces/ComponentPrinter.tsx +++ b/tgui/packages/tgui/interfaces/ComponentPrinter.tsx @@ -1,7 +1,7 @@ -import { classes } from 'common/react'; +import { Box, Icon, Section, Stack, Tooltip } from 'tgui-core/components'; +import { classes } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Box, Icon, Section, Stack, Tooltip } from '../components'; import { Window } from '../layouts'; import { DesignBrowser } from './Fabrication/DesignBrowser'; import { MaterialAccessBar } from './Fabrication/MaterialAccessBar'; diff --git a/tgui/packages/tgui/interfaces/Crayon.tsx b/tgui/packages/tgui/interfaces/Crayon.tsx index 27a36f745cd39..333f02f47cd50 100644 --- a/tgui/packages/tgui/interfaces/Crayon.tsx +++ b/tgui/packages/tgui/interfaces/Crayon.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Button, LabeledList, Section } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Button, LabeledList, Section } from '../components'; import { Window } from '../layouts'; import { ColorItem } from './RapidPipeDispenser'; diff --git a/tgui/packages/tgui/interfaces/CrewConsole.tsx b/tgui/packages/tgui/interfaces/CrewConsole.tsx index 52af3eaff4320..9c15a551bb0ea 100644 --- a/tgui/packages/tgui/interfaces/CrewConsole.tsx +++ b/tgui/packages/tgui/interfaces/CrewConsole.tsx @@ -1,9 +1,9 @@ -import { BooleanLike } from 'common/react'; -import { createSearch } from 'common/string'; import { useState } from 'react'; +import { Box, Button, Icon, Input, Section, Table } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; +import { createSearch } from 'tgui-core/string'; import { useBackend } from '../backend'; -import { Box, Button, Icon, Input, Section, Table } from '../components'; import { COLORS } from '../constants'; import { Window } from '../layouts'; @@ -26,7 +26,7 @@ const SORT_NAMES = { const STAT_LIVING = 0; const STAT_DEAD = 4; -const SORT_OPTIONS = ['ijob', 'name', 'area', 'health']; +const SORT_OPTIONS = ['health', 'ijob', 'name', 'area']; const jobIsHead = (jobId: number) => jobId % 10 === 0; @@ -69,10 +69,10 @@ const statToIcon = (life_status: number) => { }; 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; + 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; }; diff --git a/tgui/packages/tgui/interfaces/CrewManifest.jsx b/tgui/packages/tgui/interfaces/CrewManifest.jsx index d550260087bea..4039eb8fc3a2f 100644 --- a/tgui/packages/tgui/interfaces/CrewManifest.jsx +++ b/tgui/packages/tgui/interfaces/CrewManifest.jsx @@ -1,7 +1,7 @@ -import { classes } from 'common/react'; +import { Icon, Section, Table, Tooltip } from 'tgui-core/components'; +import { classes } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Icon, Section, Table, Tooltip } from '../components'; import { Window } from '../layouts'; const commandJobs = [ diff --git a/tgui/packages/tgui/interfaces/CrossingSignal.tsx b/tgui/packages/tgui/interfaces/CrossingSignal.tsx index e0585318649a0..ecdc52f6a1d72 100644 --- a/tgui/packages/tgui/interfaces/CrossingSignal.tsx +++ b/tgui/packages/tgui/interfaces/CrossingSignal.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { LabeledList, Section } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { LabeledList, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/Cryo.tsx b/tgui/packages/tgui/interfaces/Cryo.tsx index 2999f4c04d8de..a4c2d36801733 100644 --- a/tgui/packages/tgui/interfaces/Cryo.tsx +++ b/tgui/packages/tgui/interfaces/Cryo.tsx @@ -1,14 +1,14 @@ -import { round } from 'common/math'; -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { AnimatedNumber, Button, LabeledList, ProgressBar, Section, -} from '../components'; +} from 'tgui-core/components'; +import { round } from 'tgui-core/math'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { Beaker, BeakerSectionDisplay } from './common/BeakerDisplay'; diff --git a/tgui/packages/tgui/interfaces/Crystallizer.tsx b/tgui/packages/tgui/interfaces/Crystallizer.tsx index 6cdd0bb86a50b..213fef342a655 100644 --- a/tgui/packages/tgui/interfaces/Crystallizer.tsx +++ b/tgui/packages/tgui/interfaces/Crystallizer.tsx @@ -1,7 +1,3 @@ -import { toFixed } from 'common/math'; -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -9,7 +5,11 @@ import { NumberInput, ProgressBar, Section, -} from '../components'; +} from 'tgui-core/components'; +import { toFixed } from 'tgui-core/math'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { getGasColor } from '../constants'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/CyborgBootDebug.jsx b/tgui/packages/tgui/interfaces/CyborgBootDebug.jsx index 914d4373ea082..d023240c7e1fa 100644 --- a/tgui/packages/tgui/interfaces/CyborgBootDebug.jsx +++ b/tgui/packages/tgui/interfaces/CyborgBootDebug.jsx @@ -1,5 +1,6 @@ +import { Button, Input, LabeledList, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, Input, LabeledList, Section } from '../components'; import { Window } from '../layouts'; const TOOLTIP_NAME = ` diff --git a/tgui/packages/tgui/interfaces/Fabricator.tsx b/tgui/packages/tgui/interfaces/Fabricator.tsx index 0511907618023..9c50cf973b31b 100644 --- a/tgui/packages/tgui/interfaces/Fabricator.tsx +++ b/tgui/packages/tgui/interfaces/Fabricator.tsx @@ -1,6 +1,4 @@ import { classes } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -9,7 +7,9 @@ import { Section, Stack, Tooltip, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { DesignBrowser } from './Fabrication/DesignBrowser'; import { MaterialAccessBar } from './Fabrication/MaterialAccessBar'; diff --git a/tgui/packages/tgui/interfaces/FishCatalog.tsx b/tgui/packages/tgui/interfaces/FishCatalog.tsx index 7bb85054fb002..34ee7a629b2c8 100644 --- a/tgui/packages/tgui/interfaces/FishCatalog.tsx +++ b/tgui/packages/tgui/interfaces/FishCatalog.tsx @@ -27,6 +27,7 @@ type FishInfo = { weight: string; size: string; icon: string; + beauty: string; }; type FishCatalogData = { @@ -93,6 +94,9 @@ export const FishCatalog = (props) => { <LabeledList.Item label="Average weight"> {currentFish.weight} g </LabeledList.Item> + <LabeledList.Item label="Aquarium Beauty Score"> + {currentFish.beauty} + </LabeledList.Item> <LabeledList.Item label="Fishing and Aquarium tips"> <LabeledList> <LabeledList.Item label="Fishing locations"> diff --git a/tgui/packages/tgui/interfaces/Flatpacker.tsx b/tgui/packages/tgui/interfaces/Flatpacker.tsx index 43fed9e49e4b9..157a30a375b41 100644 --- a/tgui/packages/tgui/interfaces/Flatpacker.tsx +++ b/tgui/packages/tgui/interfaces/Flatpacker.tsx @@ -39,7 +39,7 @@ export const Flatpacker = (props: any) => { const { SHEET_MATERIAL_AMOUNT, materials, design, busy } = data; return ( - <Window width={400} height={445} title="Flatpacker"> + <Window width={670} height={400} title="Flatpacker"> <Window.Content> {!!busy && ( <Dimmer @@ -74,6 +74,7 @@ export const Flatpacker = (props: any) => { tooltipPosition="left" height="37px" width="37px" + disabled={!design} onClick={() => act('ejectBoard')} > <Icon name="eject" size={1.5} mt="0.8rem" ml="0rem" /> @@ -167,22 +168,28 @@ const CostPreview = (props: CostPreviewProps) => { const { materials, SHEET_MATERIAL_AMOUNT } = props; return ( - <Section fill> + <Section fill scrollable> {materials ? ( <Table> {materials.map((material) => ( <Table.Row key={material.name} className="candystripe"> <Table.Cell verticalAlign="middle"> - <MaterialIcon - materialName={material.name} - sheets={material.amount / SHEET_MATERIAL_AMOUNT} - /> + <div style={{ width: '200px' }}> + <MaterialIcon + materialName={material.name} + sheets={material.amount / SHEET_MATERIAL_AMOUNT} + /> + </div> </Table.Cell> <TableCell verticalAlign="middle"> - {toTitleCase(material.name)} + <div style={{ width: '200px' }}> + {toTitleCase(material.name)} + </div> </TableCell> <Table.Cell verticalAlign="middle"> - ×{(material.amount / SHEET_MATERIAL_AMOUNT).toFixed(2)} + <div style={{ width: '200px' }}> + {(material.amount / SHEET_MATERIAL_AMOUNT).toFixed(2)} + </div> </Table.Cell> </Table.Row> ))} diff --git a/tgui/packages/tgui/interfaces/Microscope.jsx b/tgui/packages/tgui/interfaces/Microscope.jsx deleted file mode 100644 index 74591fce7d3c3..0000000000000 --- a/tgui/packages/tgui/interfaces/Microscope.jsx +++ /dev/null @@ -1,91 +0,0 @@ -import { useBackend, useSharedState } from '../backend'; -import { Button, LabeledList, NoticeBox, Section, Tabs } from '../components'; -import { Window } from '../layouts'; - -export const Microscope = (props) => { - const { act, data } = useBackend(); - const [tab, setTab] = useSharedState('tab', 1); - const { has_dish, cell_lines = [], viruses = [] } = data; - - return ( - <Window> - <Window.Content scrollable> - <Section> - <LabeledList> - <LabeledList.Item label="Dish Sample"> - <Button - icon="eject" - content="Eject" - disabled={!has_dish} - onClick={() => act('eject_petridish')} - /> - </LabeledList.Item> - </LabeledList> - </Section> - <Tabs> - <Tabs.Tab - icon="microscope" - lineHeight="23px" - selected={tab === 1} - onClick={() => setTab(1)} - > - Micro-Organisms ({cell_lines.length}) - </Tabs.Tab> - <Tabs.Tab - icon="microscope" - lineHeight="23px" - selected={tab === 2} - onClick={() => setTab(2)} - > - Viruses ({viruses.length}) - </Tabs.Tab> - </Tabs> - {tab === 1 && <Organisms cell_lines={cell_lines} />} - {tab === 2 && <Viruses viruses={viruses} />} - </Window.Content> - </Window> - ); -}; - -const Organisms = (props) => { - const { cell_lines } = props; - const { act, data } = useBackend(); - if (!cell_lines.length) { - return <NoticeBox>No micro-organisms found</NoticeBox>; - } - - return cell_lines.map((cell_line) => { - return ( - <Section key={cell_line.desc} title={cell_line.desc}> - <LabeledList> - <LabeledList.Item label="Growth Rate"> - {cell_line.growth_rate} - </LabeledList.Item> - <LabeledList.Item label="Virus Suspectibility"> - {cell_line.suspectibility} - </LabeledList.Item> - <LabeledList.Item label="Required Reagents"> - {cell_line.requireds} - </LabeledList.Item> - <LabeledList.Item label="Supplementary Reagents"> - {cell_line.supplementaries} - </LabeledList.Item> - <LabeledList.Item label="Suppresive reagents"> - {cell_line.suppressives} - </LabeledList.Item> - </LabeledList> - </Section> - ); - }); -}; - -const Viruses = (props) => { - const { viruses } = props; - const { act } = useBackend(); - if (!viruses.length) { - return <NoticeBox>No viruses found</NoticeBox>; - } - return viruses.map((virus) => { - return <Section key={virus.desc} title={virus.desc} />; - }); -}; diff --git a/tgui/packages/tgui/interfaces/Microscope.tsx b/tgui/packages/tgui/interfaces/Microscope.tsx new file mode 100644 index 0000000000000..44aa7d2b660b0 --- /dev/null +++ b/tgui/packages/tgui/interfaces/Microscope.tsx @@ -0,0 +1,184 @@ +import { BooleanLike } from 'common/react'; + +import { useBackend } from '../backend'; +import { + Box, + Button, + Divider, + DmIcon, + Icon, + NoticeBox, + Section, + Stack, +} from '../components'; +import { Window } from '../layouts'; + +type Data = { + has_dish: BooleanLike; + cell_lines: CellLine[]; +}; + +type CellLine = { + type: string; + name: string; + desc: string; + icon: string; + icon_state: string; + consumption_rate: number; + growth_rate: number; + suspectibility: number; + requireds: Record<string, number>; + supplementaries: Record<string, number>; + suppressives: Record<string, number>; +}; + +export const Microscope = (props) => { + const { act, data } = useBackend<Data>(); + const { has_dish, cell_lines = [] } = data; + + return ( + <Window width={620} height={620}> + <Window.Content scrollable> + <Section + title={has_dish ? 'Petri Dish Sample' : 'No Petri Dish'} + buttons={ + !!has_dish && ( + <Button + icon="eject" + disabled={!has_dish} + onClick={() => act('eject_petridish')} + > + Take Dish + </Button> + ) + } + > + <CellList cell_lines={cell_lines} /> + </Section> + </Window.Content> + </Window> + ); +}; + +const CellList = (props) => { + const { cell_lines } = props; + const fallback = ( + <Icon name="spinner" size={5} height="64px" width="64px" spin /> + ); + if (!cell_lines.length) { + return <NoticeBox>No micro-organisms found</NoticeBox>; + } + + return cell_lines.map((cell_line) => { + return cell_line.type !== 'virus' ? ( + <Stack key={cell_line.desc} mt={2}> + <Stack.Item> + <DmIcon + fallback={fallback} + icon={cell_line.icon} + icon_state={cell_line.icon_state} + height="64px" + width="64px" + /> + </Stack.Item> + <Stack.Item grow pl={1}> + <Section + title={cell_line.desc} + buttons={ + <Button + color="transparent" + icon="circle-question" + tooltip="Put the sample into a Growing Vat and pour the required reagents." + /> + } + > + <Box my={1}> + Consume {cell_line.consumption_rate} units of every nutrient per + second to grow by {cell_line.growth_rate}%. + </Box> + {cell_line.suspectibility > 0 && ( + <Box my={1}> + Reduced by {cell_line.suspectibility}% when infected with + viruses. + </Box> + )} + <Stack fill> + <Stack.Item grow> + <GroupTitle title="Required Reagents" /> + {Object.keys(cell_line.requireds).map((reagent) => ( + <Button fluid key={reagent}> + {reagent} + </Button> + ))} + </Stack.Item> + <Stack.Item grow> + <GroupTitle title="Supplements" /> + {Object.keys(cell_line.supplementaries).map((reagent) => ( + <Button + fluid + color="good" + key={reagent} + tooltip={ + '+' + cell_line.supplementaries[reagent] + '% growth/sec.' + } + > + {reagent} + </Button> + ))} + </Stack.Item> + <Stack.Item grow> + <GroupTitle title="Supressives" /> + {Object.keys(cell_line.suppressives).map((reagent) => ( + <Button + fluid + color="bad" + key={reagent} + tooltip={cell_line.suppressives[reagent] + '% growth/sec.'} + > + {reagent} + </Button> + ))} + </Stack.Item> + </Stack> + </Section> + </Stack.Item> + </Stack> + ) : ( + <Stack key={cell_line.desc} mt={2}> + <Stack.Item> + <Icon name="viruses" color="bad" size={4} mr={1} /> + </Stack.Item> + <Stack.Item grow pl={1}> + <Section title={cell_line.desc}> + <Box my={1}> + Reduces growth of other cell lines when not suppressed by + Spaceacillin. + </Box> + </Section> + </Stack.Item> + </Stack> + ); + }); +}; + +const GroupTitle = (props) => { + const { title } = props; + return ( + <Stack my={1}> + <Stack.Item grow> + <Divider /> + </Stack.Item> + <Stack.Item + style={{ + textTransform: 'capitalize', + }} + color={'gray'} + > + {title} + </Stack.Item> + <Stack.Item grow> + <Divider /> + </Stack.Item> + </Stack> + ) as any; +}; diff --git a/tgui/packages/tgui/interfaces/NtosCursor.tsx b/tgui/packages/tgui/interfaces/NtosCursor.tsx new file mode 100644 index 0000000000000..6c62df26a1762 --- /dev/null +++ b/tgui/packages/tgui/interfaces/NtosCursor.tsx @@ -0,0 +1,63 @@ +import { useState } from 'react'; + +import { useBackend } from '../backend'; +import { Button, DmIcon, NoticeBox, Section, Stack } from '../components'; +import { NtosWindow } from '../layouts'; + +type Data = { + dmi: { + icon: string; + icon_state: string; + }; +}; + +export const NtosCursor = () => { + const { data } = useBackend<Data>(); + + const { dmi } = data; + + const [numClicked, incrementClicked] = useState(0); + + const NoticeBoxText = () => { + if (numClicked <= 2) { + return `There's only one option... It's the sword.`; + } else if (numClicked === 3) { + return `You clicked the sword. It's still the sword.`; + } else if (numClicked === 4) { + return `You clicked the sword again. It's still the sword.`; + } else if (numClicked === 5) { + return `Trying to click the sword again? It's still the sword.`; + } + return `You clicked the sword ${numClicked} times... It's still the sword.`; + }; + + return ( + <NtosWindow width={350} height={300}> + <NtosWindow.Content scrollable> + <Section title="Select Cursor"> + <Stack vertical> + <Stack.Item align={'center'}> + <Button + height="100px" + width="100px" + color={numClicked >= 1 ? 'green' : null} + onClick={() => incrementClicked(numClicked + 1)} + > + <DmIcon + icon={dmi.icon} + icon_state={dmi.icon_state} + style={{ + transform: `scale(3) translateX(4px) translateY(8px)`, + }} + /> + </Button> + </Stack.Item> + <Stack.Item> + <NoticeBox>{NoticeBoxText()}</NoticeBox> + </Stack.Item> + </Stack> + </Section> + </NtosWindow.Content> + </NtosWindow> + ); +}; diff --git a/tgui/packages/tgui/interfaces/NtosPowerMonitor.tsx b/tgui/packages/tgui/interfaces/NtosPowerMonitor.tsx index 295c41c3c72d3..bb7f7d1d527a2 100644 --- a/tgui/packages/tgui/interfaces/NtosPowerMonitor.tsx +++ b/tgui/packages/tgui/interfaces/NtosPowerMonitor.tsx @@ -4,7 +4,7 @@ import { PowerMonitorContent } from './PowerMonitor'; export const NtosPowerMonitor = (props) => { return ( <NtosWindow width={550} height={700}> - <NtosWindow.Content scrollable> + <NtosWindow.Content> <PowerMonitorContent /> </NtosWindow.Content> </NtosWindow> diff --git a/tgui/packages/tgui/interfaces/Orbit/JobIcon.tsx b/tgui/packages/tgui/interfaces/Orbit/JobIcon.tsx index f102927e9bcba..2d584bfc6b13d 100644 --- a/tgui/packages/tgui/interfaces/Orbit/JobIcon.tsx +++ b/tgui/packages/tgui/interfaces/Orbit/JobIcon.tsx @@ -37,20 +37,15 @@ export function JobIcon(props: Props) { return ( <div className="JobIcon"> {icon === 'borg' ? ( - <Icon color="lightblue" name={JOB2ICON[job]} mr={0.5} /> + <Icon color="lightblue" name={JOB2ICON[job]} ml={0.3} mt={0.4} /> ) : ( - <div + <DmIcon + icon={iconSettings.dmi} + icon_state={icon} style={{ - height: '17px', - width: '18px', + transform: iconSettings.transform, }} - > - <DmIcon - icon={iconSettings.dmi} - icon_state={icon} - style={{ transform: iconSettings.transform }} - /> - </div> + /> )} </div> ); diff --git a/tgui/packages/tgui/interfaces/PipeScrubber.tsx b/tgui/packages/tgui/interfaces/PipeScrubber.tsx new file mode 100644 index 0000000000000..b18d80a9a06c8 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PipeScrubber.tsx @@ -0,0 +1,175 @@ +import { toFixed } from 'common/math'; +import { BooleanLike } from 'common/react'; + +import { useBackend } from '../backend'; +import { + Box, + Button, + Icon, + LabeledControls, + RoundGauge, + Section, + Tooltip, +} from '../components'; +import { getGasLabel } from '../constants'; +import { formatSiUnit } from '../format'; +import { Window } from '../layouts'; + +type Data = { + on: BooleanLike; + direction: BooleanLike; + connected: BooleanLike; + pressureTank: number; + pressureLimitTank: number; + pressurePump: number; + pressureLimitPump: number; + pumpMaxPressure: number; + hasHypernobCrystal: BooleanLike; + reactionSuppressionEnabled: BooleanLike; + filterTypes: Filter[]; +}; + +type Filter = { + id: string; + enabled: BooleanLike; + gasId: string; + gasName: string; +}; + +const formatPressure = (value) => { + if (value < 10000) { + return toFixed(value) + ' kPa'; + } + return formatSiUnit(value * 1000, 1, 'Pa'); +}; + +export const PipeScrubber = (props) => { + const { act, data } = useBackend<Data>(); + const { + on, + connected, + direction, + pressureTank, + pressureLimitTank, + pressurePump, + pressureLimitPump, + hasHypernobCrystal, + reactionSuppressionEnabled, + filterTypes = [], + } = data; + + return ( + <Window width={400} height={350}> + <Window.Content> + <Section + title="Status" + buttons={ + !!hasHypernobCrystal && ( + <Button + icon={reactionSuppressionEnabled ? 'snowflake' : 'times'} + selected={reactionSuppressionEnabled} + onClick={() => act('reaction_suppression')} + > + {reactionSuppressionEnabled + ? 'Reaction Suppression Enabled' + : 'Reaction Suppression Disabled'} + </Button> + ) + } + > + <LabeledControls p={1}> + <LabeledControls.Item label="Buffer Port"> + <Box position="relative"> + <Tooltip + position="top" + content={connected ? 'Connected' : 'Disconnected'} + > + <Icon + size={2} + name={connected ? 'plug-circle-check' : 'plug-circle-xmark'} + color={connected ? 'good' : 'bad'} + /> + </Tooltip> + </Box> + </LabeledControls.Item> + <LabeledControls.Item label="Buffer"> + <RoundGauge + size={1.75} + value={pressurePump} + minValue={0} + maxValue={pressureLimitPump} + alertAfter={pressureLimitPump * 0.7} + ranges={{ + good: [0, pressureLimitPump * 0.7], + average: [pressureLimitPump * 0.7, pressureLimitPump * 0.85], + bad: [pressureLimitPump * 0.85, pressureLimitPump], + }} + format={formatPressure} + /> + </LabeledControls.Item> + <LabeledControls.Item label="Tank"> + <RoundGauge + size={1.75} + value={pressureTank} + minValue={0} + maxValue={pressureLimitTank} + alertAfter={pressureLimitTank * 0.7} + ranges={{ + good: [0, pressureLimitTank * 0.7], + average: [pressureLimitTank * 0.7, pressureLimitTank * 0.85], + bad: [pressureLimitTank * 0.85, pressureLimitTank], + }} + format={formatPressure} + /> + </LabeledControls.Item> + <LabeledControls.Item label="Pump"> + <Button + my={0.5} + width={6} + lineHeight={2} + fontSize="18px" + icon="power-off" + selected={on} + onClick={() => act('power')} + > + {on ? 'On' : 'Off'} + </Button> + </LabeledControls.Item> + </LabeledControls> + </Section> + <Section + title="Direction" + buttons={ + <Button onClick={() => act('direction')}> + {direction ? 'Buffer → Tank' : 'Tank → Buffer'} + </Button> + } + > + {!!direction && ( + <> + <Box>Filtering gases from the buffer into the internal tank.</Box> + <Section> + {filterTypes.map((filter) => ( + <Button + key={filter.id} + icon={filter.enabled ? 'check-square-o' : 'square-o'} + content={getGasLabel(filter.gasId, filter.gasName)} + selected={filter.enabled} + onClick={() => + act('toggle_filter', { + val: filter.gasId, + }) + } + /> + ))} + </Section> + </> + )} + {!direction && ( + <Box>Dumping internal tank gases into the buffer.</Box> + )} + </Section> + </Window.Content> + </Window> + ); +}; diff --git a/tgui/packages/tgui/interfaces/PowerMonitor.jsx b/tgui/packages/tgui/interfaces/PowerMonitor.jsx deleted file mode 100644 index 039e700f68cea..0000000000000 --- a/tgui/packages/tgui/interfaces/PowerMonitor.jsx +++ /dev/null @@ -1,230 +0,0 @@ -import { map, sortBy } from 'common/collections'; -import { flow } from 'common/fp'; -import { toFixed } from 'common/math'; -import { useState } from 'react'; - -import { useBackend } from '../backend'; -import { - Box, - Button, - Chart, - ColorBox, - Dimmer, - Flex, - Icon, - LabeledList, - ProgressBar, - Section, - Stack, - Table, -} from '../components'; -import { Window } from '../layouts'; - -const PEAK_DRAW = 500000; - -export const powerRank = (str) => { - const unit = String(str.split(' ')[1]).toLowerCase(); - return ['w', 'kw', 'mw', 'gw'].indexOf(unit); -}; - -export const PowerMonitor = () => { - return ( - <Window width={550} height={700}> - <Window.Content scrollable> - <PowerMonitorContent /> - </Window.Content> - </Window> - ); -}; - -export const PowerMonitorContent = (props) => { - const { data } = useBackend(); - const { history = { supply: [], demand: [] } } = data; - const [sortByField, setSortByField] = useState(null); - const supply = history.supply[history.supply.length - 1] || 0; - const demand = history.demand[history.demand.length - 1] || 0; - const supplyData = history.supply.map((value, i) => [i, value]); - const demandData = history.demand.map((value, i) => [i, value]); - const maxValue = Math.max(PEAK_DRAW, ...history.supply, ...history.demand); - // Process area data - const areas = flow([ - (areas) => - map(areas, (area, i) => ({ - ...area, - // Generate a unique id - id: area.name + i, - })), - sortByField === 'name' && ((areas) => sortBy(areas, (area) => area.name)), - sortByField === 'charge' && - ((areas) => sortBy(areas, (area) => -area.charge)), - sortByField === 'draw' && - ((areas) => - sortBy( - areas, - (area) => -powerRank(area.load), - (area) => -parseFloat(area.load), - )), - ])(data.areas); - return ( - <> - {areas.length === 0 && ( - <Dimmer> - <Stack> - <Stack.Item> - <Icon name="plug-circle-exclamation" size={2} /> - </Stack.Item> - <Stack.Item> - <h1>No APCs found!</h1> - </Stack.Item> - </Stack> - </Dimmer> - )} - <Flex mx={-0.5} mb={1}> - <Flex.Item mx={0.5} width="200px"> - <Section> - <LabeledList> - <LabeledList.Item label="Supply"> - <ProgressBar - value={supply} - minValue={0} - maxValue={maxValue} - color="teal" - > - {toFixed(supply / 1000) + ' kW'} - </ProgressBar> - </LabeledList.Item> - <LabeledList.Item label="Draw"> - <ProgressBar - value={demand} - minValue={0} - maxValue={maxValue} - color="pink" - > - {toFixed(demand / 1000) + ' kW'} - </ProgressBar> - </LabeledList.Item> - </LabeledList> - </Section> - </Flex.Item> - <Flex.Item mx={0.5} grow={1}> - <Section position="relative" height="100%" fill="true"> - <Chart.Line - fillPositionedParent - data={supplyData} - rangeX={[0, supplyData.length - 1]} - rangeY={[0, maxValue]} - strokeColor="rgba(0, 181, 173, 1)" - fillColor="rgba(0, 181, 173, 0.25)" - /> - <Chart.Line - fillPositionedParent - data={demandData} - rangeX={[0, demandData.length - 1]} - rangeY={[0, maxValue]} - strokeColor="rgba(224, 57, 151, 1)" - fillColor="rgba(224, 57, 151, 0.25)" - /> - </Section> - </Flex.Item> - </Flex> - <Section> - <Box mb={1}> - <Box inline mr={2} color="label"> - Sort by: - </Box> - <Button.Checkbox - checked={sortByField === 'name'} - content="Name" - onClick={() => setSortByField(sortByField !== 'name' && 'name')} - /> - <Button.Checkbox - checked={sortByField === 'charge'} - content="Charge" - onClick={() => setSortByField(sortByField !== 'charge' && 'charge')} - /> - <Button.Checkbox - checked={sortByField === 'draw'} - content="Draw" - onClick={() => setSortByField(sortByField !== 'draw' && 'draw')} - /> - </Box> - <Table> - <Table.Row header> - <Table.Cell>Area</Table.Cell> - <Table.Cell collapsing>Charge</Table.Cell> - <Table.Cell textAlign="right">Draw</Table.Cell> - <Table.Cell collapsing title="Equipment"> - Eqp - </Table.Cell> - <Table.Cell collapsing title="Lighting"> - Lgt - </Table.Cell> - <Table.Cell collapsing title="Environment"> - Env - </Table.Cell> - </Table.Row> - {areas.map((area, i) => ( - <tr key={area.id} className="Table__row candystripe"> - <td>{area.name}</td> - <td className="Table__cell text-right text-nowrap"> - <AreaCharge charging={area.charging} charge={area.charge} /> - </td> - <td className="Table__cell text-right text-nowrap"> - {area.load} - </td> - <td className="Table__cell text-center text-nowrap"> - <AreaStatusColorBox status={area.eqp} /> - </td> - <td className="Table__cell text-center text-nowrap"> - <AreaStatusColorBox status={area.lgt} /> - </td> - <td className="Table__cell text-center text-nowrap"> - <AreaStatusColorBox status={area.env} /> - </td> - </tr> - ))} - </Table> - </Section> - </> - ); -}; - -export const AreaCharge = (props) => { - const { charging, charge } = props; - return ( - <> - <Icon - width="18px" - textAlign="center" - name={ - (charging === 0 && - (charge > 50 ? 'battery-half' : 'battery-quarter')) || - (charging === 1 && 'bolt') || - (charging === 2 && 'battery-full') - } - color={ - (charging === 0 && (charge > 50 ? 'yellow' : 'red')) || - (charging === 1 && 'yellow') || - (charging === 2 && 'green') - } - /> - <Box inline width="36px" textAlign="right"> - {toFixed(charge) + '%'} - </Box> - </> - ); -}; - -const AreaStatusColorBox = (props) => { - const { status } = props; - const power = Boolean(status & 2); - const mode = Boolean(status & 1); - const tooltipText = (power ? 'On' : 'Off') + ` [${mode ? 'auto' : 'manual'}]`; - return ( - <ColorBox - color={power ? 'good' : 'bad'} - content={mode ? undefined : 'M'} - title={tooltipText} - /> - ); -}; diff --git a/tgui/packages/tgui/interfaces/PowerMonitor.tsx b/tgui/packages/tgui/interfaces/PowerMonitor.tsx new file mode 100644 index 0000000000000..b311ae15ede54 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PowerMonitor.tsx @@ -0,0 +1,318 @@ +import { useState } from 'react'; +import { + Box, + Button, + Chart, + ColorBox, + Flex, + Icon, + LabeledList, + ProgressBar, + Section, + Stack, + Table, +} from 'tgui-core/components'; +import { toFixed } from 'tgui-core/math'; + +import { useBackend } from '../backend'; +import { Tooltip } from '../components'; +import { Window } from '../layouts'; +import { LoadingScreen } from './common/LoadingToolbox'; + +type Data = { + areas: Area[]; + history: PowerHistory; +}; + +type Area = { + charge: number; + charging: number; + env: number; + eqp: number; + lgt: number; + load: string; + name: string; +}; + +type PowerHistory = { + demand: number[]; + supply: number[]; +}; + +export function powerRank(str: string): number { + const unit = String(str.split(' ')[1]).toLowerCase(); + return ['w', 'kw', 'mw', 'gw'].indexOf(unit); +} + +// Oh no not another sorting algorithm +function powerSort(a: Area, b: Area): number { + const sortedByRank = powerRank(a.load) - powerRank(b.load); + const sortedByLoad = parseFloat(a.load) - parseFloat(b.load); + + if (sortedByRank !== 0) { + return sortedByRank; + } + return sortedByLoad; +} + +function nameSort(a: Area, b: Area): number { + if (a.name < b.name) { + return -1; + } + if (a.name > b.name) { + return 1; + } + return 0; +} + +export function PowerMonitor() { + return ( + <Window width={550} height={700}> + <Window.Content> + <PowerMonitorContent /> + </Window.Content> + </Window> + ); +} + +const PEAK_DRAW = 500000; + +export function PowerMonitorContent(props) { + const { data } = useBackend<Data>(); + const { history } = data; + + if (!history) { + return <>Loading...</>; + } + + const supply = history.supply[history.supply.length - 1] || 0; + const demand = history.demand[history.demand.length - 1] || 0; + + const supplyData = history.supply.map((value, i) => [i, value]); + const demandData = history.demand.map((value, i) => [i, value]); + + const maxValue = Math.max(PEAK_DRAW, ...history.supply, ...history.demand); + + if (supplyData.length === 0 || demandData.length === 0) { + return <LoadingScreen />; + } + + return ( + <Stack fill vertical> + <Stack.Item> + <Flex mx={-0.5}> + <Flex.Item mx={0.5} width="200px"> + <Section> + <LabeledList> + <LabeledList.Item label="Supply"> + <ProgressBar + value={supply} + minValue={0} + maxValue={maxValue} + color="teal" + > + {toFixed(supply / 1000) + ' kW'} + </ProgressBar> + </LabeledList.Item> + <LabeledList.Item label="Draw"> + <ProgressBar + value={demand} + minValue={0} + maxValue={maxValue} + color="pink" + > + {toFixed(demand / 1000) + ' kW'} + </ProgressBar> + </LabeledList.Item> + </LabeledList> + </Section> + </Flex.Item> + <Flex.Item mx={0.5} grow> + <Section position="relative" fill> + <Chart.Line + fillPositionedParent + data={supplyData} + rangeX={[0, supplyData.length - 1]} + rangeY={[0, maxValue]} + strokeColor="rgba(0, 181, 173, 1)" + fillColor="rgba(0, 181, 173, 0.25)" + /> + <Chart.Line + fillPositionedParent + data={demandData} + rangeX={[0, demandData.length - 1]} + rangeY={[0, maxValue]} + strokeColor="rgba(224, 57, 151, 1)" + fillColor="rgba(224, 57, 151, 0.25)" + /> + </Section> + </Flex.Item> + </Flex> + </Stack.Item> + <Stack.Item grow> + <StationAreas /> + </Stack.Item> + </Stack> + ); +} + +function StationAreas(props) { + const { data } = useBackend<Data>(); + + const [sortByField, setSortByField] = useState(''); + + const areas = data.areas + .map((area, i) => ({ + ...area, + // Generate a unique id + id: area.name + i, + })) + .sort((a, b) => { + if (sortByField === 'name') { + return nameSort(a, b); + } + if (sortByField === 'charge') { + return a.charge - b.charge; + } + if (sortByField === 'draw') { + return powerSort(b, a); + } + return 0; + }); + + return ( + <Stack fill vertical> + <Section height={3}> + <Box> + <Box inline mr={2} color="label"> + Sort by: + </Box> + <Button.Checkbox + checked={sortByField === 'name'} + onClick={() => setSortByField(sortByField !== 'name' ? 'name' : '')} + > + Name + </Button.Checkbox> + <Button.Checkbox + checked={sortByField === 'charge'} + onClick={() => + setSortByField(sortByField !== 'charge' ? 'charge' : '') + } + > + Charge + </Button.Checkbox> + <Button.Checkbox + checked={sortByField === 'draw'} + onClick={() => setSortByField(sortByField !== 'draw' ? 'draw' : '')} + > + Draw + </Button.Checkbox> + </Box> + </Section> + + <Stack.Item grow mt={-1}> + <Section fill scrollable> + <Table> + <Table.Row header> + <Table.Cell>Area</Table.Cell> + <Table.Cell collapsing>Charge</Table.Cell> + <Table.Cell textAlign="right" width={7}> + Draw + </Table.Cell> + <Tooltip content="Equipment power"> + <Table.Cell collapsing>Eqp</Table.Cell> + </Tooltip> + <Tooltip content="Lighting power"> + <Table.Cell collapsing>Lgt</Table.Cell> + </Tooltip> + <Tooltip content="Environment power"> + <Table.Cell collapsing>Env</Table.Cell> + </Tooltip> + </Table.Row> + {areas.map((area) => ( + <tr key={area.id} className="Table__row candystripe"> + <td>{area.name}</td> + <td className="Table__cell text-right text-nowrap"> + <AreaCharge charging={area.charging} charge={area.charge} /> + </td> + <td className="Table__cell text-right text-nowrap"> + {area.load} + </td> + <td className="Table__cell text-center text-nowrap"> + <AreaStatusColorBox status={area.eqp} /> + </td> + <td className="Table__cell text-center text-nowrap"> + <AreaStatusColorBox status={area.lgt} /> + </td> + <td className="Table__cell text-center text-nowrap"> + <AreaStatusColorBox status={area.env} /> + </td> + </tr> + ))} + </Table> + </Section> + </Stack.Item> + </Stack> + ); +} + +type AreaChargeProps = { + charge: number; + charging: number; +}; + +const NOT_CHARGING = 0; +const CHARGING = 1; +const CHARGED = 2; + +export function AreaCharge(props: AreaChargeProps) { + const { charging, charge } = props; + + let name: string; + if (charging === NOT_CHARGING) { + name = charge > 50 ? 'battery-half' : 'battery-quarter'; + } else if (charging === CHARGING) { + name = 'bolt'; + } else { + name = 'battery-full'; + } + + return ( + <> + <Icon + width="18px" + textAlign="center" + name={name} + color={ + (charging === NOT_CHARGING && (charge > 50 ? 'yellow' : 'red')) || + (charging === CHARGING && 'yellow') || + (charging === CHARGED && 'green') + } + /> + <Box inline width="36px" textAlign="right"> + {toFixed(charge) + '%'} + </Box> + </> + ); +} + +type AreaStatusColorBoxProps = { + status: number; +}; + +function AreaStatusColorBox(props: AreaStatusColorBoxProps) { + const { status } = props; + + const power = Boolean(status & 2); + const mode = Boolean(status & 1); + const tooltipText = (power ? 'On' : 'Off') + ` [${mode ? 'auto' : 'manual'}]`; + + return ( + <Tooltip content={tooltipText}> + <ColorBox + color={power ? 'good' : 'bad'} + content={mode ? undefined : 'M'} + /> + </Tooltip> + ); +} diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/sounds.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/sounds.tsx index 3f1c50c16f9f1..6f0f81237e495 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/sounds.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/sounds.tsx @@ -14,6 +14,13 @@ export const sound_ambience: FeatureToggle = { component: CheckboxInput, }; +export const sound_breathing: FeatureToggle = { + name: 'Enable breathing sounds', + category: 'SOUND', + description: 'When enabled, hear breathing sounds when using internals.', + component: CheckboxInput, +}; + export const sound_announcements: FeatureToggle = { name: 'Enable announcement sounds', category: 'SOUND', diff --git a/tgui/packages/tgui/interfaces/QuantumConsole.tsx b/tgui/packages/tgui/interfaces/QuantumConsole.tsx index bba1d85801933..08ec428bc4dbd 100644 --- a/tgui/packages/tgui/interfaces/QuantumConsole.tsx +++ b/tgui/packages/tgui/interfaces/QuantumConsole.tsx @@ -1,6 +1,4 @@ import { BooleanLike } from 'common/react'; - -import { useBackend, useSharedState } from '../backend'; import { Button, Collapsible, @@ -12,7 +10,9 @@ import { Table, Tabs, Tooltip, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend, useSharedState } from '../backend'; import { TableCell, TableRow } from '../components/Table'; import { Window } from '../layouts'; import { LoadingScreen } from './common/LoadingToolbox'; @@ -47,6 +47,7 @@ type Avatar = { }; type Domain = { + announce_ghosts: BooleanLike; cost: number; desc: string; difficulty: number; @@ -74,10 +75,11 @@ enum Difficulty { High, } -const isConnected = (data: Data): data is Data & { connected: 1 } => - data.connected === 1; +function isConnected(data: Data): data is Data & { connected: 1 } { + return data.connected === 1; +} -const getColor = (difficulty: number) => { +function getColor(difficulty: number) { switch (difficulty) { case Difficulty.Low: return 'yellow'; @@ -88,9 +90,9 @@ const getColor = (difficulty: number) => { default: return 'green'; } -}; +} -export const QuantumConsole = (props) => { +export function QuantumConsole(props) { const { data } = useBackend<Data>(); return ( @@ -101,9 +103,9 @@ export const QuantumConsole = (props) => { </Window.Content> </Window> ); -}; +} -const AccessView = (props) => { +function AccessView(props) { const { act, data } = useBackend<Data>(); const [tab, setTab] = useSharedState('tab', 0); @@ -228,22 +230,24 @@ const AccessView = (props) => { </Stack.Item> <Stack.Item> <Button.Confirm - content="Stop Domain" disabled={!ready || !generated_domain} onClick={() => act('stop_domain')} tooltip="Begins shutdown. Will notify anyone connected." - /> + > + Stop Domain + </Button.Confirm> </Stack.Item> </Stack> </Section> </Stack.Item> </Stack> ); -}; +} -const DomainEntry = (props: DomainEntryProps) => { +function DomainEntry(props: DomainEntryProps) { const { domain: { + announce_ghosts, cost, desc, difficulty, @@ -275,6 +279,8 @@ const DomainEntry = (props: DomainEntryProps) => { buttonName = 'Deploy'; } + const canView = name !== '???'; + return ( <Collapsible buttons={ @@ -291,10 +297,9 @@ const DomainEntry = (props: DomainEntryProps) => { title={ <> {name} - {!!is_modular && name !== '???' && <Icon name="cubes" ml={1} />} - {!!has_secondary_objectives && name !== '???' && ( - <Icon name="gem" ml={1} /> - )} + {!!is_modular && canView && <Icon name="cubes" ml={1} />} + {!!has_secondary_objectives && canView && <Icon name="gem" ml={1} />} + {!!announce_ghosts && canView && <Icon name="ghost" ml={1} />} </> } > @@ -303,6 +308,7 @@ const DomainEntry = (props: DomainEntryProps) => { {desc} {!!is_modular && ' (Modular)'} {!!has_secondary_objectives && ' (Secondary Objective Available)'} + {!!announce_ghosts && ' (Ghost Interaction)'} </Stack.Item> <Stack.Divider /> <Stack.Item grow> @@ -322,7 +328,7 @@ const DomainEntry = (props: DomainEntryProps) => { </Stack> </Collapsible> ); -}; +} const AvatarDisplay = (props) => { const { act, data } = useBackend<Data>(); diff --git a/tgui/packages/tgui/interfaces/TankDispenser.jsx b/tgui/packages/tgui/interfaces/TankDispenser.jsx deleted file mode 100644 index ea94a5f3148c1..0000000000000 --- a/tgui/packages/tgui/interfaces/TankDispenser.jsx +++ /dev/null @@ -1,43 +0,0 @@ -import { useBackend } from '../backend'; -import { Button, LabeledList, Section } from '../components'; -import { Window } from '../layouts'; - -export const TankDispenser = (props) => { - const { act, data } = useBackend(); - return ( - <Window width={275} height={103}> - <Window.Content> - <Section> - <LabeledList> - <LabeledList.Item - label="Plasma" - buttons={ - <Button - icon={data.plasma ? 'square' : 'square-o'} - content="Dispense" - disabled={!data.plasma} - onClick={() => act('plasma')} - /> - } - > - {data.plasma} - </LabeledList.Item> - <LabeledList.Item - label="Oxygen" - buttons={ - <Button - icon={data.oxygen ? 'square' : 'square-o'} - content="Dispense" - disabled={!data.oxygen} - onClick={() => act('oxygen')} - /> - } - > - {data.oxygen} - </LabeledList.Item> - </LabeledList> - </Section> - </Window.Content> - </Window> - ); -}; diff --git a/tgui/packages/tgui/interfaces/Vending.tsx b/tgui/packages/tgui/interfaces/Vending.tsx index 2f8cd42dade95..28c7a788fa6a2 100644 --- a/tgui/packages/tgui/interfaces/Vending.tsx +++ b/tgui/packages/tgui/interfaces/Vending.tsx @@ -1,7 +1,6 @@ import { classes } from 'common/react'; import { capitalizeAll } from 'common/string'; import { useState } from 'react'; -import { useBackend } from 'tgui/backend'; import { Box, Button, @@ -11,8 +10,12 @@ import { Section, Stack, Table, -} from 'tgui/components'; -import { Window } from 'tgui/layouts'; +} from 'tgui-core/components'; + +import { createSearch } from '../../common/string'; +import { useBackend } from '../backend'; +import { Input } from '../components'; +import { Window } from '../layouts'; type VendingData = { onstation: boolean; @@ -24,7 +27,7 @@ type VendingData = { coin_records: CoinRecord[]; hidden_records: HiddenRecord[]; user: UserData; - stock: StockItem[]; + stock: Record<string, StockItem>[]; extended_inventory: boolean; access: boolean; vending_machine_input: CustomInput[]; @@ -81,11 +84,17 @@ export const Vending = (props) => { product_records = [], coin_records = [], hidden_records = [], - stock, + categories, } = data; const [selectedCategory, setSelectedCategory] = useState( - Object.keys(data.categories)[0], + Object.keys(categories)[0], + ); + + const [stockSearch, setStockSearch] = useState(''); + const stockSearchFn = createSearch( + stockSearch, + (item: ProductRecord | CustomInput) => item.name, ); let inventory: (ProductRecord | CustomInput)[]; @@ -100,9 +109,12 @@ export const Vending = (props) => { } } - inventory = inventory - // Just in case we still have undefined values in the list - .filter((item) => !!item); + // Just in case we still have undefined values in the list + inventory = inventory.filter((item) => !!item); + + if (stockSearch.length >= 2) { + inventory = inventory.filter(stockSearchFn); + } const filteredCategories = Object.fromEntries( Object.entries(data.categories).filter(([categoryName]) => { @@ -129,19 +141,23 @@ export const Vending = (props) => { <ProductDisplay custom={custom} inventory={inventory} + stockSearch={stockSearch} + setStockSearch={setStockSearch} selectedCategory={selectedCategory} + setSelectedCategory={setSelectedCategory} /> </Stack.Item> - {Object.keys(filteredCategories).length > 1 && ( - <Stack.Item> - <CategorySelector - categories={filteredCategories} - selectedCategory={selectedCategory!} - onSelect={setSelectedCategory} - /> - </Stack.Item> - )} + {stockSearch.length < 2 && + Object.keys(filteredCategories).length > 1 && ( + <Stack.Item> + <CategorySelector + categories={filteredCategories} + selectedCategory={selectedCategory!} + onSelect={setSelectedCategory} + /> + </Stack.Item> + )} </Stack> </Window.Content> </Window> @@ -155,7 +171,9 @@ export const UserDetails = (props) => { if (!user) { return ( - <NoticeBox>No ID detected! Contact the Head of Personnel.</NoticeBox> + <Section> + <NoticeBox>No ID detected! Contact the Head of Personnel.</NoticeBox> + </Section> ); } else { return ( @@ -181,11 +199,21 @@ export const UserDetails = (props) => { /** Displays products in a section, with user balance at top */ const ProductDisplay = (props: { custom: boolean; - selectedCategory: string | null; inventory: (ProductRecord | CustomInput)[]; + stockSearch: string; + setStockSearch: (search: string) => void; + selectedCategory: string | null; + setSelectedCategory: (category: string) => void; }) => { const { data } = useBackend<VendingData>(); - const { custom, inventory, selectedCategory } = props; + const { + custom, + inventory, + stockSearch, + setStockSearch, + selectedCategory, + setSelectedCategory, + } = props; const { stock, onstation, @@ -200,20 +228,28 @@ const ProductDisplay = (props: { scrollable title="Products" buttons={ - !!onstation && - user && ( - <Box fontSize="16px" color="green"> - {(user && user.cash) || 0} - {displayed_currency_name}{' '} - <Icon name={displayed_currency_icon} color="gold" /> - </Box> - ) + <Stack> + {!!onstation && user && ( + <Stack.Item fontSize="16px" color="green"> + {(user && user.cash) || 0} + {displayed_currency_name}{' '} + <Icon name={displayed_currency_icon} color="gold" /> + </Stack.Item> + )} + <Stack.Item> + <Input + onInput={(_, value) => setStockSearch(value)} + placeholder="Search..." + value={stockSearch} + /> + </Stack.Item> + </Stack> } > <Table> {inventory .filter((product) => { - if ('category' in product) { + if (!stockSearch && 'category' in product) { return product.category === selectedCategory; } else { return true; diff --git a/tgui/packages/tgui/interfaces/VotePanel.tsx b/tgui/packages/tgui/interfaces/VotePanel.tsx index 2cb9c91ff8249..949751f2226db 100644 --- a/tgui/packages/tgui/interfaces/VotePanel.tsx +++ b/tgui/packages/tgui/interfaces/VotePanel.tsx @@ -1,6 +1,4 @@ import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -11,7 +9,9 @@ import { NoticeBox, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; enum VoteConfig { diff --git a/tgui/packages/tgui/layouts/Window.tsx b/tgui/packages/tgui/layouts/Window.tsx index aa91370bfc31e..abf35d8a31142 100644 --- a/tgui/packages/tgui/layouts/Window.tsx +++ b/tgui/packages/tgui/layouts/Window.tsx @@ -53,30 +53,32 @@ export const Window = (props: Props) => { const { debugLayout = false } = useDebug(); useEffect(() => { - const updateGeometry = () => { - const options = { - ...config.window, - size: DEFAULT_SIZE, + if (!suspended) { + const updateGeometry = () => { + const options = { + ...config.window, + size: DEFAULT_SIZE, + }; + + if (width && height) { + options.size = [width, height]; + } + if (config.window?.key) { + setWindowKey(config.window.key); + } + recallWindowGeometry(options); }; - if (width && height) { - options.size = [width, height]; - } - if (config.window?.key) { - setWindowKey(config.window.key); - } - recallWindowGeometry(options); - }; - - Byond.winset(Byond.windowId, { - 'can-close': Boolean(canClose), - }); - logger.log('mounting'); - updateGeometry(); - - return () => { - logger.log('unmounting'); - }; + Byond.winset(Byond.windowId, { + 'can-close': Boolean(canClose), + }); + logger.log('mounting'); + updateGeometry(); + + return () => { + logger.log('unmounting'); + }; + } }, [width, height]); const dispatch = globalStore.dispatch; diff --git a/tgui/packages/tgui/package.json b/tgui/packages/tgui/package.json index efe74af8123b0..82a3222f75066 100644 --- a/tgui/packages/tgui/package.json +++ b/tgui/packages/tgui/package.json @@ -16,6 +16,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-popper": "^2.3.0", + "tgui-core": "^1.1.3", "tgui-dev-server": "workspace:*", "tgui-polyfill": "workspace:*" } diff --git a/tgui/packages/tgui/styles/interfaces/Orbit.scss b/tgui/packages/tgui/styles/interfaces/Orbit.scss index 3bed71d3f0cd7..892dac500d8f4 100644 --- a/tgui/packages/tgui/styles/interfaces/Orbit.scss +++ b/tgui/packages/tgui/styles/interfaces/Orbit.scss @@ -1,8 +1,9 @@ .JobIcon { - height: 20px; background: black; + height: 20px; + overflow: clip; padding: 1px 1px 0 1px; - overflow: hidden; + width: 20px; } .OrbitItem__selected { diff --git a/tgui/webpack.config.js b/tgui/webpack.config.js index fa1782eb073b2..6ff3d1bf4a06a 100644 --- a/tgui/webpack.config.js +++ b/tgui/webpack.config.js @@ -60,7 +60,7 @@ module.exports = (env = {}, argv) => { ], }, { - test: /\.scss$/, + test: /\.(s)?css$/, use: [ { loader: ExtractCssPlugin.loader, diff --git a/tgui/yarn.lock b/tgui/yarn.lock index 1caeb0d24e853..817834e7a221f 100644 --- a/tgui/yarn.lock +++ b/tgui/yarn.lock @@ -8281,6 +8281,16 @@ __metadata: languageName: unknown linkType: soft +"tgui-core@npm:^1.1.3": + version: 1.1.3 + resolution: "tgui-core@npm:1.1.3" + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + checksum: 10c0/e4dccbf3f49d4fd46c9146bc21c586b739f562cc75cc86bf3d8c183e026bacbb04719f60a2dcaf937d05dfe084d9b69cc3208a0323462b28f62945fef94c5d01 + languageName: node + linkType: hard + "tgui-dev-server@workspace:*, tgui-dev-server@workspace:packages/tgui-dev-server": version: 0.0.0-use.local resolution: "tgui-dev-server@workspace:packages/tgui-dev-server" @@ -8389,6 +8399,7 @@ __metadata: react: "npm:^18.2.0" react-dom: "npm:^18.2.0" react-popper: "npm:^2.3.0" + tgui-core: "npm:^1.1.3" tgui-dev-server: "workspace:*" tgui-polyfill: "workspace:*" languageName: unknown diff --git a/tools/UpdatePaths/Scripts/82942_cigs_vape_repath.txt b/tools/UpdatePaths/Scripts/82942_cigs_vape_repath.txt new file mode 100644 index 0000000000000..22cf75332bfee --- /dev/null +++ b/tools/UpdatePaths/Scripts/82942_cigs_vape_repath.txt @@ -0,0 +1,2 @@ +/obj/item/clothing/mask/cigarette/@SUBTYPES : /obj/item/cigarette/@SUBTYPES{@OLD} +/obj/item/clothing/mask/vape/@SUBTYPES : /obj/item/vape/@SUBTYPES{@OLD} \ No newline at end of file diff --git a/tools/UpdatePaths/Scripts/83861_firebots.txt b/tools/UpdatePaths/Scripts/83861_firebots.txt new file mode 100644 index 0000000000000..152220c38b2d3 --- /dev/null +++ b/tools/UpdatePaths/Scripts/83861_firebots.txt @@ -0,0 +1 @@ +/mob/living/simple_animal/bot/firebot/@SUBTYPES : /mob/living/basic/bot/firebot/@SUBTYPES{@OLD} \ No newline at end of file diff --git a/tools/UpdatePaths/Scripts/84235_vatgrower_machine.txt b/tools/UpdatePaths/Scripts/84235_vatgrower_machine.txt new file mode 100644 index 0000000000000..527312e2c8826 --- /dev/null +++ b/tools/UpdatePaths/Scripts/84235_vatgrower_machine.txt @@ -0,0 +1,3 @@ +#comment Replaces the plumbing vatgrower variant with a vatgrower machine https://github.com/tgstation/tgstation/pull/84235 + +/obj/machinery/plumbing/growing_vat : /obj/machinery/vatgrower{@OLD} diff --git a/tools/build/build.js b/tools/build/build.js index 4d0926802fcf4..63ed236f0c668 100644 --- a/tools/build/build.js +++ b/tools/build/build.js @@ -216,7 +216,7 @@ export const DmTarget = new Juke.Target({ 'html/**', 'icons/**', 'interface/**', - 'massmeta/**', // MASSMETA EDIT ADDITION - Making the CBT work + 'massmeta/**', //MASSMETA EDIT ADDITION (Making the CBT work) `${DME_NAME}.dme`, NamedVersionFile, ], diff --git a/tools/ci/check_grep.sh b/tools/ci/check_grep.sh index c78e8fecf7c87..8a2b715502ff5 100644 --- a/tools/ci/check_grep.sh +++ b/tools/ci/check_grep.sh @@ -21,12 +21,14 @@ if command -v rg >/dev/null 2>&1; then fi code_files="code/**/**.dm" map_files="_maps/**/**.dmm" + shuttle_map_files="_maps/shuttles/**.dmm" code_x_515="code/**/!(__byond_version_compat).dm" else pcre2_support=0 grep=grep code_files="-r --include=code/**/**.dm" map_files="-r --include=_maps/**/**.dmm" + shuttle_map_files="-r --include=_maps/shuttles/**.dmm" code_x_515="-r --include=code/**/!(__byond_version_compat).dm" fi @@ -304,6 +306,12 @@ if [ "$pcre2_support" -eq 1 ]; then echo -e "${RED}ERROR: Invalid pronoun helper found.${NC}" st=1 fi; + part "shuttle area checker" + if $grep -PU '(},|\/obj|\/mob|\/turf\/(?!template_noop).+)[^()]+\/area\/template_noop\)' $shuttle_map_files; then + echo + echo -e "${RED}ERROR: Shuttle has objs or turfs in a template_noop area. Please correct their areas to a shuttle subtype.${NC}" + st=1 +fi; else echo -e "${RED}pcre2 not supported, skipping checks requiring pcre2" echo -e "if you want to run these checks install ripgrep with pcre2 support.${NC}" diff --git a/tools/maplint/lints/banned_obj_vars.yml b/tools/maplint/lints/banned_obj_vars.yml new file mode 100644 index 0000000000000..076aa20386a87 --- /dev/null +++ b/tools/maplint/lints/banned_obj_vars.yml @@ -0,0 +1,4 @@ +help: "This var is obsolete/no longer in use. Please remove it." +/obj: + banned_variables: + layer: diff --git a/tools/maplint/lints/telescreen_varedits.yml b/tools/maplint/lints/telescreen_varedits.yml new file mode 100644 index 0000000000000..37ea2d72b67c8 --- /dev/null +++ b/tools/maplint/lints/telescreen_varedits.yml @@ -0,0 +1,8 @@ +help: "Use the directional variants when possible." +/obj/machinery/computer/security/telescreen: + banned_variables: + pixel_x: + pixel_y: + dir: + deny: [1, 2, 4, 8] + network: diff --git a/tools/massmeta_check_grep.sh b/tools/massmeta_check_grep.sh deleted file mode 100644 index 78041e8f48190..0000000000000 --- a/tools/massmeta_check_grep.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -#ANSI Escape Codes for colors to increase contrast of errors -RED="\033[0;31m" -GREEN="\033[0;32m" -BLUE="\033[0;34m" -NC="\033[0m" # No Color - -echo -e "${BLUE}Re-running grep checks, but looking in modular_meta...${NC}" - -# Run the linters again, but modular massmeta code. -sed "s|code/\*\*/\*\.dm|massmeta/\*\*/\*\.dm|g" <tools/ci/check_grep.sh | bash