From 41fd93183608525f2d011ba9c5e12b8619105b8e Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 10:43:32 +0100 Subject: [PATCH 001/166] [MIRROR] Wendigo Cave Ruin & Domain Aesthetic Refresh + Wendigo Corpse Fix [MDB IGNORE] (#25838) * Wendigo Cave Ruin & Domain Aesthetic Refresh + Wendigo Corpse Fix (#80334) ## About The Pull Request Updates the Wendigo Cave ruin on Ice Box and it's domain to be more detailed, without changing the shape of the arena too much. Also fixes the Wendigo attacking corpses, ![image](https://github.com/tgstation/tgstation/assets/86125936/f6720c48-a139-46a2-92d6-d9d83fd4672a) ![image](https://github.com/tgstation/tgstation/assets/86125936/36281f17-d853-40bb-b08e-c6ae0254dcc8) And the domain! ![image](https://github.com/tgstation/tgstation/assets/86125936/441886d8-816e-4de8-b54b-0fa4f57e3a93) ## Why It's Good For The Game Makes the Wendigo arena and the surrounding area more varied visually, as well as stopping the Wendigo from attacking the decorative corpses used in the domain. (Previous Arena for reference) ![image](https://github.com/tgstation/tgstation/assets/86125936/346da0eb-9d16-430b-91bb-970f84d52826) ## Changelog :cl: qol: Wendigo Cave ruin gets an aesthetic refresh fix: Wendigos (Wendigi?) no longer attack corpses /:cl: * Wendigo Cave Ruin & Domain Aesthetic Refresh + Wendigo Corpse Fix --------- Co-authored-by: Ical <86125936+Ical92@users.noreply.github.com> --- .../icemoon_underground_wendigo_cave.dmm | 2138 +++++++------ _maps/virtual_domains/wendigo.dmm | 2776 +++++++++-------- .../virtual_domain/domains/wendigo.dm | 8 + .../hostile/megafauna/wendigo.dm | 4 + code/modules/mob_spawn/corpses/job_corpses.dm | 4 + 5 files changed, 2714 insertions(+), 2216 deletions(-) diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm index 9a4abac267d..8f823063856 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm @@ -1,1021 +1,1281 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/turf/closed/indestructible/rock/snow/ice/ore, -/area/icemoon/underground/explored) -"b" = ( -/turf/open/misc/asteroid/snow/ice/icemoon, -/area/icemoon/underground/unexplored) -"d" = ( /turf/template_noop, /area/template_noop) -"j" = ( -/obj/effect/mob_spawn/corpse/human/miner/explorer, -/turf/open/misc/asteroid/snow/ice/icemoon, +"c" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/unexplored) +"d" = ( +/obj/structure/flora/tree/pine/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"e" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"g" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"h" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"j" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"k" = ( +/obj, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) +"l" = ( +/turf/closed/indestructible/rock/snow/ice/ore, +/area/icemoon/underground/explored) +"m" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"n" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"o" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) +"p" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) "q" = ( +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"t" = ( +/obj/effect/portal/permanent/one_way{ + id = "wendigo arena" + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/unexplored) +"u" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"w" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 11; + pixel_y = 18 + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"y" = ( +/obj/structure/flora/grass/both/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) +"z" = ( +/obj/structure/flora/grass/brown/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"A" = ( +/obj/effect/decal/cleanable/blood/gibs/torso, +/obj/effect/decal/cleanable/blood/old, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"B" = ( +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"C" = ( +/obj/effect/mob_spawn/corpse/human/miner/explorer, +/obj/effect/decal/cleanable/blood/gibs/old, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) +"D" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"F" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 8; + pixel_y = 11 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/unexplored) +"G" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/obj/structure/flora/grass/brown/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"H" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"I" = ( +/turf/closed/indestructible/rock/snow/ice/ore, +/area/icemoon/underground/unexplored) +"J" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/unexplored) +"K" = ( +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"L" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"M" = ( +/obj/structure/flora/tree/pine/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) +"N" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/unexplored) +"O" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"P" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"Q" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -5 + }, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 7; + pixel_y = 17 + }, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 10; + pixel_y = 7 + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) +"R" = ( +/obj/effect/landmark/portal_exit{ + id = "wendigo arena" + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"S" = ( +/obj/structure/flora/grass/brown/style_random, +/turf/closed/indestructible/rock/snow/ice/ore, +/area/icemoon/underground/explored) +"T" = ( +/obj/structure/flora/rock/pile/icy/style_3, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"U" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored) +"V" = ( +/obj/effect/landmark/portal_exit{ + id = "wendigo arena exit" + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/unexplored) +"W" = ( /mob/living/simple_animal/hostile/megafauna/wendigo, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored) -"z" = ( -/obj/effect/landmark/portal_exit{ - id = "wendigo arena" +"X" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 }, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored) -"K" = ( -/obj/effect/landmark/portal_exit{ - id = "wendigo arena exit" +"Y" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 }, -/turf/open/misc/asteroid/snow/ice/icemoon, -/area/icemoon/underground/unexplored) -"N" = ( /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored) -"U" = ( -/obj/item/paper/crumpled/bloody{ - default_raw_text = "for your own sake, do not enter" +"Z" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 }, -/turf/open/misc/asteroid/snow/ice/icemoon, -/area/icemoon/underground/unexplored) -"V" = ( -/obj/effect/portal/permanent/one_way{ - id = "wendigo arena" +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" }, -/turf/open/misc/asteroid/snow/ice/icemoon, -/area/icemoon/underground/unexplored) +/area/icemoon/underground/explored) (1,1,1) = {" -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (2,1,1) = {" -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (3,1,1) = {" -d -d -d -d -d -d -d -d -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -d -d -d +a +a +a +a +a +a +a +o +o +o +o +y +y +o +o +o +o +o +y +o +o +o +o +o +a +a +a +a +a +a +a +a "} (4,1,1) = {" -d -d -d -d -d -d -d -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -d -d +a +a +a +a +a +a +o +o +y +l +I +M +o +c +o +o +o +o +o +o +y +y +o +o +o +a +a +a +a +a +a +a "} (5,1,1) = {" -d -d -d -d -d -d -b -b -b +a +a +a +a +a +o +o +y +o +l +l +l +l +l +y +o +o +M +l +l +l +l +l +o +c +o a a a a a a -a -a -a -a -a -a -a -b -b -b -d -d -d -d -d -d "} (6,1,1) = {" -d -d -d -d -d -b -b -b +a +a +a +a +o +o +o +y +l +l +l +l +l +l +l +l +l +l +l +l +l +l +M +c +o +o +o a a a a a -a -a -a -a -a -a -a -a -a -a -b -b -b -d -d -d -d -d "} (7,1,1) = {" -d -d -d -d -b -b -b +a +a +a +o +o +o +c +l +l +l +l +l +l +l +l +l +l +l +l +l +l +l +o +o +y +o +o +o a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -d -d -d -d "} (8,1,1) = {" +a +a +a +o +o +M +l +l +l +l +l +l +l d -d -d -b -b -b +H +z +g +g +l +l +l +l +l +l +M +o +o +o a a a a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -d -d -d "} (9,1,1) = {" -d -d -b -b -b +a +a +a +o +o +y +l +l +l +l +l +z +H +H +h +Z +H +z +z +H +l +l +l +l +l +y +y +o a a a a -a -a -N -N -N -N -N -N -N -N -N -a -a -a -a -a -a -b -b -b -d -d "} (10,1,1) = {" -d -d -b -b +a +a +a +k +M +y +l +l +l +l +g +H +j +H +H +O +L +L +P +g +H +l +l +l +l +l +c +o a a a a -a -a -N -N -N -N -N -N -N -N -N -N -N -a -a -a -a -a -a -b -b -d -d "} (11,1,1) = {" -d -d -b -b +a +a +a +o +o +l +l +l +z +n +H +H +U +Z +H +O +K +B +H +H +H +n +H +l +l +l +o +M a a a a -a -N -N -N -N -N -N -N -N -N -N -N -N -N -a -a -a -a -a -b -b -d -d "} (12,1,1) = {" -d -d -b -b +a +a +a +o +l +l +l +h +L +K +Z +H +T +O +L +K +K +B +g +e +L +B +H +g +l +l +l +o a a a a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -a -a -a -a -b -b -d -d "} (13,1,1) = {" -d -d -b -b +a +a +o +o +l +l +l +H +H +O +K +Z +H +O +K +K +K +K +L +K +K +K +Z +H +l +l +l +o a a a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N a -a -a -b -b -d -d "} (14,1,1) = {" +a +a +o +o +M +l +l +l d -d -b -b +O +K +B +H +O +K +K +K +K +K +K +K +K +K +L +l +l +l +o +o a a a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -a -a -a -b -b -d -d "} (15,1,1) = {" -d -d -b -b +a +a +y +y +c +l +l +l +l +K +K +K +L +K +K +K +K +K +K +K +K +K +K +Y +l +l +o +o +M a a a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -a -a -a -b -b -d -d "} (16,1,1) = {" -d -d -b -b a a -a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N +o +M +o +l +l +l +l +K +K +K +K +K +K +K +m +q +K +K +K +K +X +H +l +l +J +C +o +y a a -a -b -b -d -d "} (17,1,1) = {" -d -d -b -b a a -a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N +o +o +V +o +l +l +l +K +K +K +K +K +K +W +A +K +K +K +K +B +w +R +l +t +F +Q +o +y a a -a -j -b -d -d "} (18,1,1) = {" -d -d -b +a +a +o +o +o +y +l +l +l K +K +K +K +K +K +K +D +K +K +K +K +B +u +H +l +N +c +o +o +o a a -a -N -N -N -N -N -N -N -N -q -N -N -N -N -N -N -N -z -a -a -a -V -U -d -d "} (19,1,1) = {" -d -d -b -b a a -a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N +o +o +y +M +l +l +Y +Y +Y +K +K +K +K +K +K +K +K +K +K +K +L +L +l +l +y +o +o +M a a -a -b -b -d -d "} (20,1,1) = {" +a +a +M +o +o +l +l d -d -b -b +H +H +H +O +K +Y +K +K +K +K +K +K +K +K +K +K +l +l +l +y +o a a a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -a -a -a -b -b -d -d "} (21,1,1) = {" -d -d -b -b +a +a +o +o +c +l +l +g +H +e +L +K +B +H +O +K +Y +K +K +K +Y +Y +K +K +l +l +l +y a a a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N a -a -a -b -b -d -d "} (22,1,1) = {" -d -d -b -b +a +a +o +c +l +l +l +L +p +Y +K +K +B +H +O +B +T +U +K +B +H +g +U +l +l +l +l +c a a a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N a -a -a -b -b -d -d "} (23,1,1) = {" -d -d -b -b a a a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N +o +l +l +l +l +z +H +O +K +X +g +O +B +H +H +O +B +H +H +H +l +l +l +o +o +a a a a -b -b -d -d "} (24,1,1) = {" +a +a +a +o +o +l +l +l +S d -d -b -b +O +X +g +H +U +X +H +H +U +B +H +H +l +l +l +l +o +M a a a a -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -a -a -a -a -b -b -d -d "} (25,1,1) = {" -d -d -b -b +a +a +a +o +o +o +l +l +l +l +B +H +H +z +H +H +g +z +z +O +l +l +l +l +l +c +o +o a a a a -a -N -N -N -N -N -N -N -N -N -N -N -N -N -a -a -a -a -a -b -b -d -d "} (26,1,1) = {" +a +a +a +M +o +o +o +M +l +l +l +H +z +z +l +l +l d -d -b -b +G +l +l +l +l +o +o +o +o +o a a a a -a -a -N -N -N -N -N -N -N -N -N -N -N -a -a -a -a -a -a -b -b -d -d "} (27,1,1) = {" -d -d -b -b -b a a a a -a -a -N -N -N -N -N -N -N -N -N +c +o +y +y +l +l +l +l +l +l +l +l +l +l +l +l +l +l +l +o +o +o +M +o a a a a -a -a -b -b -b -d -d "} (28,1,1) = {" -d -d -d -b -b -b a a a a a +c +o +y +o +l +l +l +l +l +l +l +l +l +l +l +l +l +c +o +o +o +o a a a a a -a -a -a -a -a -a -a -a -a -b -b -b -d -d -d "} (29,1,1) = {" -d -d -d -d -b -b -b a a a a a a +o +o +o +o +M +y +o +l +l +l +l +l +l +l +l +o +o +o +M +o a a a a a a -a -a -a -a -a -b -b -b -d -d -d -d "} (30,1,1) = {" -d -d -d -d -d -b -b -b a a a @@ -1023,6 +1283,24 @@ a a a a +o +o +o +c +o +o +o +M +o +l +l +l +l +o +o +o +o +o a a a @@ -1030,26 +1308,8 @@ a a a a -a -b -b -b -d -d -d -d -d "} (31,1,1) = {" -d -d -d -d -d -d -b -b -b a a a @@ -1058,150 +1318,96 @@ a a a a +o +o +M +o +o +o +c +y +y +o +o +o +c +o +o +M +a +a +a a a a a a -b -b -b -d -d -d -d -d -d "} (32,1,1) = {" -d -d -d -d -d -d -d -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -d -d +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} (33,1,1) = {" -d -d -d -d -d -d -d -d -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -d -d -d -"} -(34,1,1) = {" -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -"} -(35,1,1) = {" -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} diff --git a/_maps/virtual_domains/wendigo.dmm b/_maps/virtual_domains/wendigo.dmm index 9d57c242aff..57c002c148c 100644 --- a/_maps/virtual_domains/wendigo.dmm +++ b/_maps/virtual_domains/wendigo.dmm @@ -1,1375 +1,1651 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( +"aa" = ( /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored/virtual_domain) -"b" = ( +"ab" = ( /turf/closed/indestructible/rock/snow/ice/ore, /area/icemoon/underground/explored/virtual_domain) -"e" = ( -/turf/open/misc/asteroid/snow/ice/icemoon, -/area/icemoon/underground/explored/virtual_domain) -"f" = ( -/obj/structure/marker_beacon/olive, +"ac" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored/virtual_domain) -"i" = ( +"ad" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"ae" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"ag" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"ah" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"ai" = ( /turf/closed/indestructible/binary, /area/icemoon/underground/explored/virtual_domain) -"o" = ( -/obj/structure/marker_beacon/indigo, +"aj" = ( +/obj/effect/mob_spawn/corpse/human/cargo_tech, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"ak" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored/virtual_domain) -"p" = ( -/obj/structure/marker_beacon/bronze, +"al" = ( +/obj/structure/flora/rock/pile/icy/style_3, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"am" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored/virtual_domain) -"q" = ( -/obj/structure/marker_beacon/yellow, +"an" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored/virtual_domain) -"t" = ( -/obj/structure/marker_beacon/teal, +"ar" = ( +/obj/structure/flora/tree/stump, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"as" = ( +/turf/closed/indestructible/necropolis, +/area/icemoon/underground/explored/virtual_domain) +"au" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"av" = ( +/obj/structure/flora/grass/brown/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"aw" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored/virtual_domain) -"x" = ( -/obj/structure/marker_beacon/burgundy, +"ay" = ( +/obj/effect/mob_spawn/corpse/human/bitrunner, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored/virtual_domain) -"A" = ( +"az" = ( +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aA" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/template_noop, /area/virtual_domain/safehouse) -"E" = ( -/obj/effect/mob_spawn/corpse/human/miner, -/turf/open/misc/asteroid/snow/ice/icemoon, +"aB" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/structure/holosign/barrier, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, /area/icemoon/underground/explored/virtual_domain) -"H" = ( +"aC" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aD" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aF" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/mob_spawn/corpse/human/bitrunner, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aG" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aH" = ( /mob/living/simple_animal/hostile/megafauna/wendigo, /turf/open/indestructible/necropolis{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/icemoon/underground/explored/virtual_domain) -"L" = ( +"aI" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aJ" = ( +/obj/effect/decal/cleanable/blood/gibs/torso, +/obj/effect/decal/cleanable/blood/old, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aK" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aL" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/closed/indestructible/binary, /area/icemoon/underground/explored/virtual_domain) -"R" = ( +"aM" = ( +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aN" = ( +/obj/structure/flora/grass/brown/style_random, +/obj/structure/holosign/barrier, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"aO" = ( +/obj/effect/mob_spawn/corpse/human/cyber_police, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aP" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/obj/structure/flora/grass/brown/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"aQ" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aR" = ( /obj/item/paper/crumpled/bloody{ default_raw_text = "for your own sake, do not enter" }, -/turf/open/misc/asteroid/snow/ice/icemoon, +/turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored/virtual_domain) -"S" = ( +"aS" = ( /turf/template_noop, /area/template_noop) -"V" = ( +"aT" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aU" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aV" = ( /turf/template_noop, /area/virtual_domain/safehouse) -"Z" = ( +"aW" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aX" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aY" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 2; + pixel_y = 3 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"aZ" = ( /obj/modular_map_root/safehouse{ key = "lavaland_boss" }, /turf/template_noop, /area/virtual_domain/safehouse) +"bX" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"jc" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"lc" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"pl" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/mob_spawn/corpse/human/bitrunner, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"sn" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"KV" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"Vt" = ( +/obj/structure/flora/grass/brown/style_random, +/turf/closed/indestructible/rock/snow/ice/ore, +/area/icemoon/underground/explored/virtual_domain) (1,1,1) = {" -S -S -S -S -S -S -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -S -S -S -S -S -S -S -S -S -S -S -S -S -S +aS +aS +aS +aS +aS +aS +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS "} (2,1,1) = {" -S -S -S -S -S -i -i -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -i -i -S -S -S -S -S -S -S -S -S -S -S -S -S +aS +aS +aS +aS +aS +ai +ai +ae +ae +ae +ae +ae +ar +ae +ae +ad +ag +ae +ae +ae +ar +ae +ai +ai +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS "} (3,1,1) = {" -S -S -S -S -i -i -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -i -i -S -S -S -S -S -S -S -S -S -S -S -S +aS +aS +aS +aS +ai +ai +ae +ae +ae +ae +ae +ae +ae +ae +ad +aI +aI +an +aw +ae +ae +ae +ae +ai +ai +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS "} (4,1,1) = {" -S -S -S -i -i -e -e -e -b -b -b -b -b -e -e -e -b -b -b -b -b -e -e -e -i -i -S -S -S -S -S -S -S -S -S -S -S +aS +aS +aS +ai +ai +ae +ae +av +ab +ab +ar +ae +au +ad +az +ae +ae +ae +ae +av +av +ae +ae +ae +ai +ai +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS "} (5,1,1) = {" -S -S -i -i -e -e -e -b -b -b -b -b -b -b -e -b -b -b -b -b -b -b -e -e -e -i -i -i -i -i -i -i -i -i -i -i -L +aS +aS +ai +ai +ae +ae +av +ae +ab +ab +ab +ab +ab +aC +aa +ag +ar +ab +ab +ab +ab +ab +ae +au +ae +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +aL "} (6,1,1) = {" -S -i -i -e -e -e -b -b -b -b -b -b -b -b -e -b -b -b -b -b -b -b -b -e -e -e -i -i -e -e -e -e -e -e -e -e -i +aS +ai +ai +ae +ae +ae +av +ab +ab +ab +ab +ab +ab +as +ab +ab +ab +ab +ab +ab +ab +ar +au +ae +ae +ae +ai +ai +ae +ae +ae +ae +ae +ae +ae +ae +ai "} (7,1,1) = {" -i -i -e -e -e -b -b -b -b -b -b -b -b -b -e -b -b -b -b -b -b -b -b -b -e -e -e -i -e -e -e -e -e -e -e -e -i +ai +ai +ae +ae +ae +au +ab +ab +ab +ab +ab +ab +ab +as +as +ab +ab +ab +ab +ab +ab +ae +ae +av +ae +ae +ae +ai +ae +ae +ae +ae +ad +ag +ae +ae +ai "} (8,1,1) = {" -i -e -e -e -b -b -b -b -b -b -a -a -a -a -a -a -a -a -a -b -b -b -b -b -b -e -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ae +ar +ab +ab +ab +ab +ab +ab +ab +ar +aC +aa +az +au +ab +ab +ab +ab +ab +ab +ar +ae +ae +ae +ae +ae +ae +ae +aQ +aa +aa +ag +ae +ai "} (9,1,1) = {" -i -e -e -b -b -b -b -b -b -a -a -a -a -a -a -a -a -a -a -a -b -b -b -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ae +av +ab +ab +ab +ab +ab +av +ae +ae +am +aa +aF +av +av +ae +ab +ab +ab +ab +ab +av +av +ae +ae +ae +ae +ae +ae +am +aa +aD +ae +ai "} (10,1,1) = {" -i -e -e -b -b -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ar +av +ab +ab +ab +ab +au +ae +jc +ae +ae +aC +aa +ac +ak +au +ae +ab +ab +ab +ab +ab +au +ae +ae +ad +aw +ae +ae +ae +aT +ae +ae +ai "} (11,1,1) = {" -i -e -E -b -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -o -a -a -b -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ae +ab +ab +ab +av +aX +ae +ae +am +ag +ae +aC +aa +az +ae +ae +al +aX +ae +ab +ab +ab +ae +ae +aQ +aD +ae +ae +ae +ae +aK +ae +ae +ai "} (12,1,1) = {" -i -e -e -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ab +ab +ab +KV +ac +aa +ag +ae +al +aC +ac +aa +aa +az +au +ad +ac +az +ae +au +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ai "} (13,1,1) = {" -i -e -e -b -b -b -a -a -a -a -q -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ab +ab +ab +ae +ae +aC +aa +ag +ae +aC +aa +aa +aa +aa +ac +aa +aa +aa +ag +ae +ab +ab +ab +av +ae +ae +ae +ae +ae +ae +ae +ae +ae +ai "} (14,1,1) = {" -i -e -e -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -e -e -e -V -V -V -V -V -Z -e -i +ai +ae +ae +ar +ab +ab +ab +ar +aC +aa +az +ae +aC +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +ab +ab +ab +al +ar +ae +aV +aV +aV +aV +aV +aZ +ae +ai "} (15,1,1) = {" -i -e -e -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -E -e -e -V -V -V -V -V -V -e -i +ai +ae +ae +au +ab +ab +ab +as +aa +aa +aa +ac +aa +aa +aa +aa +aa +aa +aa +aa +aa +ay +aa +as +as +av +ae +aj +ae +aV +aV +aV +aV +aV +aV +ae +ai "} (16,1,1) = {" -i -e -e -e -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -e -e -e -e -V -V -V -V -V -V -e -i +ai +ae +ad +ac +ab +as +as +as +aa +aa +aa +aa +aa +aa +aa +ah +aM +aa +aa +aa +aa +aa +aa +aa +as +aB +ae +ae +av +aV +aV +aV +aV +aV +aV +ae +ai "} (17,1,1) = {" -i -e -e -e -e -e -a -a -a -a -a -a -a -a -H -a -a -a -a -x -a -a -a -e -e -e -e -R -e -V -V -V -V -V -V -e -i +ai +KV +aI +aa +aa +as +as +as +aa +aa +aa +aa +aa +aa +aH +aJ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aY +aw +aR +av +aV +aV +aV +aV +aV +aV +ae +ai "} (18,1,1) = {" -i -e -e -e -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -e -e -e -e -V -V -V -V -V -V -e -i +ai +ae +ae +am +aa +as +as +as +aa +aa +aa +aa +aa +aa +aa +sn +aa +aa +aa +aa +aa +aa +aa +aa +aa +aD +ae +ae +ae +aV +aV +aV +aV +aV +aV +ae +ai "} (19,1,1) = {" -i -e -e -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -e -e -e -V -V -V -V -V -V -e -i +ai +ae +ae +av +aC +ab +as +aI +aI +aI +aa +aa +aa +aa +aa +aa +aO +aa +aa +aa +aa +aa +aa +as +as +aN +ae +ae +ar +aV +aV +aV +aV +aV +aV +ae +ai "} (20,1,1) = {" -i -e -e -b -b -b -a -a -a -a -a -a -a -a -p -a -a -a -a -a -a -a -a -b -b -b -e -e -e -V -V -V -V -V -A -e -i +ai +ae +ae +ae +ab +ab +ar +ae +ae +al +aC +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +av +ae +ae +aV +aV +aV +aV +aV +aA +ae +ai "} (21,1,1) = {" -i -e -e -b -b -b -a -a -a -a -f -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ar +ae +au +ab +ab +au +ae +ad +ac +aa +aa +aa +aa +aa +aI +aa +aa +aa +aI +aI +aa +aa +ab +ab +ab +av +ae +ae +ae +ae +ae +ae +ae +ae +ae +ai "} (22,1,1) = {" -i -e -e -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ab +ab +ab +ac +lc +aI +aa +aa +az +al +aC +az +al +am +aa +az +ae +au +am +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ai "} (23,1,1) = {" -i -e -e -b -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -t -a -b -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ab +ab +ab +ab +av +ae +pl +aa +aD +au +aC +az +ae +ae +aC +az +ae +ae +ae +ab +ab +ab +ae +ae +aQ +ag +ae +ae +ae +ae +ae +ae +ae +ai "} (24,1,1) = {" -i -e -e -b -b -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -b -b -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ae +ab +ab +ab +Vt +ar +aC +aD +au +ae +aC +aa +aW +ae +am +az +ae +ae +ab +ab +ab +ab +ae +ae +ae +am +ac +aW +ae +ae +aU +ae +ae +ai "} (25,1,1) = {" -i -e -e -b -b -b -b -b -b -a -a -a -a -a -a -a -a -a -a -a -b -b -b -b -b -b -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ae +ae +ab +ab +ab +ab +az +ae +ae +ad +aa +az +au +av +av +aC +ab +ab +ab +ab +ab +au +ae +ae +ae +ae +aG +ae +ae +ad +aI +aW +ae +ai "} (26,1,1) = {" -i -e -e -e -b -b -b -b -b -b -a -a -a -a -a -a -a -a -a -b -b -b -b -b -b -e -e -e -e -e -e -e -e -e -e -e -i +ai +ae +ae +ae +ae +ae +ar +ab +ab +ab +ae +av +aC +as +as +ab +ar +aP +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aK +ae +ae +ae +ai "} (27,1,1) = {" -i -i -e -e -e -b -b -b -b -b -b -b -b -b -e -b -b -b -b -b -b -b -b -b -e -e -e -i -e -e -e -e -e -e -e -e -i +ai +ai +ae +au +ae +av +av +ab +ab +ab +ab +ab +as +as +ab +ab +ab +ab +ab +ab +ab +ab +ae +ae +ae +ar +ae +ai +ae +ae +ae +ae +ae +ae +ae +ae +ai "} (28,1,1) = {" -S -i -i -e -e -e -b -b -b -b -b -b -b -b -e -b -b -b -b -b -b -b -b -e -e -e -i -i -e -e -e -e -e -e -e -e -i +aS +ai +ai +ae +au +ae +av +ae +ab +ab +ab +ab +as +as +ab +ab +ab +ab +ab +ab +ab +au +ae +ae +ae +ae +ai +ai +ae +ae +ae +ae +ae +ae +ae +ae +ai "} (29,1,1) = {" -S -S -i -i -e -e -e -b -b -b -b -b -b -b -e -b -b -b -b -b -b -b -e -e -e -i -i -i -i -i -i -i -i -i -i -i -i +aS +aS +ai +ai +ae +ae +ae +ae +ae +ar +av +aC +as +as +ab +ab +ab +ab +ab +ab +ae +ae +ae +ar +ae +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai "} (30,1,1) = {" -S -S -S -i -i -e -e -e -b -b -b -b -b -e -e -e -b -b -b -b -b -e -e -e -i -i -S -S -S -S -S -S -S -S -S -S -S +aS +aS +aS +ai +ai +ae +ae +ae +ae +au +ae +am +aa +aa +aI +ab +ab +ab +ab +ae +ae +ae +ae +ae +ai +ai +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS "} (31,1,1) = {" -S -S -S -S -i -i -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -i -i -S -S -S -S -S -S -S -S -S -S -S -S +aS +aS +aS +aS +ai +ai +ae +ae +ae +ae +ae +ae +aC +aD +ae +ae +ae +ae +ae +ae +ae +ae +ae +ai +ai +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS "} (32,1,1) = {" -S -S -S -S -S -i -i -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -i -i -S -S -S -S -S -S -S -S -S -S -S -S -S +aS +aS +aS +aS +aS +ai +ai +ae +ae +ae +ae +ae +bX +ae +ae +ae +ae +ae +ae +ae +ae +ae +ai +ai +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS "} (33,1,1) = {" -S -S -S -S -S -S -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -S -S -S -S -S -S -S -S -S -S -S -S -S -S +aS +aS +aS +aS +aS +aS +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS +aS "} diff --git a/code/modules/bitrunning/virtual_domain/domains/wendigo.dm b/code/modules/bitrunning/virtual_domain/domains/wendigo.dm index c2ea1a2b57f..6db7c3337b6 100644 --- a/code/modules/bitrunning/virtual_domain/domains/wendigo.dm +++ b/code/modules/bitrunning/virtual_domain/domains/wendigo.dm @@ -7,3 +7,11 @@ key = "wendigo" map_name = "wendigo" reward_points = BITRUNNER_REWARD_HIGH + +/obj/effect/mob_spawn/corpse/human/bitrunner/special(mob/living/spawned_mob) + . = ..() + spawned_mob.apply_status_effect(/datum/status_effect/gutted) + +/obj/effect/mob_spawn/corpse/human/cyber_police/special(mob/living/spawned_mob) + . = ..() + spawned_mob.apply_status_effect(/datum/status_effect/gutted) 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 4e31088309a..50a6cee44ce 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm @@ -116,6 +116,10 @@ Difficulty: Hard shockwave_scream() return + var/mob/living/living_target = target + if(istype(living_target) && living_target.stat == DEAD) + return + if(COOLDOWN_FINISHED(src, scream_cooldown)) chosen_attack = rand(1, 3) else diff --git a/code/modules/mob_spawn/corpses/job_corpses.dm b/code/modules/mob_spawn/corpses/job_corpses.dm index 3893f3e1ba6..00a5de4f3d6 100644 --- a/code/modules/mob_spawn/corpses/job_corpses.dm +++ b/code/modules/mob_spawn/corpses/job_corpses.dm @@ -84,3 +84,7 @@ outfit = /datum/outfit/job/roboticist icon_state = "corpseroboticist" +/obj/effect/mob_spawn/corpse/human/bitrunner + name = JOB_BITRUNNER + outfit = /datum/outfit/job/bitrunner + icon_state = "corpsecargotech" From 62caf32c133347d977654fd56f0025f69258061d Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 10:43:53 +0100 Subject: [PATCH 002/166] Automatic changelog for PR #25838 [ci skip] --- html/changelogs/AutoChangeLog-pr-25838.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25838.yml diff --git a/html/changelogs/AutoChangeLog-pr-25838.yml b/html/changelogs/AutoChangeLog-pr-25838.yml new file mode 100644 index 00000000000..831e030644d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25838.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - qol: "Wendigo Cave ruin gets an aesthetic refresh" + - bugfix: "Wendigos (Wendigi?) no longer attack corpses" \ No newline at end of file From 33d7bdecc2afc1ab239073e71af00d6a93f70554 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 11:13:29 +0100 Subject: [PATCH 003/166] [MIRROR] Removes material breakdown flags, traits & miscellaneous fixes. [MDB IGNORE] (#25836) * Removes material breakdown flags, traits & miscellaneous fixes. (#80389) ## About The Pull Request 1. Removes material breakdown flags i.e. all flags with the format `BREAKDOWN_XXX`. These flags do nothing, there are no special checks to transform materials based on these flags, they are passed around just because certain procs require them for syntax purposes only. Apparently there were plans to make these flags do something special from the comment https://github.com/tgstation/tgstation/blob/302247c0d1e980478f59d9c497169290ee259887/code/__DEFINES/construction/material.dm#L43 But nobody got any ideas for years now. The only special thing we can do with them now is remove them and reduce code clutter, so let's do that The only flag that ever did something was the `BREAKDOWN_INCLUDE_ALCHEMY` flag. This only worked when coupled together with `TRAIT_MAT_TRANSMUTED` trait(which is only used by the reagent metalgen) and when both this trait & flag are combined together... they still do nothing https://github.com/tgstation/tgstation/blob/302247c0d1e980478f59d9c497169290ee259887/code/game/atom/atom_materials.dm#L41-L42 Yup they cancel out each other to prevent returning an empty list, the traits only job was to prevent materials from being recycled (like why? what's the benefit of that? nothing) and the flag was meant to bypass this restriction so both the trait & the flag cancel out each other therefore doing nothing meaningful. Best remove them both and call it a day. 2. Fixes an error in displaying number of sheets inserted into a mat container when that sheet is made up of alloy materials. it would count as 2 or more because it would take the sum of total material amount inserted and not the actual sheets. That's fixed now. 3. Remote materials now properly respect the `MATCONTAINER_NO_INSERT` flag 4. Adds helper proc to insert materials via the remote material component with proper context ## Changelog :cl: fix: mat container displays correct number of sheets inserted for alloy materials. fix: remote materials now properly respect the `MATCONTAINER_NO_INSERT` flag. code: removes material breakdown flags and related traits. code: adds helper proc to insert materials via the remote material component with proper context. /:cl: * Removes material breakdown flags, traits & miscellaneous fixes. --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> --- code/__DEFINES/construction/material.dm | 20 -------- code/__DEFINES/traits/declarations.dm | 3 -- code/_globalvars/bitfields.dm | 3 +- code/_globalvars/traits/_traits.dm | 1 - .../components/material/material_container.dm | 51 +++++++++---------- .../components/material/remote_materials.dm | 29 +++++++++-- code/datums/materials/_material.dm | 6 +-- code/datums/materials/alloys.dm | 10 ++-- code/game/atom/atom_materials.dm | 6 +-- code/game/machinery/droneDispenser.dm | 4 +- code/game/machinery/recycler.dm | 18 ++++--- code/game/machinery/sheetifier.dm | 2 +- code/modules/cargo/exports/materials.dm | 2 +- code/modules/clothing/shoes/bananashoes.dm | 8 ++- code/modules/mining/machine_processing.dm | 6 +-- code/modules/mining/machine_redemption.dm | 8 +-- code/modules/mod/modules/modules_general.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 3 +- .../modules/research/machinery/_production.dm | 7 +-- .../modules/vehicles/mecha/mech_fabricator.dm | 6 +-- .../wiremod/components/atom/matscanner.dm | 5 +- .../modules/wiremod/core/component_printer.dm | 12 +---- 22 files changed, 92 insertions(+), 120 deletions(-) diff --git a/code/__DEFINES/construction/material.dm b/code/__DEFINES/construction/material.dm index dad575c58c3..294fe6364cd 100644 --- a/code/__DEFINES/construction/material.dm +++ b/code/__DEFINES/construction/material.dm @@ -40,26 +40,6 @@ ///If the user won't receive a warning when attacking the container with an unallowed item. #define MATCONTAINER_SILENT (1<<3) -// The following flags are for decomposing alloys. Should be expanded upon and diversified once someone gets around to reworking recycling. -/// Can reduce an alloy into its component materials. -#define BREAKDOWN_ALLOYS (1<<4) -/// Makes the material composition include transmuted materials objects -#define BREAKDOWN_INCLUDE_ALCHEMY (1<<5) -/// Breakdown flags used by techfabs and circuit printers. -#define BREAKDOWN_FLAGS_LATHE (BREAKDOWN_ALLOYS) -/// Breakdown flags used by the ORM. -#define BREAKDOWN_FLAGS_ORM (BREAKDOWN_ALLOYS) -/// Breakdown flags used by the recycler. -#define BREAKDOWN_FLAGS_RECYCLER (BREAKDOWN_ALLOYS) -/// Breakdown flags used by the sheetifier. -#define BREAKDOWN_FLAGS_SHEETIFIER (BREAKDOWN_ALLOYS) -/// Breakdown flags used by the ore processor. -#define BREAKDOWN_FLAGS_ORE_PROCESSOR (BREAKDOWN_ALLOYS) -/// Breakdown flags used by the drone dispenser. -#define BREAKDOWN_FLAGS_DRONE_DISPENSER (BREAKDOWN_ALLOYS) -/// Breakdown flags used when exporting materials. -#define BREAKDOWN_FLAGS_EXPORT (NONE) - /// Whether a material's mechanical effects should apply to the atom. This is necessary for other flags to work. #define MATERIAL_EFFECTS (1<<0) /// Applies the material color to the atom's color. Deprecated, use MATERIAL_GREYSCALE instead diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index a848ea64684..59519b1a77b 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -623,9 +623,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Used for managing KEEP_TOGETHER in [/atom/var/appearance_flags] #define TRAIT_KEEP_TOGETHER "keep-together" -///Marks the item as having been transmuted. Functionally blacklists the item from being recycled or sold for materials. -#define TRAIT_MAT_TRANSMUTED "transmuted" - // cargo traits ///If the item will block the cargo shuttle from flying to centcom #define TRAIT_BANNED_FROM_CARGO_SHUTTLE "banned_from_cargo_shuttle" diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 93d55731d95..83e74381748 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -222,8 +222,7 @@ DEFINE_BITFIELD(mat_container_flags, list( "MATCONTAINER_EXAMINE" = MATCONTAINER_EXAMINE, "MATCONTAINER_NO_INSERT" = MATCONTAINER_NO_INSERT, "MATCONTAINER_ANY_INTENT" = MATCONTAINER_ANY_INTENT, - "MATCONTAINER_SILENT" = MATCONTAINER_SILENT, - "BREAKDOWN_ALLOYS" = BREAKDOWN_ALLOYS, + "MATCONTAINER_SILENT" = MATCONTAINER_SILENT )) DEFINE_BITFIELD(internal_damage, list( diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 5a4a0181e26..16afc0fffa9 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -22,7 +22,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FOOD_SILVER" = TRAIT_FOOD_SILVER, "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER, "TRAIT_LIGHTING_DEBUGGED" = TRAIT_LIGHTING_DEBUGGED, - "TRAIT_MAT_TRANSMUTED" = TRAIT_MAT_TRANSMUTED, "TRAIT_RECENTLY_COINED" = TRAIT_RECENTLY_COINED, "TRAIT_RUSTY" = TRAIT_RUSTY, "TRAIT_SPINNING" = TRAIT_SPINNING, diff --git a/code/datums/components/material/material_container.dm b/code/datums/components/material/material_container.dm index 8acf3e274f1..ad852a00471 100644 --- a/code/datums/components/material/material_container.dm +++ b/code/datums/components/material/material_container.dm @@ -30,13 +30,13 @@ /// Sets up the proper signals and fills the list of materials with the appropriate references. /datum/component/material_container/Initialize( - list/init_mats, - max_amt = 0, - _mat_container_flags = NONE, - list/allowed_mats = init_mats, - list/allowed_items, - list/container_signals - ) + list/init_mats, + max_amt = 0, + _mat_container_flags = NONE, + list/allowed_mats = init_mats, + list/allowed_items, + list/container_signals +) if(!isatom(parent)) return COMPONENT_INCOMPATIBLE @@ -133,17 +133,16 @@ * Arguments: * - [source][/obj/item]: The source of the materials we are inserting. * - multiplier: The multiplier for the materials extract from this item being inserted. - * - breakdown_flags: The breakdown bitflags that will be used to retrieve the materials from the source * - context: the atom performing the operation, this is the last argument sent in COMSIG_MATCONTAINER_ITEM_CONSUMED * and is used mostly for silo logging, the silo resends this signal on the context to give it a * chance to process the item */ -/datum/component/material_container/proc/insert_item_materials(obj/item/source, multiplier = 1, breakdown_flags = mat_container_flags, atom/context = parent) +/datum/component/material_container/proc/insert_item_materials(obj/item/source, multiplier = 1, atom/context = parent) var/primary_mat var/max_mat_value = 0 var/material_amount = 0 - var/list/item_materials = source.get_material_composition(breakdown_flags) + var/list/item_materials = source.get_material_composition() var/list/mats_consumed = list() for(var/MAT in item_materials) if(!can_hold_material(MAT)) @@ -200,17 +199,16 @@ * Arguments: * - [weapon][obj/item]: the item you are trying to insert * - multiplier: The multiplier for the materials being inserted - * - breakdown_flags: The breakdown bitflags that will be used to retrieve the materials from the source * - context: the atom performing the operation, this is the last argument sent in COMSIG_MATCONTAINER_ITEM_CONSUMED and is used mostly for silo logging */ -/datum/component/material_container/proc/insert_item(obj/item/weapon, multiplier = 1, breakdown_flags = mat_container_flags, atom/context = parent) +/datum/component/material_container/proc/insert_item(obj/item/weapon, multiplier = 1, atom/context = parent) if(QDELETED(weapon)) return MATERIAL_INSERT_ITEM_NO_MATS multiplier = CEILING(multiplier, 0.01) var/obj/item/target = weapon - var/material_amount = OPTIMAL_COST(get_item_material_amount(target, breakdown_flags) * multiplier) + var/material_amount = OPTIMAL_COST(get_item_material_amount(target) * multiplier) if(!material_amount) return MATERIAL_INSERT_ITEM_NO_MATS var/obj/item/stack/item_stack @@ -224,7 +222,7 @@ if(!sheets_to_insert) return MATERIAL_INSERT_ITEM_NO_SPACE target = fast_split_stack(item_stack, sheets_to_insert) - material_amount = get_item_material_amount(target, breakdown_flags) * multiplier + material_amount = get_item_material_amount(target) * multiplier material_amount = OPTIMAL_COST(material_amount) //not enough space, time to bail @@ -232,7 +230,7 @@ return MATERIAL_INSERT_ITEM_NO_SPACE //do the insert - var/last_inserted_id = insert_item_materials(target, multiplier, breakdown_flags, context) + var/last_inserted_id = insert_item_materials(target, multiplier, context) if(!isnull(last_inserted_id)) qdel(target) //item gone return material_amount @@ -254,10 +252,9 @@ * Arguments: * * held_item - the item to insert * * user - the mob inserting this item - * * breakdown_flags - how this item and all it's contents inside are broken down during insertion. This is unique to the machine doing the insertion * * context - the atom performing the operation, this is the last argument sent in COMSIG_MATCONTAINER_ITEM_CONSUMED and is used mostly for silo logging */ -/datum/component/material_container/proc/user_insert(obj/item/held_item, mob/living/user, breakdown_flags = mat_container_flags, atom/context = parent) +/datum/component/material_container/proc/user_insert(obj/item/held_item, mob/living/user, atom/context = parent) set waitfor = FALSE . = 0 @@ -342,7 +339,7 @@ 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, breakdown_flags) + 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]!")) @@ -397,7 +394,7 @@ item_name = the_stack.singular_name item_count = the_stack.amount is_stack = TRUE - inserted = insert_item(target_item, 1, mat_container_flags, context) + inserted = insert_item(target_item, 1, context) if(inserted > 0) . += inserted inserted /= SHEET_MATERIAL_AMOUNT // display units inserted as sheets for improved readability @@ -418,11 +415,9 @@ //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 - if(!is_stack) //count will match with amount so its not required - item_data["count"] += item_count - else - item_data["stack"] = TRUE + item_data["stack"] = is_stack status_data[item_name] = item_data chat_msgs["[MATERIAL_INSERT_ITEM_SUCCESS]"] = status_data @@ -463,7 +458,8 @@ switch(text2num(status)) if(MATERIAL_INSERT_ITEM_SUCCESS) //no problems full item was consumed if(chat_data["stack"]) - to_chat(user, span_notice("[amount > 1 ? amount : ""] [item_name][amount > 1 ? "'s" : ""] was consumed by [parent]")) + var/sheets = min(count, amount) //minimum between sheets inserted vs sheets consumed(values differ for alloys) + to_chat(user, span_notice("[sheets > 1 ? sheets : ""] [item_name][sheets > 1 ? "'s" : ""] was consumed by [parent]")) else to_chat(user, span_notice("[count > 1 ? count : ""] [item_name][count > 1 ? "'s" : ""] worth [amount] sheets of material was consumed by [parent]")) if(MATERIAL_INSERT_ITEM_NO_SPACE) //no space @@ -539,13 +535,12 @@ * * Arguments: * - [I][obj/item]: the item whos materials must be retrieved - * - breakdown_flags: how this item must be broken down to retrieve its materials */ -/datum/component/material_container/proc/get_item_material_amount(obj/item/I, breakdown_flags = mat_container_flags) +/datum/component/material_container/proc/get_item_material_amount(obj/item/I) if(!istype(I) || !I.custom_materials) return 0 var/material_amount = 0 - var/list/item_materials = I.get_material_composition(breakdown_flags) + var/list/item_materials = I.get_material_composition() for(var/MAT in item_materials) if(!can_hold_material(MAT)) continue @@ -750,7 +745,7 @@ return NONE if((held_item.flags_1 & HOLOGRAM_1) || (held_item.item_flags & NO_MAT_REDEMPTION) || (allowed_item_typecache && !is_type_in_typecache(held_item, allowed_item_typecache))) return NONE - var/list/item_materials = held_item.get_material_composition(mat_container_flags) + var/list/item_materials = held_item.get_material_composition() if(!length(item_materials)) return NONE for(var/material in item_materials) diff --git a/code/datums/components/material/remote_materials.dm b/code/datums/components/material/remote_materials.dm index e57a212cbde..376157903a6 100644 --- a/code/datums/components/material/remote_materials.dm +++ b/code/datums/components/material/remote_materials.dm @@ -35,7 +35,8 @@ handles linking back and forth. var/connect_to_silo = FALSE if(force_connect || (mapload && is_station_level(T.z))) connect_to_silo = TRUE - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, TYPE_PROC_REF(/datum/component/remote_materials, SiloAttackBy)) + if(!(mat_container_flags & MATCONTAINER_NO_INSERT)) + RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, TYPE_PROC_REF(/datum/component/remote_materials, SiloAttackBy)) if(mapload) // wait for silo to initialize during mapload addtimer(CALLBACK(src, PROC_REF(_PrepareStorage), connect_to_silo)) @@ -132,7 +133,7 @@ handles linking back and forth. return if(silo) - mat_container.user_insert(target, user, mat_container_flags, parent) + mat_container.user_insert(target, user, parent) return COMPONENT_NO_AFTERATTACK @@ -170,7 +171,8 @@ handles linking back and forth. silo.ore_connected_machines += src silo.updateUsrDialog() mat_container = new_container - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, TYPE_PROC_REF(/datum/component/remote_materials, SiloAttackBy)) + if(!(mat_container_flags & MATCONTAINER_NO_INSERT)) + RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, TYPE_PROC_REF(/datum/component/remote_materials, SiloAttackBy)) to_chat(user, span_notice("You connect [parent] to [silo] from the multitool's buffer.")) return ITEM_INTERACT_BLOCKING @@ -199,15 +201,19 @@ handles linking back and forth. * - The parent is of type movable atom * - A mat container is actually present * - The silo in not on hold + * Arguments + * * check_hold - should we check if the silo is on hold */ -/datum/component/remote_materials/proc/_can_use_resource() +/datum/component/remote_materials/proc/_can_use_resource(check_hold = TRUE) + PRIVATE_PROC(TRUE) + var/atom/movable/movable_parent = parent if (!istype(movable_parent)) return FALSE if (!mat_container) //no silolink & local storage not supported movable_parent.say("No access to material storage, please contact the quartermaster.") return FALSE - if(on_hold()) //silo on hold + if(check_hold && on_hold()) //silo on hold movable_parent.say("Mineral access is on hold, please contact the quartermaster.") return FALSE return TRUE @@ -254,3 +260,16 @@ handles linking back and forth. drop_target = movable_parent.drop_location() return mat_container.retrieve_sheets(eject_amount, material_ref, target = drop_target, context = parent) + +/** + * Insert an item into the mat container, helper proc to insert items with the correct context + * + * Arguments + * * obj/item/weapon - the item you are trying to insert + * * multiplier - the multiplier applied on the materials consumed + */ +/datum/component/remote_materials/proc/insert_item(obj/item/weapon, multiplier) + if(!_can_use_resource(FALSE)) + return MATERIAL_INSERT_ITEM_FAILURE + + return mat_container.insert_item(weapon, multiplier, parent) diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm index 53e661d39d8..396b902b73f 100644 --- a/code/datums/materials/_material.dm +++ b/code/datums/materials/_material.dm @@ -245,7 +245,7 @@ Simple datum which is instanced once per type and is used for every object of sa * * Arguments: * - amount: The amount of the material to break down. - * - breakdown_flags: Some flags dictating how exactly this material is being broken down. */ -/datum/material/proc/return_composition(amount=1, breakdown_flags=NONE) - return list((src) = amount) // Yes we need the parenthesis, without them BYOND stringifies src into "src" and things break. +/datum/material/proc/return_composition(amount = 1) + // Yes we need the parenthesis, without them BYOND stringifies src into "src" and things break. + return list((src) = amount) diff --git a/code/datums/materials/alloys.dm b/code/datums/materials/alloys.dm index af208fdc5a4..e878a7f495d 100644 --- a/code/datums/materials/alloys.dm +++ b/code/datums/materials/alloys.dm @@ -6,18 +6,14 @@ init_flags = NONE /// The materials this alloy is made from weighted by their ratios. var/list/composition = null - /// Breakdown flags required to reduce this alloy to its component materials. - var/req_breakdown_flags = BREAKDOWN_ALLOYS - -/datum/material/alloy/return_composition(amount=1, breakdown_flags) - if(req_breakdown_flags & !(breakdown_flags & req_breakdown_flags)) - return ..() +/datum/material/alloy/return_composition(amount = 1) . = list() + var/list/cached_comp = composition for(var/comp_mat in cached_comp) var/datum/material/component_material = GET_MATERIAL_REF(comp_mat) - var/list/component_composition = component_material.return_composition(cached_comp[comp_mat], breakdown_flags) + var/list/component_composition = component_material.return_composition(cached_comp[comp_mat]) for(var/comp_comp_mat in component_composition) .[comp_comp_mat] += component_composition[comp_comp_mat] * amount diff --git a/code/game/atom/atom_materials.dm b/code/game/atom/atom_materials.dm index ae9a5b3a18e..803a79110a1 100644 --- a/code/game/atom/atom_materials.dm +++ b/code/game/atom/atom_materials.dm @@ -36,15 +36,13 @@ * Arguments: * - flags: A set of flags determining how exactly the materials are broken down. */ -/atom/proc/get_material_composition(breakdown_flags=NONE) +/atom/proc/get_material_composition() . = list() - if(!(breakdown_flags & BREAKDOWN_INCLUDE_ALCHEMY) && HAS_TRAIT(src, TRAIT_MAT_TRANSMUTED)) - return var/list/cached_materials = custom_materials for(var/mat in cached_materials) var/datum/material/material = GET_MATERIAL_REF(mat) - var/list/material_comp = material.return_composition(cached_materials[mat], breakdown_flags) + var/list/material_comp = material.return_composition(cached_materials[mat]) for(var/comp_mat in material_comp) .[comp_mat] += material_comp[comp_mat] diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 3b78d6bb0b1..802608e47a5 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -56,8 +56,8 @@ /datum/component/material_container, \ list(/datum/material/iron, /datum/material/glass), \ SHEET_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, \ - MATCONTAINER_EXAMINE|BREAKDOWN_FLAGS_DRONE_DISPENSER, \ - allowed_items=/obj/item/stack \ + MATCONTAINER_EXAMINE, \ + allowed_items = /obj/item/stack \ ) materials.insert_amount_mat(starting_amount) materials.precise_insertion = TRUE diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 50751d95b5f..a4deb63ae21 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -32,12 +32,18 @@ /datum/material/titanium, /datum/material/bluespace ) - materials = AddComponent(/datum/component/material_container, allowed_materials, INFINITY, MATCONTAINER_NO_INSERT|BREAKDOWN_FLAGS_RECYCLER) + materials = AddComponent( + /datum/component/material_container, \ + allowed_materials, \ + INFINITY, \ + MATCONTAINER_NO_INSERT \ + ) AddComponent(/datum/component/simple_rotation) - AddComponent(/datum/component/butchering/recycler, \ - speed = 0.1 SECONDS, \ - effectiveness = amount_produced, \ - bonus_modifier = amount_produced/5, \ + AddComponent( + /datum/component/butchering/recycler, \ + speed = 0.1 SECONDS, \ + effectiveness = amount_produced, \ + bonus_modifier = amount_produced / 5, \ ) . = ..() return INITIALIZE_HINT_LATELOAD @@ -197,7 +203,7 @@ new wood.plank_type(loc, 1 + seed_modifier) . = TRUE else - var/retrieved = materials.insert_item(weapon, multiplier = (amount_produced / 100), breakdown_flags = BREAKDOWN_FLAGS_RECYCLER) + var/retrieved = materials.insert_item(weapon, multiplier = (amount_produced / 100)) if(retrieved > 0) //item was salvaged i.e. deleted materials.retrieve_all() return TRUE diff --git a/code/game/machinery/sheetifier.dm b/code/game/machinery/sheetifier.dm index 249eff1cfbe..69bebfca69e 100644 --- a/code/game/machinery/sheetifier.dm +++ b/code/game/machinery/sheetifier.dm @@ -15,7 +15,7 @@ /datum/component/material_container, \ list(/datum/material/meat, /datum/material/hauntium), \ SHEET_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, \ - MATCONTAINER_EXAMINE|BREAKDOWN_FLAGS_SHEETIFIER, \ + MATCONTAINER_EXAMINE, \ typesof(/datum/material/meat) + /datum/material/hauntium, list(/obj/item/food/meat, /obj/item/photo), \ container_signals = list( COMSIG_MATCONTAINER_PRE_USER_INSERT = TYPE_PROC_REF(/obj/machinery/sheetifier, CanInsertMaterials), diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index 3a5c7f975ed..ecb0d0d0460 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -19,7 +19,7 @@ return 0 var/obj/item/I = O - var/list/mat_comp = I.get_material_composition(BREAKDOWN_FLAGS_EXPORT) + var/list/mat_comp = I.get_material_composition() var/datum/material/mat_ref = ispath(material_id) ? locate(material_id) in mat_comp : GET_MATERIAL_REF(material_id) if(isnull(mat_comp[mat_ref])) return 0 diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index 75299ad828a..909f835b1c9 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -19,7 +19,13 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/Initialize(mapload) . = ..() AddElement(/datum/element/update_icon_updates_onmob) - bananium = AddComponent(/datum/component/material_container, list(/datum/material/bananium), 100 * SHEET_MATERIAL_AMOUNT, MATCONTAINER_EXAMINE|MATCONTAINER_ANY_INTENT|MATCONTAINER_SILENT, allowed_items=/obj/item/stack) + bananium = AddComponent( + /datum/component/material_container, \ + list(/datum/material/bananium), \ + 100 * SHEET_MATERIAL_AMOUNT, \ + MATCONTAINER_EXAMINE | MATCONTAINER_ANY_INTENT | MATCONTAINER_SILENT, \ + allowed_items = /obj/item/stack, \ + ) AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 75, falloff_exponent = 20) RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(on_step)) if(always_noslip) diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 848ecac0fa3..f4510741968 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -159,7 +159,7 @@ /datum/component/material_container, \ allowed_materials, \ INFINITY, \ - MATCONTAINER_EXAMINE | BREAKDOWN_FLAGS_ORE_PROCESSOR, \ + MATCONTAINER_EXAMINE, \ allowed_items = /obj/item/stack \ ) if(!GLOB.autounlock_techwebs[/datum/techweb/autounlocking/smelter]) @@ -176,11 +176,11 @@ /obj/machinery/mineral/processing_unit/proc/process_ore(obj/item/stack/ore/O) if(QDELETED(O)) return - var/material_amount = materials.get_item_material_amount(O, BREAKDOWN_FLAGS_ORE_PROCESSOR) + var/material_amount = materials.get_item_material_amount(O) if(!materials.has_space(material_amount)) unload_mineral(O) else - materials.insert_item(O, breakdown_flags = BREAKDOWN_FLAGS_ORE_PROCESSOR) + materials.insert_item(O) if(mineral_machine) mineral_machine.updateUsrDialog() diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 8ecbcb80074..2d542445f8a 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -52,11 +52,7 @@ if(!GLOB.autounlock_techwebs[/datum/techweb/autounlocking/smelter]) GLOB.autounlock_techwebs[/datum/techweb/autounlocking/smelter] = new /datum/techweb/autounlocking/smelter stored_research = GLOB.autounlock_techwebs[/datum/techweb/autounlocking/smelter] - materials = AddComponent( - /datum/component/remote_materials, \ - mapload, \ - mat_container_flags = BREAKDOWN_FLAGS_ORM \ - ) + materials = AddComponent(/datum/component/remote_materials, mapload) RegisterSignal(src, COMSIG_MATCONTAINER_ITEM_CONSUMED, TYPE_PROC_REF(/obj/machinery/mineral/ore_redemption, redeem_points)) @@ -160,7 +156,7 @@ if(isnull(gathered_ore.refined_type)) continue - if(materials.mat_container.insert_item(gathered_ore, ore_multiplier, breakdown_flags = BREAKDOWN_FLAGS_ORM, context = src) <= 0) + if(materials.mat_container.insert_item(gathered_ore, ore_multiplier, context = src) <= 0) unload_mineral(gathered_ore) //if rejected unload SEND_SIGNAL(src, COMSIG_ORM_COLLECTED_ORE) diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index e87391b1758..4acff57f6dc 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -866,7 +866,7 @@ insert_trash(new_atom) /obj/item/mod/module/recycler/proc/insert_trash(obj/item/item) - var/retrieved = container.insert_item(item, multiplier = efficiency, breakdown_flags = BREAKDOWN_FLAGS_RECYCLER) + var/retrieved = container.insert_item(item, multiplier = efficiency) if(retrieved == MATERIAL_INSERT_ITEM_NO_MATS) //even if it doesn't have any material to give, trash is trash. qdel(item) playsound(src, SFX_RUSTLE, 50, TRUE, -5) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 4f3ff1c2867..ebaddf7dd0d 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2751,7 +2751,7 @@ return var/metal_amount = 0 - var/list/materials_to_transmute = target.get_material_composition(BREAKDOWN_INCLUDE_ALCHEMY) + var/list/materials_to_transmute = target.get_material_composition() for(var/metal_key in materials_to_transmute) //list with what they're made of metal_amount += materials_to_transmute[metal_key] @@ -2761,7 +2761,6 @@ var/list/metal_dat = list((metal_ref) = metal_amount) target.material_flags = applied_material_flags target.set_custom_materials(metal_dat) - ADD_TRAIT(target, TRAIT_MAT_TRANSMUTED, type) /datum/reagent/gravitum name = "Gravitum" diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index b71bc1d025f..0b3924827fd 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -32,11 +32,8 @@ . = ..() cached_designs = list() - materials = AddComponent( - /datum/component/remote_materials, \ - mapload, \ - mat_container_flags = BREAKDOWN_FLAGS_LATHE, \ - ) + materials = AddComponent(/datum/component/remote_materials, mapload) + AddComponent( /datum/component/payment, \ 0, \ diff --git a/code/modules/vehicles/mecha/mech_fabricator.dm b/code/modules/vehicles/mecha/mech_fabricator.dm index c3e5abc39f0..c4acded7994 100644 --- a/code/modules/vehicles/mecha/mech_fabricator.dm +++ b/code/modules/vehicles/mecha/mech_fabricator.dm @@ -50,11 +50,7 @@ var/list/datum/design/cached_designs /obj/machinery/mecha_part_fabricator/Initialize(mapload) - rmat = AddComponent( \ - /datum/component/remote_materials, \ - mapload && link_on_init, \ - mat_container_flags = BREAKDOWN_FLAGS_LATHE \ - ) + rmat = AddComponent(/datum/component/remote_materials, mapload && link_on_init) cached_designs = list() RefreshParts() //Recalculating local material sizes if the fab isn't linked return ..() diff --git a/code/modules/wiremod/components/atom/matscanner.dm b/code/modules/wiremod/components/atom/matscanner.dm index bbc36bb9789..eb23efddb3a 100644 --- a/code/modules/wiremod/components/atom/matscanner.dm +++ b/code/modules/wiremod/components/atom/matscanner.dm @@ -34,10 +34,7 @@ if(!istype(entity) || !IN_GIVEN_RANGE(location, entity, max_range)) result.set_output(null) return - var/breakdown_flags = BREAKDOWN_INCLUDE_ALCHEMY - if(break_down_alloys.value) - breakdown_flags |= BREAKDOWN_ALLOYS - var/list/composition = entity.get_material_composition(breakdown_flags) + var/list/composition = entity.get_material_composition() var/list/composition_but_with_string_keys = list() for(var/datum/material/material as anything in composition) composition_but_with_string_keys[material.name] = composition[material] diff --git a/code/modules/wiremod/core/component_printer.dm b/code/modules/wiremod/core/component_printer.dm index 25c684c5a28..3fb736540ec 100644 --- a/code/modules/wiremod/core/component_printer.dm +++ b/code/modules/wiremod/core/component_printer.dm @@ -22,11 +22,7 @@ /obj/machinery/component_printer/Initialize(mapload) . = ..() - materials = AddComponent( \ - /datum/component/remote_materials, \ - mapload, \ - mat_container_flags = BREAKDOWN_FLAGS_LATHE, \ - ) + materials = AddComponent(/datum/component/remote_materials, mapload) /obj/machinery/component_printer/LateInitialize() . = ..() @@ -323,11 +319,7 @@ /obj/machinery/module_duplicator/Initialize(mapload) . = ..() - materials = AddComponent( \ - /datum/component/remote_materials, \ - mapload, \ - mat_container_flags = BREAKDOWN_FLAGS_LATHE, \ - ) + materials = AddComponent(/datum/component/remote_materials, mapload) /obj/machinery/module_duplicator/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) From a23989ee49ce4a88b0287b6969a02b300acd9adc Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 11:13:55 +0100 Subject: [PATCH 004/166] [MIRROR] Fixes lua editor [MDB IGNORE] (#25840) * Fixes lua editor (#80539) ## About The Pull Request Lua editor was using Button.File which I missed during the Typescript conversion in #80194 Readds it as a functional component. I can't fully test lua editor locally but this should fix the issue ![image](https://github.com/tgstation/tgstation/assets/42397676/89510014-7d2e-4bbd-9b98-dd24a391e787) ## Why It's Good For The Game Fixes #80531 ## Changelog :cl: fix: LUA editor should be usable again /:cl: * Fixes lua editor --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> --- tgui/packages/tgui/components/Button.tsx | 60 +++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/tgui/packages/tgui/components/Button.tsx b/tgui/packages/tgui/components/Button.tsx index dc57f5f7e71..25b1e78f061 100644 --- a/tgui/packages/tgui/components/Button.tsx +++ b/tgui/packages/tgui/components/Button.tsx @@ -7,7 +7,15 @@ import { Placement } from '@popperjs/core'; import { KEY } from 'common/keys'; import { BooleanLike, classes } from 'common/react'; -import { createRef, MouseEvent, ReactNode, useEffect, useState } from 'react'; +import { + ChangeEvent, + createRef, + MouseEvent, + ReactNode, + useEffect, + useRef, + useState, +} from 'react'; import { Box, BoxProps, computeBoxClassName, computeBoxProps } from './Box'; import { Icon } from './Icon'; @@ -355,3 +363,53 @@ const ButtonInput = (props: InputProps) => { }; Button.Input = ButtonInput; + +type FileProps = { + accept: string; + multiple?: boolean; + onSelectFiles: (files: string | string[]) => void; +} & Props; + +/** Accepts file input */ +function ButtonFile(props: FileProps) { + const { accept, multiple, onSelectFiles, ...rest } = props; + + const inputRef = useRef(null); + + async function read(files: FileList) { + const promises = Array.from(files).map((file) => { + const reader = new FileReader(); + + return new Promise((resolve) => { + reader.onload = () => resolve(reader.result as string); + reader.readAsText(file); + }); + }); + + return await Promise.all(promises); + } + + async function handleChange(event: ChangeEvent) { + const files = event.target.files; + if (files?.length) { + const readFiles = await read(files); + onSelectFiles(multiple ? readFiles : readFiles[0]); + } + } + + return ( + <> + } > @@ -98,7 +112,7 @@ export const ChemHeater = (props) => { unit="K" step={10} stepPixelSize={3} - value={round(targetTemp)} + value={round(targetTemp, 1)} minValue={0} maxValue={1000} onDrag={(e, value) => @@ -200,14 +214,14 @@ export const ChemHeater = (props) => { 'pH: ' + round(value, 3)} /> { /> )} - + {(upgradeLevel > 2 && ( - - {reaction.targetVol}u - + <> + {!!reaction.overheat && ( + + )} + + {reaction.targetVol}u + + )) || ( {reaction.targetVol}u @@ -305,34 +328,7 @@ export const ChemHeater = (props) => { )} )} - {tutorialMessage && ( -
- - {tutorialMessage} -
- )} -
- - {beakerCurrentVolume} / {beakerMaxVolume} units - -
+ ); diff --git a/tgui/packages/tgui/interfaces/common/BeakerDisplay.tsx b/tgui/packages/tgui/interfaces/common/BeakerDisplay.tsx index dc5b045d7f7..5c057755c5c 100644 --- a/tgui/packages/tgui/interfaces/common/BeakerDisplay.tsx +++ b/tgui/packages/tgui/interfaces/common/BeakerDisplay.tsx @@ -1,7 +1,12 @@ -import { BooleanLike } from 'common/react'; - +import { BooleanLike } from '../../../common/react'; import { useBackend } from '../../backend'; -import { AnimatedNumber, Box, Button, LabeledList } from '../../components'; +import { + AnimatedNumber, + Box, + Button, + LabeledList, + Section, +} from '../../components'; type BeakerReagent = { name: string; @@ -34,7 +39,9 @@ export const BeakerDisplay = (props: BeakerProps) => { label="Beaker" buttons={ !!beaker && ( - ) } > @@ -67,3 +74,43 @@ export const BeakerDisplay = (props: BeakerProps) => { ); }; + +export const BeakerSectionDisplay = (props: BeakerProps) => { + const { act } = useBackend(); + const { beaker, replace_contents, title_label, showpH } = props; + const beakerContents = replace_contents || beaker?.contents || []; + + return ( +
+ + {beaker.currentVolume} / {beaker.maxVolume} units + + + + ) + } + > + + {(!beaker && 'N/A') || (beakerContents.length === 0 && 'Nothing')} + + {beakerContents.map((chemical) => ( + + units of{' '} + {chemical.name} + + ))} + {beakerContents.length > 0 && !!showpH && ( + + pH: + + + )} +
+ ); +}; From 49452b38516a155b0a6b1e9fd61b55b2ccedc118 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 21:38:54 +0100 Subject: [PATCH 033/166] [MIRROR] The Coupon Master PDA app [MDB IGNORE] (#25855) * The Coupon Master PDA app (#80240) ## About The Pull Request This PR adds a new PDA program to the supply category, which allows users to redeems coupons for various cargo packs (mostly goodies), like the ones also found at the bottom of cig packs. How it works is fairly simple: - Once installed, the modular computer subsystem will periodically, at a 3-5 minutes interval, generate a coupon code datum associated to a plain text code, which is sent out to everyone with the program installed. - The user can then open the program and insert the text into an input box to redeem the coupon code, which is then associated with their bank account. - He will then have to find a photocopier, and tap it with the PDA to print the coupon. Only one coupon can be printed. Photocopier fees apply, so it'd cost 5 creds to the average assistant to print the coupon. - He can then insert the coupon in a cargo console and order/reuest the associated pack (same deal as cig coupons). - Some coupon codes however, especially those with juicer discounts, will expire after a while if not printed. Albeit mostly innocuous, the program provides negative Detomatix resistance, slowly fills the computer file storage with trash files with each redeemed coupon, and halves the download speed of new apps. Not really the cleanest ware out there. This PR also extends coupons to several non-goody packs, since they have been privately buyable for over the last couple years now. Some packs get discounts less frequently however, with those in the uncommon category being roughly 1 in a 12 chance and the rare being 1 in 50. Here's a screenshot of the UI (outdated, I've reduced the height from 500 to 400 and the notice box tip to specify the right click): ![Coupon Master](https://github.com/tgstation/tgstation/assets/42542238/1d242d09-0f62-4e2e-8a6e-014daa3f6a55) Fun fact: Right now, the odds of a 75% discount coming from the Coupon Master for the 1.000.000 credits bycycle pack are roughly 0.0012%, while that of a 50% for the same pack, from a cig pack coupon are 0.0042%. ## Why It's Good For The Game These last couple days I've been wanting to test myself at making simple UIs, as well as contributing to the modular computers feature, which has started to become pretty neat ever since PDAs were reworked into a subtype of it. Beside, coupons are a very small feature limited to the bottom of cigarette packs (also possibly cursed) in the current state of affairs. Cargo is filled with packs that are niche or fluff. Modular computers also has those little things that, while interesting, do not contribute a whole lot. Maybe this is one of them, but I guess free* coupons are always a big W. ## Changelog :cl: add: Added the 'Coupon Master' program for the PDA. Install it to receive periodical, redeemable coupons for several cargo packs. Requires NTnet connection and the messenger enabled to work. add: Coupons are no longer only limited to goodies, but may also apply discount to some other packs as well. /:cl: *minus the photocopier fee --------- Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com> * The Coupon Master PDA app --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com> --- code/__DEFINES/cargo.dm | 27 ++-- code/__DEFINES/modular_computer.dm | 2 + code/__DEFINES/traits/declarations.dm | 4 +- code/_globalvars/lists/cargo.dm | 34 +++++ code/_globalvars/traits/_traits.dm | 1 + .../subsystem/modular_computers.dm | 89 ++++++++++++- code/game/objects/items/storage/fancy.dm | 2 +- code/modules/cargo/coupon.dm | 66 ++++++++-- code/modules/cargo/goodies.dm | 1 + code/modules/cargo/packs/_packs.dm | 2 + code/modules/cargo/packs/costumes_toys.dm | 5 + code/modules/cargo/packs/emergency.dm | 1 + code/modules/cargo/packs/engineering.dm | 1 + code/modules/cargo/packs/general.dm | 2 + code/modules/cargo/packs/imports.dm | 6 + code/modules/cargo/packs/livestock.dm | 1 + code/modules/cargo/packs/medical.dm | 1 + code/modules/cargo/packs/organic.dm | 3 + code/modules/cargo/packs/security.dm | 2 + code/modules/cargo/packs/service.dm | 8 ++ code/modules/economy/account.dm | 3 + .../file_system/programs/coupon.dm | 119 ++++++++++++++++++ .../file_system/programs/ntdownloader.dm | 2 + code/modules/paperwork/photocopier.dm | 3 + tgstation.dme | 2 + .../tgui/interfaces/NtosCouponMaster.tsx | 61 +++++++++ 26 files changed, 414 insertions(+), 34 deletions(-) create mode 100644 code/_globalvars/lists/cargo.dm create mode 100644 code/modules/modular_computers/file_system/programs/coupon.dm create mode 100644 tgui/packages/tgui/interfaces/NtosCouponMaster.tsx diff --git a/code/__DEFINES/cargo.dm b/code/__DEFINES/cargo.dm index 56d3896f0dc..63d5682ef0f 100644 --- a/code/__DEFINES/cargo.dm +++ b/code/__DEFINES/cargo.dm @@ -53,21 +53,14 @@ /// Universal Scanner mode for using the price tagger. #define SCAN_PRICE_TAG 3 -GLOBAL_LIST_EMPTY(supplypod_loading_bays) +///Used by coupons to define that they're cursed +#define COUPON_OMEN "omen" -GLOBAL_LIST_INIT(podstyles, list(\ - list(POD_SHAPE_NORML, "pod", TRUE, "default", "yellow", RUBBLE_NORMAL, "supply pod", "A Nanotrasen supply drop pod."),\ - list(POD_SHAPE_NORML, "advpod", TRUE, "bluespace", "blue", RUBBLE_NORMAL, "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\ - list(POD_SHAPE_NORML, "advpod", TRUE, "centcom", "blue", RUBBLE_NORMAL, "\improper CentCom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to CentCom after delivery."),\ - list(POD_SHAPE_NORML, "darkpod", TRUE, "syndicate", "red", RUBBLE_NORMAL, "blood-red supply pod", "An intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\ - list(POD_SHAPE_NORML, "darkpod", TRUE, "deathsquad", "blue", RUBBLE_NORMAL, "\improper Deathsquad drop pod", "A Nanotrasen drop pod. This one has been marked the markings of Nanotrasen's elite strike team."),\ - list(POD_SHAPE_NORML, "pod", TRUE, "cultist", "red", RUBBLE_NORMAL, "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\ - list(POD_SHAPE_OTHER, "missile", FALSE, FALSE, FALSE, RUBBLE_THIN, "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ - list(POD_SHAPE_OTHER, "smissile", FALSE, FALSE, FALSE, RUBBLE_THIN, "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ - list(POD_SHAPE_OTHER, "box", TRUE, FALSE, FALSE, RUBBLE_WIDE, "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\ - list(POD_SHAPE_NORML, "clownpod", TRUE, "clown", "green", RUBBLE_NORMAL, "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\ - list(POD_SHAPE_OTHER, "orange", TRUE, FALSE, FALSE, RUBBLE_NONE, "\improper Orange", "An angry orange."),\ - list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\ - list(POD_SHAPE_OTHER, "gondola", FALSE, FALSE, FALSE, RUBBLE_NONE, "gondola", "The silent walker. This one seems to be part of a delivery agency."),\ - list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, FALSE, FALSE, "rl_click", "give_po")\ -)) +///Discount categories for coupons. This one is for anything that isn't discountable. +#define SUPPLY_PACK_NOT_DISCOUNTABLE null +///Discount category for the standard stuff, mostly goodies. +#define SUPPLY_PACK_STD_DISCOUNTABLE "standard_discount" +///Discount category for stuff that's mostly niche and/or that might be useful. +#define SUPPLY_PACK_UNCOMMON_DISCOUNTABLE "uncommon_discount" +///Discount category for the silly, overpriced, joke content, sometimes useful or plain bad. +#define SUPPLY_PACK_RARE_DISCOUNTABLE "rare_discount" diff --git a/code/__DEFINES/modular_computer.dm b/code/__DEFINES/modular_computer.dm index 5158312d03f..f8f666cfc63 100644 --- a/code/__DEFINES/modular_computer.dm +++ b/code/__DEFINES/modular_computer.dm @@ -47,6 +47,8 @@ ///This app grants a larger protection against being PDA bombed if installed. ///(can sometimes prevent it from being sent, while wasting a PDA bomb from the sender). #define DETOMATIX_RESIST_MAJOR 2 +///This app gives a diminished protection against being PDA bombed if installed. +#define DETOMATIX_RESIST_MALUS -4 /** * NTNet transfer speeds, used when downloading/uploading a file/program. diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 59519b1a77b..4cb7051cb3b 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -782,10 +782,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait applied when an integrated circuit opens a UI on a player (see list pick component) #define TRAIT_CIRCUIT_UI_OPEN "circuit_ui_open" -/// PDA Traits. This one makes PDAs explode if the user opens the messages menu +/// PDA/ModPC Traits. This one makes PDAs explode if the user opens the messages menu #define TRAIT_PDA_MESSAGE_MENU_RIGGED "pda_message_menu_rigged" /// This one denotes a PDA has received a rigged message and will explode when the user tries to reply to a rigged PDA message #define TRAIT_PDA_CAN_EXPLODE "pda_can_explode" +///The download speeds of programs from the dowloader is halved. +#define TRAIT_MODPC_HALVED_DOWNLOAD_SPEED "modpc_halved_download_speed" /// If present on a [/mob/living/carbon], will make them appear to have a medium level disease on health HUDs. #define TRAIT_DISEASELIKE_SEVERITY_MEDIUM "diseaselike_severity_medium" diff --git a/code/_globalvars/lists/cargo.dm b/code/_globalvars/lists/cargo.dm new file mode 100644 index 00000000000..5e4766fc7c3 --- /dev/null +++ b/code/_globalvars/lists/cargo.dm @@ -0,0 +1,34 @@ +GLOBAL_LIST_INIT(discountable_packs, init_discountable_packs()) + +/proc/init_discountable_packs() + var/list/packs = list() + for(var/datum/supply_pack/prototype as anything in subtypesof(/datum/supply_pack)) + var/discountable = initial(prototype.discountable) + if(discountable) + LAZYADD(packs[discountable], prototype) + return packs + +GLOBAL_LIST_INIT(pack_discount_odds, list( + SUPPLY_PACK_STD_DISCOUNTABLE = 45, + SUPPLY_PACK_UNCOMMON_DISCOUNTABLE = 4, + SUPPLY_PACK_RARE_DISCOUNTABLE = 1, +)) + +GLOBAL_LIST_EMPTY(supplypod_loading_bays) + +GLOBAL_LIST_INIT(podstyles, list(\ + list(POD_SHAPE_NORML, "pod", TRUE, "default", "yellow", RUBBLE_NORMAL, "supply pod", "A Nanotrasen supply drop pod."),\ + list(POD_SHAPE_NORML, "advpod", TRUE, "bluespace", "blue", RUBBLE_NORMAL, "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\ + list(POD_SHAPE_NORML, "advpod", TRUE, "centcom", "blue", RUBBLE_NORMAL, "\improper CentCom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to CentCom after delivery."),\ + list(POD_SHAPE_NORML, "darkpod", TRUE, "syndicate", "red", RUBBLE_NORMAL, "blood-red supply pod", "An intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\ + list(POD_SHAPE_NORML, "darkpod", TRUE, "deathsquad", "blue", RUBBLE_NORMAL, "\improper Deathsquad drop pod", "A Nanotrasen drop pod. This one has been marked the markings of Nanotrasen's elite strike team."),\ + list(POD_SHAPE_NORML, "pod", TRUE, "cultist", "red", RUBBLE_NORMAL, "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\ + list(POD_SHAPE_OTHER, "missile", FALSE, FALSE, FALSE, RUBBLE_THIN, "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ + list(POD_SHAPE_OTHER, "smissile", FALSE, FALSE, FALSE, RUBBLE_THIN, "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ + list(POD_SHAPE_OTHER, "box", TRUE, FALSE, FALSE, RUBBLE_WIDE, "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\ + list(POD_SHAPE_NORML, "clownpod", TRUE, "clown", "green", RUBBLE_NORMAL, "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\ + list(POD_SHAPE_OTHER, "orange", TRUE, FALSE, FALSE, RUBBLE_NONE, "\improper Orange", "An angry orange."),\ + list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\ + list(POD_SHAPE_OTHER, "gondola", FALSE, FALSE, FALSE, RUBBLE_NONE, "gondola", "The silent walker. This one seems to be part of a delivery agency."),\ + list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, FALSE, FALSE, "rl_click", "give_po")\ +)) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 16afc0fffa9..77053801c3f 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -529,6 +529,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_COMPONENT_MMI" = TRAIT_COMPONENT_MMI, ), /obj/item/modular_computer = list( + "TRAIT_MODPC_HALVED_DOWNLOAD_SPEED" = TRAIT_MODPC_HALVED_DOWNLOAD_SPEED, "TRAIT_PDA_CAN_EXPLODE" = TRAIT_PDA_CAN_EXPLODE, "TRAIT_PDA_MESSAGE_MENU_RIGGED" = TRAIT_PDA_MESSAGE_MENU_RIGGED, ), diff --git a/code/controllers/subsystem/modular_computers.dm b/code/controllers/subsystem/modular_computers.dm index 3c861850cdd..678b26d24a4 100644 --- a/code/controllers/subsystem/modular_computers.dm +++ b/code/controllers/subsystem/modular_computers.dm @@ -1,9 +1,11 @@ -///The maximum amount of logs that can be generated before they start overwriting eachother. +s///The maximum amount of logs that can be generated before they start overwriting eachother. #define MAX_LOG_COUNT 300 SUBSYSTEM_DEF(modular_computers) name = "Modular Computers" - flags = SS_NO_FIRE + + wait = 1 MINUTES + runlevels = RUNLEVEL_GAME ///List of all logs generated by ModPCs through the round. ///Stops at MAX_LOG_COUNT and must be purged to keep logging. @@ -22,11 +24,94 @@ SUBSYSTEM_DEF(modular_computers) var/intrusion_detection_alarm = FALSE var/next_picture_id = 0 + ///Lazylist of coupons used by the Coupon Master PDA app. e.g. "COUPONCODE25" = coupon_code + var/list/discount_coupons + ///When will the next coupon drop? + var/next_discount = 0 + /datum/controller/subsystem/modular_computers/Initialize() build_software_lists() initialized = TRUE return SS_INIT_SUCCESS +/datum/controller/subsystem/modular_computers/fire(resumed = FALSE) + if(discount_coupons && world.time >= next_discount) + announce_coupon() + +///Generate new coupon codes that can be redeemed with the Coupon Master App +/datum/controller/subsystem/modular_computers/proc/announce_coupon() + //If there's no way to announce the coupon, we may as well skip it. + if(!length(GLOB.announcement_systems)) + return + var/obj/machinery/announcement_system/announcement_system = pick(GLOB.announcement_systems) + + var/static/list/discounts = list("0.10" = 7, "0.15" = 16, "0.20" = 20, "0.25" = 16, "0.50" = 8, "0.66" = 1) + var/static/list/flash_discounts = list("0.30" = 3, "0.40" = 8, "0.50" = 8, "0.66" = 2, "0.75" = 1) + ///Eliminates non-alphanumeri characters, as well as the word "Single-Pack" or "Pack" or "Crate" from the coupon code + var/static/regex/strip_pack_name = regex("\[^a-zA-Z0-9]|(Single-)?Pack|Crate", "g") + + var/datum/supply_pack/discounted_pack = pick(GLOB.discountable_packs[pick_weight(GLOB.pack_discount_odds)]) + var/pack_name = initial(discounted_pack.name) + var/chosen_discount + var/expires_in = 0 + if(prob(75)) + chosen_discount = text2num(pick_weight(discounts)) + if(prob(20)) + expires_in = rand(8,10) + else + chosen_discount = text2num(pick_weight(flash_discounts)) + expires_in = rand(2, 4) + var/coupon_code = "[uppertext(strip_pack_name.Replace(pack_name, ""))][chosen_discount*100]" + + var/list/targets = list() + for (var/messenger_ref in GLOB.pda_messengers) + var/datum/computer_file/program/messenger/messenger = GLOB.pda_messengers[messenger_ref] + if(locate(/datum/computer_file/program/coupon) in messenger?.computer.stored_files) + targets += messenger + + ///Don't go any further if the same coupon code has been done alrady or if there's no recipient for the 'promo'. + if((coupon_code in discount_coupons) || !length(targets)) + return + + var/datum/coupon_code/coupon = new(chosen_discount, discounted_pack, expires_in) + + discount_coupons[coupon_code] = coupon + + ///pda message code here + var/static/list/promo_messages = list( + "A new discount has dropped for %GOODY: %DISCOUNT.", + "Check this new offer out: %GOODY, now %DISCOUNT off.", + "Now on sales: %GOODY, at %DISCOUNT discount!", + "This item is now on sale (%DISCOUNT off): %GOODY.", + "Would you look at that! A %DISCOUNT discount on %GOODY!", + "Exclusive offer for %GOODY. Only %DISCOUNT! Get it now:", + "%GOODY is now %DISCOUNT off.", + "*RING* A new discount has dropped: %GOODY, %DISCOUNT off.", + "%GOODY - %DISCOUNT off." + ) + var/static/list/code_messages = list( + "Here's the code", + "Use this code to redeem it", + "Open the app to redeem it", + "Code", + "Redeem it now", + "Buy it now", + ) + + var/chosen_promo_message = replacetext(replacetext(pick(promo_messages), "%GOODY", pack_name), "%DISCOUNT", "[chosen_discount*100]%") + var/datum/signal/subspace/messaging/tablet_message/signal = new(announcement_system, list( + "fakename" = "Coupon Master", + "fakejob" = "Goodies Promotion", + "message" = "[chosen_promo_message] [pick(code_messages)]: [coupon_code][expires_in ? " (EXPIRES IN [expires_in] MINUTES)" : ""].", + "targets" = targets, + "automated" = TRUE, + )) + + signal.send_to_receivers() + + next_discount = world.time + rand(3, 5) MINUTES + + ///Finds all downloadable programs and adds them to their respective downloadable list. /datum/controller/subsystem/modular_computers/proc/build_software_lists() for(var/datum/computer_file/program/prog as anything in subtypesof(/datum/computer_file/program)) diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 5aeeff5128b..23bdfab205c 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -213,7 +213,7 @@ balloon_alert(user, "ooh, free coupon") var/obj/item/coupon/attached_coupon = new user.put_in_hands(attached_coupon) - attached_coupon.generate(rigged_omen) + attached_coupon.generate(rigged_omen ? COUPON_OMEN : null) attached_coupon = null spawn_coupon = FALSE name = "discarded cigarette packet" diff --git a/code/modules/cargo/coupon.dm b/code/modules/cargo/coupon.dm index 5c4e1e930b5..e56544a1864 100644 --- a/code/modules/cargo/coupon.dm +++ b/code/modules/cargo/coupon.dm @@ -1,4 +1,49 @@ -#define COUPON_OMEN "omen" +///datum used by the Coupon Master PDA app to generate coupon items redeemed by a bank account. +/datum/coupon_code + ///The pack that'll receive the discount + var/datum/supply_pack/discounted_pack + ///The discount of the pack, on a 0 to 1 range. + var/discount + /** + * If set, copies of the coupon code will delete itself after a while if not printed. + * The ones SSmodular_computer.discount_coupons stay intact. + */ + var/expires_in + ///Has the coupon been printed. Dictates in which section it's shown, and that it cannot be printed again. + var/printed = FALSE + ///The timerid for deletion if expires_in is set. + var/timerid + ///Reference to the associated bank account, since we need to clear refs on deletion. + var/datum/bank_account/associated_account + +/datum/coupon_code/New(discount, discounted_pack, expires_in) + ..() + src.discounted_pack = discounted_pack + src.discount = discount + if(expires_in) + src.expires_in = world.time + expires_in + +/datum/coupon_code/Destroy() + if(associated_account) + associated_account.redeemed_coupons -= src + associated_account = null + return ..() + +/datum/coupon_code/proc/copy(datum/bank_account/account) + var/datum/coupon_code/copy = new(discount, discounted_pack, expires_in) + copy.associated_account = account + if(account) + LAZYADD(account.redeemed_coupons, src) + if(expires_in) + copy.timerid = QDEL_IN_STOPPABLE(copy, expires_in - world.time) + +/datum/coupon_code/proc/generate() + var/obj/item/coupon/coupon = new() + coupon.generate(discount, discounted_pack) + printed = TRUE + deltimer(timerid) + timerid = null + return coupon /obj/item/coupon name = "coupon" @@ -12,18 +57,15 @@ var/obj/machinery/computer/cargo/inserted_console /// Choose what our prize is :D -/obj/item/coupon/proc/generate(rig_omen=FALSE) - discounted_pack = pick(subtypesof(/datum/supply_pack/goody)) - var/list/chances = list("0.10" = 4, "0.15" = 8, "0.20" = 10, "0.25" = 8, "0.50" = 4, COUPON_OMEN = 1) - - if(rig_omen) - discount_pct_off = COUPON_OMEN - else - discount_pct_off = pick_weight(chances) +/obj/item/coupon/proc/generate(discount, datum/supply_pack/discounted_pack) + src.discounted_pack = discounted_pack || pick(GLOB.discountable_packs[pick_weight(GLOB.pack_discount_odds)]) + var/static/list/chances = list("0.10" = 4, "0.15" = 8, "0.20" = 10, "0.25" = 8, "0.50" = 4, COUPON_OMEN = 1) + discount_pct_off = discount || pick_weight(chances) if(discount_pct_off != COUPON_OMEN) - discount_pct_off = text2num(discount_pct_off) - name = "coupon - [round(discount_pct_off * 100)]% off [initial(discounted_pack.name)]" + if(!discount) // the discount arg should be a number already, while the keys in the chances list cannot be numbers + discount_pct_off = text2num(discount_pct_off) + name = "coupon - [round(discount_pct_off * 100)]% off [initial(src.discounted_pack.name)]" return name = "coupon - fuck you" @@ -71,5 +113,3 @@ LAZYREMOVE(inserted_console.loaded_coupons, src) inserted_console = null . = ..() - -#undef COUPON_OMEN diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm index 9dbd2d05130..7b185051478 100644 --- a/code/modules/cargo/goodies.dm +++ b/code/modules/cargo/goodies.dm @@ -3,6 +3,7 @@ access = NONE group = "Goodies" goody = TRUE + discountable = SUPPLY_PACK_STD_DISCOUNTABLE /datum/supply_pack/goody/clear_pda name = "Mint Condition Nanotrasen Clear PDA" diff --git a/code/modules/cargo/packs/_packs.dm b/code/modules/cargo/packs/_packs.dm index 2adec36584a..9257d2d1e3d 100644 --- a/code/modules/cargo/packs/_packs.dm +++ b/code/modules/cargo/packs/_packs.dm @@ -39,6 +39,8 @@ var/admin_spawned = FALSE /// Goodies can only be purchased by private accounts and can have coupons apply to them. They also come in a lockbox instead of a full crate, so the 700 min doesn't apply var/goody = FALSE + /// Can coupons target this pack? If so, how rarely? + var/discountable = SUPPLY_PACK_NOT_DISCOUNTABLE /datum/supply_pack/New() id = type diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index 6ac7ee5095d..51fb4686038 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -30,6 +30,7 @@ ) crate_name = "collectable hats crate" crate_type = /obj/structure/closet/crate/wooden + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/costumes_toys/formalwear name = "Formalwear Crate" @@ -70,6 +71,7 @@ contains = list(/obj/item/firing_pin/clown) crate_name = "toy crate" // It's /technically/ a toy. For the clown, at least. crate_type = /obj/structure/closet/crate/wooden + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/costumes_toys/lasertag name = "Laser Tag Crate" @@ -232,6 +234,7 @@ cost = 1000 contains = list() crate_name = "booster pack pack" + discountable = SUPPLY_PACK_STD_DISCOUNTABLE /datum/supply_pack/costumes_toys/randomised/tcg/fill(obj/structure/closet/crate/C) var/cardpacktype @@ -244,6 +247,7 @@ desc = "This crate contains a random assortment of stickers." cost = CARGO_CRATE_VALUE * 3 contains = list() + discountable = SUPPLY_PACK_STD_DISCOUNTABLE /datum/supply_pack/costumes_toys/stickers/fill(obj/structure/closet/crate/crate) for(var/i in 1 to rand(1,2)) @@ -262,3 +266,4 @@ ) crate_name = "corgi pinata kit" crate_type = /obj/structure/closet/crate/wooden + discountable = SUPPLY_PACK_STD_DISCOUNTABLE diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index 49e97271251..9c57a4d6d7f 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -1,5 +1,6 @@ /datum/supply_pack/emergency group = "Emergency" + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/emergency/bio name = "Biological Emergency Crate" diff --git a/code/modules/cargo/packs/engineering.dm b/code/modules/cargo/packs/engineering.dm index 446da624e13..33d4b35cdf5 100644 --- a/code/modules/cargo/packs/engineering.dm +++ b/code/modules/cargo/packs/engineering.dm @@ -271,6 +271,7 @@ crate_name = "supermatter shard crate" crate_type = /obj/structure/closet/crate/secure/radiation dangerous = TRUE + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/engine/tesla_coils name = "Tesla Coil Crate" diff --git a/code/modules/cargo/packs/general.dm b/code/modules/cargo/packs/general.dm index 1b4937f5ab4..e294d1bd4a1 100644 --- a/code/modules/cargo/packs/general.dm +++ b/code/modules/cargo/packs/general.dm @@ -25,6 +25,7 @@ /obj/item/toner = 2) crate_name = "tattoo crate" crate_type = /obj/structure/closet/crate/wooden + discountable = SUPPLY_PACK_STD_DISCOUNTABLE /datum/supply_pack/misc/bicycle name = "Bicycle" @@ -33,6 +34,7 @@ contains = list(/obj/vehicle/ridden/bicycle) crate_name = "bicycle crate" crate_type = /obj/structure/closet/crate/large + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/misc/bigband name = "Big Band Instrument Collection" diff --git a/code/modules/cargo/packs/imports.dm b/code/modules/cargo/packs/imports.dm index 22a2cd4dddc..d5dc3e519d4 100644 --- a/code/modules/cargo/packs/imports.dm +++ b/code/modules/cargo/packs/imports.dm @@ -17,6 +17,7 @@ cost = CARGO_CRATE_VALUE * 2 contains = list(/obj/item/gun/ballistic/shotgun/toy = 8) crate_name = "foam force crate" + discountable = SUPPLY_PACK_STD_DISCOUNTABLE /datum/supply_pack/imports/foamforce/bonus name = "Foam Force Pistols Crate" @@ -37,6 +38,7 @@ contains = list(/obj/item/storage/backpack/meat) crate_name = "MEAT MEAT MEAT MEAT MEAT" crate_type = /obj/structure/closet/crate/necropolis + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/imports/duct_spider name = "Duct Spider Crate" @@ -45,6 +47,7 @@ contains = list(/mob/living/basic/spider/maintenance) crate_name = "duct spider crate" crate_type = /obj/structure/closet/crate/critter + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/imports/duct_spider/dangerous name = "Duct Spider Crate?" @@ -66,6 +69,7 @@ cost = CARGO_CRATE_VALUE * 100 contains = list(/obj/item/stack/sheet/mineral/bananium) crate_name = "bananium sheet crate" + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/imports/naturalbait name = "Freshness Jars full of Natural Bait" @@ -228,6 +232,7 @@ /obj/item/clothing/suit/armor/vest/russian_coat, /obj/item/storage/toolbox/guncase/soviet = 2, ) + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/imports/russian/fill(obj/structure/closet/crate/our_crate) for(var/items in 1 to 10) @@ -272,6 +277,7 @@ crate_name = "abandoned crate" contraband = TRUE dangerous = TRUE //these are literally bombs so.... + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/imports/shambler_evil name = "Shamber's Juice Eldritch Energy! Crate" diff --git a/code/modules/cargo/packs/livestock.dm b/code/modules/cargo/packs/livestock.dm index 676dfb0a2f7..899216ffb5b 100644 --- a/code/modules/cargo/packs/livestock.dm +++ b/code/modules/cargo/packs/livestock.dm @@ -222,6 +222,7 @@ cost = CARGO_CRATE_VALUE * 20 contains = list(/mob/living/basic/garden_gnome) crate_name = "garden gnome crate" + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/critter/garden_gnome/generate() . = ..() diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index 90315f5c772..c30a698c06f 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -189,3 +189,4 @@ cost = CARGO_CRATE_VALUE * 6 contains = list(/obj/item/organ/internal/cyberimp/arm/muscle = 2) crate_name = "Strong-Arm implant crate" + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm index e5a1327b453..d806ce51d45 100644 --- a/code/modules/cargo/packs/organic.dm +++ b/code/modules/cargo/packs/organic.dm @@ -125,6 +125,7 @@ access = ACCESS_THEATRE access_view = ACCESS_THEATRE crate_type = /obj/structure/closet/crate/secure + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/organic/hydroponics name = "Hydroponics Crate" @@ -306,6 +307,7 @@ /obj/machinery/grill/unwrenched, ) crate_name = "grilling starter kit crate" + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/organic/grillfuel name = "Grilling Fuel Kit" @@ -317,6 +319,7 @@ /obj/item/reagent_containers/cup/soda_cans/monkey_energy, ) crate_name = "grilling fuel kit crate" + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/organic/tiziran_supply name = "Tiziran Supply Box" diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index 04129eb08a5..eacd24fdbd0 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -140,6 +140,7 @@ /obj/item/clothing/mask/gas/sechailer, ) crate_name = "security clothing crate" + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /datum/supply_pack/security/baton name = "Stun Batons Crate" @@ -168,6 +169,7 @@ /obj/item/clothing/mask/whistle, /obj/item/conversion_kit, ) + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE /// Armory packs diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index ac59c5cb8ff..fddd093b4fb 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -103,6 +103,7 @@ contains = list(/obj/item/stack/tile/carpet/fifty = 2, /obj/item/stack/tile/carpet/black/fifty = 2) crate_name = "premium carpet crate" + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/service/carpet_exotic name = "Exotic Carpet Crate" @@ -119,6 +120,7 @@ /obj/item/stack/tile/carpet/royalblack/fifty = 2, ) crate_name = "exotic carpet crate" + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/service/carpet_neon name = "Simple Neon Carpet Crate" @@ -140,6 +142,7 @@ /obj/item/stack/tile/carpet/neon/simple/pink/sixty = 2, ) crate_name = "neon carpet crate" + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/service/lightbulbs name = "Replacement Lights" @@ -243,6 +246,7 @@ ) crate_name = "\improper Ready-Donk crate" crate_type = /obj/structure/closet/crate/freezer/food + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/service/randomized/ready_donk/fill(obj/structure/closet/crate/C) for(var/i in 1 to 3) @@ -265,6 +269,7 @@ /obj/item/reagent_containers/cup/bottle/syrup_bottle/caramel, //one extra syrup as a treat ) crate_name = "coffee equipment crate" + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/service/coffeemaker name = "Impressa Coffeemaker Crate" @@ -273,6 +278,7 @@ contains = list(/obj/machinery/coffeemaker/impressa) crate_name = "coffeemaker crate" crate_type = /obj/structure/closet/crate/large + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /datum/supply_pack/service/aquarium_kit name = "Aquarium Kit" @@ -287,6 +293,7 @@ ) crate_name = "aquarium kit crate" crate_type = /obj/structure/closet/crate/wooden + discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE /// Spare bar sign wallmount /datum/supply_pack/service/bar_sign @@ -295,3 +302,4 @@ cost = CARGO_CRATE_VALUE * 14 contains = list(/obj/item/wallframe/barsign/all_access) crate_name = "bar sign crate" + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm index b4703945092..6bcad3f247c 100644 --- a/code/modules/economy/account.dm +++ b/code/modules/economy/account.dm @@ -35,6 +35,8 @@ var/pay_token ///List with a transaction history for NT pay app var/list/transaction_history = list() + ///A lazylist of coupons redeemed with the Coupon Master pda app associated with this account. + var/list/redeemed_coupons /datum/bank_account/New(newname, job, modifier = 1, player_account = TRUE) account_holder = newname @@ -47,6 +49,7 @@ /datum/bank_account/Destroy() if(add_to_accounts) SSeconomy.bank_accounts_by_id -= "[account_id]" + QDEL_LIST(redeemed_coupons) return ..() /** diff --git a/code/modules/modular_computers/file_system/programs/coupon.dm b/code/modules/modular_computers/file_system/programs/coupon.dm new file mode 100644 index 00000000000..72e3ff6ec06 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/coupon.dm @@ -0,0 +1,119 @@ +#define COUPON_PAPER_USE 1 +#define COUPON_TONER_USE 0.250 + +///A program that enables the user to redeem randomly generated coupons for several cargo packs (mostly goodies). +/datum/computer_file/program/coupon + filename = "couponmaster" + filedesc = "Coupon Master" + downloader_category = PROGRAM_CATEGORY_SUPPLY + extended_desc = "Program for receiving discounts for several cargo goodies. After redeeming a coupon, hit a photocopier with your PDA to print it." + program_flags = PROGRAM_ON_NTNET_STORE | PROGRAM_REQUIRES_NTNET + size = 5 + tgui_id = "NtosCouponMaster" + program_icon = "ticket" + can_run_on_flags = PROGRAM_PDA //It relies on the PDA messenger to let you know of new codes + detomatix_resistance = DETOMATIX_RESIST_MALUS + +/datum/computer_file/program/coupon/on_install() + . = ..() + ///set the discount_coupons list, which means SSmodular_computers will now begin to periodically produce new coupon codes. + LAZYINITLIST(SSmodular_computers.discount_coupons) + ADD_TRAIT(computer, TRAIT_MODPC_HALVED_DOWNLOAD_SPEED, REF(src)) //All that glitters is not gold + +/datum/computer_file/program/coupon/Destroy() + if(computer) + REMOVE_TRAIT(computer, TRAIT_MODPC_HALVED_DOWNLOAD_SPEED, REF(src)) + return ..() + +/datum/computer_file/program/coupon/ui_data(mob/user) + var/list/data = list() + data["printed_coupons"] = list() + data["redeemed_coupons"] = list() + data["valid_id"] = FALSE + var/obj/item/card/id/user_id = computer.computer_id_slot + if(user_id?.registered_account.add_to_accounts) + for(var/datum/coupon_code/coupon as anything in user_id.registered_account.redeemed_coupons) + var/list/coupon_data = list( + "goody" = initial(coupon.discounted_pack.name), + "discount" = coupon.discount*100, + ) + if(coupon.printed) + data["printed_coupons"] += list(coupon_data) + else + data["redeemed_coupons"] += list(coupon_data) + data["valid_id"] = TRUE + return data + +/datum/computer_file/program/coupon/ui_act(action, params, datum/tgui/ui) + var/obj/item/card/id/user_id = computer.computer_id_slot + if(!(user_id?.registered_account.add_to_accounts)) + return TRUE + switch(action) + if("redeem") + var/code = params["code"] + if(!length(code)) + return TRUE + var/datum/coupon_code/coupon = SSmodular_computers.discount_coupons[code] + if(isnull(coupon)) + user_id.registered_account.bank_card_talk("Invalid coupon code.", TRUE) + return TRUE + if(coupon.expires_in && coupon.expires_in < world.time) + user_id.registered_account.bank_card_talk("Expired coupon code.", TRUE) + return TRUE + if(coupon in user_id.registered_account.redeemed_coupons) + user_id.registered_account.bank_card_talk("Coupon [code] already redeemed.", TRUE) + return TRUE + coupon.copy(user_id.registered_account) + var/static/list/goodbye = list( + "Have a wonderful day.", + "Don't forget to print it.", + "Time to get shopping!", + "Enjoy your discount!", + "Congratulations!", + "Bye Bye~.", + ) + user_id.registered_account.bank_card_talk("Coupon [code] redeemed. [pick(goodbye)]", TRUE) + //Well, guess you're redeeming something else too. + if(prob(40) && computer.used_capacity < computer.max_capacity) + var/datum/computer_file/warez = new() + warez.filename = random_string(rand(6, 12), GLOB.alphabet + GLOB.alphabet_upper + GLOB.numerals) + warez.filetype = pick("DAT", "XXX", "TMP", "FILE", "MNT", "MINER", "SYS", "PNG.EXE") + warez.size = min(rand(1, 4), computer.max_capacity - computer.used_capacity) + if(prob(25)) + warez.undeletable = TRUE + computer.store_file(warez) + +/** + * Normally, modular PCs can be print paper already, but I find this additional step + * to be less lazy and fitting to the "I gotta go print it before it expires" aspect of it. + */ +/datum/computer_file/program/coupon/tap(atom/tapped_atom, mob/living/user, params) + if(!istype(tapped_atom, /obj/machinery/photocopier)) + return FALSE + var/obj/item/card/id/user_id = computer.computer_id_slot + if(!(user_id?.registered_account)) + computer.balloon_alert(user, "no bank account found!") + return TRUE + var/obj/machinery/photocopier/copier = tapped_atom + if(copier.check_busy(user)) + return TRUE + var/num_coupons = 0 + for(var/datum/coupon_code/coupon as anything in user_id.registered_account.redeemed_coupons) + if(!coupon.printed) + num_coupons++ + if(!num_coupons) + computer.balloon_alert(user, "no coupon available!") + return TRUE + copier.do_copies(CALLBACK(src, PROC_REF(print_coupon), user_id.registered_account), user, COUPON_PAPER_USE, COUPON_TONER_USE, num_coupons) + return TRUE + +/datum/computer_file/program/coupon/proc/print_coupon(datum/bank_account/account) + var/datum/coupon_code/coupon + for(var/datum/coupon_code/possible_coupon as anything in account.redeemed_coupons) + if(!possible_coupon.printed) + coupon = possible_coupon + break + return coupon?.generate() + +#undef COUPON_PAPER_USE +#undef COUPON_TONER_USE diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index 728f94372cf..78320e9009f 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -100,6 +100,8 @@ if(NTNET_ETHERNET_SIGNAL) download_netspeed = NTNETSPEED_ETHERNET if(download_netspeed) + if(HAS_TRAIT(computer, TRAIT_MODPC_HALVED_DOWNLOAD_SPEED)) + download_netspeed *= 0.5 download_completion += download_netspeed /datum/computer_file/program/ntnetdownload/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 4b2ea262874..a6cb83aafc0 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -283,6 +283,9 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks()) /// Will invoke `do_copy_loop` asynchronously. Passes the supplied arguments on to it. /obj/machinery/photocopier/proc/do_copies(datum/callback/copy_cb, mob/user, paper_use, toner_use, copies_amount) + if(machine_stat & (BROKEN|NOPOWER)) + return + busy = TRUE update_use_power(ACTIVE_POWER_USE) // fucking god proc diff --git a/tgstation.dme b/tgstation.dme index ab9284a84d8..b06cf4b55b9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -604,6 +604,7 @@ #include "code\_globalvars\lists\achievements.dm" #include "code\_globalvars\lists\ambience.dm" #include "code\_globalvars\lists\canisters.dm" +#include "code\_globalvars\lists\cargo.dm" #include "code\_globalvars\lists\client.dm" #include "code\_globalvars\lists\color.dm" #include "code\_globalvars\lists\crafting.dm" @@ -5107,6 +5108,7 @@ #include "code\modules\modular_computers\file_system\programs\budgetordering.dm" #include "code\modules\modular_computers\file_system\programs\card.dm" #include "code\modules\modular_computers\file_system\programs\cargoship.dm" +#include "code\modules\modular_computers\file_system\programs\coupon.dm" #include "code\modules\modular_computers\file_system\programs\crewmanifest.dm" #include "code\modules\modular_computers\file_system\programs\emojipedia.dm" #include "code\modules\modular_computers\file_system\programs\file_browser.dm" diff --git a/tgui/packages/tgui/interfaces/NtosCouponMaster.tsx b/tgui/packages/tgui/interfaces/NtosCouponMaster.tsx new file mode 100644 index 00000000000..53820b80789 --- /dev/null +++ b/tgui/packages/tgui/interfaces/NtosCouponMaster.tsx @@ -0,0 +1,61 @@ +import { BooleanLike } from 'common/react'; + +import { useBackend } from '../backend'; +import { Box, Input, NoticeBox, Section } from '../components'; +import { NtosWindow } from '../layouts'; + +type Data = { + valid_id: BooleanLike; + redeemed_coupons: CouponData[]; + printed_coupons: CouponData[]; +}; + +type CouponData = { + goody: string; + discount: number; +}; + +export const NtosCouponMaster = (props) => { + const { act, data } = useBackend(); + const { valid_id, redeemed_coupons = [], printed_coupons = [] } = data; + return ( + + + {!valid_id ? ( + + No valid bank account detected. Insert a valid ID. + + ) : ( + <> + + You can print redeemed coupons by right-clicking a photocopier. + + + act('redeem', { + code: value, + }) + } + /> +
+ {redeemed_coupons.map((coupon, index) => ( + + {coupon.goody} ({coupon.discount}% OFF) + + ))} +
+
+ {printed_coupons.map((coupon, index) => ( + + {coupon.goody} ({coupon.discount}% OFF) + + ))} +
+ + )} +
+
+ ); +}; From 00ae7fed693d4e2ba38a3420548605a168694787 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 21:39:05 +0100 Subject: [PATCH 034/166] Automatic changelog for PR #25854 [ci skip] --- html/changelogs/AutoChangeLog-pr-25854.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25854.yml diff --git a/html/changelogs/AutoChangeLog-pr-25854.yml b/html/changelogs/AutoChangeLog-pr-25854.yml new file mode 100644 index 00000000000..dd81785cff7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25854.yml @@ -0,0 +1,8 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "debug chem heater now withdraws more than 100 units from its inserted beaker." + - bugfix: "chem heater has correct overlay when its panel is closed with a screwdriver while a beaker is inside." + - qol: "added more examines and tooltips for the chem heater." + - code_imp: "converted chem heater UI to typescript. removed unused procs, vars, ui tracking code. Added auto doc for everything." + - refactor: "removed chem heater tutorial help button & its related reward, chem heater code has been optimized as a whole." \ No newline at end of file From 337573c7b3b0e3cddc8dfc4f9eba86d85b8d3a79 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 21:39:18 +0100 Subject: [PATCH 035/166] Automatic changelog for PR #25855 [ci skip] --- html/changelogs/AutoChangeLog-pr-25855.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25855.yml diff --git a/html/changelogs/AutoChangeLog-pr-25855.yml b/html/changelogs/AutoChangeLog-pr-25855.yml new file mode 100644 index 00000000000..41ebafa5cd1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25855.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - rscadd: "Added the 'Coupon Master' program for the PDA. Install it to receive periodical, redeemable coupons for several cargo packs. Requires NTnet connection and the messenger enabled to work." + - rscadd: "Coupons are no longer only limited to goodies, but may also apply discount to some other packs as well." \ No newline at end of file From 6c025a46c990ba7f7f4efba129f02255332938da Mon Sep 17 00:00:00 2001 From: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Date: Mon, 25 Dec 2023 15:40:35 -0500 Subject: [PATCH 036/166] icecats(?) can now respawn (#25851) * icecats(?) can now respawn * yea --- .../primitive_catgirls/code/spawner.dm | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/modular_skyrat/modules/primitive_catgirls/code/spawner.dm b/modular_skyrat/modules/primitive_catgirls/code/spawner.dm index 3bed64d3935..42becf32073 100644 --- a/modular_skyrat/modules/primitive_catgirls/code/spawner.dm +++ b/modular_skyrat/modules/primitive_catgirls/code/spawner.dm @@ -28,13 +28,38 @@ /obj/effect/mob_spawn/ghost_role/human/primitive_catgirl/Initialize(mapload) . = ..() team = new /datum/team/primitive_catgirls() - important_text = "Read the full policy
here." + START_PROCESSING(SSprocessing, src) /obj/effect/mob_spawn/ghost_role/human/primitive_catgirl/Destroy() team = null + STOP_PROCESSING(SSprocessing, src) return ..() +/obj/effect/mob_spawn/ghost_role/human/primitive_catgirl/process(seconds_per_tick) + consume() + +/obj/effect/mob_spawn/ghost_role/human/primitive_catgirl/proc/consume() + for(var/mob/living/consumed_mob in range(1, src)) + if(!consumed_mob.stat) //so ! means that they are conscious + continue + + if(ismegafauna(consumed_mob)) + uses += 5 + + else + uses += 1 + + visible_message(span_warning("[consumed_mob] slowly and with finality falls into [src]. There was no thump...")) + + var/delivery_key = consumed_mob.fingerprintslast + var/mob/living/delivery_mob = get_mob_by_key(delivery_key) + if(delivery_mob && (delivery_mob.mind?.has_antag_datum(/datum/antagonist/primitive_catgirl)) && (delivery_key in team.players_spawned) && (prob(60))) + to_chat(delivery_mob, span_warning("A strange feeling fills your chest. [src] seems to echo your name, pleased...")) + team.players_spawned -= delivery_key + + qdel(consumed_mob) + /obj/effect/mob_spawn/ghost_role/human/primitive_catgirl/examine() . = ..() @@ -58,7 +83,7 @@ spawned_human.mind.add_antag_datum(/datum/antagonist/primitive_catgirl, team) - team.players_spawned += (spawned_human.key) + team.players_spawned += (spawned_human.ckey) /datum/job/primitive_catgirl title = "Icemoon Dweller" From fc39bcb3ff667ba8579e5470cd2a333b0d3457fe Mon Sep 17 00:00:00 2001 From: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Date: Mon, 25 Dec 2023 15:40:43 -0500 Subject: [PATCH 037/166] add crusher to mining borg (must be in melee range) (#25856) add crusher to miner borg (must be in melee range) Please enter the commit message for your changes. Lines starting --- code/modules/mob/living/silicon/robot/robot_model.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 0ded7750d24..646f97d1207 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -709,6 +709,7 @@ /obj/item/storage/bag/ore/cyborg, /obj/item/pickaxe/drill/cyborg, /obj/item/shovel, + /obj/item/kinetic_crusher, //SKYRAT EDIT /obj/item/crowbar/cyborg, /obj/item/weldingtool/mini, /obj/item/extinguisher/mini, From a8b38abcd7af6af5269b3c6ce391d1ec4fc03159 Mon Sep 17 00:00:00 2001 From: Astra Farera E'luna Awiarera <41804338+AstraFarera@users.noreply.github.com> Date: Tue, 26 Dec 2023 00:42:07 +0400 Subject: [PATCH 038/166] "Frozen Moonlight" Interdyne (#25046) * Liners fix. * Cryopods fix. * Instances fix. What's next.. * Wavefield Science Interdyne * Fixes errors with only symbols i found. * Area Instance fix. * Adapted for Icebox. Gentle gentle. * Made a bridge a bit smaller to provide better access to land around. * Tiny grid fixes. And mushrooms. * Better bar, some lightwork, closed mountainside completely cause saw colossus walking bridge at roundstart. * NIFs, Holopad, libscan, grid. * Lib tools, dorms and some kitchen rrs. --------- Co-authored-by: Astra Farera E'luna Awiarera <41804338+AstralWavefieldAi@users.noreply.github.com> --- ...oon_underground_syndicate_base1_skyrat.dmm | 17137 ++++++++------ ...avaland_surface_syndicate_base1_skyrat.dmm | 18936 +++++++++------- 2 files changed, 20463 insertions(+), 15610 deletions(-) diff --git a/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_syndicate_base1_skyrat.dmm b/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_syndicate_base1_skyrat.dmm index 054ca30b339..65d0e637993 100644 --- a/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_syndicate_base1_skyrat.dmm +++ b/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_syndicate_base1_skyrat.dmm @@ -9,1064 +9,233 @@ /turf/closed/mineral/random/snow/underground, /area/icemoon/underground/explored) "ad" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) "ag" = ( -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"ai" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"ak" = ( -/obj/structure/tank_dispenser, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"al" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, -/obj/machinery/vending/wardrobe/syndie_wardrobe{ - onstation = 0 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"ao" = ( -/obj/structure/cable, -/obj/machinery/computer/order_console/mining/interdyne, -/obj/structure/railing{ +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 4 }, -/obj/effect/turf_decal/tile/brown{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"ai" = ( +/turf/open/floor/plating/reinforced, +/area/icemoon/underground/explored) +"ak" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 5; + faction = list("Syndicate","neutral") + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/camera/xray{ + pixel_x = 10; + name = "Inderdyne security camera"; + network = list("Interdyne"); + color = "#adadcd"; + pixel_y = 25 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/main) +"al" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/bar) +"ao" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"ap" = ( +/obj/structure/table/wood/fancy, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"ar" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 1 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"ap" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/engineering) -"ar" = ( -/obj/machinery/door/airlock/command{ - name = "Deck Officer" - }, -/obj/effect/turf_decal/siding/wood, -/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/syndicate/leader, -/turf/open/floor/wood, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/cargo) "as" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/bed/maint, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"au" = ( -/obj/structure/table/glass, -/obj/item/book/random{ - pixel_y = 3 +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 }, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"aA" = ( -/obj/machinery/conveyor_switch/oneway{ - dir = 8; - id = "interdynedisp"; - name = "disposal conveyor" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"aB" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"aE" = ( -/obj/structure/closet/crate/medical, -/obj/item/storage/medkit/fire{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/brute, -/obj/item/storage/medkit/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"aG" = ( -/obj/structure/table/glass, -/obj/item/clothing/glasses/science, -/obj/item/book/manual/wiki/chemistry{ - pixel_y = 8 - }, -/turf/open/floor/iron/white, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"aP" = ( -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"aT" = ( -/obj/structure/table/glass, -/obj/machinery/reagentgrinder{ - pixel_y = 6 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 5 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, +"au" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"aV" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"aY" = ( -/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, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"bd" = ( -/obj/machinery/light/directional/south, -/obj/structure/closet/secure_closet/freezer/kitchen{ - req_access = list("syndicate") +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"aA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 }, -/obj/item/reagent_containers/condiment/milk, -/obj/item/reagent_containers/condiment/soymilk, -/turf/open/floor/iron/dark/smooth_large, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"aB" = ( +/obj/effect/turf_decal/box/blue/corners, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"aE" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/reagent_dispensers/wall/virusfood/directional/west, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/box/syringes, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/purple, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"aG" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/machinery/duct, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"aP" = ( +/obj/machinery/smartfridge/extract/preloaded{ + color = "#adadcd"; + name = "Interdyne smart slime extract storage"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"aT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"aV" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/tree/jungle/small/style_random, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"aY" = ( +/obj/effect/turf_decal/tile/dark/full, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"bd" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/bar) "bf" = ( -/obj/structure/rack, -/obj/item/cultivator, -/obj/item/shovel/spade, -/obj/item/hatchet, -/obj/item/plant_analyzer, -/obj/item/geneshears, -/obj/item/gun/energy/floragun, -/obj/item/secateurs, -/turf/open/floor/iron/dark/smooth_large, +/obj/structure/table/wood/fancy, +/obj/structure/marker_beacon/bronze, +/obj/machinery/computer/libraryconsole/bookmanagement{ + dir = 8 + }, +/obj/machinery/libraryscanner{ + pixel_x = -30; + pixel_y = 12 + }, +/turf/open/floor/wood/large, /area/ruin/syndicate_lava_base/bar) "bh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 1 }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) "bk" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/machinery/monkey_recycler{ + name = "Interdyne monkey recycler"; + color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/testlab) "bq" = ( -/turf/open/floor/holofloor/stairs/left{ - dir = 8 +/obj/structure/fans/tiny/forcefield, +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 }, -/area/ruin/syndicate_lava_base/cargo) +/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_large, +/area/ruin/syndicate_lava_base/testlab) "bu" = ( -/obj/machinery/button/door/directional/west{ - id = "interdynekitchen" - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"bv" = ( -/obj/machinery/door/airlock/command{ - name = "Observation Deck" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/telecomms) -"bz" = ( -/obj/structure/disposalpipe/trunk, -/obj/structure/disposaloutlet{ - dir = 1 - }, -/turf/open/misc/asteroid/snow/icemoon, -/area/ruin/syndicate_lava_base/virology) -"bC" = ( -/obj/effect/turf_decal/arrows, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"bF" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"bG" = ( -/obj/structure/closet/crate/internals, -/obj/item/tank/internals/oxygen/yellow, -/obj/item/tank/internals/oxygen/yellow, -/obj/item/tank/internals/oxygen/yellow, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/effect/turf_decal/box/white, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"bM" = ( -/obj/effect/turf_decal/siding/thinplating/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"bN" = ( -/obj/structure/closet/crate, -/obj/item/storage/box/stockparts/deluxe, -/obj/item/storage/box/stockparts/deluxe, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/circuitboard/machine/processor, -/obj/item/circuitboard/machine/gibber, -/obj/item/circuitboard/machine/deep_fryer, -/obj/item/circuitboard/machine/cell_charger, -/obj/item/circuitboard/machine/smoke_machine, -/obj/item/stack/sheet/plasteel/fifty, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"bR" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"bV" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 9 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"bY" = ( -/obj/machinery/door/airlock/grunge{ - name = "Morgue" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/structure/fans/tiny, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"ce" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"cf" = ( -/obj/structure/closet/crate, -/obj/item/flashlight{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/extinguisher{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/extinguisher{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/extinguisher{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"ci" = ( -/obj/effect/turf_decal/vg_decals/department/cargo, -/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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"cj" = ( -/obj/machinery/atmospherics/components/binary/volume_pump{ - dir = 4; - name = "BZ Pump" - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"ck" = ( -/obj/structure/sign/directions/medical{ - dir = 4; - pixel_x = 32; - pixel_y = 3 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"cl" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/hydroponics/constructable, -/obj/machinery/door/window/survival_pod{ - dir = 1 - }, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"cm" = ( -/obj/structure/filingcabinet, -/obj/item/folder/syndicate/mining, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/main) -"cn" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"cu" = ( -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/bar) -"cw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"cx" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/large, -/area/ruin/syndicate_lava_base/telecomms) -"cD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"cN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/blue{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"cO" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"cP" = ( -/obj/machinery/syndicatebomb/self_destruct{ - anchored = 1 - }, -/obj/effect/turf_decal/stripes/red/box, -/turf/open/floor/iron/textured_large, -/area/ruin/syndicate_lava_base/main) -"cQ" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/ammo_workbench, -/turf/open/floor/iron/edge{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/main) -"cS" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/ruin/syndicate_lava_base/telecomms) -"cV" = ( -/obj/effect/turf_decal/vg_decals/department/med{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"cW" = ( -/obj/effect/turf_decal/siding/thinplating/dark/end{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "interdynekitchen" - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"cY" = ( -/turf/open/floor/iron/edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/main) -"cZ" = ( -/obj/machinery/smartfridge/drinks, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"db" = ( -/obj/structure/safe, -/obj/item/storage/box/syndie_kit/chameleon/ghostcafe{ - desc = "It's a box, for storing things."; - name = "chameleon kit" - }, -/obj/item/disk/ammo_workbench/advanced, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/main) -"de" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/testlab) -"df" = ( -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"dj" = ( -/obj/machinery/camera/autoname/directional/east{ - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/cargo) -"dk" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "intdyno2"; - dir = 1 - }, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"dm" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "interdynekitchen" - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"ds" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/virology) -"dw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - external_pressure_bound = 140; - name = "server vent"; - pressure_checks = 0; - dir = 8 - }, -/turf/open/floor/circuit/telecomms, -/area/ruin/syndicate_lava_base/testlab) -"dy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/chair/plastic{ - dir = 4 - }, -/turf/open/floor/plating/icemoon, -/area/ruin/syndicate_lava_base/medbay) -"dz" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Bar" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-service" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"dJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/medbay) -"dL" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"dM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"dN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"dO" = ( -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"dP" = ( -/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/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"dR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"dS" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"dT" = ( -/obj/structure/table/glass, -/obj/item/storage/box/rndboards{ - pixel_y = 15; - pixel_x = 2 - }, -/obj/item/storage/part_replacer{ - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"ed" = ( -/obj/structure/table, -/turf/open/floor/carpet/royalblack, -/area/ruin/syndicate_lava_base/telecomms) -"ef" = ( -/obj/structure/chair/stool/bar{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"eg" = ( -/obj/machinery/door/airlock{ - name = "Quiet Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"ej" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/ice{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"el" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"eo" = ( -/obj/structure/sink/directional/east, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"er" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"et" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"eu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/bed/double, -/obj/item/bedsheet/dorms_double, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"ex" = ( -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"eA" = ( -/obj/structure/table, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/item/key/atv, -/turf/open/floor/iron/smooth_edge, -/area/ruin/syndicate_lava_base/cargo) -"eC" = ( -/obj/structure/lattice/catwalk, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/testlab) -"eE" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/flora/bush/sparsegrass, -/obj/structure/flora/bush/flowers_pp, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/cargo) -"eL" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/turf/open/floor/iron/large, -/area/ruin/syndicate_lava_base/telecomms) -"eN" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2{ - dir = 8 - }, -/turf/open/floor/plating/icemoon, -/area/ruin/syndicate_lava_base/engineering) -"eQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/button/door/directional/south{ - id = "interdynecargo"; - req_access = list("syndicate"); - pixel_y = 24 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"eS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"eX" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"eZ" = ( -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"fd" = ( -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"fe" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "interdynebarbers" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"fg" = ( -/obj/structure/table/glass, -/obj/item/stack/cable_coil, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"fq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"ft" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"fx" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-medbay" - }, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/medbay) -"fB" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"fE" = ( -/obj/machinery/atmospherics/miner/oxygen, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"fF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"fG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"fO" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/rack, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/mask/gas/syndicate, -/turf/open/floor/iron/edge{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/main) -"ge" = ( -/obj/machinery/griddle, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"gh" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/east, -/obj/structure/table/reinforced/rglass, -/obj/item/scissors, -/obj/item/hairbrush/tactical, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"gj" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/table/reinforced, -/obj/item/fakeartefact{ - possible = list(/obj/item/kinetic_crusher) - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"gm" = ( -/obj/structure/bookcase/random/reference, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"gn" = ( -/obj/machinery/light/directional/west, -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer/ice{ - dir = 4 - }, -/turf/open/floor/iron/smooth_edge{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/cargo) -"gp" = ( -/obj/machinery/light/floor, -/obj/machinery/cryo_cell, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"gs" = ( -/obj/structure/table, -/obj/item/storage/box/drinkingglasses{ - pixel_y = 10 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"gy" = ( -/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/ruin/syndicate_lava_base/cargo) -"gz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"gA" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - name = "euthanization chamber freezer"; - dir = 4; - initialize_directions = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"gB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/chair/office/light{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"gF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"gG" = ( -/obj/structure/dresser, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"gL" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"gN" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/medbay) -"gT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"gY" = ( -/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/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_blue, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"gZ" = ( -/obj/machinery/airalarm/directional/north{ - req_access = list("syndicate") - }, -/obj/machinery/microwave{ - pixel_y = 9 - }, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"ha" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "interdynedeckofficer" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"hb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"hr" = ( -/obj/machinery/hydroponics/constructable, -/obj/machinery/door/window/survival_pod{ - dir = 1 - }, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"ht" = ( -/obj/structure/railing, -/obj/structure/rack/shelf, -/obj/effect/turf_decal/box/white, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"hu" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/vending/autodrobe{ - onstation = 0 - }, -/turf/open/floor/iron/cafeteria, -/area/ruin/syndicate_lava_base/dormitories) -"hz" = ( -/obj/machinery/chem_dispenser/fullupgrade, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"hA" = ( -/obj/item/paper/guides/jobs/medical/morgue, -/obj/structure/table/reinforced, -/obj/item/storage/backpack/duffelbag/syndie/surgery, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"hI" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/effect/turf_decal/siding/thinplating/light{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/closet/crate/freezer/blood, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"hL" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"hT" = ( -/obj/machinery/photocopier, -/obj/machinery/light/directional/south, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"hU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"ie" = ( -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"ih" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, /obj/item/reagent_containers/cup/glass/shaker{ pixel_x = 6; pixel_y = 2 @@ -1075,1023 +244,217 @@ pixel_x = -4; pixel_y = 3 }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/bar) -"it" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engineering" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"iw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor{ - id = "interdynedisp"; - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"iy" = ( -/obj/machinery/suit_storage_unit/mining, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"iB" = ( -/obj/structure/sign/directions/vault{ - dir = 8; - pixel_y = 30 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"iG" = ( -/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 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"iL" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 8 - }, -/obj/machinery/firealarm/directional/south{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"iQ" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"iS" = ( -/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/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"iX" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/item/reagent_containers/cup/glass/drinkingglass{ - pixel_y = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/bar) -"iY" = ( -/obj/machinery/atmospherics/miner/nitrogen, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"iZ" = ( -/obj/machinery/door/airlock{ - name = "Disposals" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"jb" = ( -/obj/machinery/chem_master, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"jf" = ( -/obj/effect/turf_decal/vg_decals/department/bar{ - dir = 1 - }, -/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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"jg" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"jm" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/obj/machinery/door/window/survival_pod{ - dir = 1 - }, -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/medbay) -"jn" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 1 - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"jo" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"jt" = ( -/obj/structure/closet/secure_closet/personal/cabinet, +/obj/effect/turf_decal/tile/dark/full, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"ju" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"jw" = ( -/obj/effect/turf_decal/siding/thinplating{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"jy" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 6 - }, -/turf/open/floor/iron/kitchen, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/bar) -"jA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"jH" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/toy/crayon/spraycan{ - pixel_y = 9; - pixel_x = 4 - }, -/obj/item/toy/crayon/spraycan{ - pixel_y = 9; - pixel_x = -5 - }, -/obj/structure/sign/painting/large/library{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"jI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/table, -/obj/item/key/atv, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"jJ" = ( -/obj/machinery/door/airlock/grunge{ - name = "Bar" - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/bar) -"jR" = ( -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"jT" = ( -/obj/machinery/light/directional/south, -/obj/machinery/vending/medical/syndicate_access{ - onstation = 0 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"jV" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"jZ" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"kb" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 9 - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/testlab) -"kc" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"kf" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/testlab) -"kh" = ( -/obj/machinery/computer/operating, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"kk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"kl" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"km" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/north, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"kp" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_blue, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"kr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"ks" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"kw" = ( -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"kE" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/medbay) -"kL" = ( -/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 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"kN" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 6; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"kU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"kV" = ( -/obj/machinery/vending/drugs{ - name = "\improper SyndiDrug Plus"; - onstation = 0 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"kZ" = ( -/obj/machinery/firealarm/directional/west{ - dir = 4; - pixel_x = -28 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"lb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/table, -/obj/item/toy/cards/deck/cas/black{ - pixel_x = 3; - pixel_y = 11 - }, -/turf/open/floor/plating/icemoon, -/area/ruin/syndicate_lava_base/medbay) -"lc" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"lj" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/testlab) -"ln" = ( -/obj/machinery/smartfridge/extract/preloaded, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"lu" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/vehicle/ridden/atv/snowmobile/syndicate{ - dir = 4 - }, -/obj/effect/turf_decal/box/red, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"lD" = ( -/obj/machinery/smartfridge/food, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"lH" = ( -/obj/structure/ore_box, -/obj/effect/turf_decal/box/white, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"lP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/bookcase/random/nonfiction, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"lT" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"lZ" = ( -/obj/structure/railing, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"ma" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"mg" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"mp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"mr" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"my" = ( -/obj/machinery/door/airlock/research{ - name = "Xenobiology Lab" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/dark/side, -/area/ruin/syndicate_lava_base/testlab) -"mA" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/engineering) -"mG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"mP" = ( -/obj/item/toy/figure/syndie, -/turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/explored) -"mV" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/tile/dark_red, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"nb" = ( -/obj/machinery/light/directional/west, -/obj/structure/closet/crate/bin, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"nc" = ( -/obj/structure/chair/sofa/right/maroon, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"nd" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"nn" = ( -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"no" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"nq" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"nr" = ( -/obj/item/circuitboard/machine/ore_redemption, -/obj/item/assembly/igniter, +"bv" = ( /obj/structure/frame/machine{ anchored = 1; state = 2; icon_state = "box_1" }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"ns" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"nx" = ( -/obj/machinery/conveyor{ - dir = 6; - id = "interdynedisp" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"ny" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/deckofficer{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"nz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/painting/library{ - pixel_x = 32 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"nA" = ( -/obj/structure/table/glass, -/obj/machinery/firealarm/directional/west{ - dir = 4 - }, -/obj/machinery/reagentgrinder, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"nC" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") - }, +/obj/item/circuitboard/machine/ore_redemption, +/obj/item/assembly/igniter, +/obj/structure/marker_beacon/burgundy, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"nJ" = ( -/obj/structure/rack/shelf, -/obj/effect/turf_decal/box/white, -/obj/item/construction/rcd/loaded, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/cargo) -"nP" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"nS" = ( -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"nT" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"ob" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/ruin/syndicate_lava_base/telecomms) -"oc" = ( -/obj/machinery/turretid{ - ailock = 1; - control_area = "/area/ruin/syndicate_lava_base/main"; - dir = 1; - icon_state = "control_kill"; - lethal = 1; - name = "Base turret controls"; - pixel_y = 30; - req_access = list("syndicate") - }, -/turf/open/floor/iron/edge, +"bz" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, /area/ruin/syndicate_lava_base/main) -"oe" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"of" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/right, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"oj" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/obj/item/storage/bag/tray, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"ol" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"op" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/bed/double, -/obj/item/bedsheet/dorms_double, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"ov" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"ox" = ( -/obj/machinery/light/directional/west, -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"oz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north{ - dir = 2 - }, -/turf/open/floor/iron/smooth_edge, -/area/ruin/syndicate_lava_base/medbay) -"oA" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/vehicle/ridden/atv/snowmobile/syndicate{ - dir = 4 - }, -/obj/effect/turf_decal/box/red, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"oB" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"oE" = ( -/obj/machinery/skill_station, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"oG" = ( -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"oN" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"oO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/computer/camera_advanced/xenobio{ - dir = 8 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"oP" = ( -/obj/machinery/power/rtg/advanced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"oS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"oV" = ( +"bC" = ( +/obj/machinery/hydroponics/constructable, /obj/machinery/light/directional/north, -/obj/machinery/deepfryer, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"oW" = ( -/obj/effect/turf_decal/siding/thinplating/light{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/closet/crate/freezer/sansufentanyl, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"oZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/south, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"pc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /obj/machinery/door/window/survival_pod{ - req_access = list("syndicate") + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"pe" = ( -/obj/machinery/chem_master/condimaster{ - name = "BrewMaster 3000" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/small, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/grass, /area/ruin/syndicate_lava_base/bar) -"pg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment{ +"bF" = ( +/obj/structure/chair/sofa/bench/right{ dir = 4 }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"ph" = ( -/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 = 9 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"pk" = ( -/obj/machinery/light/directional/east, -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"pp" = ( -/obj/effect/turf_decal/siding/thinplating{ - 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/dark, -/area/ruin/syndicate_lava_base/cargo) -"pr" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"pF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"pH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"pI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/smooth_edge, -/area/ruin/syndicate_lava_base/cargo) -"pJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"pK" = ( -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/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 = "Kitchen-Botany" - }, -/turf/open/floor/iron/dark/small, -/area/ruin/syndicate_lava_base/bar) -"pN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"pU" = ( -/obj/machinery/camera/autoname/directional/west{ - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/engineering) -"qa" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/virology) -"qd" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"qe" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"qg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"qp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"qA" = ( -/obj/machinery/shower/directional/west, -/obj/structure/drain, -/obj/structure/curtain, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"qC" = ( -/obj/machinery/light/directional/south, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Interdyne Pharmaceuticals"; - pixel_y = 7; - name = "Interdyne Fax Machine" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"qH" = ( -/obj/structure/dresser, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"qK" = ( /obj/effect/turf_decal/siding/wood{ - dir = 1 + dir = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"bG" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"bM" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"bN" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"bR" = ( +/obj/machinery/autolathe/hacked{ + color = "#adadcd"; + name = "Interdyne autolathe"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"bV" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"bY" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 }, /obj/machinery/door/airlock{ name = "Cabin 2"; - id_tag = "IDynbin2" + id_tag = "Dynbin2" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, +/turf/open/floor/iron/dark/textured, /area/ruin/syndicate_lava_base/dormitories) -"qS" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"qU" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"qV" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +"ce" = ( +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/structure/closet/crate/internals{ + anchored = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"qY" = ( -/obj/machinery/light/directional/north, -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"rf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"rg" = ( -/turf/open/floor/carpet/orange, -/area/ruin/syndicate_lava_base/cargo) -"rv" = ( -/obj/effect/turf_decal/tile/dark_red{ - dir = 1 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"ry" = ( -/obj/machinery/vending/hydroseeds{ - onstation = 0 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"rD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/item/clothing/mask/gas, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue/corner{ dir = 8 }, -/obj/structure/disposalpipe/segment, -/obj/structure/table/glass, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 10 - }, -/obj/item/healthanalyzer, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"rG" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"ci" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/box/white/corners, +/obj/effect/turf_decal/trimline/dark/filled/line, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"cj" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/stripes/blue, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"ck" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/white/side{ +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"cl" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/red, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 4 }, -/area/ruin/syndicate_lava_base/medbay) -"rP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"cm" = ( +/obj/structure/frame/machine{ + anchored = 1; + state = 2; + icon_state = "box_1" + }, +/obj/item/circuitboard/machine/ore_silo, +/obj/structure/marker_beacon/burgundy, +/obj/structure/sign/flag/syndicate/directional/north, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"cn" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/corner, +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"cu" = ( +/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/structure/cable, +/turf/open/floor/wood/large, /area/ruin/syndicate_lava_base/bar) -"rT" = ( -/obj/structure/table/optable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"rX" = ( -/obj/effect/turf_decal/siding/thinplating/light{ - dir = 4 +"cx" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + name = "Interdyne Cryo freezer"; + dir = 6; + initialize_directions = 6; + color = "#adadcd" }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/dark/full, /obj/item/reagent_containers/cup/beaker/cryoxadone{ pixel_x = -6; pixel_y = 6 @@ -2102,845 +465,4570 @@ }, /obj/item/storage/pill_bottle/mannitol, /obj/item/reagent_containers/dropper, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"sa" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plating, +"cD" = ( +/obj/machinery/computer/scan_consolenew{ + dir = 8; + name = "Interdyne DNA Console"; + pixel_x = 4 + }, +/obj/structure/marker_beacon/olive, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"sc" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"se" = ( -/obj/machinery/door/airlock/command{ - name = "Observation Deck" +"cN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/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/iron, -/area/ruin/syndicate_lava_base/telecomms) -"sg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"sm" = ( -/obj/effect/turf_decal/siding/thinplating/dark/end, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"so" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 1 }, -/obj/item/toy/cards/deck/wizoff{ - pixel_y = 6 - }, -/obj/structure/table, -/turf/open/floor/plating/icemoon, -/area/ruin/syndicate_lava_base/testlab) -"sr" = ( -/obj/machinery/light/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/turf/open/floor/circuit/telecomms, -/area/ruin/syndicate_lava_base/testlab) -"ss" = ( -/obj/structure/table/wood, -/obj/machinery/light/directional/west, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"st" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"cO" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 4 }, -/obj/machinery/anesthetic_machine, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"sv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"sA" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restroom"; - id_tag = "IDyneWC" +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"cP" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/griddle{ + color = "#9d9ddd"; + name = "Interdyne griddle"; + light_color = "#9d9ddd" + }, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/bar) -"sB" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +"cQ" = ( +/obj/structure/rack, +/obj/item/storage/box/syndie_kit/chameleon/ghostcafe{ + desc = "It's a box, for storing things."; + name = "chameleon kit" + }, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/structure/marker_beacon/burgundy, +/obj/structure/sign/poster/contraband/communist_state/directional/west, +/obj/item/gun/ballistic/rifle/sniper_rifle, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/modular_computer/laptop/preset/syndicate, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"cS" = ( +/obj/structure/drain, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/turf/open/floor/plating/reinforced, +/area/icemoon/underground/explored) +"cV" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/marker_beacon/olive, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"cW" = ( +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 8 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"sE" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5; - faction = list("Syndicate","neutral") +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"sF" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"sG" = ( -/obj/machinery/vending/games{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/marker_beacon/bronze, +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"cY" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/vending/syndichem{ onstation = 0 }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"sL" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/structure/marker_beacon/bronze, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"sP" = ( +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"cZ" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"db" = ( +/obj/structure/sign/poster/contraband/c20r/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, /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/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"de" = ( +/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/ruin/syndicate_lava_base/testlab) +"df" = ( +/obj/structure/sign/poster/contraband/syndicate_medical/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/holofloor/stairs/right{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"dj" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"dk" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 6; + faction = list("Syndicate","neutral") + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/camera/xray{ + pixel_x = 10; + name = "Inderdyne security camera"; + network = list("Interdyne"); + color = "#adadcd"; + pixel_y = 25 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/main) +"dm" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 8 }, -/area/ruin/syndicate_lava_base/cargo) -"sQ" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/sleeper/syndie/fullupgrade{ +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 4 }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth_corner, -/area/ruin/syndicate_lava_base/medbay) -"sR" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/virology) -"sY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"sZ" = ( -/obj/machinery/porta_turret/syndicate, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"ta" = ( -/obj/machinery/seed_extractor, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"tc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"td" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/bar) -"tl" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"to" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"tu" = ( -/obj/machinery/camera/autoname/directional/north{ - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/dormitories) -"tv" = ( -/obj/structure/sign/departments/engineering/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"tw" = ( -/obj/structure/fans/tiny, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/main) -"tx" = ( -/obj/machinery/computer/cryopod/interdyne/directional/west, -/obj/machinery/cryopod{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 4 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"tB" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/tattoo_kit{ - pixel_y = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"tJ" = ( -/obj/structure/bookcase/random/fiction, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"tM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"tS" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"tT" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/east{ - specialfunctions = 4; - normaldoorcontrol = 1; - name = "Dorm Bolt Control"; - id = "IDyneDO" - }, -/turf/open/floor/carpet/orange, -/area/ruin/syndicate_lava_base/cargo) -"ub" = ( /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, -/area/ruin/syndicate_lava_base/dormitories) -"ue" = ( -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"ds" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynemed"; + name = "Interdyne Storm Shutters Med" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/medbay) +"dw" = ( +/obj/machinery/modular_shield/module/charger{ + dir = 4 + }, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"dy" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ dir = 1 }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"dz" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/turf_decal/vg_decals/atmos/oxygen, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"dJ" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/structure/cable, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"dL" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/arrivals) +"dM" = ( +/obj/structure/flora/grass/both/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"dN" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"dO" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/computer/rdconsole{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"dP" = ( +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"dR" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/flora/tree/jungle/small/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/marker_beacon/teal, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"dS" = ( +/obj/structure/flora/rock/icy/style_random, +/obj/structure/flora/tree/pine/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"dT" = ( +/obj/structure/marker_beacon/bronze, +/obj/structure/flora/tree/pine/xmas, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"ed" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"ef" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"eg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"ej" = ( +/obj/machinery/portable_atmospherics/canister/bz, +/obj/machinery/atmospherics/components/unary/portables_connector, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/testlab) +"el" = ( /obj/machinery/camera/xray{ c_tag = "Xenobio East"; dir = 4; network = list("fsci") }, -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate"); - dir = 1; - name = "Slime Pacification Chamber" - }, /obj/effect/turf_decal/tile/dark_red{ dir = 8 }, /obj/machinery/atmospherics/components/unary/passive_vent{ dir = 1 }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, /turf/open/floor/engine, /area/ruin/syndicate_lava_base/testlab) -"uk" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"um" = ( -/obj/structure/bookcase/random/adult, -/turf/open/floor/wood/tile, +"eo" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"er" = ( +/obj/effect/turf_decal/loading_area/red, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"eu" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"ex" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/shipping_container/interdyne, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"eA" = ( +/obj/machinery/modular_shield/module/charger{ + dir = 4 + }, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"eC" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"eE" = ( +/obj/structure/flora/tree/pine/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"eL" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"eN" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, /area/ruin/syndicate_lava_base/dormitories) -"up" = ( +"eQ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"eS" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"eX" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/toy/crayon/spraycan{ + pixel_x = 4; + pixel_y = 10 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"eZ" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"fd" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"fe" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"fg" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, /area/ruin/syndicate_lava_base/dormitories) +"fq" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"ft" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"fx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + external_pressure_bound = 140; + name = "server vent"; + pressure_checks = 0; + dir = 8 + }, +/obj/structure/grille, +/turf/open/floor/circuit/telecomms, +/area/ruin/syndicate_lava_base/testlab) +"fB" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/component_printer{ + name = "Interdyne component printer"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"fE" = ( +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/structure/marker_beacon/teal, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"fF" = ( +/obj/machinery/power/rtg/advanced, +/obj/structure/cable, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/effect/decal/cleanable/glitter/pink, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"fG" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/clothing/glasses/science, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"fO" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/c/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"ge" = ( +/obj/structure/marker_beacon/bronze, +/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/large, +/area/ruin/syndicate_lava_base/bar) +"gh" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"gj" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"gm" = ( +/obj/structure/closet/secure_closet/freezer/meat{ + req_access = list("syndicate"); + color = "#9d9ddd"; + name = "Interdyne meat fridge"; + light_color = "#9d9ddd" + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/structure/marker_beacon/indigo, +/obj/structure/drain, +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"gn" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"gp" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"gs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/hedge, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"gy" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"gz" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/comfy/brown{ + color = "#A46106"; + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"gA" = ( +/obj/machinery/cryo_cell, +/obj/structure/marker_beacon/teal, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"gB" = ( +/obj/machinery/sleeper/syndie/fullupgrade{ + dir = 4 + }, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"gF" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/obj/item/circuitboard/machine/smoke_machine, +/obj/item/circuitboard/machine/cell_charger, +/obj/item/circuitboard/machine/deep_fryer, +/obj/item/circuitboard/machine/gibber, +/obj/item/circuitboard/machine/processor, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"gG" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"gL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/chair/pillow_small, +/obj/structure/marker_beacon/purple, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynelibrary"; + name = "Interdyne Storm Shutters Library" + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"gN" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/blue/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"gT" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"gY" = ( +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"gZ" = ( +/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 = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"ha" = ( +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"hb" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/knife/kitchen, +/obj/item/storage/box/syringes{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/box/beakers/bluespace, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"hr" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + name = "Interdyne slime freezer"; + dir = 4; + initialize_directions = 4; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/testlab) +"ht" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/effect/turf_decal/bot_red, +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/medkit/fire{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/brute, +/obj/item/storage/medkit/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"hu" = ( +/obj/machinery/photocopier, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"hz" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/reagent_containers/dropper{ + pixel_y = -4 + }, +/obj/item/storage/box/petridish{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/biopsy_tool{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"hA" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/light/directional/south{ + bulb_colour = "#2C3BFF"; + color = "#2C3BFF"; + light_color = "#2C3BFF" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"hL" = ( +/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/large, +/area/ruin/syndicate_lava_base/bar) +"hT" = ( +/obj/effect/turf_decal/tile/dark_red{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"hU" = ( +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/box/stockparts/deluxe{ + pixel_x = -6; + pixel_y = 11 + }, +/obj/item/storage/box/stockparts/deluxe{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/item/stack/cable_coil, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"ie" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/box/blue/corners, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"ih" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"it" = ( +/obj/structure/bookcase/random/adult, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"iy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"iB" = ( +/obj/machinery/modular_shield/module/relay, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/end, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"iG" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/clothing/glasses/hud/health, +/obj/item/reagent_containers/dropper{ + pixel_y = -6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"iL" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"iQ" = ( +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/blue, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"iS" = ( +/obj/machinery/chem_heater/withbuffer{ + name = "interdyne reaction chamber"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/trimline/dark_red, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"iX" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"iZ" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"jb" = ( +/obj/structure/marker_beacon/olive, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"jf" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"jg" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"jm" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynelabs"; + name = "Interdyne Storm Shutters Labs" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/medbay) +"jn" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/plasma/ice_moon, +/area/icemoon/underground/explored) +"jo" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear/red, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/testlab) +"jt" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/chem_dispenser/mutagensaltpeter{ + color = "#adadcd"; + name = "Interdyne botanical chemical dispenser"; + pixel_x = -4; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"ju" = ( +/obj/machinery/modular_shield/module/well{ + dir = 4 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"jw" = ( +/obj/effect/turf_decal/stripes/red/corner, +/obj/machinery/button/door/directional/south{ + base_icon_state = "tram"; + name = "Interdyne Gate"; + icon_state = "tram"; + id = "interdynegate"; + light_color = "#22CCFF"; + req_access = list("syndicate"); + pixel_x = 7; + pixel_y = -20 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"jy" = ( +/obj/structure/table/wood/fancy, +/obj/item/paper_bin{ + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 4 + }, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"jA" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/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_large, +/area/ruin/syndicate_lava_base/cargo) +"jH" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"jI" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"jJ" = ( +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 4; + pixel_x = 8 + }, +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"jR" = ( +/obj/machinery/dna_infuser, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"jT" = ( +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"jZ" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/structure/sink/directional/south, +/obj/structure/drain, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"kb" = ( +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"kc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"kf" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/testlab) +"kh" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"kk" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/circuit/telecomms, +/area/ruin/syndicate_lava_base/testlab) +"kl" = ( +/obj/machinery/chem_mass_spec, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"km" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_y = 14; + pixel_x = -7 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/machinery/reagentgrinder{ + pixel_x = 8; + pixel_y = 18 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"kp" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"kr" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/railing, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/hull/reinforced, +/area/icemoon/underground/explored) +"ks" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"kw" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynexeno"; + name = "Interdyne Storm Shutters Xeno" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/testlab) +"kE" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"kL" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"kN" = ( +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"kU" = ( +/obj/machinery/camera/xray{ + c_tag = "Xenobio West"; + dir = 8; + network = list("fsci") + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"kV" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"kZ" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/chem_dispenser/drinks/fullupgrade, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"lb" = ( +/obj/item/binoculars, +/turf/closed/mineral/random/snow/underground, +/area/icemoon/underground/explored) +"lc" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/airlock/engineering/glass{ + name = "Shield and Engineering" + }, +/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_large, +/area/ruin/syndicate_lava_base/main) +"ln" = ( +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/arrivals) +"lu" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/machinery/button/door/directional/north{ + name = "Interdyne Gate"; + id = "interdynegateout"; + icon_state = "tram"; + base_icon_state = "tram"; + light_color = "#22CCFF"; + pixel_x = 7; + pixel_y = 32; + req_access = list("syndicate") + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"lD" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/obj/machinery/mecha_part_fabricator{ + name = "Interdyne exosuit fabricator"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"lH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"lP" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/marker_beacon/bronze, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"lT" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/caution/red, +/obj/machinery/duct, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"lZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/marker_beacon/bronze, +/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/large, +/area/ruin/syndicate_lava_base/main) +"ma" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/plasma/ice_moon, +/area/icemoon/underground/explored) +"mg" = ( +/obj/machinery/quantumpad{ + map_pad_id = "interdyne"; + map_pad_link_id = "ds2"; + name = "quantum pad to DS-2" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"mp" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/hull/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"mr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/bed/pillow_large, +/obj/structure/marker_beacon/purple, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"my" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"mA" = ( +/obj/machinery/shower/directional/south, +/obj/structure/drain, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/structure/marker_beacon/violet, +/obj/structure/curtain/bounty/start_closed{ + alpha = 180; + color = "#7d7d7d" + }, +/turf/open/floor/iron/dark/small, +/area/ruin/syndicate_lava_base/dormitories) +"mG" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"mP" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/structure/railing, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/engine/hull/reinforced, +/area/icemoon/underground/explored) +"mV" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne"); + pixel_x = 10 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/structure/cable, +/obj/structure/marker_beacon/indigo, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/machinery/door/window/survival_pod{ + dir = 1; + pixel_y = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/closet/secure_closet{ + icon_state = "qm"; + name = "deck offficer's locker"; + req_access = list("syndicate_leader") + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"nb" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/closet/secure_closet/ds2atmos{ + anchorable = 0; + anchored = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"nc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"nd" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 4; + pixel_x = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"nn" = ( +/obj/machinery/modular_shield/module/node{ + dir = 1 + }, +/obj/effect/decal/cleanable/glitter/blue, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"no" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"nq" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"nr" = ( +/obj/machinery/power/smes/magical{ + desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Produces power through an unstable bluespace pocket."; + name = "Interdyne power storage"; + output_level = 200000; + color = "#9d9ddd"; + light_color = "#9d9ddd" + }, +/obj/structure/marker_beacon/burgundy, +/obj/structure/cable, +/obj/effect/turf_decal/bot_blue, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"ns" = ( +/obj/machinery/modular_shield/module/relay, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"nx" = ( +/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/wood/large, +/area/ruin/syndicate_lava_base/main) +"nz" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/structure/marker_beacon/burgundy, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"nA" = ( +/obj/structure/marker_beacon/teal, +/obj/machinery/smartfridge{ + color = "#adadcd"; + name = "Interdyne smartfridge"; + pixel_x = 2; + light_color = "#adadcd" + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"nC" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"nJ" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/railing/corner, +/turf/open/floor/plating/reinforced, +/area/icemoon/underground/explored) +"nP" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynelibrary"; + name = "Interdyne Storm Shutters Library" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/bar) +"nS" = ( +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"nT" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne"); + pixel_x = 10 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"ob" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"oc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"oe" = ( +/obj/effect/turf_decal/arrows/blue{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/obj/machinery/duct, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"of" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/smartfridge/chemistry/preloaded{ + color = "#adadcd"; + name = "Interdyne smart chemical storage"; + light_color = "#adadcd"; + pixel_x = -3 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"oj" = ( +/obj/machinery/modular_shield/module/well{ + dir = 8 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"ol" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/rnd/production/circuit_imprinter/offstation{ + name = "Interdyne circuit imprinter"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"op" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"ov" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"ox" = ( +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"oz" = ( +/obj/structure/fans/tiny/forcefield, +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"oA" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/railing{ + dir = 9 + }, +/obj/machinery/button/door/directional/south{ + base_icon_state = "tram"; + name = "Interdyne Gate"; + icon_state = "tram"; + id = "interdynegateout"; + light_color = "#22CCFF"; + req_access = list("syndicate"); + pixel_x = 7; + pixel_y = -20 + }, +/turf/open/floor/engine/hull/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"oB" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"oE" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"oG" = ( +/obj/structure/hedge, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"oN" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/machinery/duct, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"oO" = ( +/obj/structure/table/optable, +/obj/structure/marker_beacon/teal, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"oP" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/module_duplicator{ + name = "Interdyne module duplicator"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"oS" = ( +/obj/structure/closet/cabinet{ + name = "Dark wood Interdyne closet"; + color = "#8d8d8d"; + light_color = "#8d8d8d" + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"oV" = ( +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"oW" = ( +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"oZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/testlab) +"pc" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"pe" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"pg" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"ph" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"pk" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/tree/jungle/style_random, +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"pp" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/machinery/door/poddoor{ + id = "interdynegateout"; + name = "Inderdyne Gate" + }, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"pr" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/door/poddoor{ + id = "interdynegateout"; + name = "Inderdyne Gate" + }, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"pF" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/structure/marker_beacon/olive, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"pH" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"pI" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + 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/wood/large, +/area/ruin/syndicate_lava_base/main) +"pK" = ( +/obj/machinery/computer/pandemic{ + name = "Interdyne PanD.E.M.I.C"; + color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"pN" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/reagentgrinder{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/item/food/tofu{ + pixel_y = -6 + }, +/obj/item/food/tofu, +/obj/item/food/tofu{ + pixel_y = 6 + }, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"pU" = ( +/obj/machinery/smartfridge/chemistry/virology/preloaded{ + name = "Interdyne virus storage"; + color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"qa" = ( +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"qd" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"qe" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"qg" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/flora/rock/pile/icy/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"qp" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"qA" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/marker_beacon/purple, +/obj/structure/flora/tree/jungle/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"qC" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"qH" = ( +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/item/storage/belt/military, +/obj/item/storage/belt/military, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/card/id/advanced/chameleon, +/obj/item/card/id/advanced/chameleon, +/obj/item/card/id/advanced/chameleon, +/obj/item/radio/headset/interdyne, +/obj/item/radio/headset/interdyne, +/obj/item/radio/headset/interdyne, +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/effect/turf_decal/bot_red, +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"qK" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/marker_beacon/bronze, +/obj/structure/flora/tree/jungle/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"qS" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/construction/plumbing, +/obj/item/pipe_dispenser, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"qU" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/chair/sofa/corp/left, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"qY" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"rf" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"rg" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"rv" = ( +/obj/effect/turf_decal/siding/wood/corner{ + 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/large, +/area/ruin/syndicate_lava_base/main) +"ry" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"rD" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/anesthetic_machine{ + pixel_x = 10 + }, +/obj/machinery/iv_drip{ + pixel_x = -10 + }, +/obj/item/tank/internals/anesthetic, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"rG" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/blue/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"rP" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"rT" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + 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/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"rX" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"sa" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/structure/fans/tiny/forcefield, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"sc" = ( +/obj/machinery/light/directional/east{ + bulb_colour = "#2C3BFF"; + color = "#0012FF"; + light_color = "#0012FF" + }, +/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/large, +/area/ruin/syndicate_lava_base/main) +"sg" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/box/white/corners{ + 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/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"sm" = ( +/obj/effect/turf_decal/vg_decals/atmos/air, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse{ + dir = 4 + }, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"so" = ( +/obj/structure/rack/shelf, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/gun/syringe/rapidsyringe, +/obj/item/gun/syringe/rapidsyringe, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"sr" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"ss" = ( +/obj/machinery/vending/hydronutrients{ + onstation = 0 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"st" = ( +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"sv" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynernd"; + name = "Interdyne Storm Shutters RnD" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/testlab) +"sA" = ( +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/arrows/blue, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"sE" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"sF" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"sL" = ( +/obj/structure/marker_beacon/burgundy, +/obj/machinery/door/airlock/vault{ + id_tag = "syndie_lavaland_vault"; + name = "Interdyne Vault" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/structure/cable, +/turf/open/floor/iron/recharge_floor, +/area/ruin/syndicate_lava_base/main) +"sP" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/cargo) +"sQ" = ( +/obj/machinery/modular_shield_generator, +/obj/effect/decal/cleanable/glitter/blue, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"sR" = ( +/obj/machinery/disposal/bin{ + name = "External disposal unit" + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/box, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"sY" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/box/beakers/bluespace, +/obj/item/storage/box/beakers/bluespace, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/purple, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynelabs"; + name = "Interdyne Storm Shutters Labs" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"sZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/atmospherics/miner/nitrogen, +/turf/open/floor/engine/n2, +/area/ruin/syndicate_lava_base/main) +"ta" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/chair/sofa/corp/corner, +/obj/structure/marker_beacon/purple, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"tc" = ( +/obj/machinery/computer/operating, +/obj/item/disk/surgery/forgottenship, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"td" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"tl" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"to" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/structure/closet/crate/freezer/sansufentanyl, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"tu" = ( +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"tv" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"tw" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/box/monkeycubes{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"tx" = ( +/obj/structure/closet/secure_closet/freezer/kitchen{ + req_access = list("syndicate"); + color = "#9d9ddd"; + name = "Interdyne kitchen cabinet"; + light_color = "#9d9ddd" + }, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/box/white/corners, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"tB" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"tJ" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"tM" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"tS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"tT" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/railing, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/engine/hull/reinforced, +/area/icemoon/underground/explored) +"ub" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"ue" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/red/corners, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"uk" = ( +/obj/structure/rack/shelf, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/shovel, +/obj/item/pickaxe, +/obj/item/t_scanner/adv_mining_scanner/lesser, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"um" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/medbay) +"up" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) "us" = ( /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/yjunction{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) "uw" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/storage/toolbox/syndicate, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) "ux" = ( -/obj/structure/sign/departments/medbay/alt/directional/east, -/turf/open/floor/iron, +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, /area/ruin/syndicate_lava_base/main) "uA" = ( -/obj/structure/table/reinforced, -/obj/item/storage/backpack/duffelbag/syndie/surgery, -/obj/machinery/airalarm/directional/north, -/obj/item/healthanalyzer{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"uB" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"uN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/hedge, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"uQ" = ( +/obj/structure/flora/tree/dead/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"uV" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"uX" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/closet/crate/bin{ + pixel_x = 5 + }, +/obj/effect/turf_decal/box/blue/corners, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"vf" = ( +/obj/machinery/atmospherics/miner/oxygen, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/engine/o2, +/area/ruin/syndicate_lava_base/main) +"vl" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/paper_bin{ + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"vo" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynekitchen"; + name = "Interdyne Storm Shutters Kitchen" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/bar) +"vq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/marker_beacon/violet, +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"vt" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/box/drinkingglasses{ + pixel_y = 10 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"vv" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"vy" = ( +/obj/structure/rack/shelf, +/obj/item/storage/bag/ore, +/obj/item/pickaxe/drill, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"vz" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/pump/off{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"vB" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"vH" = ( +/obj/machinery/computer/crew/syndie{ + dir = 4; + pixel_x = -4; + name = "Interdyne crew monitoring console" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/olive, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"vL" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/smartfridge/food{ + color = "#adadcd"; + name = "Interdyne fridge"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"vT" = ( +/obj/machinery/computer/camera_advanced/xenobio{ + dir = 4; + name = "Interdyne Slime management console"; + pixel_x = -4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynexeno"; + name = "Interdyne Storm Shutters Xeno" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"vW" = ( +/obj/effect/turf_decal/stripes/blue{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"vZ" = ( +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"wa" = ( +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/deckofficer, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/arrivals) +"wl" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"wm" = ( +/obj/item/flashlight{ pixel_x = -5; pixel_y = 5 }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"uB" = ( -/obj/machinery/door/airlock/vault{ - id_tag = "syndie_lavaland_vault" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/textured_half, -/area/ruin/syndicate_lava_base/main) -"uQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"uV" = ( -/obj/structure/table/wood, -/obj/item/storage/dice, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"uX" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"vf" = ( -/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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"vl" = ( -/obj/structure/sign/departments/chemistry/directional/east, -/obj/structure/table/glass, -/obj/item/stack/sheet/mineral/plasma{ - amount = 15 - }, -/obj/item/storage/box/beakers/bluespace, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"vo" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"vq" = ( -/obj/structure/table/wood, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"vt" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"vv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"vy" = ( -/obj/machinery/button/door/directional/north{ - pixel_y = 34; - id = "interdyneobservation" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/royalblack, -/area/ruin/syndicate_lava_base/telecomms) -"vz" = ( -/obj/machinery/shower/directional/north, -/obj/structure/curtain, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"vB" = ( -/obj/structure/rack, -/obj/item/pickaxe, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"vH" = ( -/obj/structure/tank_holder/anesthetic, -/obj/structure/railing, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"vL" = ( -/obj/structure/table/glass, -/obj/item/storage/box/monkeycubes/syndicate{ - pixel_y = 5 - }, -/obj/item/storage/box/monkeycubes/syndicate{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/slime_extract/grey{ +/obj/item/flashlight{ pixel_x = -2; pixel_y = 2 }, -/obj/item/slime_extract/grey, -/obj/item/slime_extract/grey{ - pixel_x = 2; - pixel_y = -2 +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = -1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 +/obj/item/extinguisher{ + pixel_x = -5; + pixel_y = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"vT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/testlab) -"vW" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"vZ" = ( -/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 = 1 +/obj/item/extinguisher{ + pixel_x = -2; + pixel_y = 2 }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 +/obj/item/extinguisher{ + pixel_x = 1; + pixel_y = -1 }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"wa" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"wl" = ( -/obj/machinery/suit_storage_unit/mining, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"wm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/turf/open/floor/plating, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/cargo) "wn" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate, -/area/ruin/syndicate_lava_base/main) -"wo" = ( -/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 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"wr" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/turf_decal/tile/dark_blue{ +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/light_switch/directional/west, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/large, -/area/ruin/syndicate_lava_base/telecomms) -"wu" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 4 }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"wv" = ( -/obj/machinery/door/airlock/medical{ - name = "Medical Desk" - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"wx" = ( -/obj/structure/chair/comfy/barber_chair{ - dir = 8 - }, -/obj/structure/mirror/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"wF" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/firealarm/directional/west{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 4 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"wG" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/turf/open/misc/asteroid/snow/icemoon, -/area/ruin/syndicate_lava_base/cargo) -"wN" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/turf/open/floor/iron/large, -/area/ruin/syndicate_lava_base/telecomms) -"wP" = ( -/obj/machinery/processor/slime, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"wU" = ( -/obj/item/disk/surgery/forgottenship, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_blue, -/obj/item/storage/box/medipens{ - pixel_x = 4; - pixel_y = 13 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 10 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"wX" = ( -/obj/structure/table, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/item/key/atv, -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"xc" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"xe" = ( -/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, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"xf" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"xl" = ( -/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, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"xm" = ( -/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/ruin/syndicate_lava_base/dormitories) -"xo" = ( -/obj/item/bedsheet/dorms_double, -/obj/structure/bed/double, -/obj/machinery/button/door/directional/east{ - specialfunctions = 4; - normaldoorcontrol = 1; - name = "Dorm Bolt Control"; - id = "IDyneBeta" - }, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"xq" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"xs" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Pharmacy"; - req_access = list("syndicate") +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"wo" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 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/syndicate/general, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"xA" = ( -/obj/effect/turf_decal/stripes/line{ +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"wr" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/drain, +/obj/structure/marker_beacon/purple, +/obj/structure/disposaloutlet{ dir = 1 }, -/obj/structure/table, -/obj/item/toy/cards/deck/cas{ - pixel_y = 6 - }, -/turf/open/floor/plating/icemoon, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/turf/open/floor/plating/reinforced, /area/ruin/syndicate_lava_base/medbay) -"xJ" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/turf_decal/tile/blue{ +"wu" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"wv" = ( +/obj/effect/turf_decal/stripes/blue{ dir = 4 }, -/obj/machinery/button/door/directional/east{ - id = "interdynemedbay"; - req_access = list("syndicate") +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"xP" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/table/reinforced, -/obj/item/fakeartefact{ - possible = list(/obj/item/gun/energy/recharge/kinetic_accelerator) - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"xS" = ( -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/obj/item/circuitboard/machine/stacking_machine, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"xY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"ya" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/reagent_dispensers/fueltank/large, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"yd" = ( -/obj/machinery/button/door/directional/east{ - id = "interdynedeckofficer"; - req_access = list("syndicate") - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"yi" = ( -/obj/structure/sink/directional/south, -/obj/structure/mirror/directional/north, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"yn" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"yq" = ( -/obj/machinery/bookbinder, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"ys" = ( -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"yu" = ( -/obj/machinery/door/airlock/mining{ - name = "Shaft Miner Dormitory Beta"; - id_tag = "IDyneBeta" +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/smooth_half{ +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"wx" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 1 }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/item/paper/fluff/ruins/interdyne/note_1{ + name = "Forcefield Generator Maintenance"; + default_raw_text = "To activate a deployable laboratory forcefield, open maintenance hatches of Generator itself, Relay, Well and Charger nodes with a screwdriver and upgrade them with provided parts by using rapid parts exchange device. Then close all hatches and activate every module of generator, by starting with closer to generator nodes in chain-like way. When preparations are done, set generator radius at maximum and press power button. If shield will recieve overwhelm damage, it requires some time to recharge and have to be turned back on manually." + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"wF" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/sign/flag/syndicate/directional/north, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/ammo_workbench, +/obj/item/disk/ammo_workbench/advanced, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"wG" = ( +/obj/machinery/bookbinder, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"wN" = ( +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/decal/remains/human, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating/reinforced, +/area/icemoon/underground/explored) +"wP" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/cargo) +"wU" = ( +/obj/structure/bookcase/random/religion, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"wX" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"xc" = ( +/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/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"xe" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/marker_beacon/bronze, +/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/large, +/area/ruin/syndicate_lava_base/main) +"xf" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"xl" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"xm" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"xo" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/effect/decal/cleanable/glitter/pink, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/decal/cleanable/greenglow, +/obj/machinery/power/rtg/advanced, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"xq" = ( +/obj/structure/curtain/cloth/fancy, +/obj/structure/fake_stairs/wood, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"xs" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"xA" = ( +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"xP" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"xS" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/obj/machinery/oven/range{ + color = "#9d9ddd"; + name = "Interdyne range"; + light_color = "#9d9ddd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"xY" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/item/gun/energy/floragun, +/obj/item/geneshears, +/obj/item/secateurs, +/obj/item/shovel/spade, +/obj/item/hatchet, +/obj/item/cultivator, +/obj/item/plant_analyzer, +/obj/structure/rack/shelf, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"ya" = ( +/obj/machinery/atmospherics/components/binary/volume_pump{ + dir = 4; + name = "BZ Pump" + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/testlab) +"yd" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"yi" = ( +/obj/machinery/modular_shield/module/well{ + dir = 1 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"yn" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/door/poddoor{ + id = "interdynegate"; + name = "Inderdyne Gate" + }, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"yq" = ( +/obj/machinery/limbgrower/fullupgrade, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"ys" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/bci_implanter{ + name = "Interdyne BCI implanter"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"yu" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) "yy" = ( -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/door/airlock{ - name = "Barbers" +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) "yB" = ( -/obj/machinery/vending/barbervend{ - onstation = 0 +/obj/structure/chair/sofa/bench/right{ + dir = 8 }, -/obj/machinery/button/door/directional/east{ - id = "interdynebarbers" +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) "yE" = ( /turf/closed/wall/r_wall/syndicate, /area/ruin/syndicate_lava_base/testlab) "yF" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/item/storage/box/monkeycubes/syndicate{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/monkeycubes/syndicate{ + pixel_y = 5 + }, +/obj/item/slime_extract/grey{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/slime_extract/grey, +/obj/item/slime_extract/grey{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/testlab) "yG" = ( -/obj/machinery/camera/autoname/directional/east{ - network = list("intd13") +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/dormitories) -"yJ" = ( -/obj/machinery/smartfridge/food, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/small, -/area/ruin/syndicate_lava_base/bar) -"yM" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"yP" = ( -/obj/structure/chair{ +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"yJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"yM" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/marker_beacon/teal, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"yP" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/chair/sofa/corp/right, +/turf/open/floor/wood/large, /area/ruin/syndicate_lava_base/bar) "yQ" = ( /turf/closed/wall/r_wall/syndicate/nodiagonal, /area/ruin/syndicate_lava_base/medbay) "yR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/rack/shelf, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" }, -/obj/structure/chair/plastic{ - dir = 8 - }, -/turf/open/floor/plating/icemoon, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/testlab) "yY" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/obj/machinery/door/airlock/public/glass{ - name = "Dormitories" +/obj/structure/fans/tiny, +/obj/machinery/door/window/survival_pod{ + req_access = list("syndicate"); + name = "Slime Pacification Chamber" }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/testlab) "zd" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/sleeper/syndie/fullupgrade{ +/obj/machinery/suit_storage_unit/mining, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ dir = 4 }, -/turf/open/floor/iron/smooth_corner{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/medbay) +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) "zl" = ( -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, +/obj/structure/chair/stool/bar, +/obj/effect/turf_decal/siding/wood, +/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/large, /area/ruin/syndicate_lava_base/bar) "zp" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/stack/sheet/mineral/plasma{ + amount = 15 }, -/obj/item/kirbyplants/random, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/reagentgrinder{ + pixel_x = -6; + pixel_y = 10 }, -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") +/obj/structure/marker_beacon/purple, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"zq" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) "zu" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"zz" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/vg_decals/atmos/nitrogen{ - dir = 1 +/obj/machinery/vending/clothing{ + onstation = 0 }, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/olive, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) "zF" = ( /turf/closed/wall/r_wall/syndicate/nodiagonal, /area/ruin/syndicate_lava_base/dormitories) "zI" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"zT" = ( +/obj/structure/bookcase/random, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"zX" = ( /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, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Ac" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/rnd/production/protolathe/offstation{ + name = "Interdyne protolathe"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Ad" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ae" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/door/window/survival_pod{ + req_access = list("syndicate"); + pixel_y = -4 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/rack/shelf, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"Am" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"AF" = ( +/obj/machinery/light/directional/north{ + bulb_colour = "#AC3CFF"; + color = "#A700FF"; + light_color = "#A700FF" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, /area/ruin/syndicate_lava_base/bar) -"zP" = ( +"AR" = ( +/obj/effect/decal/remains/human, +/obj/structure/flora/tree/pine/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"AT" = ( +/obj/machinery/hydroponics/constructable, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/bar) +"Bf" = ( +/obj/machinery/computer/order_console/mining/interdyne, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Bn" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/stripes/blue, +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Bp" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/backpack/duffelbag/synth_treatment_kit/trauma/advanced/unzipped, +/obj/item/healthanalyzer/advanced, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Bt" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"BA" = ( +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"BB" = ( +/obj/structure/chair/comfy/brown{ + color = "#A46106"; + dir = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"BC" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"BE" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/medbay) +"BF" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/obj/structure/flora/tree/pine/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"BL" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/marker_beacon/bronze, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne"); + pixel_x = 10 + }, +/obj/machinery/deepfryer{ + color = "#adadcd"; + name = "Interdyne deep fryer"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"BO" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/main) +"BR" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"BS" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"BT" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"BZ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ca" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Cc" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/red, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Cd" = ( +/obj/structure/curtain/bounty{ + color = "#7d7d7d" + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Ce" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Ch" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Ci" = ( +/obj/machinery/modular_shield/module/charger{ + dir = 8 + }, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Cj" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/sign/poster/contraband/soviet_propaganda/directional/east, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/suit_storage_unit/syndicate/chameleon, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"CA" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"CC" = ( +/obj/machinery/vending/dorms{ + onstation = 0 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"CE" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"CG" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 6 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"CK" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/structure/sink/directional/east, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"CM" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"CN" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"CQ" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/cell_charger_multi{ + name = "Interdyne multi-cell charger"; + color = "#adadcd"; + pixel_y = 7; + light_color = "#adadcd" + }, +/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/cell/bluespace, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"CR" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"CX" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/plumbing/growing_vat, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"CZ" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Df" = ( +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Dn" = ( +/obj/structure/marker_beacon/olive, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/jungle/c/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Dr" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"DA" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynekitchen"; + name = "Interdyne Storm Shutters Kitchen" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"DC" = ( +/obj/machinery/modular_shield/module/node{ + dir = 8 + }, +/obj/effect/decal/cleanable/glitter/blue, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"DE" = ( +/obj/machinery/shower/directional/south, +/obj/structure/drain, +/obj/structure/marker_beacon/violet, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/item/soap, +/obj/structure/curtain/bounty{ + color = "#7d7d7d"; + alpha = 180 + }, +/obj/machinery/button/door/directional/west{ + id = "IDyneWC"; + normaldoorcontrol = 1; + specialfunctions = 4; + name = "Door Lock" + }, +/turf/open/floor/iron/dark/small, +/area/ruin/syndicate_lava_base/dormitories) +"DG" = ( +/obj/effect/turf_decal/tile/dark_red{ + dir = 4 + }, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"DH" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"DI" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"DL" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/stripes/red/line, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"DT" = ( +/obj/structure/hedge, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"DX" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"DZ" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/paper/fluff/ruins/interdyne/note_1{ + default_raw_text = "Welcome to Interdyne laboratory Developed by Wavefield Science and designed by Astra Farera E'luna Awiarera. This base was dropped like a meteorite from space and deployed at crater created by landing impact. An advanced laboratory has deployed departments, defence perimeter turrets and even external bridge. Complex also fitted with a forcefield generator, which with a tiny bit of care allows to sustain harsh environmental conditions and most of invasions. Have a nice day full of new discoveries."; + name = "Frozen Moonlight Interdyne"; + color = "#7D7D7D"; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Eh" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"El" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/marker_beacon/olive, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"En" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Eq" = ( +/obj/machinery/washing_machine{ + name = "Interdyne washing machine"; + color = "#adadcd"; + pixel_y = 5; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/bedsheetbin{ + color = "#adadcd"; + pixel_y = 14; + pixel_x = -1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"Er" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/medbay) +"EA" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"ED" = ( +/obj/effect/turf_decal/siding/wood{ + 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/wood/large, +/area/ruin/syndicate_lava_base/main) +"EJ" = ( +/obj/structure/bookcase/random, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"EK" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/arrivals) +"EL" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/marker_beacon/teal, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"EO" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"EP" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"EQ" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/chem_master/condimaster{ + name = "Interdyne BrewMaster"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"ES" = ( +/obj/machinery/vending/dinnerware{ + onstation = 0 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"EU" = ( +/obj/machinery/vending/autodrobe{ + onstation = 0 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"EV" = ( +/obj/machinery/modular_shield/module/node{ + dir = 4 + }, +/obj/effect/decal/cleanable/glitter/blue, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"Fi" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Fk" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/machinery/door/poddoor{ + id = "interdynegate"; + name = "Inderdyne Gate" + }, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"Fl" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/obj/item/storage/box/stockparts/deluxe, +/obj/item/storage/box/stockparts/deluxe, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Fn" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/bronze, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Fo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"Fq" = ( +/obj/structure/cable, +/obj/machinery/power/rtg/advanced, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/effect/decal/cleanable/glitter/pink, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"Fu" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Fx" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Fy" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Fz" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/rnd/destructive_analyzer{ + name = "Interdyne destructive analyzer"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"FF" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"FH" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/machinery/mining_weather_monitor/directional/north{ + name = "Interdyne Weather Radar"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/red/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"FK" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"FO" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"FQ" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"FS" = ( +/obj/structure/cable, +/obj/machinery/power/rtg/advanced, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/west, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/effect/decal/cleanable/glitter/pink, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"FT" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ + chamber_id = "interdyneserver"; + dir = 1; + external_pressure_bound = 120; + name = "server vent" + }, +/turf/open/floor/circuit/telecomms, +/area/ruin/syndicate_lava_base/testlab) +"FU" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, /obj/machinery/button/door{ id = "syndie_lavaland_vault"; name = "Vault Bolt Control"; @@ -2950,507 +5038,2729 @@ req_access = list("syndicate"); specialfunctions = 4 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"zT" = ( -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"zX" = ( -/obj/structure/bookcase/random/religion, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"Ac" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Ad" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"Ae" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 4 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Am" = ( -/obj/effect/turf_decal/tile/brown{ +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 8 }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"AC" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer/ice, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/smooth_edge, -/area/ruin/syndicate_lava_base/cargo) -"AF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"FV" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/computer/camera_advanced{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Gb" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/bar) -"AN" = ( +"Gd" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Gh" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/lava/plasma/ice_moon, +/area/icemoon/underground/explored) +"Gl" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/ruin/syndicate_lava_base/dormitories) +"Gm" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Gp" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/bag/xeno, +/obj/item/storage/box/syringes{ + pixel_x = 5; + pixel_y = 10 + }, +/obj/item/storage/backpack/duffelbag/syndie, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Gr" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, /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, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"AR" = ( -/obj/machinery/camera/autoname/directional/south{ - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/cargo) -"AT" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer/ice{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"Bf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"Bn" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/turf/open/floor/iron/white/side, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"Bp" = ( +"Gs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/hedge, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Gv" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/blue/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Gx" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Bt" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/structure/flora/rock, -/turf/open/misc/asteroid/snow/icemoon, -/area/ruin/syndicate_lava_base/cargo) -"BA" = ( -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"BB" = ( -/obj/structure/table, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"BC" = ( -/obj/machinery/computer/pandemic, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"BE" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/telecomms) -"BF" = ( -/obj/structure/chair/office{ +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"GA" = ( +/obj/effect/turf_decal/arrows/blue{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ dir = 4 }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"BL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/rtg/advanced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"BO" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 1 }, -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"BR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/engineering) -"BS" = ( -/obj/machinery/chem_heater/withbuffer, -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"GB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"GD" = ( +/obj/effect/turf_decal/siding/wood/corner{ + 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/wood/large, +/area/ruin/syndicate_lava_base/bar) +"GJ" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/duct, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"BT" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, +"GM" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"GQ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Hb" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/holopad/secure{ + pixel_x = -5; + name = "Interdyne holopad"; + pixel_y = 5 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Hn" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/plumbing/input{ + dir = 1 + }, +/obj/structure/closet/secure_closet/cytology{ + anchored = 1; + pixel_x = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ho" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/closet/crate/bin, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynemed"; + name = "Interdyne Storm Shutters Med" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Hs" = ( +/obj/machinery/door/window/survival_pod{ + req_access = list("syndicate"); + name = "Slime Euthanization Chamber" + }, +/turf/open/floor/circuit/telecomms, +/area/ruin/syndicate_lava_base/testlab) +"Hy" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/obj/structure/drain, +/obj/machinery/shower/directional/west, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/box/white/corners, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"HF" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/testlab) +"HI" = ( +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"HL" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/machinery/button/door/directional/north{ + name = "Interdyne Gate"; + id = "interdynegate"; + icon_state = "tram"; + base_icon_state = "tram"; + light_color = "#22CCFF"; + pixel_x = 7; + pixel_y = 32; + req_access = list("syndicate") + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"HN" = ( +/obj/machinery/light/directional/west{ + bulb_colour = "#2C3BFF"; + color = "#0012FF"; + light_color = "#0012FF" + }, +/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/large, +/area/ruin/syndicate_lava_base/main) +"HU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Ib" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/door/window/survival_pod{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ie" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"If" = ( +/obj/structure/marker_beacon/bronze, +/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/large, +/area/ruin/syndicate_lava_base/main) +"Ih" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Ij" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/healthanalyzer/advanced, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -15; + pixel_y = 2 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Im" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"Ip" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/marker_beacon/burgundy, +/obj/item/storage/part_replacer{ + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/toolbox/syndicate, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Is" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/stripes/blue, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Iv" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"Iy" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"Iz" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynernd"; + name = "Interdyne Storm Shutters RnD" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"IA" = ( +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"IM" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/backpack/duffelbag/syndie/surgery, +/obj/item/healthanalyzer/advanced, +/obj/machinery/defibrillator_mount/loaded{ + pixel_x = 28 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"IP" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/vending/boozeomat/syndicate_access{ + onstation = 0 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"IS" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Jd" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Jq" = ( +/obj/structure/bookcase/random, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Jx" = ( +/obj/structure/flora/rock/icy/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"JA" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"JM" = ( +/obj/structure/flora/grass/brown/style_random, +/obj/structure/flora/grass/brown/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"JN" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/red, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"JP" = ( +/obj/item/stack/sheet/plasteel/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"JQ" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Kb" = ( +/obj/effect/turf_decal/arrows/red, +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Kg" = ( +/obj/machinery/stasis{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Kl" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Km" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/window/survival_pod{ + req_access = list("syndicate") + }, +/obj/machinery/shower/directional/west, +/obj/structure/drain/big, +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Kn" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/volume_pump{ + dir = 1 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"Ko" = ( +/obj/structure/fans/tiny/forcefield, +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Kz" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"KC" = ( +/obj/effect/turf_decal/tile/dark/full, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/medbay) +"KD" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"KP" = ( +/obj/structure/table/reinforced/plastitaniumglass, /obj/item/paper_bin{ pixel_y = 4 }, /obj/item/pen{ pixel_y = 4 }, -/turf/open/floor/iron/white/side, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"BZ" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"Ca" = ( -/obj/machinery/vending/syndichem{ - onstation = 0 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Cc" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Cd" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Ce" = ( -/obj/machinery/computer/security/hos{ - name = "\improper Interdyne camera console"; - network = list("intd13") - }, -/turf/open/floor/carpet/royalblack, -/area/ruin/syndicate_lava_base/telecomms) -"Ch" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/power/rtg/advanced, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"Ci" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Cj" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"CA" = ( -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"CC" = ( -/obj/structure/table, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"CE" = ( -/obj/item/disk/design_disk/limbs/ethereal{ - pixel_y = 2 - }, -/obj/item/disk/design_disk/limbs/felinid{ - pixel_y = 4 - }, -/obj/item/disk/design_disk/limbs/lizard{ - pixel_y = 6 - }, -/obj/item/disk/design_disk/limbs/plasmaman{ - pixel_y = 8 - }, -/obj/structure/table/reinforced, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/blue{ +"KS" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 8 }, -/obj/effect/turf_decal/tile/dark_blue, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"KW" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"KY" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Lc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Ld" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"CG" = ( -/obj/machinery/light/directional/south, +"Le" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Lf" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/recharge_station{ + name = "Interdyne recharging station"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Lg" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/main) +"Li" = ( +/obj/structure/chair/stool/bar{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood, /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, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/cargo) -"CK" = ( -/obj/structure/table/glass, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Lm" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 4 }, -/obj/structure/reagent_dispensers/wall/virusfood/directional/west, -/obj/item/book/manual/wiki/infections{ - pixel_y = 7 +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 }, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 }, -/obj/item/storage/box/syringes, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"CM" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"CN" = ( -/obj/machinery/airalarm/directional/north{ +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Lp" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/item/choice_beacon/music, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Lw" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"LA" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"LB" = ( +/obj/effect/turf_decal/arrows/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"LC" = ( +/obj/machinery/turretid{ + ailock = 1; + control_area = "/area/ruin/syndicate_lava_base/main"; + dir = 1; + icon_state = "control_kill"; + lethal = 1; + name = "Base turret controls"; + pixel_y = 30; req_access = list("syndicate") }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/machinery/syndicatebomb/self_destruct{ + anchored = 1; + name = "Interdyne self-destruct device" + }, +/obj/effect/turf_decal/stripes/red/box, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/main) -"CQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/smooth_edge, -/area/ruin/syndicate_lava_base/cargo) -"CR" = ( -/obj/machinery/door/poddoor{ - id = "interdynedorms" +"LD" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/dormitories) -"CX" = ( /obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"LK" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 8 }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"CZ" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 +/obj/structure/closet/crate/bin{ + pixel_x = -5 }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Df" = ( -/obj/machinery/smartfridge/chemistry/virology/preloaded, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"Dn" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Dr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"DA" = ( /obj/machinery/button/door/directional/west{ - id = "interdynedorms"; - req_access = list("syndicate") + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynebar"; + name = "Interdyne Storm Shutters Bar" }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"DC" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"DE" = ( -/obj/structure/table, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"DG" = ( -/obj/item/clothing/mask/gas/syndicate, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"DH" = ( -/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/ruin/syndicate_lava_base/main) -"DI" = ( -/obj/effect/turf_decal/tile/bar, -/obj/machinery/vending/boozeomat/syndicate_access{ - onstation = 0 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"DL" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Bay" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-cargo" - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"DT" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"DX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"DY" = ( -/obj/item/storage/toolbox/syndicate, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"DZ" = ( -/obj/structure/ore_box, -/obj/effect/turf_decal/box/white, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Eh" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/effect/turf_decal/box/blue/corners{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"El" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/machinery/medical_kiosk, -/obj/structure/sign/departments/maint/directional/north, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"En" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plating, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/bar) -"Eq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet/royalblack, -/area/ruin/syndicate_lava_base/telecomms) -"Er" = ( -/obj/structure/lattice/catwalk, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/medbay) -"EA" = ( -/obj/structure/table/reinforced, -/obj/machinery/reagentgrinder, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"ED" = ( -/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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"EJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"EK" = ( -/obj/machinery/camera/autoname/directional/north{ - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/engineering) -"EL" = ( -/obj/item/storage/box/stockparts/deluxe, -/obj/structure/closet/crate, -/obj/item/storage/bag/trash, -/obj/item/mop, -/obj/item/reagent_containers/cup/bucket, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"EO" = ( -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"EP" = ( -/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, -/area/ruin/syndicate_lava_base/main) -"EQ" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/fullupgrade{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"ES" = ( -/obj/machinery/firealarm/directional/east{ +"LM" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/bodycontainer/morgue{ dir = 8 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/obj/item/bodybag, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"LP" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/processor{ + color = "#adadcd"; + name = "Interdyne food processor"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"LR" = ( +/obj/effect/turf_decal/stripes/red/corner{ dir = 1 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"EU" = ( -/turf/open/floor/plating, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/vehicle/ridden/atv/snowmobile/syndicate{ + dir = 8; + name = "Interdyne Crawler"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Mc" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Mk" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"Mn" = ( +/turf/closed/wall/r_wall/syndicate, /area/ruin/syndicate_lava_base/medbay) -"EV" = ( +"Mp" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"Mt" = ( /obj/machinery/stasis{ dir = 8 }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/teal, +/obj/structure/curtain/bounty{ + color = "#7d7d7d"; + alpha = 180 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Mu" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/chair/sofa/corp, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Mw" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"My" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"MD" = ( +/obj/effect/turf_decal/tile/dark/full, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/arrivals) +"ME" = ( +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/railing/corner, +/turf/open/floor/plating/reinforced, +/area/icemoon/underground/explored) +"MG" = ( +/obj/machinery/modular_shield/module/node{ + dir = 4 + }, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"MR" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/railing, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/engine/hull/reinforced, +/area/icemoon/underground/explored) +"MT" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"Na" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Ns" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/clothing/neck/stethoscope, +/obj/item/storage/box/medipens{ + pixel_x = 4; + pixel_y = 13 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Nv" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Ny" = ( +/obj/machinery/barsign/all_access, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"NB" = ( +/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/large, +/area/ruin/syndicate_lava_base/main) +"NJ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"NK" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/stripes/red/line{ + dir = 5 + }, +/obj/structure/ore_box, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"NS" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynebar"; + name = "Interdyne Storm Shutters Bar" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/bar) +"NV" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/dormitories) +"NY" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/marker_beacon/teal, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Oc" = ( +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/drain, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"Oe" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/pill_bottle/mutadone, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ok" = ( +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Ol" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/vending/cigarette/syndicate{ + onstation = 0 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Os" = ( +/obj/machinery/chem_master{ + name = "Interdyne ChemMaster"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ou" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Ow" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"Oz" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"OD" = ( +/obj/structure/rack, +/obj/item/construction/rcd/loaded, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"OH" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/processor{ + color = "#adadcd"; + name = "Interdyne food processor"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"OI" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/obj/machinery/microwave{ + pixel_x = -1; + pixel_y = 5; + color = "#adadcd"; + name = "Interdyne microwave"; + light_color = "#adadcd" + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 19; + pixel_x = 5 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"OP" = ( +/obj/machinery/modular_shield/module/well{ + dir = 4 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/box/blue/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"OQ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"OV" = ( +/obj/structure/table/wood/fancy/black, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Pc" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/c/style_random, +/obj/structure/flora/tree/jungle/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Pf" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Pm" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/chair/comfy/brown{ + color = "#A46106"; + dir = 4 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"Pn" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 10; + faction = list("Syndicate","neutral") + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/camera/xray{ + pixel_x = 10; + name = "Inderdyne security camera"; + network = list("Interdyne"); + color = "#adadcd"; + pixel_y = 25 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/main) +"Po" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Pq" = ( +/obj/effect/turf_decal/tile/dark_red, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"Pr" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/structure/cable, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"Pt" = ( +/obj/structure/dresser{ + color = "#8d8d8d"; + name = "Dark wood Interdyne dresser"; + light_color = "#8d8d8d" + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"Pv" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 9; + faction = list("Syndicate","neutral") + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/camera/xray{ + pixel_x = 10; + name = "Inderdyne security camera"; + network = list("Interdyne"); + color = "#adadcd"; + pixel_y = 25 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/main) +"Pw" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/dormitories) +"PB" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"PG" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"PI" = ( +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/chair/sofa/corp/left, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"PK" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"PO" = ( +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"PQ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"PW" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/toolbox/electrical, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Qi" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Qq" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/seed_extractor{ + name = "Interdyne seed extractor"; + color = "#adadcd"; + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Qx" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"QK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/cargo) +"QN" = ( +/obj/machinery/dna_scannernew, +/obj/structure/drain, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"QU" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Rd" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Re" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/red/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Rl" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Rv" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"RE" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"RH" = ( +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"RM" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/bar) +"RN" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/machinery/stasis{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/teal, +/obj/structure/curtain/bounty{ + color = "#7d7d7d"; + alpha = 180 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"RQ" = ( +/obj/structure/toilet{ + dir = 8; + pixel_y = 6; + color = "#4d4d4d"; + name = "Interdyne Vacuum Toilet" + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/ruin/syndicate_lava_base/dormitories) +"RV" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/cargo) +"RZ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 10 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Sb" = ( +/obj/structure/rack/shelf, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/gun/energy/plasmacutter, +/obj/item/gun/energy/plasmacutter, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Sd" = ( +/obj/machinery/modular_shield/module/node{ + dir = 1 + }, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/box/red/corners{ + dir = 2 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"Se" = ( +/obj/structure/flora/grass/brown/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"Sg" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Sh" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/box/white/corners, +/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_large, +/area/ruin/syndicate_lava_base/cargo) +"Sm" = ( +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/item/mop, +/obj/structure/rack, +/obj/item/reagent_containers/cup/bucket, +/obj/item/soap/syndie, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"St" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"SG" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"SH" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"SJ" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"SK" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"SM" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/turf/open/lava/plasma/ice_moon, +/area/icemoon/underground/explored) +"SY" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Tc" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/microscope, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Td" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Tf" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Tk" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/smartfridge/organ{ + color = "#adadcd"; + name = "interdyne smart organ storage"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Tl" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Tm" = ( +/obj/structure/marker_beacon/bronze, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Tn" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/reinforced, +/area/icemoon/underground/explored) +"Tu" = ( +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Tv" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"TB" = ( +/obj/machinery/biogenerator, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"TC" = ( +/obj/structure/rack/shelf, +/obj/item/storage/toolbox/syndicate, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"TH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/machinery/airalarm/directional/east{ - req_access = list("syndicate") +/obj/structure/closet/cabinet{ + name = "Dark wood Interdyne closet"; + color = "#8d8d8d"; + light_color = "#8d8d8d" }, -/turf/open/floor/iron/smooth_corner{ +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"TI" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 8 }, -/area/ruin/syndicate_lava_base/medbay) -"Fi" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"TO" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + 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/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"TT" = ( +/obj/machinery/modular_shield/module/relay, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"TZ" = ( +/obj/machinery/coffeemaker{ + pixel_y = 36 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/chair/sofa/corp/right, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Ua" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/chair/sofa/corp/right, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Ue" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Uf" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/main) +"Uj" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating/reinforced, +/area/icemoon/underground/explored) +"Uo" = ( +/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 = 1 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Uq" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/marker_beacon/purple, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Ut" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Cabin 1"; + id_tag = "Dynbin1" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"UE" = ( +/obj/machinery/chem_dispenser/fullupgrade{ + name = "Interdyne chem dispenser"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"UI" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"UO" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"UP" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 9 }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Fk" = ( -/obj/structure/closet/crate/secure/weapon{ - req_access = list("syndicate") +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"UT" = ( +/obj/machinery/modular_shield/module/charger{ + dir = 8 + }, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"UV" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/tree/jungle/small/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"UX" = ( +/turf/closed/wall/r_wall/syndicate/cruiser, +/area/ruin/syndicate_lava_base/testlab) +"Ve" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"Vk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/structure/marker_beacon/teal, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"Vn" = ( +/obj/structure/tank_dispenser, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Vp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ + chamber_id = "interdyneo2"; + dir = 1 + }, +/turf/open/floor/engine/o2, +/area/ruin/syndicate_lava_base/main) +"Vr" = ( +/obj/machinery/vending/wardrobe/syndie_wardrobe{ + onstation = 0 + }, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Vs" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Vt" = ( +/obj/effect/turf_decal/trimline/dark/filled/end, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"Vu" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/structure/sink/directional/west, +/obj/structure/mirror/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"Vy" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/structure/marker_beacon/purple, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Vz" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne"); + pixel_x = 10 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"VC" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/turf_decal/vg_decals/atmos/nitrogen, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"VE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ + chamber_id = "lavalandsyndieplasma"; + dir = 8 + }, +/turf/open/floor/engine/n2, +/area/ruin/syndicate_lava_base/main) +"VJ" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"VK" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"VL" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynernd"; + name = "Interdyne Storm Shutters RnD" + }, +/obj/machinery/fax{ + fax_name = "Interdyne Pharmaceuticals"; + pixel_y = 7; + name = "Interdyne Fax Machine"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"VM" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"VO" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/chair/sofa/corp, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"VP" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"VQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/mob/living/carbon/human/species/monkey{ + ai_controller = null; + faction = list("neutral","Syndicate") + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"VW" = ( +/obj/structure/table/wood/fancy, +/obj/item/bedsheet/syndie, +/obj/item/bedsheet/syndie/double{ + dir = 1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Wa" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Wt" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/reagentgrinder{ + pixel_y = 5; + pixel_x = -8 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Wu" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"Wx" = ( +/obj/item/pillow, +/obj/structure/fireplace, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"Wz" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"WC" = ( +/obj/item/stack/sheet/mineral/gold{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/diamond, +/obj/item/stack/sheet/bluespace_crystal, +/obj/item/stack/sheet/mineral/silver, +/obj/item/stack/sheet/mineral/titanium, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"WD" = ( +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/structure/fans/tiny/forcefield, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"WE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/bed/double{ + name = "Softest Interdyne bed"; + light_color = "#4d4d4d"; + color = "#5d5d5d" + }, +/obj/item/bedsheet/cosmos/double, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"WF" = ( +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/structure/fans/tiny/forcefield, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"WK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"WM" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"WS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/bed/double{ + name = "Softest Interdyne bed"; + light_color = "#4d4d4d"; + color = "#5d5d5d" + }, +/obj/item/bedsheet/cosmos/double, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"WX" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 9 + }, +/obj/structure/ore_box, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Xa" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Xc" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/structure/marker_beacon/olive, +/obj/machinery/computer/cryopod/interdyne/directional/west{ + pixel_x = -18 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"Xh" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"Xo" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"Xq" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Xw" = ( +/obj/structure/rack/wooden, +/obj/item/stack/sheet/mineral/wood/fifty, +/obj/item/lighter, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Xz" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"XC" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/machinery/button/door/directional/north{ + name = "Dorm Bolt Control"; + id = "Dynbin1"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"XD" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/obj/item/kitchen/rollingpin, +/obj/item/storage/box/beakers/bluespace, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"XH" = ( +/obj/machinery/modular_shield/module/node{ + dir = 8 + }, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"XO" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"XP" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"XS" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"XT" = ( +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"XW" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/bar) +"Ya" = ( +/obj/effect/turf_decal/siding/wood/corner{ + 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/wood/large, +/area/ruin/syndicate_lava_base/main) +"Yb" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/medbay) +"Yc" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/portables_connector, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Yf" = ( +/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/large, +/area/ruin/syndicate_lava_base/main) +"Yk" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/reagentgrinder{ + pixel_x = -6; + pixel_y = 10 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Yl" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark/corner, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"Ym" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Yv" = ( +/obj/structure/flora/tree/jungle/small/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/marker_beacon/purple, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"YA" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"YB" = ( +/obj/machinery/button/door/directional/north{ + name = "Dorm Bolt Control"; + id = "Dynbin2"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"YC" = ( +/obj/effect/turf_decal/tile/dark_red/half{ + dir = 4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"YI" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/curtain/bounty{ + color = "#7d7d7d" + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"YM" = ( +/obj/machinery/vending/hydroseeds{ + onstation = 0 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/olive, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"YO" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/dark/full, /obj/item/ammo_box/c9mm{ pixel_y = 6 }, @@ -3471,2305 +7781,155 @@ pixel_x = 4; pixel_y = -4 }, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Fl" = ( -/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 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"Fn" = ( -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Fo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/bed/double{ - dir = 1 - }, -/obj/item/bedsheet/dorms_double{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Fq" = ( -/obj/structure/table/glass, -/obj/structure/towel_bin, -/obj/item/soap/syndie, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"Fu" = ( -/obj/machinery/light/directional/west, -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Fx" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Cabin 4"; - id_tag = "IDynbin4" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Fy" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Fz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/mining{ - name = "Shaft Miner Dormitory Charlie"; - id_tag = "IDyneCharlie" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"FF" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"FH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/power/smes/magical{ - desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Produces power through an unstable bluespace pocket."; - name = "bluespace-powered power storage unit"; - output_level = 200000 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"FK" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/door/airlock{ - name = "Library Backroom" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"FO" = ( -/obj/machinery/light/directional/north, -/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/mob_spawn/ghost_role/human/lavaland_syndicate, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"FQ" = ( -/obj/structure/rack, -/obj/structure/railing, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"FS" = ( -/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, -/obj/structure/disposalpipe/segment, -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"FT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"FU" = ( -/obj/structure/sign/directions/science{ - dir = 8; - pixel_x = -32; - pixel_y = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"FV" = ( -/obj/structure/table/reinforced, -/obj/machinery/processor, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"FW" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"Gb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Gd" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/fur_dyer, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Gh" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"Gl" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Gm" = ( -/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/ruin/syndicate_lava_base/cargo) -"Gp" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Gr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/icemoon, -/area/ruin/syndicate_lava_base/medbay) -"Gs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_corner, -/area/ruin/syndicate_lava_base/bar) -"Gv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Gx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"GA" = ( -/obj/machinery/firealarm/directional/south{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"GB" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"GD" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"GJ" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"GM" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"GQ" = ( -/obj/machinery/computer/crew/syndie{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Hb" = ( -/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/ruin/syndicate_lava_base/engineering) -"He" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_y = 8 - }, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_x = 6 - }, -/obj/item/reagent_containers/condiment/saltshaker, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"Hn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/departments/engineering/directional/south, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Ho" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"Hs" = ( -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate"); - name = "Slime Euthanization Chamber" - }, -/turf/open/floor/circuit/telecomms, -/area/ruin/syndicate_lava_base/testlab) -"Hx" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"Hy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"HF" = ( -/obj/structure/chair/office, -/obj/machinery/button/door/directional/east{ - id = "interdynelibrary" - }, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"HI" = ( /turf/open/floor/iron/dark/textured_large, -/area/ruin/syndicate_lava_base/bar) -"HL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, /area/ruin/syndicate_lava_base/cargo) -"HN" = ( -/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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"HU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Ib" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Ie" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"If" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Ih" = ( -/obj/machinery/atmospherics/components/binary/valve/digital/layer2, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"Ij" = ( -/obj/machinery/light/directional/west, -/obj/structure/closet/secure_closet{ - icon_state = "qm"; - name = "deck offficer's locker"; - req_access = list("syndicate_leader") - }, -/obj/item/clothing/neck/cloak/qm/syndie, -/obj/item/clothing/under/rank/cargo/qm/skyrat/syndie, -/obj/item/circuitboard/computer/advanced_camera, -/obj/item/megaphone/cargo, -/obj/item/clothing/glasses/sunglasses, -/obj/item/ammo_box/magazine/m9mm{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/gun/ballistic/automatic/pistol, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"Im" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Bathroom" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"Io" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_edge{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/cargo) -"Ip" = ( -/obj/machinery/button/door/directional/west{ - id = "IDyneWC"; - normaldoorcontrol = 1; - specialfunctions = 4; - name = "Door Lock" - }, -/obj/machinery/dryer{ - pixel_x = 8; - pixel_y = 20 - }, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"Is" = ( -/obj/machinery/camera/autoname/directional/east{ - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/testlab) -"Iv" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Iy" = ( -/turf/open/misc/asteroid/snow/icemoon, -/area/icemoon/underground/explored) -"Iz" = ( -/obj/structure/closet/crate, -/obj/item/storage/toolbox/electrical{ - pixel_y = 4 - }, -/obj/item/storage/toolbox/syndicate, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"IA" = ( -/obj/structure/easel, -/obj/item/canvas/twentythree_nineteen, -/obj/item/canvas/twentythree_twentythree, -/obj/item/canvas/twentythree_twentythree, -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"IB" = ( -/obj/machinery/libraryscanner, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"IM" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"IP" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"IS" = ( -/obj/machinery/firealarm/directional/south{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_blue, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Jd" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Jj" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "interdynecargo" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"Jq" = ( -/obj/machinery/chem_dispenser/mutagensaltpeter, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"Jx" = ( -/obj/machinery/door/airlock{ - name = "Bedroom"; - id_tag = "IDyneDO" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"JA" = ( -/obj/effect/turf_decal/vg_decals/department/sci{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"JM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/iv_drip, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"JN" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/large, -/area/ruin/syndicate_lava_base/telecomms) -"JP" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"JQ" = ( -/obj/structure/dresser, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"Kb" = ( -/obj/machinery/vending/dorms{ - onstation = 0 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Kg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/airalarm/directional/east{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"Kl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Km" = ( -/obj/machinery/door/window/survival_pod{ - dir = 8; - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Kn" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Ko" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/left, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Kz" = ( -/obj/structure/sign/departments/science/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"KC" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, -/obj/structure/filingcabinet, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"KD" = ( -/obj/machinery/turretid{ - ailock = 1; - control_area = "/area/ruin/syndicate_lava_base/main"; - dir = 1; - icon_state = "control_kill"; - lethal = 1; - name = "Base turret controls"; - pixel_y = 30; - req_access = list("syndicate") - }, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/turf/open/floor/iron/large, -/area/ruin/syndicate_lava_base/telecomms) -"KP" = ( -/turf/open/floor/iron/smooth_edge{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/cargo) -"KS" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"KW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"KY" = ( -/obj/machinery/button/flasher{ - id = "IDyneBrigFlash"; - pixel_x = 6; - pixel_y = 34 - }, -/obj/machinery/button/door/directional/north{ - id = "IDyneBrig"; - normaldoorcontrol = 1; - name = "Brig Bolt Control"; - specialfunctions = 4; - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Lc" = ( -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/obj/item/circuitboard/machine/recycler, -/obj/machinery/conveyor{ - dir = 4; - id = "interdynedisp" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"Ld" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 6 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"Le" = ( -/obj/machinery/door/airlock{ - name = "Library" - }, -/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/syndicate/general, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Lf" = ( -/obj/machinery/monkey_recycler, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"Lg" = ( -/obj/machinery/light/directional/east, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"Lh" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/maintenance/external{ - name = "Morgue" - }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"Li" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"Lm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Lp" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/bar) -"Lw" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"LA" = ( -/obj/machinery/conveyor{ - dir = 5; - id = "interdynedisp" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"LB" = ( -/obj/machinery/autolathe/hacked, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"LC" = ( -/obj/machinery/conveyor{ - id = "interdynedisp" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"LD" = ( -/obj/machinery/firealarm/directional/east{ - dir = 8 - }, -/obj/machinery/vending/hydronutrients{ - onstation = 0 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"LK" = ( -/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, -/area/ruin/syndicate_lava_base/bar) -"LM" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/machinery/suit_storage_unit/mining, -/obj/effect/turf_decal/siding/thinplating{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"LP" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"LR" = ( -/obj/structure/table/glass, -/obj/item/storage/box/stockparts/deluxe{ - pixel_x = -6; - pixel_y = 11 - }, -/obj/item/storage/box/stockparts/deluxe{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/item/storage/box/beakers/bluespace{ - pixel_x = -6; - pixel_y = -1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Mc" = ( -/obj/machinery/cell_charger_multi, -/obj/structure/table/glass, -/obj/item/stock_parts/cell/bluespace, -/obj/machinery/airalarm/directional/west{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Mk" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"Mn" = ( -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/medbay) -"Mp" = ( -/obj/machinery/light_switch/directional/south, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 4 - }, -/obj/item/pen{ - pixel_y = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Mt" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/virology) -"Mu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"My" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/mapping_helpers/apc/syndicate_access, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"MC" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/airlock{ - name = "Cabin 1"; - id_tag = "IDynbin1" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"MD" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"ME" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/ruin/syndicate_lava_base/telecomms) -"MG" = ( -/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 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"MP" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"MR" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/structure/flora/rock/pile, -/turf/open/misc/asteroid/snow/icemoon, -/area/ruin/syndicate_lava_base/cargo) -"MT" = ( -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Na" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"Ns" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/mob/living/carbon/human/species/monkey{ - ai_controller = null; - faction = list("neutral","Syndicate") - }, -/obj/structure/chair/office/light, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Nv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/west{ - specialfunctions = 4; - id = "IDyneDelta"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1 - }, -/turf/open/floor/iron/smooth_edge{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/cargo) -"Ny" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/bar) -"NB" = ( -/obj/machinery/door/poddoor{ - id = "interdynemedbay" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"NJ" = ( -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"NK" = ( -/obj/machinery/light/directional/north, -/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, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/cargo) -"NS" = ( -/obj/structure/closet/secure_closet/freezer/meat{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"NV" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"NY" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Oc" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/light/directional/north, -/obj/structure/table/glass, -/obj/structure/bedsheetbin, -/obj/machinery/airalarm/directional/north{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/cafeteria, -/area/ruin/syndicate_lava_base/dormitories) -"Oe" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Ok" = ( -/obj/structure/displaycase{ - alert = 0; - desc = "A display case containing an expensive forgery, probably."; - req_access = list("syndicate"); - start_showpiece_type = /obj/item/fakeartefact - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Ol" = ( -/obj/machinery/firealarm/directional/north{ - dir = 2 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Os" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Ou" = ( -/obj/structure/table/reinforced, -/obj/effect/spawner/random/food_or_drink/donkpockets{ - pixel_y = 7; - pixel_x = 10 - }, -/obj/item/storage/box/donkpockets{ - pixel_y = 5; - pixel_x = -7 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"Ov" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "intdynn2"; - dir = 1 - }, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"Ow" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "intdynserver"; - dir = 1; - external_pressure_bound = 120; - name = "server vent" - }, -/turf/open/floor/circuit/telecomms, -/area/ruin/syndicate_lava_base/testlab) -"Oz" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-medbay" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"OD" = ( -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"OH" = ( -/obj/machinery/vending/cigarette/syndicate{ - onstation = 0 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"OI" = ( -/obj/machinery/vending/dinnerware{ - onstation = 0 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"ON" = ( -/obj/machinery/limbgrower, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_blue, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"OP" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/camera/xray{ - c_tag = "Xenobio West"; - dir = 8; - network = list("fsci") - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"OQ" = ( -/obj/structure/table/glass, -/obj/item/storage/box/syringes{ - pixel_x = 5; - pixel_y = 10 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/item/storage/bag/xeno, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"OV" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/east, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"Pc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"Pf" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, -/obj/structure/cable, -/turf/open/floor/iron/large, -/area/ruin/syndicate_lava_base/telecomms) -"Pm" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"Pn" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/light/directional/south, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Po" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"Pq" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "interdynelibrary" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"Pr" = ( -/obj/machinery/suit_storage_unit/syndicate/chameleon, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/main) -"Pt" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"Pv" = ( -/obj/structure/closet/crate, -/obj/item/vending_refill/wardrobe/syndie_wardrobe, -/obj/item/reagent_containers/cup/coffeepot, -/obj/item/coffee_cartridge/decaf, -/obj/item/coffee_cartridge/decaf, -/obj/item/coffee_cartridge/fancy, -/obj/item/coffee_cartridge/fancy, -/obj/item/coffee_cartridge/bootleg, -/obj/item/coffee_cartridge/bootleg, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Pw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/icemoon, -/area/ruin/syndicate_lava_base/testlab) -"PB" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"PG" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"PI" = ( -/obj/structure/sink/directional/west, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"PK" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/dark_red{ - dir = 4 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"PO" = ( -/obj/machinery/door/poddoor{ - id = "interdynecargo" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"PQ" = ( -/obj/machinery/light/directional/north, -/obj/structure/table/glass, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/clothing/glasses/hud/health, -/obj/item/reagent_containers/dropper{ - pixel_y = -6 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"PW" = ( -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Qi" = ( -/obj/structure/sink/directional/west, -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"Qq" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Qr" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/vg_decals/atmos/oxygen{ - dir = 1 - }, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"Qx" = ( -/obj/structure/chair/office/light{ - 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/ruin/syndicate_lava_base/testlab) -"QK" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/door/airlock/security/old{ - name = "Brig Hold"; - id_tag = "IDyneBrig" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"QN" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"QU" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/dormitories) -"Rd" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Bar" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Re" = ( -/obj/structure/bed/maint, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"Rl" = ( -/obj/structure/railing, -/obj/effect/turf_decal/loading_area, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Ro" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/obj/machinery/door/window/survival_pod{ - dir = 1 - }, -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/bar) -"Rv" = ( -/obj/machinery/door/airlock{ - name = "Library Backroom" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"RE" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"RG" = ( -/obj/structure/closet/crate/secure/gear{ - req_access = list("syndicate") - }, -/obj/item/clothing/glasses/night, -/obj/item/clothing/glasses/night, -/obj/item/clothing/glasses/night, -/obj/item/storage/belt/military, -/obj/item/storage/belt/military, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/under/syndicate/combat, -/obj/item/clothing/under/syndicate/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/card/id/advanced/chameleon, -/obj/item/card/id/advanced/chameleon, -/obj/item/card/id/advanced/chameleon, -/obj/item/radio/headset/interdyne, -/obj/item/radio/headset/interdyne, -/obj/item/radio/headset/interdyne, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"RH" = ( -/obj/machinery/portable_atmospherics/canister/bz, -/obj/machinery/atmospherics/components/unary/portables_connector, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"RM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"RN" = ( -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"RQ" = ( -/obj/machinery/modular_computer/preset/curator{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"RV" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/cargo) -"RZ" = ( -/obj/machinery/flasher/directional/south{ - pixel_x = -6; - id = "IDyneBrigFlash" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"Sb" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"Sd" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "interdyneobservation" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/telecomms) -"Se" = ( -/obj/structure/chair/office/light, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"Sg" = ( -/obj/machinery/camera/autoname/directional/west{ - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/medbay) -"Sh" = ( -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"Sm" = ( -/obj/structure/chair/stool/bar{ - dir = 4 - }, -/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, -/area/ruin/syndicate_lava_base/dormitories) -"St" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"SG" = ( -/obj/structure/sign/departments/cargo/directional/north, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"SH" = ( -/obj/structure/table, -/obj/machinery/coffeemaker, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/carpet/royalblack, -/area/ruin/syndicate_lava_base/telecomms) -"SJ" = ( -/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 = 8 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"SK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Cabin 3"; - id_tag = "IDynbin3" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"SM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"SY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"SZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"Tc" = ( -/obj/machinery/firealarm/directional/east{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Td" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/item/folder/white, -/turf/open/floor/iron/white/side, -/area/ruin/syndicate_lava_base/medbay) -"Tf" = ( -/obj/machinery/camera/autoname/directional/west{ - pixel_y = -18; - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/medbay) -"Tk" = ( -/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/dark{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Tl" = ( -/obj/machinery/oven/range, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"Tm" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Tn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/button/door/directional/west{ - id = "interdynescience"; - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Tu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/mapping_helpers/apc/syndicate_access, -/obj/structure/table/glass, -/obj/machinery/reagentgrinder, -/obj/item/stack/sheet/mineral/plasma{ - amount = 5 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/gold{ - amount = 10 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"Tv" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 9; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"TB" = ( -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"TC" = ( -/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, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/cargo) -"TH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/icemoon, -/area/ruin/syndicate_lava_base/engineering) -"TI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"TO" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Bay" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-cargo" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"TT" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"Ua" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"Ud" = ( -/obj/machinery/computer/security/hos{ - name = "Local station camera console"; - network = list("ss13","labor","mine","auxbase") - }, -/turf/open/floor/carpet/royalblack, -/area/ruin/syndicate_lava_base/telecomms) -"Ue" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Uf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/button/door/directional/north{ - name = "Dorm Bolt Control"; - id = "IDynbin4"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Uj" = ( -/obj/structure/sign/departments/xenobio/directional/west, -/obj/structure/closet/crate, -/obj/item/clothing/neck/stethoscope, -/obj/item/choice_beacon/music, -/obj/item/choice_beacon/music, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"Uo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/light/directional/north, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"Uq" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/corner, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Ut" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"UE" = ( -/obj/structure/flora/bush/flowers_br, -/obj/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/medbay) -"UI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/bed/double, -/obj/item/bedsheet/qm/double, -/turf/open/floor/carpet/orange, -/area/ruin/syndicate_lava_base/cargo) -"UO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"UP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"UT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"UV" = ( -/obj/item/circuitboard/machine/ore_silo, -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/turf/open/floor/iron/corner, -/area/ruin/syndicate_lava_base/main) -"UX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"Ve" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/airalarm/directional/east{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"Vk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Vn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Vp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/rack, -/obj/item/pipe_dispenser, -/obj/item/construction/rcd, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"Vr" = ( -/obj/machinery/chem_mass_spec, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Vs" = ( -/obj/machinery/computer/terminal/derelict/security{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/carpet/royalblack, -/area/ruin/syndicate_lava_base/telecomms) -"Vt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/bed/double, -/obj/item/bedsheet/dorms_double, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"Vu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/west{ - specialfunctions = 4; - id = "IDynbin1"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Vy" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Vz" = ( -/obj/machinery/hydroponics/constructable, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"VC" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"VE" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Bar" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"VJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/chair/plastic{ - dir = 4 - }, -/turf/open/floor/plating/icemoon, -/area/ruin/syndicate_lava_base/testlab) -"VK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/rtg/advanced, -/obj/machinery/power/terminal, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"VL" = ( -/obj/machinery/door/poddoor{ - id = "interdynescience" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"VM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"VO" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/medbay) -"VP" = ( -/obj/structure/chair/sofa/corner/maroon, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"VQ" = ( -/obj/structure/fans/tiny, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"VW" = ( -/obj/machinery/suit_storage_unit/mining, -/obj/machinery/airalarm/directional/north{ - req_access = list("syndicate") - }, -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Wa" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Wp" = ( -/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/ruin/syndicate_lava_base/cargo) -"Wt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Wu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"Wx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/door/airlock/hydroponics{ - name = "Hydroponics" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"Wz" = ( -/obj/structure/table/reinforced, -/obj/item/kitchen/rollingpin, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"WC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/item/kirbyplants/random, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"WD" = ( -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"WE" = ( -/obj/machinery/door/airlock/mining{ - name = "Shaft Miner Dormitory Alpha"; - id_tag = "IDyneAlpha" - }, -/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/syndicate/general, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"WF" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/main) -"WK" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"WM" = ( -/obj/machinery/camera/autoname/directional/north{ - network = list("intd13") - }, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/bar) -"WS" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Dormitories" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"WX" = ( -/obj/machinery/flasher/directional/north{ - id = "IDyneBrigFlash" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"Xa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"Xc" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Xh" = ( -/obj/machinery/biogenerator, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/small, -/area/ruin/syndicate_lava_base/bar) -"Xo" = ( -/obj/machinery/smartfridge/organ, -/obj/structure/railing, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Xq" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Xw" = ( -/obj/machinery/light/directional/west, -/obj/machinery/firealarm/directional/west{ - dir = 4; - pixel_x = -28 - }, -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"Xz" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/vending/clothing{ - onstation = 0 - }, -/turf/open/floor/iron/cafeteria, -/area/ruin/syndicate_lava_base/dormitories) -"XC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"XD" = ( -/obj/machinery/washing_machine, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, -/turf/open/floor/iron/cafeteria, -/area/ruin/syndicate_lava_base/dormitories) -"XH" = ( -/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 = 9 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"XO" = ( -/obj/machinery/firealarm/directional/east{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"XP" = ( -/obj/structure/lattice/catwalk, -/obj/item/storage/toolbox/mechanical, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/testlab) -"XS" = ( -/obj/machinery/door/airlock/research{ - name = "Science Division" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-science" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"XT" = ( -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"XU" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/light/directional/east, -/obj/structure/closet/secure_closet/ds2atmos{ - anchorable = 0; - anchored = 1 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"XW" = ( -/obj/structure/bed/double, -/obj/item/bedsheet/dorms_double, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/button/door/directional/east{ - specialfunctions = 4; - normaldoorcontrol = 1; - name = "Dorm Bolt Control"; - id = "IDyneCharlie" - }, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"Ya" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/trash/grime, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"Yb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/west{ - specialfunctions = 4; - id = "IDynbin2"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Yc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"Yf" = ( -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Yk" = ( -/obj/item/bedsheet/dorms_double, -/obj/structure/bed/double, -/obj/machinery/button/door/directional/east{ - specialfunctions = 4; - normaldoorcontrol = 1; - name = "Dorm Bolt Control"; - id = "IDyneAlpha" - }, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"Yl" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate, -/obj/machinery/light/directional/north, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Ym" = ( -/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 = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Yo" = ( -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Yv" = ( -/obj/structure/chair, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"YA" = ( -/obj/machinery/computer/crew/syndie{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/carpet/royalblack, -/area/ruin/syndicate_lava_base/telecomms) -"YB" = ( -/obj/structure/lattice/catwalk, -/turf/open/lava/plasma/ice_moon, -/area/ruin/syndicate_lava_base/engineering) -"YC" = ( -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"YI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"YM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/bed/double{ - dir = 1 - }, -/obj/item/bedsheet/dorms_double{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"YO" = ( -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) "YQ" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) +/obj/effect/turf_decal/trimline/dark/filled/corner{ + 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/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) "YS" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Zg" = ( +/turf/closed/wall/r_wall/syndicate/cruiser, +/area/ruin/syndicate_lava_base/bar) +"Zh" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/machinery/door/window/survival_pod{ - dir = 4; - req_access = list("syndicate") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"Zg" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Zh" = ( -/obj/structure/toilet, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) "Zi" = ( -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"Zj" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Zj" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) "Zl" = ( /turf/closed/wall/r_wall/syndicate, /area/ruin/syndicate_lava_base/main) "Zn" = ( -/obj/structure/flora/bush/flowers_yw, -/obj/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/medbay) -"Zo" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Zp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/button/door/directional/south{ - name = "Dorm Bolt Control"; - id = "IDynbin3"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Zr" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Zw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/mining{ - name = "Shaft Miner Dormitory Delta"; - id_tag = "IDyneDelta" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Zx" = ( -/obj/structure/table/reinforced, -/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/turf_decal/trimline/dark/filled/line{ dir = 4 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"ZA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/bar) -"ZF" = ( -/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 = 9 +/obj/effect/turf_decal/stripes/blue{ + dir = 4 }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"ZH" = ( -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 8 }, -/obj/effect/turf_decal/tile/dark_blue, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Zo" = ( +/obj/machinery/modular_shield/module/well{ + dir = 8 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Zp" = ( +/obj/machinery/hydroponics/constructable, +/obj/structure/marker_beacon/teal, +/turf/open/floor/grass/fairy, +/area/ruin/syndicate_lava_base/bar) +"Zr" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/arrivals) +"Zw" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/box/beakers/bluespace, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Zx" = ( +/obj/structure/flora/grass/brown/style_random, +/obj/structure/flora/tree/pine/style_random, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) +"ZA" = ( +/obj/structure/rack, +/obj/item/knife/combat/survival, +/obj/item/flashlight/seclite, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/gun/energy/recharge/kinetic_accelerator, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"ZH" = ( +/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/ruin/syndicate_lava_base/medbay) "ZK" = ( -/obj/structure/sign/directions/supply{ - dir = 1; - pixel_y = 32 +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"ZL" = ( -/obj/machinery/stasis{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 8 }, -/turf/open/floor/iron/smooth_corner{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 1 }, -/area/ruin/syndicate_lava_base/medbay) +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"ZL" = ( +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) "ZN" = ( /obj/effect/turf_decal/tile/dark_red/half{ dir = 8 @@ -5777,22 +7937,31 @@ /turf/open/floor/engine, /area/ruin/syndicate_lava_base/testlab) "ZQ" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/main) +"ZR" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/dormitories) -"ZR" = ( -/obj/structure/table/optable, -/obj/machinery/defibrillator_mount/directional{ - pixel_y = 26 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) "ZU" = ( /turf/closed/wall/r_wall/syndicate/nodiagonal, /area/ruin/syndicate_lava_base/main) @@ -5840,11 +8009,11 @@ ac ac ac ac -ac -ac -ac -ac -ac +aa +aa +aa +aa +aa aa aa aa @@ -5870,43 +8039,43 @@ aa aa aa aa +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +SH +Iy +Iy +Im +ac +ac +Jx +SH +Im +ac +ac +ac +dM +Im +SH +ac +ac +ac +ac +ac +ac +aa +aa +aa +aa +aa aa -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac aa aa aa @@ -5927,49 +8096,49 @@ aa aa aa aa +ac +ac +ac +ac +ac +Jx +SH +Iy +ac +ac +Im +Iy +Iy +eE +Se +Se +Iy +dM +Iy +Iy +Iy +Iy +Se +Iy +Se +Iy +Iy +SH +Iy +ac +ac +ac +ac +ac +ac +ac +ac +aa +aa +aa +aa aa aa -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -ac -ac -ac aa aa aa @@ -5985,51 +8154,51 @@ aa aa aa aa +ac +ac +ac +ac +Iy +Im +Iy +Iy +Iy +eE +Iy +Iy +Iy +Iy +Iy +Se +Iy +Se +Iy +Iy +Iy +eE +Iy +dM +Iy +Iy +Iy +uQ +Iy +Iy +Se +Iy +Im +Iy +ac +ac +ac +ac +ac +ac +ac +aa +aa aa aa -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Is -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -ac aa aa "} @@ -6041,55 +8210,55 @@ aa aa aa aa +ac +ac +ac +ac +Iy +eE +Iy +Se +Iy +Iy +Iy +eE +Iy +eE +Iy +Se +Iy +Iy +SH +Iy +ab +ab +Iy +Se +Se +Se +Iy +ab +ab +ab +ab +ab +Iy +Iy +JM +Se +Iy +SH +ac +ac +ac +ac +ac +ac +ac +ac aa aa aa -ac -ac -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Is -ab -ab -ab -ab -ab -kf -kf -kf -kf -kf -kf -kf -kf -wn -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -ac aa "} (6,1,1) = {" @@ -6097,57 +8266,57 @@ aa aa aa aa -ac -aa -aa aa ac ac ac +SH +uQ +Iy +Iy +Iy +Iy +Iy +Iy +eE +Iy +Iy +eE +Se +dM +Iy +uQ +Iy +ab +ab +ab +ab +ab +Iy +Se +Iy +ab +ab +ab +ab +ab +ab +ab +Iy +Iy +Iy +Iy +Iy +dM +Iy +Im +Iy ac ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Mk -kf -VL -VL -VL -kf -kf -ln -wP -OQ -OP -Fy -aB -BA -kf -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab ac ac +ac +aa aa aa "} @@ -6155,15 +8324,30 @@ aa aa aa aa +aa +aa ac -ac -ac -ac -ac -ac -ac +eE +SH +Se +Iy +Im +Iy +Iy +Se +Iy +SH +Iy +Se +Iy +Iy +Iy +Iy +Iy +Iy ab -ac +ab +Pv ab ab ab @@ -6175,104 +8359,104 @@ ab ab ab ab -ab -ab -kf -Mc -LR -dT -fg -Tn -kf -km -Qx -vL -wa -dL -Zr Pn -kf -yE -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab ab ab +Se +Iy +SH +Iy +Iy +Iy +Se +Iy +Jx ac ac +ac +ac +aa +aa aa "} (8,1,1) = {" aa aa +aa +aa ac ac +Se +Iy +Jx +Iy +Se +Iy +SH +Iy +Iy +Se +Iy +Iy +SH +Iy +Se +Iy ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +SH +SH +ab +ab +ab +ab +ab +ab +ab +ab +Iy +Iy +Iy +Iy +eE +Se +Iy +Iy +Iy +Iy ac ac ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -VL -GD -GD -GD -DC -Zj -kf -YS -oO -aT -MD -Xc -zu -Gl -kf -yE -yE -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -ac aa aa "} (9,1,1) = {" aa +aa +aa ac -ac +Iy +eE +Iy +Iy +Iy +eE +Iy +Iy +Iy +Iy +eE +Iy +Iy +Iy ab ab ab @@ -6282,59 +8466,55 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -VL -MP -aP -LB -yF -DY +yE +kf kf -kr kw -Lf -wa +kw +kw +kw +kf +dL dL Zr -Zg -kf -ns -yE -yE -ab -ab -ab -ab -ab -ab ab ab ab ab ab +Se +Iy +Iy +Iy +Iy +eE +Se +Iy +Im +Iy +ac ac ac aa "} (10,1,1) = {" aa +aa ac -ac -ab -ab -dj +eE +Iy +dM +Iy +SH +Iy +Iy +eE +dM +Se +Iy +Iy +Iy +Iy ab ab ab @@ -6343,46 +8523,35 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -dj -ab -ab -ab -ab +yE +kf kf -yM -lj vT Wt kU my -kr -kw -kw +BA +St +kf MD Xc -zu -Gl -kf -as -ns -yE -yE +MD +td +RM ab ab ab ab ab ab -yG -ab -ab ab +Iy +Iy +Iy +uQ +dM +SH +ac ac ac aa @@ -6390,1727 +8559,1548 @@ aa (11,1,1) = {" aa ac -ac -ab +Iy +eE AR -Tv -RV -RV -RV -RV -RV -RV -RV -RV -RV -RV -RV -RV -RV -RV -RV +Iy +Im +Iy +Iy +eE +Iy +Iy +Iy +Iy +dM +Iy ab ab ab ab -VL -aP +ab +ab +SH +Iz +Iz +kf +kf aP Xa yF Mp -kf -gA +my +BA RH UX wa -dL -Zr +Xo +ln Zg -zF -zF -zF -zF -zF -CR -CR -zF -zF -zF -zF -Mk -tu +td +td +RM +SH ab ab ab +ab +ab +ab +Iy +Iy +Iy +Iy +SH ac ac +aa "} (12,1,1) = {" -aa -ac ac +eE +SH +Iy +FQ +Se +Iy +Iy +Iy +Iy +eE +dM +Iy +Iy +Iy ab ab -RV -ny -Ij -qH -RV -JQ -gn -DE -MR -DE -gn -JQ -RV -JQ -AT -RV -ab +Pv ab ab ab +sv +sv +FV +dO VL -LP +kf LP Eh Gp qC -kf -sr +eS Ow -cj +Ow +kf mV +EK Ae -Ae -PK -zF +td +ss YM -xY -Vu -MC -UO -HU -qK -Yb -xY -Fo -zF +td +td +vo +SH ab ab +Pn ab ab +Iy +Se +Iy ac ac +ac +aa "} (13,1,1) = {" -aa -ac ac +Iy +eE +Iy +eE +Iy +Iy +Iy +eE +eE +Iy +Iy +SH +Iy +dM ab ab -RV -vv -rg -rg -RV +ab +ab +ab +sv CQ -Gm -wX -wG -eA -Gm -VM -RV -pI -UT -RV -ab -ab -ab -ab -kf -jo +vl +Hb +ao +ov +LA ov mG bk -ES +Mp +my +BA +BA kf -dw -Hs -VQ ue -ZN -ZN -rv -zF +PG +yu +td +jZ gG Qq jt -zF -UO -Jd -zF -jt -Qq -gG -zF +vL +vo ab ab ab ab +ab +Iy +Iy +eE ac ac +ac +aa "} (14,1,1) = {" -aa ac ac -ab -ab -RV +ac +Iy +eE +Iy uQ -tT -UI -RV -Yk -Io -DE -Bt -DE -Io -xo -RV -XW +Iy +Iy +Iy +SH +Iy +Iy +Iy +ab +ab +ab +ab +ab sv -RV -ab -ab -kb +PB +Lm +kN +eC de -kf -kf -XS -Pc +gy +Ce +Rl +rX XS +qC +eS +Ow +Ow kf -kf -kf -kf -kf -kf -kf -kf -kf -zF -zF -zF -zF -zF +GM +EK +CM +td +AT +Bt +CE +eo +bG Gb -Jd -zF -zF -zF -zF -zF +vo ab ab ab ab +SH +Iy +Iy +Im +ac ac ac "} (15,1,1) = {" ac ac -ab -ab -ab -RV +ac +Im +Se +Iy Jx -RV -RV -RV -RV -WE -RV -RV -RV -yu -RV -RV -RV +Iy +Iy +Se +Iy +uQ +Iy +Iy +ab +ab +ab +ab +sv Fz -RV -RV -RV -eC -eC +pH +ol +Ac +DX +gy VJ -VL -jo +kf +hr ej jo -Pq -Uj -YC -yq -zF +Mp +my +BA +BA +kf IA PG ox -sG -zF -gG -CZ -zF +td +al +eu +Zp +km XD xm -Jd +OI vo -zF -Tm -gG -zF -ab ab ab ab +Iy +SH +Iy +Iy +eE ac ac "} (16,1,1) = {" ac ac -ab -ab -ab -ha -uQ -ss -BF -RV -Uq +Se dM -PB -bh -Ac +Se +Iy +Iy +Iy dM -Ac -Ac +Iy +SH +dM +Iy +ab +ab +ab +ab +sv PB vZ KS xP -RV -eC +xP eC +wu so -VL -jo +kf +kk FT -jo +ya Pq -qS YC YC -Rv -GM +DG +kf GM +EK fd -oE -zF +td +bC Yl xY -zF +xS Oc -xm +vv Jd OH -zF -UP -Cc -zF +vo ab ab ab -ab -ac +Iy +Iy +eE +Iy +Iy ac "} (17,1,1) = {" ac ac -ab -ab -ab -ha Se -vq -uQ -ar -Kl -pF -pF -pF -pF -hU -Ua -Ua -Ua +Iy +Iy +SH +Se +Iy +eE +Iy +eE +Iy +ab +ab +ab +ab +ab +sv Ua +ad bR Ok -RV -eC -eC +ha +DX +wu yR -VL -jo -FT -jo -Pq -IB -YC +kf +fx +Hs +yY +el +ZN +ZN hT -zF +kf uV jH nz -gT -zF +td +al eu Zp -zF -hu -xm -Jd -zF -zF -Uf -op -zF -ab +cP +DI +ry +wX +gm +td ab ab ab +Iy +Se +Iy +SH ac ac "} (18,1,1) = {" ac -ac +SH +Se +Iy +dM +SH +Iy +Iy +Iy +eE +Iy +Iy ab ab ab -ha -yd -uQ -Zi -RV -St -pF -ol -sB -ol -NV -oB -fB +ab +sv fB +Mu Ym uw -gj -RV -XP -eC -Pw -VL -jo -Yo -jo -Pq -YC -HF -RQ -zF -zF -zF -zF Le -zF -zF +gj +XP +wu +kf +kf +kf +kf +kf +HF +HF +HF +HF +kf +nd +Vk +jJ +td +XW +UO SK -zF +iL Xz -xm -Jd +tJ +HI tx -zF -Fx -zF -zF -ab +td +RM ab ab ab +Iy +Iy +Iy ac ac "} (19,1,1) = {" ac -ac -ab -ab -ab -RV -RV Im -RV -RV -LM -Gx -ol -vB -FQ -Ci -Am +Iy +eE +Iy +Iy +Iy +Se +Iy +Iy +Iy +SH +ab +ab +ab +ab +sv DZ -RV +VO Zw -RV -RV -RV -ZU -ZU -tw +lD +hU +kb +DX +db kf -XS +nC +El Pc -XS -kf +Ih +uN FK -ZU -ZU -zF -um +bF +aA +NY +qe zX -gm -Ad +Lc +Lc +eg eg HU -HU TB -Jd -xm -Jd -Jd +td +BL +FO +En DA -HU -Kb -CR -ab -ab -ab -ac -ac -aa -"} -(20,1,1) = {" -aa -ac -ac -ab -ab -RV -eE -eS -kc -RV -iy -kk -bC -nr -Rl -Ci -Am -DZ -RV -sv -Nv -jI -RV -Zl -Zo -Zo -Zo -Zo -JA -Zo -Kz -Zo -Vn -Zl -ZU -Uo -up -up -oZ -zF -dO -iG -HN -aY -aY -Fn -Fn -ub -qg -RM -CR -ab -ab -ab -ac -ac -aa -"} -(21,1,1) = {" -aa -ac -ac -ab -ab -RV -qA -Bf -Qi -RV -VW -kk -ol -ol -ol -Ci -Am -lH -RV -AC -SZ -ys -RV -DX -kL -ED -ED -xe -ZF -ju -DH -DH -DH -WK -ZU -nc -au -cw -lP -zF -Jd -fq -Jd -Jd -Jd -Jd -Jd -ef -Sm -Jd -CR -ab -ab -ac -ac -aa -aa -"} -(22,1,1) = {" -aa -ac -ac -ab -AR -RV -RV -RV -RV -RV -wl -kk -ol -sL -ol -Ci -Am -DZ -RV -JQ -KP -Vt -RV -Zo -jA -Zo -ck -XO -cO -Zo -Zo -Zo -DH -Zo -ZU -VP -lc -eZ -tJ -zF -WS -ZQ -yY -QU -QU -QU -zF -Cd -Zx -Km -zF -ab -ab -ab -ac -ac -aa -"} -(23,1,1) = {" -aa -ac -ac -ab +td ab ab ab ab Iy +Se +ac +ac +"} +(20,1,1) = {" +ac +SH +Iy +Iy +Se +Iy +eE +Iy +Iy +SH +Iy +ab +ab +ab +ab +yE +kf +oP +ta +Tl +Nv +jI +gn +SJ +Gm +kf +bV +SY +JA +ED +Kz +Yf +Yf +pI +xc +Uo +Tm +cu +Yf +rv +us +us +HN +Zl +aY +Fn +WM +ub +td +RM +ab +ab +ab +ab +Iy +ac +ac +"} +(21,1,1) = {" +ac +Iy +eE +Iy +Iy +Iy +Se +Iy +Iy +ab +ab +ab +ab +ab +ab +kf +kf +kf +kf +kf +kf +ys +Lf +DX +kL +WD +ED +xe +xc +iZ +DH +Dn +qA +WK +nc +nc +au +Gd +lP +wl +gh +fq +If +us +Zl +td +ES +ef +Sm +td +ab +ab +Pn +ab +Im +ac +ac +"} +(22,1,1) = {" +ac +Zx +Iy +uQ +SH +Se +Se +ab +ab +ab +ab +ab +ab +ab +sP RV +RV +dj +zd +JQ +sP +kf +kf +nT +oZ +bq +ck +XO +nc +oc +Gd +Pr +Pr +Pr +Pr +VP +lc +eZ +ZU +ZU +ZU +ZQ +fq +us +us +RM +td +Cd +td +td +RM +ab +ab +ab +Se +Se +ac +"} +(23,1,1) = {" +ac +eE +Iy +Se +Iy +Iy +ab +ab +ab +ab ak -kk -bG -nJ -ht -Ci +ab +ab +sP +RV +RV Am -RV -RV -RV -RV -RV -RV +cn +Rd +wP +yG +uA +Mc SG jA -Zo -ZU -ZU -ZU -ZU -ZU +fE +WK +Gd +yM +JA +Pr ZK EP -er -td -td -td -td -td -td -Ol -dR -NY -Yv -CC -FF -lD +ob +Ie +rf +aT +lH +kc +Uf +Lg +ZU +oG +fq +ge +hL +EA Xq LK -iL +RM td -WM -ab ab ab +Iy +Iy ac ac "} (24,1,1) = {" -aa -aa ac -ac -ab -ab -ab -ab +SH +Se Iy +Iy +ab +ab +ab +ab +ab +ab +ab +ab +RV +RV +RV RV -al -qV -ol -Dr -lZ -Ci -Am DL +YO +qH OD -OD -OD -OD +JP TO -Zo +jA Sh -Zo -ZU +RV +El UV fO Pr -ZU +LD CN ju -Zo -dz +OP +dw KW +RE +Qi sF -sF -sF -dz -sF -oG -uX +Kn +eL +ZU +dR Gs -AF +XT cu iX -sF -Dn -EQ -td -ab -ab -ab -ab -ac -ac -"} -(25,1,1) = {" -aa -aa -ac -ac -ab +FO +QU +vL +NS ab ab Iy +Jx +SH +ac +"} +(25,1,1) = {" +ac +Iy +Iy +Iy +MR +ab +ab +ab mP +ab +ab +ab +oA RV -ao -Wp -oA -oA lu jw -iS +RV HL NK -TC +vy TC CG -HL +dN ci Fl -WK -DG -oc -cP -cY +RV +ZU +ZU +ZU +Zl uB -Zo +TT MG -jf -tM -FO -xl +nn +Sd +yi xl +qS FS tM vf -wo -NY -yP -HI -XT -Lp -sF -ks -gs +ZU td +TZ +XT +zl +Lp +kZ +up +vB +NS +SH ab -ab -ab -ab +Se +Se ac ac "} (26,1,1) = {" -aa -aa -aa ac -ac -ab -ab +Se +Iy +Iy +wN +jn +Gh +jn +Uj +jn +jn jn -RV -RV -aV -oB oB pp -oB +YS bM yn -DL -OD -OD -OD -OD -TO -Zo -Sh +YS +Pf +Vs +TI +FF +QK +cj +dP ex ZU cm cQ -db ZU -zP -Sh -Zo -dz -sF -sF -sF +dJ +iB +EV +xA +Ci +tu +aB +PW fF dz -sF -oG -GB +Vp +ZU Ny -Yc +qU +XT zl ih -sF -JP -BO -td -ab -ab -ab +wo +Mw +vB +NS +Iy ab +Se +Iy ac ac "} (27,1,1) = {" -aa -aa -aa ac -ac -ab -ab -ad -ag +Iy +Iy +Iy +Tn ai -OD -OD -OD -gy -OD -Wa -bV -RV +ai +ai +ai +ai +ai +ai +st +pp +JN +gY +Fk +JN PO PO -PO -PO -RV +mg +Kb +bv er dP -er -ZU -ZU -ZU -ZU +dP ZU +LC +gT +sL +cl iB -jA +sQ GA -td -td +wx +KD sA -td -td -td +nr +xo +sm MT -dR -NY +ZU +AF OV XT -XT +zl cZ xf Iv -DI -td -ab -ab -ab +EQ +NS +SH ab +Iy +qg ac ac "} (28,1,1) = {" -aa -aa -aa ac -ac -ab -AR -jn -RV -RV -qU +Iy +Iy +Iy +ME +ma +ma +ma +nJ +ma +ma ma no pr -OD +Po Wa Fk -RV +Cc Re ag -ag +bN EO QK -Zo -jA -Zo -Zo -Zo +cj +dP +dP +ZU +wF Cj -Zo +ZU FU -Zo -jA -Zo -td +iB +DC +jT +eA Ip nS nb -vt -td +fF +VC VE -Mu -Rd -td -cW -dm -td -td -jJ -td -td -ab -ab -ab +ZU +gp +yP +XT +zl +bd +ks +sr +vt +NS +Se ab +Iy +Iy ac ac "} (29,1,1) = {" -aa -aa -ac ac +SH +Iy +Iy +kr ab ab ab +tT ab ab +ab +mp RV -eQ -mp -mp -pJ -mp +LR Hy -cf RV +FH WX -ag +uk Sb RZ -RV +BR KY gF -ED -ED -xe -AN -xe -ED -ED +RV +ZU +ZU +ZU +Zl +Gx +ns XH nn -td +Sd yi -nS -nS +xl +tB Fq +Na +sZ +ZU td -sF -dR -sc -td +PI oV Li bu -kZ -nT +qY +up eX -td -td +NS +Se ab ab +dM ac ac -aa "} (30,1,1) = {" -aa -aa -ac ac +Se +dT +Iy +Iy +ab +ab +ab ab ab ab ab ab -Jj -RG -ol -ol -rf -Vy -bN RV RV +RV +RV +Tv wm -wm -wm +ht +ZA WC -RV -Zl +ZR +YQ sg -Zo +RV ux -Zo +bz cV +Pr +PK +sE Zo -Zo -Zo -Zo -Zl -td +oj +UT Zh ie -nS +Yc vz -td -sF -oG -sF -td -Tl -hL +YA +oE +ZU +Yv +Gs +XT +GD EA Wz NJ IP NS -td ab ab +ab +Iy ac ac -aa "} (31,1,1) = {" -aa -aa -ac ac +SH +Iy +Se +Iy +SH +SH ab ab ab -ab -ab -RV Pv -bq -Iz +ab +ab sP -aE RV RV -ab -ab -ab -ab -ab -ab -ZU -ZU -WF -yQ -Oz +Vn +Kl pg +VK +Dr +eQ +ar +CZ +YQ +WF +qe +aA +JA Oz -yQ +tv yy -yQ -yQ -td -td -td -td -td -td -sF -oG -sF -td +dm +rg +wn +Sg +iy +CR +Ve +jf +ZL +ZU +DT +jg ge hL -He +iX Ou -NJ -IP -bd -sZ -WM +uX +RM +td ab ab +ab +Se ac ac "} (32,1,1) = {" -aa -ac ac +Iy +eE +eE +Iy +Iy +Iy +Iy ab ab ab ab -ab -ab -BE -BE -bv -BE -se -BE -BE -ab -ab -ab -ab -ab -ab -ab -kE +Iy +SH +sP +RV +RV +ce +Vr +Bf +sP +yQ +yQ +Vz Er Gr -NB -xc -Fu -xc -fe -xc -wx -eo +ck +Fx +Lc +UI +aA +Pr +Pr +Pr +Pr +VP +lc +eZ +ZU +ZU +ZU +BO +jg +us +us +RM td -LA -iw -iw -En -td -sF -oG -sF -td -gZ -hL -NJ YI -NJ -jy -OI td +td +RM ab ab ab -ac +Se +Iy ac "} (33,1,1) = {" -aa -ac ac +eE +Im +BF +eE +Iy +eE +Iy +Iy ab ab ab -ab -ab -ab -BE -KD -wN -eL +SH cS wr BE -ab -ab -ab -ab -ab -ab -ab +yQ +um +yQ +yQ +yQ +KP +vH kE -Er +Zi dy NB -xc +lZ Yf -xc -fe -xc -xc +rv +DH +jb +qK qe -td Lc -xS +Lc +xc aA EL -td +Ch bF -dR +jg If -td -PI -dN -tS +us +Zl +wG +GB tS jy -oj -FV td ab ab +dk ab -ac +Iy +Im ac "} (34,1,1) = {" -aa ac ac -ab -ab -ab -ab -ab -ab -Sd -wN -ed -vy +eE +Iy +eE +Se SH -cx -BE +Iy +uQ ab ab ab ab -ab -ab -ab -kE -Er -xA +SH +Iy +Mn +yQ +aE +Yk +pU +Yb +CA +yd +as +rP +yQ +aV +ed +yM NB -xc -Yf -xc fe xc -Kn -tB -td +xc +Kz +Yf nx -LC +If Ya -nd +xc iZ -Os +us us sc +Zl td -td -pK +hu yJ Xh -pe td -td -ap +RM ab ab ab -ac +ab +Iy +SH ac "} (35,1,1) = {" ac ac +ac +dS +Iy +eE +Iy +Se +Iy ab ab ab ab ab -ab -ab -Sd -wN -Ud -ME -YA -cx -BE -ab -ab -ab -ab -ab -ab -ab -kE -Er -lb -NB -xc +Iy +SH +ds +iG +cW +Fu +Km +oW +LB +cO +df +yQ +ph +El pk -xc -fe +JA +gs yB gh Gd -td -td -td -td -td -td +Uq +WK +gZ +nc +nc +nc Ol -dR -sF -Ro +vq +CC +td Xw EJ Wu zT -mg -Vz -Vz -ap +td ab ab ab +ab +ab +SH ac ac "} (36,1,1) = {" +aa ac ac +eE +eE +SH +eE +Se +Iy +dM ab ab ab ab ab ab -ab -Sd -wN -Ce -Eq -Vs -cx -BE -ab -ab +ds +Ij sR +pK +Yb +RN Mt -Mt -Mt -Mt -yQ +Bp qd yQ yQ -fx -pg -fx -yQ yQ yQ yQ +Yb +Yb +Yb +Yb yQ sa +oz sa -sa -sa +zF +zF +zF td -rP -dR -sF -Pm -FW +td +VW +XT xq -RE -kl -Ld -CA -VC -ap +XT +td +RM ab ab +ab +ab +Iy +Iy ac ac -aa "} (37,1,1) = {" -ac -ac -ab -ab -ab -ab -ab -ab -ab -BE -Pf -ob -ob -ob -JN -BE -ab -ab -ab -Mt -CK -Tu -Df -Ns -ZH -yQ -KC -Gv -sY -fG -zp -yQ -GQ -Ca -yQ -EU -Ut -TI -oS -td -sF -oG -sF -Pm -Hx -ta -BB -nP -Vz -hr -cl -ap -ab -ab -ab -ac -ac -"} -(38,1,1) = {" -ac -ac -ab -ab -ab -ab -ab -ab -AR -BE -BE -Sd -Sd -Sd -BE -BE -ab -ab -ab -Mt -PQ -gB -pc -iQ -kp -yQ -Ib -Gv -Zn -qp -xc -Td -CX -lT -yQ -yQ -ft -Ho -XC -td -sF -oG -sF -Pm -Hx -Jq -bf -nP -Vz -hr -hr -ap -ab -ab -ac -ac -aa -"} -(39,1,1) = {" -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -qa -rD -Kg -BC -iQ -ZH -yQ -of -Gv -UE -qp -xc -Bn -oN -GJ -jT -yQ -rT -Ut -oS -td -sF -SJ -zI -Wx -gz -cn -cn -dS -sm -CA -CA -ap -ab -ab -ab -ac -ac -"} -(40,1,1) = {" aa ac ac -ab -ab -ab -ab -ab -ab -ab -ab -ab +eE +eE +Im +Iy +SH +Iy +Iy ab ab ab @@ -8119,165 +10109,356 @@ ab ab ab ds -Mt -Mt -Mt -Tk -IS +gA +cN +CK +Tu +Df +Ns +bh +Ho +KC +cY +sY +fG +zp +kl +GQ +Ca yQ -Ko +EU +ft +zF +oS +Pt +zF +wU +gL +Fo +tS +Jq +BB +nP +ab +ab +ab +ab +ab +Se +Iy +ac +ac +"} +(38,1,1) = {" +aa +ac +ac +ac +eE +eE +eE +Se +Iy +Iy +Iy +ab +ab +ab +ab +ab +ab +ds +cx +VQ +PQ +gB +pc +OQ +kp +PQ +Ib Gv +Zn +Tf +Ad +Td +CX +lT +yQ +zu +ft +zF +XC +Vt +zF +Jq +Wu +Pm +Xh +Jq +bf +nP +ab +ab +ab +ab +Iy +Se +SH +ac +ac +"} +(39,1,1) = {" +aa +aa +ac +ac +Iy +Iy +Se +Iy +SH +Se +Iy +Iy +ab +ab +ab +ab +ab +ab +ds +qa +rD +Kg +BC +iQ +ZH +PQ +of +Is +UE +iS +Os +Bn +oN +GJ +yQ +Eq +rT +Ut +pe +WE +zF +td +zI +Wx +gz +Jq +nP +ab +ab +ab +ab +ab +Iy +Im +ac +ac +ac +"} +(40,1,1) = {" +aa +aa +aa +ac +ac +ac +Iy +Iy +Iy +Iy +Iy +eE +Iy +ab +ab +ab +ab +ab +ab +ds +Qx +oO +BZ +Fy +IS +Rv +Ko +VM nq qp -Tc +nq BT oe vW kV -yQ +eN hA -pH -et -ZA -tv -ph +zF +zF +zF +zF +Jq Lw -Pm +Mk mr -LD -ry -zq -Vz -Lg -Vz -ap +nP ab ab ab +ab +ab +SH +Iy +ac +ac ac ac "} (41,1,1) = {" aa +aa +aa ac ac +ac +ac +ac +Im +Iy +Iy +Iy +Iy +Iy ab ab ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -dJ -jg +ds tc IM Tk -ZH -yQ -yQ +tl +kh +Zj rG -yQ +Ue gN -yQ -yQ -yQ +Ue +Ue +Ld wv -yQ -yQ -yQ +Zj +Vu +fg bY -yQ -ap -ap +My +Pt +zF it +BB ap -ap -ap -ap -ap -ap -ap -ap -ap -ap +nP ab ab ab +ab +ab +Iy +Se +dM +ac +ac ac ac "} (42,1,1) = {" aa +aa +aa +aa +aa ac ac +ac +ac +Se +Jx +Iy +Se +Iy ab ab ab +ak ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -dJ -gp -cN -PW -Tk -ZH +ds +yQ +yQ +yq +LM yQ -El to Oe Fi -yQ +tw nA aG Hn yQ +zF +op +zF YB -YB -YB -YB -ap -Vp -Hb -My -wF -Po -TT -YQ +WS +zF +td +nP +nP +ab +ab +ab dk -YO -fE -ap -ab -ab -ab ab +Iy +Se +Se +Iy +ac +ac ac ac "} (43,1,1) = {" +aa +aa +aa +aa +aa +aa ac ac +ac +Se +Iy +Iy +Iy +Se ab ab ab @@ -8286,57 +10467,58 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -dJ -rX -oW -hI -Tk -gY -nC -Vk -Vk -hb -hb +SH +Mn +yQ +yQ +yQ +yQ +UP +pF xs +Tc +Vy hb -hb -hb -Lh +yQ +DE +Gl +zF TH -TH -TH -TH -el -gL -SY +zF +zF +RM SM -Gh -WD -Ie -tl -DT -uk -Qr -ap ab ab ab ab +ab +ab +Iy +Se +Iy ac ac +ac +ac +aa "} (44,1,1) = {" +aa +aa +aa +aa +aa +aa +aa ac ac +ac +SH +Iy +eE +Iy +Iy ab ab ab @@ -8346,23 +10528,10 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -dJ -uA -st -vH -Bp -wU +SH +Mn +yQ yQ -sQ -zd jR cD QN @@ -8371,40 +10540,11 @@ BS pN yQ mA -mA -mA -mA -ap -BL -VK -FH -Gh -WD -Ie -BZ -jV -Na -zz -ap -ab -ab -ab -ac -ac -aa -"} -(45,1,1) = {" -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab +RQ +zF +zF +Pw +SM ab ab ab @@ -8413,49 +10553,34 @@ ab ab ab Iy -dJ -ZR -Lm -Lm -Bp -CE -yQ -oz -Mn -jR -jR -jm -Ue -xc -RN -yQ -ab -ab -ab -ab -ap -qY -CM -Pt -Gh -WD -Ie -XU -Ov -df -iY -ap -ab -ab -ab +SH +Iy +Im +ac +ac ac ac aa "} -(46,1,1) = {" +(45,1,1) = {" +aa +aa +aa +aa +aa +aa +aa aa ac ac +Se +Iy +Iy +eE +Iy +Iy +Iy +uQ ab ab ab @@ -8465,47 +10590,91 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -bz -VO -kh -JM -Xo -jZ -ON +Mn yQ -EV -ZL -wu -xJ -ce -vl -jb -Vr yQ +jm +jm +jm +jm +yQ +NV +zF +Pw +ab +SM +ab +ab +ab +Iy +Iy +ab +Iy +Iy +Iy +SH +Iy +dM +ac +ac +ac +aa +aa +"} +(46,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ac +ac +ac +ac +Im +Iy +dM +Iy +Se +Iy +Iy ab ab ab ab -ap -oP -oP -Ch -Ve -Ih -ya -ap -ap -ap -ap -kN -EK ab +ab +ab +ab +ab +SH +Se +Iy +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +dM +Jx +Se +Iy +Iy +Se +Iy +Se +Iy +ac +ac ac ac aa @@ -8514,8 +10683,89 @@ aa (47,1,1) = {" aa aa +aa +aa +aa +aa +aa +aa +aa ac ac +ac +ac +Iy +SH +Iy +Iy +Se +Se +Iy +ab +ab +ab +ab +ab +ab +ak +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +dk +ab +ab +ab +Iy +Iy +Iy +eE +Iy +Im +Iy +uQ +ac +ac +ac +ac +aa +aa +aa +"} +(48,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ac +ac +ac +Iy +Se +Iy +Iy +dM +Iy +ab +ab +ab +ab +ab +ab ab ab ab @@ -8531,102 +10781,21 @@ ab ab ab Iy -sE -yQ -yQ -yQ -yQ -yQ -yQ -yQ -NB -NB -yQ -yQ -yQ -yQ -yQ -yQ -ab -ab -ab -ab -sE -ap -ap -ap -ap -ap -BR -ap -ab -ab -ab -pU -ab -ab -ab +Iy +Iy +Iy +eE +Iy +Iy +dM +ac +ac ac ac aa -"} -(48,1,1) = {" aa aa aa -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Tf -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Sg -ab -ab -ab -ab -pU -ab -ab -ab -ab -ab -eN -ab -ab -ab -ab -ab -ab -ab -ac -ac -aa aa "} (49,1,1) = {" @@ -8634,8 +10803,23 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa ac ac +ac +Iy +Iy +Im +Iy +Iy +dM ab ab ab @@ -8651,40 +10835,25 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +Iy +Iy +Iy +Iy +Iy +Se +Iy +SH +Iy +eE ac ac +ac +ac +ac +aa +aa +aa +aa aa aa "} @@ -8694,55 +10863,55 @@ aa aa aa aa -ac -ac -ac -ab -ab -ab -ab -ab +aa +aa +aa +aa +aa +aa +aa ac ac ac ac ac +ac +Iy +SH +Iy +Iy +Se +Se +Iy +Iy ab ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +dM +Iy +Iy +SH +Iy +Se +Iy +dM +SH +Se +Im ac ac ac +ac +ac +ac +ac +aa +aa +aa +aa +aa aa aa aa @@ -8754,6 +10923,14 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aa ac ac ac @@ -8763,44 +10940,36 @@ ac ac ac ac +Im +SH +ac +ac +Se +Im +ac +ac +ac +SH +Jx +Iy +Im +lb +ac +Se +Se +Iy ac ac ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +aa +aa +aa +aa +aa +aa aa aa aa @@ -8815,6 +10984,37 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac ac ac ac @@ -8825,39 +11025,8 @@ aa aa aa aa -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +aa +aa aa aa aa diff --git a/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm b/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm index 55da68d118d..e48fa720f2e 100644 --- a/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm +++ b/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm @@ -1,3156 +1,977 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/template_noop, -/area/template_noop) -"ab" = ( -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors) -"ae" = ( -/obj/effect/turf_decal/tile/bar, -/obj/machinery/vending/boozeomat/syndicate_access{ - onstation = 0 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"af" = ( -/obj/machinery/door/poddoor{ - id = "interdynedeckofficer" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"ag" = ( -/turf/closed/mineral/random/volcanic, -/area/lavaland/surface/outdoors) -"aj" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"an" = ( -/obj/structure/chair/sofa/right/maroon, -/obj/machinery/light/directional/north, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"as" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/deckofficer{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"aw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"aG" = ( -/obj/structure/chair/office/light, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"aM" = ( -/obj/machinery/light/directional/north, -/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, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"aQ" = ( -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 8 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"aR" = ( -/obj/machinery/button/door/directional/east{ - id = "interdynedeckofficer"; - req_access = list("syndicate") - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"aS" = ( -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"aT" = ( -/obj/structure/table/optable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"aX" = ( -/obj/machinery/door/airlock/grunge{ - name = "Morgue" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/structure/fans/tiny, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"bc" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/flora/bush/sparsegrass, -/obj/structure/flora/bush/flowers_pp, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/cargo) -"bl" = ( -/obj/machinery/shower/directional/west, -/obj/structure/drain, -/obj/structure/curtain, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"bm" = ( -/obj/machinery/light/directional/west, -/obj/structure/closet/secure_closet{ - icon_state = "qm"; - name = "deck offficer's locker"; - req_access = list("syndicate_leader") - }, -/obj/item/clothing/neck/cloak/qm/syndie, -/obj/item/clothing/under/rank/cargo/qm/skyrat/syndie, -/obj/item/circuitboard/computer/advanced_camera, -/obj/item/megaphone/cargo, -/obj/item/clothing/glasses/sunglasses, -/obj/item/ammo_box/magazine/m9mm{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/gun/ballistic/automatic/pistol, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"br" = ( -/turf/open/floor/carpet/orange, -/area/ruin/syndicate_lava_base/cargo) -"bu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/table/glass, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 10 - }, -/obj/item/healthanalyzer, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"bv" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/power/rtg/advanced, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"bz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Bathroom" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"bF" = ( -/obj/structure/table/wood, -/obj/machinery/light/directional/west, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"bG" = ( -/obj/structure/fans/tiny, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate"); - name = "Slime Pacification Chamber" - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"bI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/bar) -"bL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"bS" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/item/reagent_containers/cup/glass/drinkingglass{ - pixel_y = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/bar) -"bV" = ( -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"bW" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/vending/autodrobe{ - onstation = 0 - }, -/turf/open/floor/iron/cafeteria, -/area/ruin/syndicate_lava_base/dormitories) -"bY" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 1 - }, -/obj/machinery/firealarm/directional/south{ - dir = 1 - }, -/obj/machinery/quantumpad{ - map_pad_id = "interdyne"; - map_pad_link_id = "ds2"; - name = "quantum pad to DS-2" - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"ca" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"cc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/door/airlock/hydroponics{ - name = "Hydroponics" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"ce" = ( -/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 = 9 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"ch" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"ci" = ( -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"cn" = ( -/obj/structure/toilet{ - dir = 4 +"am" = ( +/obj/machinery/computer/pandemic{ + name = "Interdyne PanD.E.M.I.C"; + color = "#adadcd" }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"co" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"cp" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"cr" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"cs" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"ct" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/ammo_workbench, -/turf/open/floor/iron/edge{ dir = 8 }, -/area/ruin/syndicate_lava_base/main) -"cv" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"cB" = ( -/obj/structure/flora/bush/flowers_br, -/obj/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/medbay) -"cC" = ( -/obj/structure/sink/directional/west, -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/ruin/syndicate_lava_base/cargo) -"cD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"cH" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"cP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"cX" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"da" = ( -/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 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"dd" = ( -/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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"de" = ( -/obj/machinery/vending/cigarette/syndicate{ - onstation = 0 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"df" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/toy/crayon/spraycan{ - pixel_y = 9; +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ pixel_x = 4 }, -/obj/item/toy/crayon/spraycan{ - pixel_y = 9; - pixel_x = -5 - }, -/obj/structure/sign/painting/large/library{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"dl" = ( -/obj/item/toy/figure/syndie, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) -"dn" = ( -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"dy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"dA" = ( -/obj/machinery/door/airlock/command{ - name = "Deck Officer" - }, -/obj/effect/turf_decal/siding/wood, -/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/syndicate/leader, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"dF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"dG" = ( -/obj/structure/table/glass, -/obj/item/storage/box/rndboards{ - pixel_y = 15; - pixel_x = 2 - }, -/obj/item/storage/part_replacer{ - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"dN" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"dZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"eb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"eg" = ( -/obj/machinery/light/directional/south, -/obj/machinery/vending/medical/syndicate_access{ - onstation = 0 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"ej" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"eq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/engineering) -"et" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/dark_red{ - dir = 4 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"ex" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"ey" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"eA" = ( -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"eI" = ( -/obj/machinery/airalarm/directional/north{ - req_access = list("syndicate") - }, -/obj/machinery/microwave{ - pixel_y = 9 - }, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"eK" = ( -/obj/machinery/vending/games{ - onstation = 0 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"eL" = ( -/obj/machinery/suit_storage_unit/mining, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"eT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/rack, -/obj/item/pipe_dispenser, -/obj/item/construction/rcd, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"fc" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"fj" = ( -/obj/structure/tank_dispenser, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"fq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, -/obj/machinery/vending/wardrobe/syndie_wardrobe{ - onstation = 0 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"fs" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"fv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/computer/camera_advanced/xenobio{ - dir = 8 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"fx" = ( -/obj/structure/sink/directional/south, -/obj/structure/mirror/directional/north, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"fC" = ( -/obj/machinery/light/directional/west, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"fF" = ( -/obj/structure/table/wood, -/obj/item/storage/dice, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"fH" = ( -/obj/structure/cable, -/obj/machinery/computer/order_console/mining/interdyne, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"fN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"fO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"fX" = ( -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"gb" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"gd" = ( -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"gf" = ( -/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 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"gg" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"gj" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"gs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_edge{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/cargo) -"gu" = ( -/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/ruin/syndicate_lava_base/cargo) -"gv" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "interdynecargoout" - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"gB" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "interdynecargoout" - }, -/obj/structure/closet/crate, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"gD" = ( -/obj/machinery/door/airlock/grunge{ - name = "Bar" - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/bar) -"gF" = ( -/obj/machinery/door/poddoor{ - id = "interdynecargowest" - }, -/obj/machinery/conveyor{ - dir = 4; - id = "interdynecargoout" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"gO" = ( -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"gQ" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "interdynecargoout" - }, -/obj/structure/plasticflaps, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"gR" = ( -/obj/effect/turf_decal/tile/brown, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"gS" = ( -/obj/effect/turf_decal/arrows, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"gT" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"gU" = ( -/obj/structure/closet/crate/internals, -/obj/item/tank/internals/oxygen/yellow, -/obj/item/tank/internals/oxygen/yellow, -/obj/item/tank/internals/oxygen/yellow, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/effect/turf_decal/box/white, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"hb" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"hl" = ( -/obj/machinery/atmospherics/components/binary/valve/digital/layer2, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"hq" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/structure/flora/rock, -/turf/open/misc/asteroid/basalt, -/area/ruin/syndicate_lava_base/cargo) -"hH" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"hN" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"hQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"hR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"hY" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "interdyneo2"; - dir = 1 - }, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"ib" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/item/toy/cards/deck/kotahi{ - pixel_y = 5 - }, -/obj/structure/table, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/cargo) -"id" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_y = 8 - }, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_x = 6 - }, -/obj/item/reagent_containers/condiment/saltshaker, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"if" = ( -/obj/machinery/turretid{ - ailock = 1; - control_area = "/area/ruin/syndicate_lava_base/main"; - dir = 1; - icon_state = "control_kill"; - lethal = 1; - name = "Base turret controls"; - pixel_y = 30; - req_access = list("syndicate") - }, -/turf/open/floor/iron/edge, -/area/ruin/syndicate_lava_base/main) -"ij" = ( -/obj/structure/table/reinforced, -/obj/machinery/processor, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"ik" = ( -/obj/structure/bookcase/random/fiction, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"is" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/chair/office/light{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"it" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"iw" = ( -/obj/structure/table, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/smooth_edge, -/area/ruin/syndicate_lava_base/cargo) -"iA" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"iC" = ( -/obj/machinery/light/directional/east, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"iG" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/engineering) -"iH" = ( -/obj/structure/railing, -/obj/effect/turf_decal/loading_area, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"iO" = ( -/obj/effect/turf_decal/tile/brown, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/box/white, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"je" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"jh" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"ji" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"jj" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/left, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"jn" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/machinery/medical_kiosk, -/obj/structure/sign/departments/maint/directional/north, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"jp" = ( -/obj/machinery/photocopier, -/obj/machinery/light/directional/south, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"jx" = ( -/obj/structure/chair/office, -/obj/machinery/button/door/directional/east{ - id = "interdynelibrary" - }, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"jB" = ( -/obj/effect/turf_decal/siding/thinplating/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"jF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/anesthetic_machine, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"jK" = ( -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"jN" = ( -/obj/machinery/firealarm/directional/south{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"jP" = ( -/obj/machinery/button/door/directional/west{ - id = "interdynedorms"; - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"jR" = ( -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"jS" = ( -/obj/structure/closet/crate, -/obj/item/storage/box/stockparts/deluxe, -/obj/item/storage/box/stockparts/deluxe, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/circuitboard/machine/processor, -/obj/item/circuitboard/machine/gibber, -/obj/item/circuitboard/machine/deep_fryer, -/obj/item/circuitboard/machine/cell_charger, -/obj/item/circuitboard/machine/smoke_machine, -/obj/item/stack/sheet/plasteel/fifty, -/obj/machinery/button/door/directional/south{ - id = "interdynecargo"; - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"kg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/west{ - specialfunctions = 4; - id = "Dynbin2"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"kq" = ( -/obj/structure/sign/departments/chemistry/directional/east, -/obj/structure/table/glass, -/obj/item/stack/sheet/mineral/plasma{ - amount = 15 - }, -/obj/item/storage/box/beakers/bluespace, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"ks" = ( -/obj/machinery/oven/range, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"kw" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/firealarm/directional/west{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"ky" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"kC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"kD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/medbay) -"kL" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"kS" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate, -/area/ruin/syndicate_lava_base/main) -"kV" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"lf" = ( -/obj/machinery/door/window/survival_pod{ - dir = 8; - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"lo" = ( -/obj/machinery/firealarm/directional/west{ - dir = 4; - pixel_x = -28 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"lq" = ( -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"ls" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/item/folder/white, -/turf/open/floor/iron/white/side, -/area/ruin/syndicate_lava_base/medbay) -"lv" = ( -/obj/machinery/vending/barbervend{ - onstation = 0 - }, -/obj/machinery/button/door/directional/east{ - id = "interdynebarbers" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"lA" = ( -/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 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"lC" = ( -/obj/machinery/button/door/directional/west{ - id = "interdynekitchen" - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"lF" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2{ - dir = 8 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/engineering) -"lM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"lR" = ( -/obj/machinery/smartfridge/food, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/small, -/area/ruin/syndicate_lava_base/bar) -"lS" = ( -/obj/structure/displaycase{ - alert = 0; - desc = "A display case containing an expensive forgery, probably."; - req_access = list("syndicate"); - start_showpiece_type = /obj/item/fakeartefact - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"lX" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/table/reinforced, -/obj/item/fakeartefact{ - possible = list(/obj/item/kinetic_crusher) - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"mb" = ( -/obj/structure/dresser, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"md" = ( -/obj/effect/turf_decal/siding/thinplating/light{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/closet/crate/freezer/sansufentanyl, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"mk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/departments/engineering/directional/south, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"ml" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"mn" = ( -/obj/structure/sign/directions/supply{ - dir = 1; - pixel_y = 32 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"mp" = ( -/obj/effect/turf_decal/box/red/corners, -/obj/effect/turf_decal/box/red/corners{ - dir = 8 - }, -/obj/structure/closet/crate/secure/gear{ - req_access = list("syndicate") - }, -/obj/item/clothing/glasses/night, -/obj/item/clothing/glasses/night, -/obj/item/clothing/glasses/night, -/obj/item/storage/belt/military, -/obj/item/storage/belt/military, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/under/syndicate/combat, -/obj/item/clothing/under/syndicate/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/obj/item/card/id/advanced/chameleon, -/obj/item/card/id/advanced/chameleon, -/obj/item/card/id/advanced/chameleon, -/obj/item/radio/headset/interdyne, -/obj/item/radio/headset/interdyne, -/obj/item/radio/headset/interdyne, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"mz" = ( -/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, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"mD" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 9 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"mG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"mK" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"mN" = ( -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"mV" = ( -/obj/effect/turf_decal/siding/thinplating/light{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/pill_bottle/mannitol, -/obj/item/reagent_containers/dropper, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"na" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/bed/double{ - dir = 1 - }, -/obj/item/bedsheet/dorms_double{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"nd" = ( -/obj/structure/sign/directions/science{ - dir = 8; - pixel_x = -32; - pixel_y = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"ne" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"nh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"ni" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/chair/plastic{ - dir = 8 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/cargo) -"no" = ( -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"nq" = ( -/obj/structure/dresser, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"nt" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"nA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/cargo) -"nD" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"nT" = ( /turf/open/floor/iron/dark/textured_large, -/area/ruin/syndicate_lava_base/bar) -"nX" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/obj/machinery/door/window/survival_pod{ - dir = 1 - }, -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, /area/ruin/syndicate_lava_base/medbay) -"nZ" = ( -/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, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"ob" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"oi" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/obj/machinery/door/airlock/public/glass{ - name = "Dormitories" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"ok" = ( -/obj/structure/table/reinforced, -/obj/item/storage/backpack/duffelbag/syndie/surgery, -/obj/machinery/airalarm/directional/north, -/obj/item/healthanalyzer{ - pixel_x = -5; - pixel_y = 5 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"ow" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"oA" = ( -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate"); - name = "Slime Euthanization Chamber" - }, -/turf/open/floor/circuit/telecomms, -/area/ruin/syndicate_lava_base/testlab) -"oB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/bar) -"oE" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"oH" = ( -/obj/structure/bookcase/random/religion, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"oK" = ( -/obj/machinery/conveyor{ - dir = 6; - id = "interdynedisp" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"oM" = ( -/obj/machinery/smartfridge/chemistry/virology/preloaded, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"oP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/rtg/advanced, -/obj/machinery/power/terminal, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"oT" = ( -/obj/machinery/hydroponics/constructable, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"oW" = ( -/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, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/cargo) -"oX" = ( -/obj/structure/rack, -/obj/item/cultivator, -/obj/item/shovel/spade, -/obj/item/hatchet, -/obj/item/plant_analyzer, -/obj/item/geneshears, -/obj/item/gun/energy/floragun, -/obj/item/secateurs, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"oY" = ( -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"pk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"pq" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Bay" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/cargo) -"pt" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"py" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/mapping_helpers/apc/syndicate_access, -/obj/structure/table/glass, -/obj/machinery/reagentgrinder, -/obj/item/stack/sheet/mineral/plasma{ - amount = 5 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/gold{ - amount = 10 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"pz" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"pD" = ( -/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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"pE" = ( -/obj/machinery/vending/drugs{ - name = "\improper SyndiDrug Plus"; - onstation = 0 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"pI" = ( -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"pK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"pR" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"pW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/iv_drip, -/obj/machinery/defibrillator_mount/loaded{ - pixel_x = 28 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"pY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"qa" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"qb" = ( -/obj/machinery/suit_storage_unit/mining, -/obj/machinery/airalarm/directional/north{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"qc" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 9 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/testlab) -"qj" = ( -/obj/machinery/airalarm/directional/north{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"qs" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Bar" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-service" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"qt" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/testlab) -"qz" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"qE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/button/door/directional/south{ - name = "Dorm Bolt Control"; - id = "Dynbin3"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"qL" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/button/door/directional/east{ - id = "interdynemedbay"; - req_access = list("syndicate") - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"qT" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"qU" = ( -/obj/structure/table/glass, -/obj/item/storage/box/syringes{ - pixel_x = 5; - pixel_y = 10 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/item/storage/bag/xeno, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"qX" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/testlab) -"rb" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"rf" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/rack, -/obj/effect/turf_decal/box/white, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/item/pickaxe, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"rh" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"rj" = ( -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"rm" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/obj/item/storage/bag/tray, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"rq" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/virology) -"ru" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engineering" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"rv" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"rC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/mapping_helpers/apc/syndicate_access, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"rE" = ( -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/storage/backpack/duffelbag/synth_treatment_kit/trauma/advanced/unzipped, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"rQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"rV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/blue{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"rW" = ( -/obj/structure/bed/maint, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"sb" = ( -/obj/structure/table/glass, -/obj/item/stack/cable_coil, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"sd" = ( -/obj/structure/sign/directions/vault{ - dir = 8; - pixel_y = 30 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"sf" = ( -/obj/machinery/light/directional/south, -/obj/structure/closet/secure_closet/freezer/kitchen{ - req_access = list("syndicate") - }, -/obj/item/reagent_containers/condiment/milk, -/obj/item/reagent_containers/condiment/soymilk, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"sj" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/light/directional/north, -/obj/structure/table/glass, -/obj/structure/bedsheetbin, -/obj/machinery/airalarm/directional/north{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/cafeteria, -/area/ruin/syndicate_lava_base/dormitories) -"sl" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"sn" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/door/airlock/security/old{ - name = "Brig Hold"; - id_tag = "DyneBrig" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"so" = ( -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"sx" = ( -/obj/structure/bookcase/random/reference, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"sD" = ( -/obj/structure/tank_holder/anesthetic, -/obj/structure/railing, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"sI" = ( -/obj/effect/turf_decal/siding/thinplating/dark/end, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"sK" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"sL" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"sP" = ( -/obj/machinery/chem_dispenser/mutagensaltpeter, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"sY" = ( -/obj/machinery/atmospherics/miner/oxygen, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"ta" = ( -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"to" = ( -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/medbay) -"tt" = ( -/obj/machinery/shower/directional/north, -/obj/structure/curtain, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"tv" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"tx" = ( -/obj/structure/table/glass, -/obj/structure/towel_bin, -/obj/item/soap/syndie, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"tD" = ( -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"tH" = ( -/obj/machinery/firealarm/directional/east{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"tI" = ( -/obj/machinery/button/door{ - id = "interdynecargowest"; - pixel_x = 32; - pixel_y = 8 - }, -/obj/machinery/button/door{ - id = "interdynecargoeast"; - pixel_x = 32; - pixel_y = -8 - }, -/obj/machinery/computer/shuttle{ - desc = "Occasionally used to call in a resupply shuttle if one is in range."; - dir = 8; - icon_keyboard = "syndie_key"; - icon_screen = "syndishuttle"; - light_color = "#FA8282"; - name = "syndicate cargo shuttle terminal"; - possible_destinations = "syndielavaland_cargo"; - req_access = list("syndicate"); - shuttleId = "syndie_cargo" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"tJ" = ( -/obj/machinery/conveyor{ - id = "interdynedisp" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"tP" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"tS" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"tT" = ( -/obj/machinery/vending/hydroseeds{ - onstation = 0 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"tW" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"ub" = ( -/obj/machinery/flasher/directional/north{ - id = "DyneBrigFlash" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"un" = ( -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/bar) -"uy" = ( -/obj/machinery/door/airlock{ - name = "Bedroom"; - id_tag = "DyneDO" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"uD" = ( -/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 = 8 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"uE" = ( -/obj/machinery/firealarm/directional/east{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"uJ" = ( -/obj/structure/table/reinforced, -/obj/effect/spawner/random/food_or_drink/donkpockets{ - pixel_y = 7; - pixel_x = 10 - }, -/obj/item/storage/box/donkpockets{ - pixel_y = 5; - pixel_x = -7 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"uP" = ( -/obj/machinery/light/floor, -/obj/machinery/cryo_cell, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"uX" = ( -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/right, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"ve" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "interdynen2"; - dir = 1 - }, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"vi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"vj" = ( -/obj/machinery/door/airlock{ - name = "Quiet Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"vt" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"vH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/bed/double, -/obj/item/bedsheet/dorms_double, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"vJ" = ( -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"vK" = ( -/obj/structure/table, -/obj/item/storage/box/drinkingglasses{ - pixel_y = 10 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"vM" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/structure/flora/rock/pile, -/turf/open/misc/asteroid/basalt, -/area/ruin/syndicate_lava_base/cargo) -"vQ" = ( -/obj/machinery/hydroponics/constructable, -/obj/machinery/door/window/survival_pod{ - dir = 1 - }, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"vR" = ( -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/obj/item/circuitboard/machine/stacking_machine, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"vX" = ( -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/obj/item/circuitboard/machine/ore_redemption, -/obj/item/assembly/igniter, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"vZ" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"wb" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/airlock{ - name = "Cabin 1"; - id_tag = "Dynbin1" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"wc" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Dormitories" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"wf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor{ - id = "interdynedisp"; - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"wi" = ( -/obj/structure/rack/shelf, -/obj/effect/turf_decal/box/white, -/obj/item/construction/rcd/loaded, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"wn" = ( -/obj/structure/disposalpipe/trunk, -/obj/structure/disposaloutlet{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/ruin/syndicate_lava_base/virology) -"wo" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"wq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"wt" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"wx" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/vending/clothing{ - onstation = 0 - }, -/turf/open/floor/iron/cafeteria, -/area/ruin/syndicate_lava_base/dormitories) -"wy" = ( -/obj/structure/ore_box, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/box/white, -/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/ruin/syndicate_lava_base/cargo) -"wB" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/testlab) -"wC" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"wD" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"wJ" = ( -/obj/structure/table, -/obj/machinery/button/door/directional/east{ - specialfunctions = 4; - normaldoorcontrol = 1; - name = "Dorm Bolt Control"; - id = "DyneAlpha" - }, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"wL" = ( -/obj/machinery/door/airlock{ - name = "Library Backroom" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"wR" = ( -/obj/structure/easel, -/obj/item/canvas/twentythree_nineteen, -/obj/item/canvas/twentythree_twentythree, -/obj/item/canvas/twentythree_twentythree, -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"wS" = ( -/obj/machinery/washing_machine, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, -/turf/open/floor/iron/cafeteria, -/area/ruin/syndicate_lava_base/dormitories) -"wU" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/effect/turf_decal/siding/thinplating/light{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/closet/crate/freezer/blood, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"wW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"wY" = ( -/obj/machinery/light_switch/directional/south, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 4 - }, -/obj/item/pen{ - pixel_y = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"xk" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "interdynecargoin" - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"xm" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"xo" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"xp" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 6 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"xr" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"xs" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/door/airlock{ - name = "Cabin 2"; - id_tag = "Dynbin2" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"xw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"xJ" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"xL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"xM" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"xN" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"xP" = ( -/obj/effect/turf_decal/vg_decals/department/cargo, -/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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"xR" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/medbay) -"xT" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/caution{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"xY" = ( -/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 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"yb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"yd" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/light/directional/east, -/obj/structure/closet/secure_closet/ds2atmos{ - anchorable = 0; - anchored = 1 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"yh" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "interdynecargoin" - }, -/obj/structure/closet/crate/medical, -/obj/item/storage/medkit/fire{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/medkit/brute, -/obj/item/storage/medkit/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"yk" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"yp" = ( -/obj/structure/table/reinforced, -/obj/item/kitchen/rollingpin, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"yr" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "interdynecargoin" - }, -/obj/structure/plasticflaps, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"yw" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"yy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"yA" = ( -/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, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"yE" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"yG" = ( -/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, -/area/ruin/syndicate_lava_base/main) -"yU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/engineering) -"yV" = ( -/obj/structure/toilet, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"zc" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"zd" = ( -/obj/structure/closet/secure_closet/freezer/meat{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"zj" = ( -/obj/machinery/light/directional/south, -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Interdyne Pharmaceuticals"; - pixel_y = 7; - name = "Interdyne Fax Machine" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"zl" = ( -/obj/structure/chair/stool/bar{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"zo" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/mob/living/carbon/human/species/monkey{ - ai_controller = null; - faction = list("neutral","Syndicate") - }, -/obj/structure/chair/office/light, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"zr" = ( -/obj/machinery/vending/dinnerware{ - onstation = 0 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"zt" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/virology) -"zu" = ( -/obj/structure/chair/stool/bar{ - dir = 4 - }, -/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, -/area/ruin/syndicate_lava_base/dormitories) -"zv" = ( -/obj/structure/filingcabinet, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"zw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"zy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ +"an" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 5 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"zz" = ( -/obj/machinery/door/poddoor{ - id = "interdynecargoeast" - }, -/obj/machinery/conveyor{ - dir = 8; - id = "interdynecargoin" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"zB" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"zE" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"zF" = ( -/obj/machinery/atmospherics/miner/nitrogen, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"zG" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/fullupgrade{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"zJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"zM" = ( -/obj/machinery/chem_heater/withbuffer, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"zO" = ( -/obj/structure/closet/crate/bin, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"zP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/south, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"zS" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/east{ - specialfunctions = 4; - normaldoorcontrol = 1; - name = "Dorm Bolt Control"; - id = "DyneDO" - }, -/turf/open/floor/carpet/orange, -/area/ruin/syndicate_lava_base/cargo) -"Ac" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Ae" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 4 }, -/obj/machinery/door/airlock{ - name = "Cabin 4"; - id_tag = "Dynbin4" +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Ai" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = 6; - pixel_y = 2 - }, -/obj/item/reagent_containers/cup/rag{ - pixel_x = -4; - pixel_y = 3 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/bar) -"Ak" = ( -/obj/machinery/power/rtg/advanced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"An" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Ao" = ( -/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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Ar" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"Aw" = ( -/obj/structure/ore_box, +"ap" = ( /obj/structure/railing{ - dir = 6 + dir = 5 }, -/obj/effect/turf_decal/box/white, -/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/structure/railing, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/engine/hull/reinforced, +/area/lavaland/surface/outdoors) +"as" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/cargo) -"Ay" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"AC" = ( -/obj/structure/lattice/catwalk, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/testlab) -"AG" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"AH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"AJ" = ( -/obj/effect/turf_decal/tile/dark_red{ - dir = 1 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"AK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"AS" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"AT" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"AV" = ( -/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 = 9 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"AW" = ( -/obj/machinery/atmospherics/components/binary/volume_pump{ - dir = 4; - name = "BZ Pump" - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"Bn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Bo" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Bp" = ( -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/obj/item/circuitboard/machine/recycler, -/obj/machinery/conveyor{ - dir = 4; - id = "interdynedisp" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"Bq" = ( -/obj/structure/table, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"Bw" = ( -/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/ruin/syndicate_lava_base/engineering) -"BA" = ( -/obj/item/paper/guides/jobs/medical/morgue, -/obj/structure/table/reinforced, -/obj/item/storage/backpack/duffelbag/syndie/surgery, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"BH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/chair/plastic{ - dir = 4 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/testlab) -"BJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/item/toy/cards/deck/wizoff{ - pixel_y = 6 - }, -/obj/structure/table, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/testlab) -"BN" = ( -/obj/item/disk/surgery/forgottenship, -/obj/structure/table/reinforced, +"ay" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/clothing/neck/stethoscope, /obj/item/storage/box/medipens{ pixel_x = 4; pixel_y = 13 }, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 10 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"BP" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"BQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/chair/plastic{ - dir = 8 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/testlab) -"BS" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ - chamber_id = "interdyneserver"; - dir = 1; - external_pressure_bound = 120; - name = "server vent" - }, -/turf/open/floor/circuit/telecomms, -/area/ruin/syndicate_lava_base/testlab) -"BT" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"BW" = ( -/obj/machinery/button/door{ - id = "syndie_lavaland_vault"; - name = "Vault Bolt Control"; - normaldoorcontrol = 1; +/obj/item/reagent_containers/spray/cleaner{ pixel_x = -8; - pixel_y = 24; - req_access = list("syndicate"); - specialfunctions = 4 + pixel_y = 8 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"BZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/testlab) -"Cd" = ( -/obj/structure/chair, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"Cg" = ( -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Ci" = ( -/obj/structure/fans/tiny, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/main) -"Co" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/smooth_edge{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/cargo) -"Ct" = ( -/obj/machinery/chem_master, -/turf/open/floor/iron, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"Cv" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"CB" = ( -/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/ruin/syndicate_lava_base/dormitories) -"CD" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ +"az" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 6 }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"CJ" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"CK" = ( -/obj/machinery/bookbinder, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"CL" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"CM" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/stripes/corner{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/main) -"CN" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"aA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 }, -/obj/machinery/door/airlock/public/glass{ - name = "Bar" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"CP" = ( -/turf/open/floor/iron/dark/textured_corner{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 1 }, -/area/ruin/syndicate_lava_base/bar) -"CR" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/table/reinforced, -/obj/item/fakeartefact{ - possible = list(/obj/item/gun/energy/recharge/kinetic_accelerator) +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"aB" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/plumbing/input{ + dir = 1 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"CT" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/closet/secure_closet/cytology{ + anchored = 1; + pixel_x = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"aI" = ( +/obj/machinery/hydroponics/constructable, +/obj/structure/marker_beacon/teal, +/turf/open/floor/grass/fairy, +/area/ruin/syndicate_lava_base/bar) +"aL" = ( +/obj/structure/bookcase/random, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"aR" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"aT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/medbay) +"aV" = ( +/obj/effect/turf_decal/arrows/blue{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/obj/machinery/duct, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"aW" = ( +/obj/machinery/smartfridge/chemistry/virology/preloaded{ + name = "Interdyne virus storage"; + color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"aX" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 5 }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 1 }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/turf/open/floor/stone, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/bar) -"CU" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"CW" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/tattoo_kit{ - pixel_y = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"CY" = ( -/obj/effect/turf_decal/siding/thinplating/dark/end{ +"bk" = ( +/obj/machinery/modular_shield/module/node{ dir = 1 }, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "interdynekitchen" - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"CZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north{ +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/box/red/corners{ dir = 2 }, -/turf/open/floor/iron/smooth_edge, -/area/ruin/syndicate_lava_base/medbay) -"Dc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"De" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"Df" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"Dk" = ( -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"Do" = ( -/obj/machinery/portable_atmospherics/canister/bz, -/obj/machinery/atmospherics/components/unary/portables_connector, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"Dp" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"Dt" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/light/directional/south, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"DJ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/bar) -"DP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/power/smes/magical{ - desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Produces power through an unstable bluespace pocket."; - name = "bluespace-powered power storage unit"; - output_level = 200000 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"DQ" = ( -/obj/effect/turf_decal/tile/bar{ +/obj/effect/turf_decal/box/red/corners{ dir = 8 }, -/obj/machinery/firealarm/directional/south{ +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"bn" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 1 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"DU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"DZ" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 1 }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/medbay) -"Em" = ( -/obj/machinery/light/directional/west, -/obj/structure/sign/painting/library{ - pixel_x = -32 +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"bo" = ( +/obj/structure/marker_beacon/teal, +/obj/machinery/smartfridge{ + color = "#adadcd"; + name = "Interdyne smartfridge"; + pixel_x = 2; + light_color = "#adadcd" }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"EA" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/east, -/obj/structure/table/reinforced/rglass, -/obj/item/scissors, -/obj/item/hairbrush/tactical, -/turf/open/floor/iron, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"EP" = ( -/obj/effect/turf_decal/stripes/line{ +"bp" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/corner{ dir = 4 }, -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/item/kirbyplants/random, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"EZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 4 }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/dormitories) -"Fa" = ( -/obj/structure/dresser, -/turf/open/floor/iron/smooth_large, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/cargo) -"Fc" = ( -/obj/structure/closet/crate/secure/weapon{ +"bv" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/sign/poster/contraband/soviet_propaganda/directional/east, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/suit_storage_unit/syndicate/chameleon, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"bx" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/component_printer{ + name = "Interdyne component printer"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"by" = ( +/obj/machinery/modular_shield/module/well{ + dir = 1 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"bz" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"bA" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/item/storage/box/monkeycubes/syndicate{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/monkeycubes/syndicate{ + pixel_y = 5 + }, +/obj/item/slime_extract/grey{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/slime_extract/grey, +/obj/item/slime_extract/grey{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"bH" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/machinery/button/door/directional/north{ + name = "Interdyne Gate"; + id = "interdynegate"; + icon_state = "tram"; + base_icon_state = "tram"; + light_color = "#22CCFF"; + pixel_x = 7; + pixel_y = 32; req_access = list("syndicate") }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"bJ" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/blue/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"bP" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/item/paper/fluff/ruins/interdyne/note_1{ + name = "Forcefield Generator Maintenance"; + default_raw_text = "To activate a deployable laboratory forcefield, open maintenance hatches of Generator itself, Relay, Well and Charger nodes with a screwdriver and upgrade them with provided parts by using rapid parts exchange device. Then close all hatches and activate every module of generator, by starting with closer to generator nodes in chain-like way. When preparations are done, set generator radius at maximum and press power button. If shield will recieve overwhelm damage, it requires some time to recharge and have to be turned back on manually." + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"bS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"bX" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"cc" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"cd" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"cg" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"cj" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"co" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 6; + faction = list("Syndicate","neutral") + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/camera/xray{ + pixel_x = 10; + name = "Inderdyne security camera"; + network = list("Interdyne"); + color = "#adadcd"; + pixel_y = 25 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/main) +"cq" = ( +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/arrows/blue, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"cv" = ( +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"cw" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"cz" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"cL" = ( +/obj/structure/flora/ash/tall_shroom, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"cN" = ( +/obj/machinery/light/directional/east{ + bulb_colour = "#2C3BFF"; + color = "#0012FF"; + light_color = "#0012FF" + }, +/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/large, +/area/ruin/syndicate_lava_base/main) +"cS" = ( +/obj/structure/marker_beacon/burgundy, +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors) +"cZ" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/cargo) +"db" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"dd" = ( +/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/large, +/area/ruin/syndicate_lava_base/main) +"df" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/airlock/engineering/glass{ + name = "Shield and Engineering" + }, +/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_large, +/area/ruin/syndicate_lava_base/main) +"dn" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"dw" = ( +/obj/machinery/photocopier, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"dA" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"dD" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/recharge_station{ + name = "Interdyne recharging station"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"dF" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/box/white/corners{ + 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/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"dG" = ( +/obj/effect/turf_decal/tile/dark_red/half{ + dir = 4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"dQ" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/machinery/door/poddoor{ + id = "interdynegateout"; + name = "Inderdyne Gate" + }, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"dR" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"dW" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"eb" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/c/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"ec" = ( +/obj/structure/fans/tiny/forcefield, +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"ee" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/chair/sofa/corp/corner, +/obj/structure/marker_beacon/purple, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"ef" = ( +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"eg" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"eh" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"en" = ( +/obj/structure/closet/secure_closet/freezer/meat{ + req_access = list("syndicate"); + color = "#9d9ddd"; + name = "Interdyne meat fridge"; + light_color = "#9d9ddd" + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/structure/marker_beacon/indigo, +/obj/structure/drain, +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"ep" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"es" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear/red, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/testlab) +"ev" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"ey" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/smartfridge/organ{ + color = "#adadcd"; + name = "Interdyne smart organ storage"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"eA" = ( +/obj/machinery/computer/operating, +/obj/item/disk/surgery/forgottenship, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"eC" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/testlab) +"eH" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/light/directional/north, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/bar) +"eN" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"eO" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"eR" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/main) +"eS" = ( +/obj/structure/rack/shelf, +/obj/item/storage/bag/ore, +/obj/item/pickaxe/drill, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"fe" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/structure/fans/tiny/forcefield, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"fg" = ( +/obj/effect/turf_decal/siding/wood/corner{ + 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/wood/large, +/area/ruin/syndicate_lava_base/main) +"fi" = ( +/obj/machinery/dna_infuser, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"fm" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"fn" = ( +/obj/machinery/vending/dorms{ + onstation = 0 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"fp" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"ft" = ( +/obj/machinery/smartfridge/extract/preloaded{ + color = "#adadcd"; + name = "Interdyne smart slime extract storage"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"fw" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"fy" = ( +/obj/structure/table/wood/fancy, +/obj/structure/marker_beacon/bronze, +/obj/machinery/computer/libraryconsole/bookmanagement{ + dir = 8 + }, +/obj/machinery/libraryscanner{ + pixel_x = -30; + pixel_y = 12 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"fK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/marker_beacon/violet, +/obj/effect/spawner/random/vending/snackvend, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"fN" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/structure/sink/directional/west, +/obj/structure/mirror/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"fP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"fU" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"gd" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/computer/rdconsole{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"gh" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/door/poddoor{ + id = "interdynegateout"; + name = "Inderdyne Gate" + }, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"gm" = ( +/obj/structure/marker_beacon/olive, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"gy" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/dark/full, /obj/item/ammo_box/c9mm{ pixel_y = 6 }, @@ -3171,1878 +992,3431 @@ pixel_x = 4; pixel_y = -4 }, -/obj/effect/turf_decal/siding/brown{ +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"gB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/atmospherics/miner/nitrogen, +/turf/open/floor/engine/n2, +/area/ruin/syndicate_lava_base/main) +"gE" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 1 }, -/obj/machinery/light/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Fi" = ( -/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{ +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"gI" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 4 }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"Fk" = ( -/obj/structure/closet/crate, -/obj/item/flashlight{ - pixel_x = -5; - pixel_y = 5 +/obj/effect/turf_decal/stripes/red/line{ + dir = 10 }, -/obj/item/flashlight{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/extinguisher{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/extinguisher{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/extinguisher{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/effect/turf_decal/siding/brown{ +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"gO" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Fm" = ( -/obj/structure/table/reinforced, -/obj/machinery/reagentgrinder, -/turf/open/floor/iron/kitchen, +/turf/open/floor/carpet/red, /area/ruin/syndicate_lava_base/bar) -"Fq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - external_pressure_bound = 140; - name = "server vent"; - pressure_checks = 0; +"gR" = ( +/obj/structure/rack/wooden, +/obj/item/stack/sheet/mineral/wood/fifty, +/obj/item/lighter, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"gU" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/marker_beacon/olive, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"gV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/vending/cigarette/syndicate{ + onstation = 0 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"ha" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 8 }, -/turf/open/floor/circuit/telecomms, -/area/ruin/syndicate_lava_base/testlab) -"Ft" = ( -/obj/effect/turf_decal/vg_decals/department/bar{ - dir = 1 +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/reagentgrinder{ + pixel_x = -6; + pixel_y = 10 }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"hc" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"hf" = ( +/obj/structure/chair/stool/bar{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood, /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, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Fx" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"Fz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"FA" = ( -/obj/structure/table, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"FC" = ( -/obj/machinery/suit_storage_unit/syndicate/chameleon, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/main) -"FE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/chair/plastic{ - dir = 4 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/medbay) -"FG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"FJ" = ( -/obj/machinery/libraryscanner, /turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"FT" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"FX" = ( -/obj/machinery/cell_charger_multi, -/obj/structure/table/glass, -/obj/item/stock_parts/cell/bluespace, -/obj/machinery/airalarm/directional/west{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Gb" = ( -/obj/structure/sign/departments/engineering/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, /area/ruin/syndicate_lava_base/bar) -"Gc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"hh" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"hi" = ( +/obj/machinery/modular_shield/module/relay, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"hk" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 1 }, -/obj/structure/bed/double, -/obj/item/bedsheet/qm/double{ - name = "deck officer's bedsheet" - }, -/turf/open/floor/carpet/orange, -/area/ruin/syndicate_lava_base/cargo) -"Gs" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"GB" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"GS" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ dir = 1 }, -/obj/machinery/light/directional/west, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"GZ" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/vg_decals/atmos/nitrogen{ - dir = 1 +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne"); + pixel_x = 10 }, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"Ha" = ( -/obj/machinery/chem_mass_spec, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Hf" = ( -/obj/machinery/button/door/directional/west{ - id = "DyneWC"; - normaldoorcontrol = 1; - name = "Door Lock" - }, -/obj/machinery/dryer{ - pixel_x = 8; - pixel_y = 20 - }, -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"Ho" = ( -/obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, /obj/effect/mapping_helpers/apc/syndicate_access, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"Hs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, /obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"hl" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/turf_decal/vg_decals/atmos/oxygen, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"hx" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"hC" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/red, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"hH" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/clothing/glasses/hud/health, +/obj/item/reagent_containers/dropper{ + pixel_y = -6 + }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"Hz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"HA" = ( -/obj/machinery/door/poddoor{ - id = "interdynescience" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"HF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/button/door/directional/north{ - name = "Dorm Bolt Control"; - id = "Dynbin4"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"HI" = ( -/obj/structure/sign/directions/medical{ - dir = 4; - pixel_x = 32; - pixel_y = 3 - }, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"hI" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/marker_beacon/bronze, +/obj/structure/flora/tree/jungle/style_random, +/turf/open/floor/grass, /area/ruin/syndicate_lava_base/main) -"HL" = ( -/obj/item/circuitboard/machine/ore_silo, +"hK" = ( +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/deckofficer, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/arrivals) +"hV" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynekitchen"; + name = "Interdyne Storm Shutters Kitchen" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/bar) +"hW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"hY" = ( +/obj/structure/flora/ash/stem_shroom, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ie" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_y = 14; + pixel_x = -7 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/machinery/reagentgrinder{ + pixel_x = 8; + pixel_y = 18 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"ij" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"il" = ( +/obj/machinery/modular_shield/module/charger{ + dir = 8 + }, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"io" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"it" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"iu" = ( /obj/structure/frame/machine{ anchored = 1; state = 2; icon_state = "box_1" }, -/turf/open/floor/iron/corner, -/area/ruin/syndicate_lava_base/main) -"HM" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") +/obj/item/circuitboard/machine/ore_redemption, +/obj/item/assembly/igniter, +/obj/structure/marker_beacon/burgundy, +/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_large, +/area/ruin/syndicate_lava_base/cargo) +"iw" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-medbay" +/obj/effect/turf_decal/stripes/blue{ + dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"HN" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron, +"iB" = ( +/obj/machinery/shower/directional/south, +/obj/structure/drain, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/structure/marker_beacon/violet, +/obj/structure/curtain/bounty/start_closed{ + alpha = 180; + color = "#7d7d7d" + }, +/turf/open/floor/iron/dark/small, /area/ruin/syndicate_lava_base/dormitories) -"HQ" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"HR" = ( -/obj/structure/sink/directional/east, -/turf/open/floor/iron, +"iD" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"HT" = ( -/obj/structure/table/glass, +"iH" = ( +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"iL" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"iP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"iT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"iW" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"iX" = ( +/obj/machinery/button/door/directional/north{ + name = "Dorm Bolt Control"; + id = "Dynbin2"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"iZ" = ( +/obj/effect/turf_decal/vg_decals/atmos/air, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse{ + dir = 4 + }, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"jb" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/structure/marker_beacon/purple, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"je" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/machinery/button/door/directional/north{ + name = "Dorm Bolt Control"; + id = "Dynbin1"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"jl" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"jn" = ( +/obj/machinery/coffeemaker{ + pixel_y = 36 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/chair/sofa/corp/right, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"jv" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"jx" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"jz" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/obj/machinery/microwave{ + pixel_x = -1; + pixel_y = 5; + color = "#adadcd"; + name = "Interdyne microwave"; + light_color = "#adadcd" + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 19; + pixel_x = 5 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"jE" = ( +/obj/structure/rack, +/obj/item/storage/box/syndie_kit/chameleon/ghostcafe{ + desc = "It's a box, for storing things."; + name = "chameleon kit" + }, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/structure/marker_beacon/burgundy, +/obj/structure/sign/poster/contraband/communist_state/directional/west, +/obj/item/gun/ballistic/rifle/sniper_rifle, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/modular_computer/laptop/preset/syndicate, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"jG" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/chair/sofa/corp/right, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"jH" = ( +/obj/machinery/modular_shield_generator, +/obj/effect/decal/cleanable/glitter/blue, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"jO" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/pill_bottle/mutadone, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"jP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"jR" = ( +/obj/structure/closet/cabinet{ + name = "Dark wood Interdyne closet"; + color = "#8d8d8d"; + light_color = "#8d8d8d" + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/structure/reagent_dispensers/wall/virusfood/directional/west, -/obj/item/book/manual/wiki/infections{ - pixel_y = 7 +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"jX" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"kc" = ( +/obj/structure/marker_beacon/bronze, +/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/large, +/area/ruin/syndicate_lava_base/main) +"kg" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/arrivals) +"kh" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"kk" = ( +/obj/effect/turf_decal/loading_area/red, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"kp" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"kr" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/structure/closet/crate/bin{ + pixel_x = -5 + }, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynebar"; + name = "Interdyne Storm Shutters Bar" + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"kt" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/dormitories) +"ku" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"kv" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"kB" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"kD" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"kI" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynelabs"; + name = "Interdyne Storm Shutters Labs" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/medbay) +"kL" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/obj/machinery/oven/range{ + color = "#9d9ddd"; + name = "Interdyne range"; + light_color = "#9d9ddd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"kO" = ( +/obj/machinery/hydroponics/constructable, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/bar) +"kP" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"kU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"kV" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/anesthetic_machine{ + pixel_x = 10 + }, +/obj/machinery/iv_drip{ + pixel_x = -10 + }, +/obj/item/tank/internals/anesthetic, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"kY" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynebar"; + name = "Interdyne Storm Shutters Bar" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/bar) +"lc" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"lh" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"lq" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/main) +"lr" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/obj/machinery/mecha_part_fabricator{ + name = "Interdyne exosuit fabricator"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"lx" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 9; + faction = list("Syndicate","neutral") + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/camera/xray{ + pixel_x = 10; + name = "Inderdyne security camera"; + network = list("Interdyne"); + color = "#adadcd"; + pixel_y = 25 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/main) +"lA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"lD" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/stripes/red/line, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"lH" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/box/blue/corners, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"lI" = ( +/obj/structure/cable, +/obj/machinery/power/rtg/advanced, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/west, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/effect/decal/cleanable/glitter/pink, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"lJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"lR" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/storage/toolbox/syndicate, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"lS" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/dormitories) +"lV" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynernd"; + name = "Interdyne Storm Shutters RnD" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"lW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/chair/pillow_small, +/obj/structure/marker_beacon/purple, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynelibrary"; + name = "Interdyne Storm Shutters Library" + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"md" = ( +/obj/item/pillow, +/obj/structure/fireplace, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"mh" = ( +/obj/structure/table/optable, +/obj/structure/marker_beacon/teal, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"mi" = ( +/obj/machinery/computer/camera_advanced/xenobio{ + dir = 4; + name = "Interdyne Slime management console"; + pixel_x = -4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynexeno"; + name = "Interdyne Storm Shutters Xeno" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"mj" = ( +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"mo" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"mr" = ( +/obj/structure/rack/shelf, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/obj/item/storage/box/nif_ghost_box/ghost_role, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"mE" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"mF" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"mS" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/toy/crayon/spraycan{ + pixel_x = 4; + pixel_y = 10 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"mT" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"na" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"nc" = ( +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"ne" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + name = "Interdyne slime freezer"; + dir = 4; + initialize_directions = 4; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/testlab) +"nh" = ( +/obj/machinery/atmospherics/miner/oxygen, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/engine/o2, +/area/ruin/syndicate_lava_base/main) +"ni" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"nm" = ( +/obj/machinery/stasis{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"no" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"nr" = ( +/turf/open/floor/plating/reinforced, +/area/lavaland/surface/outdoors) +"nu" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"nv" = ( +/obj/machinery/modular_shield/module/node{ + dir = 4 + }, +/obj/effect/decal/cleanable/glitter/blue, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"ny" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"nz" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"nB" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"nC" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/backpack/duffelbag/syndie/surgery, +/obj/item/healthanalyzer/advanced, +/obj/machinery/defibrillator_mount/loaded{ + pixel_x = 28 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"nE" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"nG" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"nH" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/marker_beacon/teal, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"nI" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"nW" = ( +/obj/effect/turf_decal/arrows/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"of" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/construction/plumbing, +/obj/item/pipe_dispenser, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"oh" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"om" = ( +/obj/item/binoculars, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"on" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"ot" = ( +/obj/structure/table/wood/fancy, +/obj/item/paper_bin{ + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 4 + }, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"ox" = ( +/obj/structure/bookcase/random/adult, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"oC" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/obj/item/circuitboard/machine/smoke_machine, +/obj/item/circuitboard/machine/cell_charger, +/obj/item/circuitboard/machine/deep_fryer, +/obj/item/circuitboard/machine/gibber, +/obj/item/circuitboard/machine/processor, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"oD" = ( +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"oF" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"oH" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/effect/decal/cleanable/glitter/pink, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/decal/cleanable/greenglow, +/obj/machinery/power/rtg/advanced, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"oM" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"oN" = ( +/obj/machinery/modular_shield/module/node{ + dir = 1 + }, +/obj/effect/decal/cleanable/glitter/blue, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"oP" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/door/poddoor{ + id = "interdynegate"; + name = "Inderdyne Gate" + }, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"oQ" = ( +/obj/machinery/vending/clothing{ + onstation = 0 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/olive, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"oS" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"oT" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"oU" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"pc" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/machinery/button/door/directional/north{ + name = "Interdyne Gate"; + id = "interdynegateout"; + icon_state = "tram"; + base_icon_state = "tram"; + light_color = "#22CCFF"; + pixel_x = 7; + pixel_y = 32; + req_access = list("syndicate") + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"pk" = ( +/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 = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"pn" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/railing, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/hull/reinforced, +/area/lavaland/surface/outdoors) +"pq" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/main) +"pt" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/bci_implanter{ + name = "Interdyne BCI implanter"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"pu" = ( +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"pG" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"pK" = ( +/obj/structure/table/wood/fancy, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"pN" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"pP" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/structure/sink/directional/east, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"pY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ + chamber_id = "lavalandsyndieplasma"; + dir = 8 + }, +/turf/open/floor/engine/n2, +/area/ruin/syndicate_lava_base/main) +"qa" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/medbay) +"qb" = ( +/obj/machinery/modular_shield/module/well{ + dir = 8 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"qe" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/rnd/destructive_analyzer{ + name = "Interdyne destructive analyzer"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"ql" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + 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/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"qr" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/rack/shelf, +/obj/item/storage/box/stockparts/deluxe, +/obj/item/storage/box/stockparts/deluxe, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"qy" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/closet/crate/bin, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynemed"; + name = "Interdyne Storm Shutters Med" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"qA" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/light/directional/south{ + bulb_colour = "#2C3BFF"; + color = "#2C3BFF"; + light_color = "#2C3BFF" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"qD" = ( +/obj/structure/closet/secure_closet/freezer/kitchen{ + req_access = list("syndicate"); + color = "#9d9ddd"; + name = "Interdyne kitchen cabinet"; + light_color = "#9d9ddd" + }, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/box/white/corners, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"qE" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/window/survival_pod{ + req_access = list("syndicate"); + name = "Slime Pacification Chamber" + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/testlab) +"qH" = ( +/obj/item/stack/sheet/mineral/gold{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/diamond, +/obj/item/stack/sheet/bluespace_crystal, +/obj/item/stack/sheet/mineral/silver, +/obj/item/stack/sheet/mineral/titanium, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"qK" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"qL" = ( +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"qM" = ( +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"qN" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/vehicle/ridden/atv/snowmobile/syndicate{ + dir = 8; + name = "Interdyne Crawler"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"qR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/testlab) +"rc" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"re" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"rk" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"rm" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"rs" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"ru" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/processor{ + color = "#adadcd"; + name = "Interdyne food processor"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"rw" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"ry" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"rz" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"rA" = ( +/obj/machinery/modular_shield/module/well{ + dir = 8 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"rI" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 4; + pixel_x = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"rP" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"rS" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"rW" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"sb" = ( +/obj/structure/table/wood/fancy, +/obj/item/bedsheet/syndie, +/obj/item/bedsheet/syndie/double{ + dir = 1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"se" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"sg" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"sh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"sj" = ( +/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/wood/large, +/area/ruin/syndicate_lava_base/main) +"sl" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark/corner, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"sm" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/bar) +"so" = ( +/obj/machinery/chem_master{ + name = "Interdyne ChemMaster"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"sD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"sI" = ( +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/chair/sofa/corp/left, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"sS" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/main) +"sV" = ( +/obj/structure/fans/tiny/forcefield, +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"te" = ( +/obj/structure/railing, +/obj/structure/lattice/catwalk/mining, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"tn" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/healthanalyzer/advanced, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -15; + pixel_y = 2 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"to" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"tx" = ( +/obj/effect/turf_decal/siding/wood{ + 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/wood/large, +/area/ruin/syndicate_lava_base/main) +"ty" = ( +/obj/machinery/modular_shield/module/charger{ + dir = 4 + }, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"tG" = ( +/obj/effect/turf_decal/stripes/blue{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"tS" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynelibrary"; + name = "Interdyne Storm Shutters Library" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/bar) +"tT" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"tY" = ( +/obj/structure/fans/tiny/forcefield, +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"ui" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/marker_beacon/teal, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"uj" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynernd"; + name = "Interdyne Storm Shutters RnD" + }, +/obj/machinery/fax{ + fax_name = "Interdyne Pharmaceuticals"; + pixel_y = 7; + name = "Interdyne Fax Machine"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"uk" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"ul" = ( +/obj/machinery/computer/crew/syndie{ + dir = 4; + pixel_x = -4; + name = "Interdyne crew monitoring console" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/olive, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"ur" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"ut" = ( +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"uu" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"uw" = ( +/obj/machinery/portable_atmospherics/canister/bz, +/obj/machinery/atmospherics/components/unary/portables_connector, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/testlab) +"uH" = ( +/turf/open/floor/engine/hull/reinforced, +/area/lavaland/surface/outdoors) +"uJ" = ( +/obj/effect/turf_decal/tile/dark_red/half{ + dir = 8 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"uQ" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"uR" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + 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/wood/large, +/area/ruin/syndicate_lava_base/main) +"uX" = ( +/obj/effect/turf_decal/siding/wood/corner{ + 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/large, +/area/ruin/syndicate_lava_base/main) +"uY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/marker_beacon/bronze, +/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/large, +/area/ruin/syndicate_lava_base/main) +"vb" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"vj" = ( +/obj/structure/lattice/catwalk/mining, +/turf/open/floor/plating/elevatorshaft, +/area/lavaland/surface/outdoors) +"vm" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/cargo) +"vn" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"vv" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/machinery/duct, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"vy" = ( +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/structure/closet/crate/internals{ + anchored = 1 + }, +/obj/item/clothing/mask/gas, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"vA" = ( +/obj/effect/turf_decal/stripes/red/corner, +/obj/machinery/button/door/directional/south{ + base_icon_state = "tram"; + name = "Interdyne Gate"; + icon_state = "tram"; + id = "interdynegate"; + light_color = "#22CCFF"; + req_access = list("syndicate"); + pixel_x = 7; + pixel_y = -20 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"vF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"vI" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/hull/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"vJ" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"vQ" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/tree/jungle/small/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"vR" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"vS" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"vT" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"vV" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"vX" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + 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/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"wa" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"wb" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/closet/crate/bin{ + pixel_x = 5 + }, +/obj/effect/turf_decal/box/blue/corners, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"wl" = ( +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"wA" = ( +/obj/machinery/turretid{ + ailock = 1; + control_area = "/area/ruin/syndicate_lava_base/main"; + dir = 1; + icon_state = "control_kill"; + lethal = 1; + name = "Base turret controls"; + pixel_y = 30; + req_access = list("syndicate") + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/machinery/syndicatebomb/self_destruct{ + anchored = 1; + name = "Interdyne self-destruct device" + }, +/obj/effect/turf_decal/stripes/red/box, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"wB" = ( +/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/ruin/syndicate_lava_base/medbay) +"wF" = ( +/obj/machinery/shower/directional/south, +/obj/structure/drain, +/obj/structure/marker_beacon/violet, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/item/soap, +/obj/structure/curtain/bounty{ + color = "#7d7d7d"; + alpha = 180 + }, +/obj/machinery/button/door/directional/west{ + id = "IDyneWC"; + normaldoorcontrol = 1; + specialfunctions = 4; + name = "Door Lock" + }, +/turf/open/floor/iron/dark/small, +/area/ruin/syndicate_lava_base/dormitories) +"wP" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"wS" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"wT" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/blue/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"wU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"wV" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"wY" = ( +/obj/machinery/chem_dispenser/fullupgrade{ + name = "Interdyne chem dispenser"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"xa" = ( +/obj/machinery/modular_shield/module/well{ + dir = 4 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"xc" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"xe" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"xh" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"xr" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/structure/marker_beacon/olive, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"xt" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"xy" = ( +/obj/effect/turf_decal/tile/dark/full, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/medbay) +"xB" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/railing/corner, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"xD" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 6 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"xE" = ( +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"xG" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"xH" = ( +/obj/effect/turf_decal/tile/dark_red{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"xR" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"xV" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"xW" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/structure/cable, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"xX" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"xZ" = ( +/obj/machinery/quantumpad{ + map_pad_id = "interdyne"; + map_pad_link_id = "ds2"; + name = "quantum pad to DS-2" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"yc" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/obj/item/bodybag, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"yi" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"yj" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"yt" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"yw" = ( +/obj/structure/bookcase/random/religion, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"yA" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/machinery/door/window/survival_pod{ + req_access = list("syndicate"); + pixel_y = -4 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/rack/shelf, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"yE" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/structure/railing, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/engine/hull/reinforced, +/area/lavaland/surface/outdoors) +"yF" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"yI" = ( +/obj/machinery/chem_heater/withbuffer{ + name = "interdyne reaction chamber"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/trimline/dark_red, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"yJ" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/smartfridge/food{ + color = "#adadcd"; + name = "Interdyne fridge"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"yM" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/effect/turf_decal/vg_decals/atmos/nitrogen, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"yN" = ( +/obj/effect/turf_decal/tile/dark/full, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/arrivals) +"yO" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/corner, +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"yS" = ( +/obj/structure/bookcase/random, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"yT" = ( +/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/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"yU" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"yW" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/shipping_container/interdyne, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"zd" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"zh" = ( +/obj/structure/rack, +/obj/item/construction/rcd/loaded, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/item/rcd_ammo, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"zm" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"zn" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"zq" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + 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/large, +/area/ruin/syndicate_lava_base/main) +"zr" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/railing, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/engine/hull/reinforced, +/area/lavaland/surface/outdoors) +"zv" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"zy" = ( +/obj/structure/curtain/bounty{ + color = "#7d7d7d" + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"zQ" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating/reinforced, +/area/lavaland/surface/outdoors) +"zV" = ( +/obj/item/flashlight{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/extinguisher{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/extinguisher{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/extinguisher{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"zY" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/box/white/corners, +/obj/effect/turf_decal/trimline/dark/filled/line, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"zZ" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Aj" = ( +/obj/structure/dresser{ + color = "#8d8d8d"; + name = "Dark wood Interdyne dresser"; + light_color = "#8d8d8d" + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"An" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Ao" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Ap" = ( +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Ar" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/reagent_containers/dropper{ + pixel_y = -4 + }, +/obj/item/storage/box/petridish{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/biopsy_tool{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"AJ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"AM" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"AN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"AQ" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/c/style_random, +/obj/structure/flora/tree/jungle/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"AT" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/structure/marker_beacon/olive, +/obj/machinery/computer/cryopod/interdyne/directional/west{ + pixel_x = -18 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"AY" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Ba" = ( +/obj/structure/sign/poster/contraband/c20r/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Bb" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/smartfridge/chemistry/preloaded{ + color = "#adadcd"; + name = "Interdyne smart chemical storage"; + light_color = "#adadcd"; + pixel_x = -3 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Bc" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"Bk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/hedge, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Bl" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/pump/off{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Bm" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Br" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Bt" = ( +/obj/structure/marker_beacon/olive, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/jungle/c/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Bu" = ( +/obj/structure/marker_beacon/burgundy, +/obj/machinery/door/airlock/vault{ + id_tag = "syndie_lavaland_vault"; + name = "Interdyne Vault" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/structure/cable, +/turf/open/floor/iron/recharge_floor, +/area/ruin/syndicate_lava_base/main) +"BE" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"BM" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"BO" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"BX" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"BY" = ( +/obj/machinery/power/rtg/advanced, +/obj/structure/cable, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/effect/decal/cleanable/glitter/pink, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"BZ" = ( +/obj/structure/lattice/catwalk/mining, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Cb" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/stripes/blue, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Cc" = ( +/obj/effect/turf_decal/siding/wood/corner{ + 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/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Ci" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/stripes/blue, +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Cl" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/obj/structure/drain, +/obj/machinery/shower/directional/west, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/box/white/corners, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Cn" = ( +/obj/structure/rack/shelf, +/obj/item/storage/toolbox/syndicate, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Co" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors) +"Cq" = ( +/obj/item/stack/sheet/plasteel/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Cu" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Cw" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/reagent_dispensers/wall/virusfood/directional/west, /obj/item/storage/box/beakers{ pixel_x = 2; pixel_y = 2 }, /obj/item/storage/box/syringes, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"HV" = ( -/obj/structure/railing, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"HX" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/vg_decals/atmos/oxygen{ - dir = 1 - }, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"HZ" = ( -/obj/machinery/monkey_recycler, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"Ig" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/rtg/advanced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"Ih" = ( -/obj/structure/sign/departments/medbay/alt/directional/east, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Ir" = ( -/obj/machinery/firealarm/directional/east{ - dir = 8 - }, -/obj/machinery/vending/hydronutrients{ - onstation = 0 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"It" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Iv" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance/external, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"IA" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/sleeper/syndie/fullupgrade{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth_corner, -/area/ruin/syndicate_lava_base/medbay) -"IC" = ( -/turf/open/floor/iron/checker, -/area/ruin/syndicate_lava_base/bar) -"IF" = ( -/obj/structure/table/glass, -/obj/item/storage/box/stockparts/deluxe{ - pixel_x = -6; - pixel_y = 11 - }, -/obj/item/storage/box/stockparts/deluxe{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/item/storage/box/beakers/bluespace, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"IH" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"IL" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/hydroponics/constructable, -/obj/machinery/door/window/survival_pod{ - dir = 1 - }, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"IO" = ( -/obj/machinery/door/airlock{ - name = "Library" - }, -/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/syndicate/general, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"IT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"IV" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Jb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/testlab) -"Jd" = ( -/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/ruin/syndicate_lava_base/cargo) -"Jg" = ( -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/door/airlock{ - name = "Barbers" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"Ji" = ( -/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, -/area/ruin/syndicate_lava_base/bar) -"Jm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/purple, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"Jp" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Jq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Js" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"Jt" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"JB" = ( -/turf/closed/wall/r_wall/syndicate, -/area/ruin/syndicate_lava_base/main) -"JC" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Bar" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"JN" = ( -/obj/structure/bed/double, -/obj/item/bedsheet/dorms_double, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"JR" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"JS" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"JT" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "interdynelibrary" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"JU" = ( -/obj/machinery/conveyor_switch/oneway{ - dir = 8; - id = "interdynedisp"; - name = "disposal conveyor" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"JV" = ( -/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/yjunction{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"JX" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Bay" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-cargo" - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Kd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/bookcase/random/nonfiction, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"Kh" = ( -/obj/structure/table/glass, -/obj/machinery/reagentgrinder{ - pixel_y = 6 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 5 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"Ko" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Kp" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Kq" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Ku" = ( -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/testlab) -"Kx" = ( -/obj/machinery/door/airlock/research{ - name = "Science Division" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-science" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Ky" = ( -/obj/machinery/light/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/turf/open/floor/circuit/telecomms, -/area/ruin/syndicate_lava_base/testlab) -"KA" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/obj/machinery/door/window/survival_pod{ - dir = 1 - }, -/obj/machinery/door/window/survival_pod{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/bar) -"KD" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"KG" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine/o2, -/area/ruin/syndicate_lava_base/engineering) -"KK" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/cargo) -"KL" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"KQ" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"KS" = ( -/obj/structure/filingcabinet, -/obj/item/folder/syndicate/mining, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/main) -"KX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"KY" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 4 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"La" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"Lb" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Ld" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/medbay) -"Le" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/turf/open/floor/iron/white/side, -/area/ruin/syndicate_lava_base/medbay) -"Lg" = ( -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"Li" = ( -/obj/machinery/computer/crew/syndie{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Ln" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Lq" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/engineering) -"Ls" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"Lw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"LC" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/sleeper/syndie/fullupgrade{ - dir = 4 - }, -/turf/open/floor/iron/smooth_corner{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/medbay) -"LH" = ( -/obj/structure/table, -/obj/machinery/button/door/directional/east{ - specialfunctions = 4; - normaldoorcontrol = 1; - name = "Dorm Bolt Control"; - id = "DyneBeta" - }, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"LL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"LN" = ( -/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, -/area/ruin/syndicate_lava_base/dormitories) -"LS" = ( -/obj/structure/table/glass, -/obj/item/book/random{ - pixel_y = 3 - }, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"LU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"LX" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Ml" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Mn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Mo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Mv" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"ME" = ( -/obj/machinery/autolathe/hacked, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"MJ" = ( -/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, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/bar) -"MK" = ( -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"MN" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"MO" = ( -/obj/effect/turf_decal/vg_decals/department/sci{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"MR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/airalarm/directional/east{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/engineering) -"MU" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"MX" = ( -/obj/machinery/chem_master/condimaster{ - name = "BrewMaster 3000" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/small, -/area/ruin/syndicate_lava_base/bar) -"MY" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/bar) -"Nc" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Nd" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/maintenance/external{ - name = "Morgue" - }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"Nf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Nh" = ( -/obj/structure/table/reinforced, -/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{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Nl" = ( -/obj/machinery/seed_extractor, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"Ns" = ( -/obj/machinery/vending/dorms{ - onstation = 0 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"NC" = ( -/obj/machinery/chem_dispenser/fullupgrade, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"NH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"NO" = ( -/obj/structure/chair/comfy/barber_chair{ - dir = 8 - }, -/obj/structure/mirror/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"NS" = ( -/obj/machinery/flasher/directional/south{ - pixel_x = -6; - id = "DyneBrigFlash" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"NT" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 1 - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"NX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"Od" = ( -/obj/machinery/syndicatebomb/self_destruct{ - anchored = 1 - }, -/obj/effect/turf_decal/stripes/red/box, -/turf/open/floor/iron/textured_large, -/area/ruin/syndicate_lava_base/main) -"Oi" = ( -/obj/machinery/light/directional/west, -/obj/machinery/firealarm/directional/west{ - dir = 4; - pixel_x = -28 - }, -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"Oo" = ( -/obj/structure/lattice/catwalk, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/engineering) -"Ow" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Oy" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/east, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"Oz" = ( -/obj/effect/turf_decal/stripes/corner{ - 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/ruin/syndicate_lava_base/cargo) -"OC" = ( -/obj/machinery/door/poddoor{ - id = "interdynecargo" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"OK" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"OM" = ( -/obj/effect/turf_decal/vg_decals/department/med{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"ON" = ( -/obj/machinery/door/airlock/mining{ - name = "Shaft Miner Dormitory Alpha"; - id_tag = "DyneAlpha" - }, -/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/syndicate/general, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"OR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/west{ - specialfunctions = 4; - id = "Dynbin1"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"OS" = ( -/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/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"OW" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/testlab) -"OX" = ( -/obj/structure/flora/bush/flowers_yw, -/obj/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/grass, -/area/ruin/syndicate_lava_base/medbay) -"Pb" = ( -/obj/item/storage/toolbox/syndicate, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"Pd" = ( -/obj/structure/table, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"Pf" = ( -/obj/machinery/light/directional/west, -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Pj" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"Pr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Ps" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"PC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/airalarm/directional/east{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"PG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/stone, -/area/ruin/syndicate_lava_base/bar) -"PM" = ( -/turf/open/floor/iron/edge{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/main) -"PS" = ( -/obj/structure/safe, -/obj/item/storage/box/syndie_kit/chameleon/ghostcafe{ - desc = "It's a box, for storing things."; - name = "chameleon kit" - }, -/obj/item/disk/ammo_workbench/advanced, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/main) -"PZ" = ( -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"Qa" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/machinery/computer/cryopod/interdyne/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Qc" = ( -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/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 = "Kitchen-Botany" - }, -/turf/open/floor/iron/dark/small, -/area/ruin/syndicate_lava_base/bar) -"Qg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/cargo) -"Qk" = ( -/obj/structure/table/glass, -/obj/item/clothing/glasses/science, -/obj/item/book/manual/wiki/chemistry{ - pixel_y = 8 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Qm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Qp" = ( -/obj/machinery/light/directional/north, -/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, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/cargo) -"Qt" = ( -/obj/machinery/stasis{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east{ - req_access = list("syndicate") - }, -/turf/open/floor/iron/smooth_corner{ - dir = 8 - }, -/area/ruin/syndicate_lava_base/medbay) -"Qw" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Qx" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/medbay) -"QJ" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Wing"; - req_access = list("syndicate") - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-medbay" - }, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/medbay) -"QN" = ( -/obj/machinery/smartfridge/drinks, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"QQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"QR" = ( -/obj/machinery/conveyor{ - dir = 5; - id = "interdynedisp" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"QS" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 6; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"QV" = ( -/obj/machinery/porta_turret/syndicate{ - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/bar) -"QW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"QY" = ( -/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 = 9 - }, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"QZ" = ( -/obj/structure/table, -/turf/open/floor/iron/smooth_large, -/area/ruin/syndicate_lava_base/cargo) -"Re" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/bed/double, -/obj/item/bedsheet/dorms_double, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Ro" = ( -/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 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Rq" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/siding/brown{ - dir = 5 - }, -/obj/structure/closet/crate, -/obj/item/storage/toolbox/electrical{ - pixel_y = 4 - }, -/obj/item/storage/toolbox/syndicate, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Rs" = ( -/obj/machinery/light/directional/east, -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Rt" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restroom"; - id_tag = "DyneWC" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Ru" = ( -/obj/structure/frame/machine{ - anchored = 1; - state = 2; - icon_state = "box_1" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"Rx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"RJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/button/door/directional/west{ - id = "interdynescience"; - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"RK" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"RN" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"RP" = ( -/obj/structure/table/optable, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"RT" = ( -/obj/machinery/biogenerator, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/small, -/area/ruin/syndicate_lava_base/bar) -"RV" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"RY" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/testlab) -"RZ" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"Sh" = ( -/obj/machinery/airalarm/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Sk" = ( -/obj/machinery/computer/operating, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Sn" = ( -/obj/machinery/suit_storage_unit/mining, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Sp" = ( -/obj/machinery/skill_station, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Sr" = ( -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Ss" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Sy" = ( +"CH" = ( +/turf/template_noop, +/area/template_noop) +"CM" = ( +/obj/structure/flora/rock/style_random, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"SC" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/dormitories) -"SE" = ( -/obj/machinery/door/poddoor{ - id = "interdynedorms" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/dormitories) -"SI" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/engine/n2, -/area/ruin/syndicate_lava_base/engineering) -"SU" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Bay" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "interdyne-cargo" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"Tb" = ( -/obj/machinery/firealarm/directional/south{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Tf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/cargo) -"Th" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"Tl" = ( -/obj/structure/sign/departments/science/directional/west, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"To" = ( -/obj/machinery/firealarm/directional/north{ - dir = 2 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Tq" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Tw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/camera/xray{ - c_tag = "Xenobio West"; - dir = 8; - network = list("fsci") - }, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Tx" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/bar) -"TJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/medbay) -"TV" = ( -/obj/effect/turf_decal/tile/bar{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar{ +"CR" = ( +/obj/effect/turf_decal/box/red/corners{ dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"TY" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Pharmacy"; - req_access = list("syndicate") - }, -/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/syndicate/general, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Ub" = ( -/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/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Ug" = ( -/obj/structure/railing, -/obj/effect/turf_decal/box/white, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"CS" = ( /obj/structure/rack/shelf, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/shovel, +/obj/item/pickaxe, +/obj/item/t_scanner/adv_mining_scanner/lesser, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/cargo) -"Ui" = ( -/obj/machinery/button/door/directional/north{ - id = "DyneBrig"; - normaldoorcontrol = 1; - name = "Brig Bolt Control"; - specialfunctions = 4; - req_access = list("syndicate") - }, -/obj/machinery/button/flasher{ - id = "DyneBrigFlash"; - pixel_x = 6; - pixel_y = 34 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Up" = ( -/obj/machinery/modular_computer/preset/curator{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"Uq" = ( -/obj/structure/bookcase/random/adult, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"Ut" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/smooth_edge, -/area/ruin/syndicate_lava_base/cargo) -"UB" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/tile/dark_red, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"UG" = ( -/turf/closed/wall/r_wall/syndicate, -/area/ruin/syndicate_lava_base/testlab) -"UI" = ( -/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, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"UO" = ( -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"UP" = ( -/obj/structure/chair/sofa/corner/maroon, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"UX" = ( -/obj/machinery/door/airlock/research{ - name = "Xenobiology Lab" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/dark/side, -/area/ruin/syndicate_lava_base/testlab) -"UZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/effect/spawner/random/trash/grime, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"Va" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 9; - faction = list("Syndicate","neutral") - }, -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"Vb" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/dormitories) -"Vd" = ( -/obj/structure/sign/departments/xenobio/directional/west, -/obj/structure/closet/crate, -/obj/item/clothing/neck/stethoscope, -/obj/item/choice_beacon/music, -/obj/item/choice_beacon/music, -/turf/open/floor/wood/large, -/area/ruin/syndicate_lava_base/dormitories) -"Vf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/tile, -/area/ruin/syndicate_lava_base/dormitories) -"Vh" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/rack, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/mask/gas/syndicate, -/turf/open/floor/iron/edge{ - dir = 4 - }, -/area/ruin/syndicate_lava_base/main) -"Vi" = ( -/obj/machinery/smartfridge/food, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"Vj" = ( -/obj/structure/lattice/catwalk, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/medbay) -"Vm" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/turf/open/misc/asteroid/basalt, -/area/ruin/syndicate_lava_base/cargo) -"Vo" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "interdynekitchen" - }, -/turf/open/floor/iron/kitchen, -/area/ruin/syndicate_lava_base/bar) -"Vt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Vv" = ( -/obj/machinery/stasis{ +"CT" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 8 }, -/turf/open/floor/iron/smooth_corner{ - dir = 1 +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 }, -/area/ruin/syndicate_lava_base/medbay) -"Vw" = ( -/obj/machinery/door/airlock/medical{ - name = "Medical Desk" - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 +/obj/machinery/door/airlock{ + name = "Cabin 2"; + id_tag = "Dynbin2" }, /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/syndicate/general, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"VI" = ( -/obj/machinery/firealarm/directional/east{ - dir = 8 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"VL" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"VM" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/turf/open/floor/wood, +/turf/open/floor/iron/dark/textured, /area/ruin/syndicate_lava_base/dormitories) -"VO" = ( -/obj/machinery/door/poddoor{ - id = "interdynemedbay" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"VY" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"Wa" = ( +"Dk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, +/obj/effect/turf_decal/tile/dark/full, /obj/structure/bed/double{ - dir = 1 + name = "Softest Interdyne bed"; + light_color = "#4d4d4d"; + color = "#5d5d5d" }, -/obj/item/bedsheet/dorms_double{ - dir = 1 - }, -/turf/open/floor/wood, +/obj/item/bedsheet/cosmos/double, +/turf/open/floor/iron/dark/textured, /area/ruin/syndicate_lava_base/dormitories) -"Wd" = ( -/obj/machinery/smartfridge/organ, -/obj/structure/railing, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Wk" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/engineering) -"Wm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Wq" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Wx" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/main) -"WB" = ( -/obj/machinery/griddle, -/turf/open/floor/iron/dark/smooth_large, +"Ds" = ( +/turf/open/floor/wood/large, /area/ruin/syndicate_lava_base/bar) -"WG" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, +"Dt" = ( +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/testlab) -"WM" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "interdynebarbers" - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"WN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/ruin/syndicate_lava_base/main) -"WQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"WU" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"WW" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/bar) -"WY" = ( -/obj/structure/table/glass, -/obj/item/storage/box/monkeycubes/syndicate{ - pixel_y = 5 - }, -/obj/item/storage/box/monkeycubes/syndicate{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/slime_extract/grey{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/slime_extract/grey, -/obj/item/slime_extract/grey{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"Xd" = ( -/obj/machinery/computer/pandemic, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"Xf" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Xl" = ( -/obj/machinery/light/directional/north, -/obj/structure/table/glass, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/clothing/glasses/hud/health, -/obj/item/reagent_containers/dropper{ - pixel_y = -6 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/virology) -"Xn" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/fur_dyer, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/medbay) -"Xo" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Xp" = ( -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Xs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"Xv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/painting/library{ - pixel_x = 32 - }, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Xx" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/door/airlock{ - name = "Library Backroom" - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"XD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, +"Du" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/arrivals) +"DD" = ( /obj/machinery/camera/xray{ c_tag = "Xenobio East"; dir = 4; @@ -5054,3390 +4428,6700 @@ /obj/machinery/atmospherics/components/unary/passive_vent{ dir = 1 }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, /turf/open/floor/engine, /area/ruin/syndicate_lava_base/testlab) -"XI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Cabin 3"; - id_tag = "Dynbin3" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"XJ" = ( -/obj/structure/table/glass, -/obj/machinery/firealarm/directional/west{ - dir = 4 - }, -/obj/machinery/reagentgrinder, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"XO" = ( -/obj/machinery/door/airlock{ - name = "Disposals" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"XQ" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/testlab) -"XR" = ( -/obj/structure/table/wood, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/cargo) -"XV" = ( -/obj/structure/chair/office/light{ - 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/ruin/syndicate_lava_base/testlab) -"XW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_corner, -/area/ruin/syndicate_lava_base/bar) -"XX" = ( -/obj/structure/sink/directional/west, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"Yb" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate, -/obj/machinery/light/directional/north, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"Ye" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/item/modular_computer/laptop/preset/syndicate, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/cargo) -"Yf" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/bed/maint, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/testlab) -"Yk" = ( -/obj/machinery/smartfridge/extract/preloaded, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"Yn" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine, -/area/ruin/syndicate_lava_base/testlab) -"Yo" = ( -/obj/item/storage/box/stockparts/deluxe, -/obj/structure/closet/crate, -/obj/item/storage/bag/trash, -/obj/item/mop, -/obj/item/reagent_containers/cup/bucket, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"Yp" = ( -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"Yu" = ( -/obj/machinery/processor/slime, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"Yv" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/medbay) -"Yz" = ( -/obj/item/disk/design_disk/limbs/ethereal{ - pixel_y = 2 - }, -/obj/item/disk/design_disk/limbs/felinid{ - pixel_y = 4 - }, -/obj/item/disk/design_disk/limbs/lizard{ - pixel_y = 6 - }, -/obj/item/disk/design_disk/limbs/plasmaman{ - pixel_y = 8 - }, -/obj/structure/table/reinforced, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/white, -/area/ruin/syndicate_lava_base/medbay) -"YD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/table, -/obj/item/toy/cards/deck/cas{ - pixel_y = 6 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/medbay) -"YE" = ( -/obj/machinery/door/airlock/mining{ - name = "Shaft Miner Dormitory Beta"; - id_tag = "DyneBeta" - }, -/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/syndicate/general, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/ruin/syndicate_lava_base/cargo) -"YF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/north, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/testlab) -"YJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/dormitories) -"YN" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/ruin/syndicate_lava_base/bar) -"YO" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/bar) -"YV" = ( -/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ +"DJ" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 8 }, -/obj/machinery/light/directional/east, -/turf/open/floor/wood, -/area/ruin/syndicate_lava_base/dormitories) -"YW" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"DK" = ( +/obj/structure/rack/shelf, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/gun/syringe/rapidsyringe, +/obj/item/gun/syringe/rapidsyringe, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"DM" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"DP" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/machinery/door/poddoor{ + id = "interdynegate"; + name = "Inderdyne Gate" + }, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"DS" = ( +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/item/storage/belt/military, +/obj/item/storage/belt/military, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/card/id/advanced/chameleon, +/obj/item/card/id/advanced/chameleon, +/obj/item/card/id/advanced/chameleon, +/obj/item/radio/headset/interdyne, +/obj/item/radio/headset/interdyne, +/obj/item/radio/headset/interdyne, +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/effect/turf_decal/bot_red, +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"DT" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynernd"; + name = "Interdyne Storm Shutters RnD" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/testlab) +"DU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/hedge, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"DW" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"DY" = ( +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/decal/remains/human, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating/reinforced, +/area/lavaland/surface/outdoors) +"Eb" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/box/beakers/bluespace, +/obj/item/storage/box/beakers/bluespace, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/purple, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynelabs"; + name = "Interdyne Storm Shutters Labs" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ec" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/machinery/mining_weather_monitor/directional/north{ + name = "Interdyne Weather Radar"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/red/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Ef" = ( +/obj/structure/tank_dispenser, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Eh" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/red, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"El" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Et" = ( +/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 = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"EA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"EE" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"EH" = ( +/obj/machinery/autolathe/hacked{ + color = "#adadcd"; + name = "Interdyne autolathe"; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"EI" = ( +/obj/machinery/modular_shield/module/charger{ + dir = 8 + }, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"EQ" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/blue/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"ER" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/flora/tree/jungle/small/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/marker_beacon/teal, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"EV" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Fb" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne"); + pixel_x = 10 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/structure/cable, +/obj/structure/marker_beacon/indigo, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, /obj/machinery/door/window/survival_pod{ - dir = 4; - req_access = list("syndicate") + dir = 1; + pixel_y = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/closet/secure_closet{ + icon_state = "qm"; + name = "deck offficer's locker"; + req_access = list("syndicate_leader") + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"Fc" = ( +/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 = 1 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Fd" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"Ff" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Fj" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/bed/double{ + name = "Softest Interdyne bed"; + light_color = "#4d4d4d"; + color = "#5d5d5d" + }, +/obj/item/bedsheet/cosmos/double, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"Fk" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/closet/secure_closet/ds2atmos{ + anchorable = 0; + anchored = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Fn" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"Fq" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"FG" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/item/choice_beacon/music, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"FO" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"FQ" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"FS" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"FZ" = ( +/obj/machinery/bookbinder, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"Gc" = ( +/obj/structure/frame/machine{ + anchored = 1; + state = 2; + icon_state = "box_1" + }, +/obj/item/circuitboard/machine/ore_silo, +/obj/structure/marker_beacon/burgundy, +/obj/structure/sign/flag/syndicate/directional/north, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Gf" = ( +/obj/machinery/vending/hydronutrients{ + onstation = 0 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Gj" = ( +/obj/machinery/light/directional/west{ + bulb_colour = "#2C3BFF"; + color = "#0012FF"; + light_color = "#0012FF" + }, +/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/large, +/area/ruin/syndicate_lava_base/main) +"Gr" = ( +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Gt" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Gw" = ( +/obj/machinery/door/window/survival_pod{ + req_access = list("syndicate"); + name = "Slime Euthanization Chamber" + }, +/turf/open/floor/circuit/telecomms, +/area/ruin/syndicate_lava_base/testlab) +"GB" = ( +/obj/machinery/chem_mass_spec, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"GE" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"GF" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/structure/sink/directional/south, +/obj/structure/drain, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"GG" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + 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/ruin/syndicate_lava_base/testlab) -"YY" = ( -/obj/machinery/limbgrower, -/turf/open/floor/iron/white, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"Za" = ( -/obj/structure/sign/departments/cargo/directional/north, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Zc" = ( -/obj/effect/turf_decal/tile/dark_blue{ +"GK" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/window/survival_pod{ + req_access = list("syndicate") + }, +/obj/machinery/shower/directional/west, +/obj/structure/drain/big, +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"GR" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne"); + pixel_x = 10 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"GT" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"GX" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/microscope, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Hd" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"He" = ( +/obj/structure/cable, +/obj/machinery/power/rtg/advanced, +/obj/structure/window/reinforced/plasma/spawner/directional/south, +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/obj/structure/window/reinforced/plasma/spawner/directional/north, +/obj/effect/decal/cleanable/glitter/pink, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"Hf" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Cabin 1"; + id_tag = "Dynbin1" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"Hh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + external_pressure_bound = 140; + name = "server vent"; + pressure_checks = 0; + dir = 8 + }, +/obj/structure/grille, +/turf/open/floor/circuit/telecomms, +/area/ruin/syndicate_lava_base/testlab) +"Hj" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/structure/closet/crate/freezer/sansufentanyl, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Hk" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Hn" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ho" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/structure/marker_beacon/teal, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"Hs" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"HD" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/reagentgrinder{ + pixel_y = 5; + pixel_x = -8 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"HE" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/engine/hull/reinforced, +/area/lavaland/surface/outdoors) +"HF" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"HH" = ( +/obj/machinery/washing_machine{ + name = "Interdyne washing machine"; + color = "#adadcd"; + pixel_y = 5; + light_color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/bedsheetbin{ + color = "#adadcd"; + pixel_y = 14; + pixel_x = -1 + }, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/obj/machinery/airalarm/directional/north{ + req_access = list("syndicate"); + pixel_y = 42 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"HM" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"HP" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/drain, +/obj/structure/marker_beacon/purple, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/medbay) +"HQ" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Ia" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/medbay) +"If" = ( +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/arrivals) +"Ii" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/structure/cable, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"In" = ( +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 4; + pixel_x = 8 + }, +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"It" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Iw" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"IB" = ( +/obj/effect/turf_decal/tile/dark_red{ + dir = 4 + }, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"ID" = ( +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"II" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/knife/kitchen, +/obj/item/storage/box/syringes{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/box/beakers/bluespace, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"IL" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/circuit/telecomms, +/area/ruin/syndicate_lava_base/testlab) +"IN" = ( +/obj/structure/drain, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/turf/open/floor/plating/reinforced, +/area/lavaland/surface/outdoors) +"IP" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"IR" = ( +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"Jb" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Jh" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"Jm" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/arrivals) +"Jn" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Jq" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Jt" = ( +/obj/structure/flora/ash/cap_shroom, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Jz" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/chair/sofa/corp/right, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"JB" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "syndie_lavaland_vault"; + name = "Vault Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -8; + pixel_y = 24; + req_access = list("syndicate"); + specialfunctions = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ dir = 4 }, /obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/mapping_helpers/apc/syndicate_access, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"JJ" = ( +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"JK" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/item/gun/energy/floragun, +/obj/item/geneshears, +/obj/item/secateurs, +/obj/item/shovel/spade, +/obj/item/hatchet, +/obj/item/cultivator, +/obj/item/plant_analyzer, +/obj/structure/rack/shelf, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"JL" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/machinery/monkey_recycler{ + name = "Interdyne monkey recycler"; + color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"JM" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/paper/fluff/ruins/interdyne/note_1{ + default_raw_text = "Welcome to Interdyne laboratory Developed by Wavefield Science and designed by Astra Farera E'luna Awiarera. This base was dropped like a meteorite from space and deployed at crater created by landing impact. An advanced laboratory has deployed departments, defence perimeter turrets and even external bridge. Complex also fitted with a forcefield generator, which with a tiny bit of care allows to sustain harsh environmental conditions and most of invasions. Have a nice day full of new discoveries."; + name = "Frozen Moonlight Interdyne"; + color = "#7D7D7D"; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"JS" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"JU" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"JV" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/testlab) +"JW" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Kd" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/cell_charger_multi{ + name = "Interdyne multi-cell charger"; + color = "#adadcd"; + pixel_y = 7; + light_color = "#adadcd" + }, +/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/cell/bluespace, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Kh" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/reinforced, +/area/lavaland/surface/outdoors) +"Kp" = ( +/turf/closed/wall/r_wall/syndicate/cruiser, +/area/ruin/syndicate_lava_base/testlab) +"Kt" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Kv" = ( +/obj/effect/turf_decal/tile/dark_red, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"Kw" = ( +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/servo/femto, +/obj/item/stock_parts/capacitor/quadratic, +/obj/item/stock_parts/micro_laser/quadultra, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"KA" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"KB" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/vending/boozeomat/syndicate_access{ + onstation = 0 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"KE" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/main) +"KG" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"KM" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/plumbing/growing_vat, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"KN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/marker_beacon/bronze, +/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/large, +/area/ruin/syndicate_lava_base/main) +"KQ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/curtain/bounty{ + color = "#7d7d7d" + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"KR" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"KZ" = ( +/obj/machinery/modular_shield/module/node{ + dir = 4 + }, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"Ld" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Lf" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/box/drinkingglasses{ + pixel_y = 10 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Lg" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Lp" = ( +/obj/machinery/modular_shield/module/relay, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Lq" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Lr" = ( +/obj/structure/railing, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"Lu" = ( +/obj/structure/marker_beacon/bronze, +/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/large, +/area/ruin/syndicate_lava_base/bar) +"Ly" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"LB" = ( +/obj/structure/toilet{ + dir = 8; + pixel_y = 6; + color = "#4d4d4d"; + name = "Interdyne Vacuum Toilet" + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/ruin/syndicate_lava_base/dormitories) +"LE" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 5; + faction = list("Syndicate","neutral") + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/camera/xray{ + pixel_x = 10; + name = "Inderdyne security camera"; + network = list("Interdyne"); + color = "#adadcd"; + pixel_y = 25 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/main) +"LQ" = ( +/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/large, +/area/ruin/syndicate_lava_base/main) +"LS" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/arrivals) +"LT" = ( +/obj/structure/flora/tree/jungle/small/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/marker_beacon/purple, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"LW" = ( +/obj/structure/hedge, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"LX" = ( +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 8 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"Md" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Mg" = ( +/obj/machinery/computer/scan_consolenew{ + dir = 8; + name = "Interdyne DNA Console"; + pixel_x = 4 + }, +/obj/structure/marker_beacon/olive, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Mh" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"Mj" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"Mo" = ( +/obj/item/reagent_containers/cup/glass/shaker{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/reagent_containers/cup/rag{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/table/wood/fancy/black, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Mp" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/processor{ + color = "#adadcd"; + name = "Interdyne food processor"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Mr" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/obj/item/kitchen/rollingpin, +/obj/item/storage/box/beakers/bluespace, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"MF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/hedge, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"MJ" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/marker_beacon/purple, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"ML" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"MN" = ( +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/drain, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"MO" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"MT" = ( +/obj/machinery/power/smes/magical{ + desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Produces power through an unstable bluespace pocket."; + name = "Interdyne power storage"; + output_level = 200000; + color = "#9d9ddd"; + light_color = "#9d9ddd" + }, +/obj/structure/marker_beacon/burgundy, +/obj/structure/cable, +/obj/effect/turf_decal/bot_blue, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"MX" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Na" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Nf" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Nq" = ( +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/structure/fans/tiny/forcefield, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Nr" = ( +/obj/effect/turf_decal/tile/dark/full, /obj/machinery/vending/syndichem{ onstation = 0 }, -/turf/open/floor/iron, +/obj/structure/marker_beacon/bronze, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne") + }, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"Zd" = ( +"Ns" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/blue, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Nv" = ( +/obj/structure/flora/ash/leaf_shroom, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"Nx" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"Ny" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/main) +"NA" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"NB" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"ND" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/comfy/brown{ + color = "#A46106"; + dir = 1 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"NH" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"NI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"NR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"NU" = ( +/obj/machinery/vending/wardrobe/syndie_wardrobe{ + onstation = 0 + }, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Oc" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Od" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate"); + anchored = 1 + }, +/obj/effect/turf_decal/bot_red, +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/medkit/fire{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/medkit/brute, +/obj/item/storage/medkit/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Of" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Oh" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/caution/red, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Ok" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/stack/sheet/mineral/plasma{ + amount = 15 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/reagentgrinder{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/structure/marker_beacon/purple, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Om" = ( +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/structure/marker_beacon/teal, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Ov" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/caution/red, +/obj/machinery/duct, +/obj/machinery/light/directional/south{ + light_color = "#5148A6" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ox" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/chair/sofa/corp, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"OB" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"OF" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"OO" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/reagentgrinder{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/item/food/tofu{ + pixel_y = -6 + }, +/obj/item/food/tofu, +/obj/item/food/tofu{ + pixel_y = 6 + }, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"OP" = ( +/obj/structure/marker_beacon/bronze, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"OQ" = ( +/obj/effect/turf_decal/box/blue/corners, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"OS" = ( +/obj/structure/rack/shelf, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/gun/energy/plasmacutter, +/obj/item/gun/energy/plasmacutter, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"OX" = ( +/obj/machinery/stasis{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/teal, +/obj/structure/curtain/bounty{ + color = "#7d7d7d"; + alpha = 180 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Pb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Pd" = ( +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Pe" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/rnd/production/protolathe/offstation{ + name = "Interdyne protolathe"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/testlab) -"Zg" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, +"Pf" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"Ph" = ( +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/railing/corner, +/turf/open/floor/plating/reinforced, +/area/lavaland/surface/outdoors) +"Pk" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/bag/xeno, +/obj/item/storage/box/syringes{ + pixel_x = 5; + pixel_y = 10 + }, +/obj/item/storage/backpack/duffelbag/syndie, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Pl" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/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_large, +/area/ruin/syndicate_lava_base/cargo) +"Pv" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/dormitories) +"Px" = ( +/obj/structure/rack, +/obj/item/knife/combat/survival, +/obj/item/flashlight/seclite, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/gun/energy/recharge/kinetic_accelerator, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Pz" = ( +/obj/machinery/modular_shield/module/node{ + dir = 8 + }, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"PA" = ( +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"PB" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/tree/jungle/small/style_random, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"PD" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"PE" = ( +/obj/machinery/disposal/bin{ + name = "External disposal unit" + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/box, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"PF" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"PG" = ( +/obj/machinery/sleeper/syndie/fullupgrade{ + dir = 4 + }, +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"PP" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/box/white/corners, +/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_large, +/area/ruin/syndicate_lava_base/cargo) +"PT" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/marker_beacon/purple, +/obj/structure/flora/tree/jungle/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"PV" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"PW" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"PX" = ( +/obj/machinery/modular_shield/module/relay, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/end, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"PY" = ( +/obj/machinery/vending/hydroseeds{ + onstation = 0 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/olive, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"PZ" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/structure/marker_beacon/burgundy, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"Qb" = ( +/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/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Qi" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Qj" = ( +/obj/machinery/modular_shield/module/charger{ + dir = 4 + }, +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/box/blue/corners{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"Qt" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"Qu" = ( +/obj/machinery/modular_shield/module/well{ + dir = 4 + }, +/obj/structure/marker_beacon/indigo, +/obj/effect/turf_decal/box/blue/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/blue/corners, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/main) +"Qx" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/medbay) +"Qy" = ( +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/plating/elevatorshaft, +/area/ruin/syndicate_lava_base/cargo) +"QD" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/marker_beacon/olive, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"QF" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"QP" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/seed_extractor{ + name = "Interdyne seed extractor"; + color = "#adadcd"; + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"QQ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"QZ" = ( +/obj/structure/marker_beacon/burgundy, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Ra" = ( +/turf/closed/wall/r_wall/syndicate/cruiser, +/area/ruin/syndicate_lava_base/bar) +"Rb" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/portables_connector, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Rd" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"Rf" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/railing/corner, +/turf/open/floor/plating/reinforced, +/area/lavaland/surface/outdoors) +"Rj" = ( +/obj/machinery/modular_shield/module/node{ + dir = 8 + }, +/obj/effect/decal/cleanable/glitter/blue, +/turf/open/floor/circuit, +/area/ruin/syndicate_lava_base/main) +"Rm" = ( +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/box/stockparts/deluxe{ + pixel_x = -6; + pixel_y = 11 + }, +/obj/item/storage/box/stockparts/deluxe{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/item/stack/cable_coil, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Rn" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/chem_master/condimaster{ + name = "Interdyne BrewMaster"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Ro" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/cargo) +"Rs" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/stripes/red/line{ + dir = 5 + }, +/obj/structure/ore_box, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Ru" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ry" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"RB" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"RD" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"RH" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/marker_beacon/bronze, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"RJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/mob/living/carbon/human/species/monkey{ + ai_controller = null; + faction = list("neutral","Syndicate") + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"RK" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/chem_dispenser/drinks/fullupgrade, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"RM" = ( +/obj/effect/turf_decal/tile/dark/full, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/bar) +"RQ" = ( +/obj/machinery/vending/dinnerware{ + onstation = 0 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/indigo, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"RU" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Sc" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/box/beakers/bluespace, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Sf" = ( +/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/large, +/area/ruin/syndicate_lava_base/bar) +"Sg" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Si" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/syndicate_lava_base/bar) +"Sl" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynemed"; + name = "Interdyne Storm Shutters Med" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/medbay) +"So" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/backpack/duffelbag/synth_treatment_kit/trauma/advanced/unzipped, +/obj/item/healthanalyzer/advanced, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Sq" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"Sr" = ( +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/effect/turf_decal/box/red/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"Sw" = ( +/obj/structure/table/wood/fancy/black, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Sz" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/button/door/directional/west{ + base_icon_state = "tram"; + icon_state = "tram"; + req_access = list("syndicate"); + id = "interdynekitchen"; + name = "Interdyne Storm Shutters Kitchen" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"SC" = ( +/obj/structure/marker_beacon/purple, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"SE" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/railing{ + dir = 9 + }, +/obj/machinery/button/door/directional/south{ + base_icon_state = "tram"; + name = "Interdyne Gate"; + icon_state = "tram"; + id = "interdynegateout"; + light_color = "#22CCFF"; + req_access = list("syndicate"); + pixel_x = 7; + pixel_y = -20 + }, +/turf/open/floor/engine/hull/reinforced, +/area/ruin/syndicate_lava_base/cargo) +"SG" = ( +/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/structure/cable, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"SH" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/door/window/survival_pod{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"SL" = ( +/obj/structure/chair/stool/bar, +/obj/effect/turf_decal/siding/wood, +/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/large, +/area/ruin/syndicate_lava_base/bar) +"SR" = ( +/obj/effect/turf_decal/arrows/red, +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"SZ" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/marker_beacon/burgundy, +/obj/item/storage/part_replacer{ + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/storage/toolbox/syndicate, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Tf" = ( +/obj/structure/chair/comfy/brown{ + color = "#A46106"; + dir = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Tk" = ( +/obj/structure/marker_beacon/burgundy, +/obj/structure/sign/flag/syndicate/directional/north, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/ammo_workbench, +/obj/item/disk/ammo_workbench/advanced, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Tl" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Tm" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/chem_dispenser/mutagensaltpeter{ + color = "#adadcd"; + name = "Interdyne botanical chemical dispenser"; + pixel_x = -4; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Tp" = ( +/obj/machinery/cryo_cell, +/obj/structure/marker_beacon/teal, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"TC" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/structure/chair/sofa/corp, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"TD" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"TF" = ( +/obj/machinery/barsign/all_access, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"TJ" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"TO" = ( +/obj/structure/hedge, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"TS" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"TT" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Ub" = ( +/obj/structure/fans/tiny, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/machinery/duct, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Ug" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/main) +"Ui" = ( +/obj/machinery/dna_scannernew, +/obj/structure/drain, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Uw" = ( +/obj/structure/bookcase/random, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"UA" = ( +/obj/machinery/vending/autodrobe{ + onstation = 0 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/dormitories) +"UB" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/module_duplicator{ + name = "Interdyne module duplicator"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"UD" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"UE" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"UF" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"UN" = ( +/obj/structure/marker_beacon/teal, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/arrows/blue, +/obj/effect/turf_decal/arrows/blue{ + dir = 1 + }, +/obj/structure/fans/tiny/forcefield, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"UO" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 10; + faction = list("Syndicate","neutral") + }, +/obj/structure/marker_beacon/burgundy, +/obj/machinery/camera/xray{ + pixel_x = 10; + name = "Inderdyne security camera"; + network = list("Interdyne"); + color = "#adadcd"; + pixel_y = 25 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/main) +"UU" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + name = "Interdyne Cryo freezer"; + dir = 6; + initialize_directions = 6; + color = "#adadcd" + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/reagent_containers/cup/beaker/cryoxadone{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/beaker/cryoxadone{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/pill_bottle/mannitol, +/obj/item/reagent_containers/dropper, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"UZ" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Vc" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/chair/comfy/brown{ + color = "#A46106"; + dir = 4 + }, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"Ve" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/marker_beacon/teal, +/obj/structure/flora/tree/jungle/small/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"Vi" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Vj" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/griddle{ + color = "#9d9ddd"; + name = "Interdyne griddle"; + light_color = "#9d9ddd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Vl" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/bed/pillow_large, +/obj/structure/marker_beacon/purple, +/turf/open/floor/carpet/red, +/area/ruin/syndicate_lava_base/bar) +"Vm" = ( +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/marker_beacon/bronze, +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Vn" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/computer/camera_advanced{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Vx" = ( +/obj/effect/turf_decal/trimline/dark/filled/end, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"Vz" = ( +/obj/machinery/biogenerator, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"VH" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/clothing/glasses/science, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"VN" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"VP" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/medbay) +"VS" = ( +/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/large, +/area/ruin/syndicate_lava_base/main) +"VT" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"VU" = ( +/obj/machinery/camera/xray{ + c_tag = "Xenobio West"; + dir = 8; + network = list("fsci") + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"VY" = ( +/obj/structure/table/reinforced/plastitaniumglass, /obj/item/paper_bin{ pixel_y = 4 }, /obj/item/pen{ pixel_y = 4 }, -/turf/open/floor/iron/white/side, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/medbay) -"Zn" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - name = "euthanization chamber freezer"; +"VZ" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"Wc" = ( +/obj/structure/marker_beacon/bronze, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ + pixel_y = -4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Wf" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Wu" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/bronze, +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Wx" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ + chamber_id = "interdyneserver"; + dir = 1; + external_pressure_bound = 120; + name = "server vent" + }, +/turf/open/floor/circuit/telecomms, +/area/ruin/syndicate_lava_base/testlab) +"Wy" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/machinery/stasis{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/structure/marker_beacon/teal, +/obj/structure/curtain/bounty{ + color = "#7d7d7d"; + alpha = 180 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"WC" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"WG" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"WJ" = ( +/obj/effect/turf_decal/caution/red, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/arrows/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"WL" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 9 + }, +/obj/structure/ore_box, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"WM" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/box/monkeycubes{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"WR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/closet/cabinet{ + name = "Dark wood Interdyne closet"; + color = "#8d8d8d"; + light_color = "#8d8d8d" + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"WS" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/tree/jungle/style_random, +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"WW" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/door/window/survival_pod{ + dir = 8; + req_access = list("syndicate"); + pixel_x = -4 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/bar) +"WX" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"WY" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/structure/marker_beacon/bronze, +/obj/machinery/camera/xray/directional/north{ + color = "#adadcd"; + name = "Inderdyne security camera"; + network = list("Interdyne"); + pixel_x = 10 + }, +/obj/machinery/deepfryer{ + color = "#adadcd"; + name = "Interdyne deep fryer"; + light_color = "#adadcd" + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Xa" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/small, +/area/ruin/syndicate_lava_base/dormitories) +"Xd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Xf" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/marker_beacon/burgundy, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/red/corners, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"Xg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Xh" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/machinery/holopad/secure{ + pixel_x = -5; + name = "Interdyne holopad"; + pixel_y = 5 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Xm" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/storage/toolbox/electrical, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Xr" = ( +/obj/machinery/computer/order_console/mining/interdyne, +/obj/effect/turf_decal/tile/dark/full, +/obj/effect/turf_decal/stripes/blue/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"Xs" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/volume_pump{ + dir = 1 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"Xv" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/tile/dark/full, +/obj/item/paper_bin{ + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Xw" = ( +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndicate_lava_base/main) +"Xx" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"Xy" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/north{ + pixel_y = 4 + }, +/obj/effect/turf_decal/box/red/corners, +/obj/effect/turf_decal/box/red/corners{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/end{ + dir = 1 + }, +/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/shaftminer, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark, +/area/ruin/syndicate_lava_base/arrivals) +"Xz" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"XD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored{ + chamber_id = "interdyneo2"; + dir = 1 + }, +/turf/open/floor/engine/o2, +/area/ruin/syndicate_lava_base/main) +"XF" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"XI" = ( +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"XK" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"XL" = ( +/obj/machinery/limbgrower/fullupgrade, +/obj/effect/turf_decal/tile/dark/full, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"XM" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/blue{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"XP" = ( +/obj/machinery/light/directional/north{ + bulb_colour = "#AC3CFF"; + color = "#A700FF"; + light_color = "#A700FF" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"XU" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/syndicate_lava_base/medbay) +"Yi" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/bar) +"Yo" = ( +/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/ruin/syndicate_lava_base/testlab) +"Yv" = ( +/obj/effect/turf_decal/tile/dark/full, +/obj/machinery/rnd/production/circuit_imprinter/offstation{ + name = "Interdyne circuit imprinter"; + color = "#adadcd"; + light_color = "#adadcd" + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Yw" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/stripes/red/corner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/cargo) +"YC" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"YE" = ( +/obj/structure/curtain/cloth/fancy, +/obj/structure/fake_stairs/wood, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"YF" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/dormitories) +"YS" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "interdynexeno"; + name = "Interdyne Storm Shutters Xeno" + }, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/testlab) +"YT" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"YZ" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/main) +"Ze" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/stripes/blue, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Zf" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/duct, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Zg" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/chair/sofa/corp/left, +/turf/open/floor/wood/large, +/area/ruin/syndicate_lava_base/bar) +"Zo" = ( +/obj/structure/sign/poster/contraband/syndicate_medical/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"Zr" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner, +/obj/effect/turf_decal/trimline/dark/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"Zu" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/testlab) +"Zy" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ + pixel_x = -4 + }, +/turf/open/floor/engine, +/area/ruin/syndicate_lava_base/testlab) +"Zz" = ( +/obj/structure/marker_beacon/teal, +/obj/structure/fans/tiny/forcefield, +/obj/effect/decal/cleanable/glitter/blue, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ + pixel_x = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"ZB" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/ruin/syndicate_lava_base/main) +"ZD" = ( +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/main) +"ZJ" = ( +/obj/effect/turf_decal/trimline/dark/filled/end, +/obj/item/mop, +/obj/structure/rack, +/obj/item/reagent_containers/cup/bucket, +/obj/item/soap/syndie, +/obj/structure/marker_beacon/bronze, +/turf/open/floor/iron/dark/textured, +/area/ruin/syndicate_lava_base/bar) +"ZQ" = ( +/obj/effect/turf_decal/stripes/blue{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/blue, +/turf/open/floor/iron/dark/textured_large, +/area/ruin/syndicate_lava_base/medbay) +"ZS" = ( +/obj/machinery/atmospherics/components/binary/volume_pump{ dir = 4; - initialize_directions = 4 + name = "BZ Pump" + }, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/effect/turf_decal/trimline/dark/filled/line, +/obj/effect/turf_decal/trimline/dark/filled/line{ + dir = 1 }, /turf/open/floor/iron/dark, /area/ruin/syndicate_lava_base/testlab) -"Zo" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Zq" = ( -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"Zr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/medbay) -"Zy" = ( -/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, -/turf/open/floor/catwalk_floor/iron_dark, -/area/ruin/syndicate_lava_base/cargo) -"Zz" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/cargo) -"ZA" = ( -/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/ruin/syndicate_lava_base/main) -"ZC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/table, -/obj/item/toy/cards/deck/cas/black{ - pixel_x = 3; - pixel_y = 11 - }, -/turf/open/floor/plating/lavaland_atmos, -/area/ruin/syndicate_lava_base/medbay) -"ZG" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating, -/area/ruin/syndicate_lava_base/engineering) -"ZH" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +"ZT" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ZU" = ( +/obj/effect/turf_decal/trimline/dark/filled/corner{ dir = 4 }, -/turf/open/floor/iron, -/area/ruin/syndicate_lava_base/main) -"ZO" = ( -/obj/machinery/door/airlock/vault{ - id_tag = "syndie_lavaland_vault" +/obj/effect/turf_decal/box/blue/corners{ + dir = 8 }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/iron/textured_half, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/dark/filled/corner, +/turf/open/floor/iron/dark/textured_large, /area/ruin/syndicate_lava_base/main) -"ZS" = ( -/obj/machinery/light/directional/north, -/obj/machinery/deepfryer, -/turf/open/floor/iron/dark/smooth_large, -/area/ruin/syndicate_lava_base/bar) -"ZW" = ( -/obj/structure/lattice/catwalk, -/turf/open/lava/smooth/lava_land_surface, -/area/ruin/syndicate_lava_base/cargo) "ZX" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/ruin/syndicate_lava_base/medbay) +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating/reinforced, +/area/ruin/syndicate_lava_base/testlab) (1,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH "} (2,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -aa -aa -aa -aa -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +ZT +BO +BO +fU +Co +Co +hY +ZT +fU +Co +Co +Co +Jt +fU +ZT +Co +Co +Co +Co +Co +Co +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH "} (3,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -ag -ag -ag -ag -ag -aa -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Co +Co +Co +BO +ZT +Nv +Co +Co +fU +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +BO +Co +Co +Co +Co +Co +Co +Co +Co +CH +CH +CH +CH +CH +CH +CH +CH +CH "} (4,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -ag -ag -ag -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Co +Co +Co +Co +BO +fU +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +fU +cL +BO +Co +Co +Co +Co +Co +Co +CH +CH +CH +CH +CH +CH "} (5,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ag -ag -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -OW -OW -OW -OW -OW -OW -OW -OW -kS -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -aa +CH +CH +CH +CH +CH +Co +Co +Co +Co +Co +Co +BO +cL +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +BO +Co +Co +Co +Co +Co +Co +CH +CH +CH +CH "} (6,1,1) = {" -aa -aa -aa -aa -ag -aa -aa -aa -ag -ag -ag -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -OW -OW -HA -HA -HA -OW -OW -Yk -Yu -qU -Tw -qz -cr -no -OW -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -aa -aa +CH +CH +CH +CH +Co +Co +Co +Co +Co +Co +BO +BO +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +fU +Jt +BO +Co +Co +Co +Co +CH +CH +CH "} (7,1,1) = {" -aa -aa -aa -ag -ag -ag -ag -ag -ag -ag -ab -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -OW -FX -IF -dG -sb -RJ -OW -YF -XV -WY -Ml -qT -WG -Dt -OW -UG -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -aa +CH +CH +CH +Co +Co +Co +Co +Co +eO +BO +BO +fU +BO +BO +eO +ZT +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +lx +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +UO +eO +eO +eO +BO +ZT +eO +eO +eO +eO +eO +eO +eO +Co +Co +Co +CH +CH +CH "} (8,1,1) = {" -aa -aa -ag -ag -ab -ag -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -HA -IH -IH -IH -It -dZ -OW -YW -fv -Kh -ji -ch -Jt -Ow -OW -UG -UG -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -aa -aa +CH +CH +Co +Co +ZT +BO +eO +eO +eO +BO +BO +BO +ZT +eO +eO +eO +eO +eO +ZT +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +BO +ZT +ZT +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +fU +hY +Co +Co +CH +CH "} (9,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -HA -XQ -Ru -ME -RY -Pb -OW -Zd -Ku -HZ -Ml -qT -WG -Yn -OW -AK -UG -UG -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -aa +CH +Co +Co +eO +BO +eO +eO +eO +eO +eO +BO +eO +eO +eO +eO +eO +eO +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +eC +JV +JV +YS +YS +YS +YS +JV +kg +kg +Du +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +BO +BO +Co +Co +CH "} (10,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -OW -Ho -qX -Jb -pk -it -UX -Zd -Ku -Fx -ji -ch -Jt -Ow -OW -Yf -AK -UG -UG -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -aa +CH +Co +eO +eO +eO +eO +eO +ZT +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +eO +eO +eO +eO +eO +eO +eO +eC +JV +JV +mi +HD +VU +Qt +IR +dW +JV +yN +AT +yN +eg +Si +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +BO +Co +CH "} (11,1,1) = {" -aa -ag -ag -ab -ab -Va -Zz -Zz -Zz -Zz -Zz -Zz -Zz -Zz -Zz -Zz -Zz -KQ -ab -ab -ab -ab -ab -ab -ab -HA -Ru -Ru -Df -RY -wY -OW -Zn -Do -ex -Ml -qT -WG -Yn -Vb -Vb -Vb -Vb -Vb -SE -SE -Vb -Vb -Vb -Vb -KQ -ab -ab -ab -ab -ag -ag +CH +Co +eO +ku +vT +vT +HQ +HQ +vT +Nx +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +BO +ZT +lV +lV +JV +JV +ft +zd +bA +jv +Qt +IR +qM +Kp +hK +JS +If +Ra +eg +eg +Si +ZT +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +Co +CH "} (12,1,1) = {" -aa -ag -ag -ab -ab -Zz -as -bm -mb -Zz -Fa +CH Co -QZ -vM -QZ -Co -Fa -Zz -ab -ab -ab -ab -ab -ab -ab -HA -Kq -Kq -KL -cv -zj -OW -Ky -BS -AW -UB -KY -KY -et -Vb +eO +zn +uH +HE +pu +HE +uH +mo +eO +BO +eO +eO +eO +eO +eO +lx +eO +eO +BO +DT +DT +Vn +gd +uj +JV +Mp +jl +Pk +Zy +hx na -IT -OR -wb -Fz -Xs -xs -kg -IT -Wa -Vb -ab -ab -ab -ab -ag -ag +na +JV +Fb +Jm +yA +eg +Gf +PY +eg +eg +hV +ZT +eO +eO +UO +eO +eO +eO +eO +eO +eO +BO +Co +CH "} (13,1,1) = {" -aa -ag -ag -ab -ab -Zz -aw -br -br -Zz -Ut -Jd -FA -Vm -iw -Jd -kC -Zz -ab -ab -ab -ab -ab -ab -ab -OW -Mv -Hz -LL -CU -uE -OW -Fq -oA -bG -XD -aQ -aQ -AJ -Vb -nq -YV -Kp -Vb -Fz -JS -Vb -Kp -YV -nq -Vb -ab -ab -ab -ab -ag -ag +Co +Co +eO +zn +vj +vj +pu +pu +pu +mo +eO +BO +ZT +eO +eO +eO +eO +eO +eO +eO +DT +Kd +Xv +Xh +uk +OF +UZ +OF +xR +JL +jv +Qt +IR +IR +JV +Xf +Bc +eh +eg +GF +YC +QP +Tm +yJ +hV +eO +eO +eO +eO +eO +eO +BO +eO +eO +fU +Co +CH "} (14,1,1) = {" -aa -ag -ag -ab -ab -Zz -cP -zS -Gc -Zz -JN -gs -wJ -hq -LH -gs -JN -Zz -ab -ab -ab -ab -ab -qc -qt -OW -OW -Kx -zw -Kx -OW -OW -OW -OW -OW -OW -OW -OW -OW -Vb -Vb -Vb -Vb -Vb -yb -JS -Vb -Vb -Vb -Vb -Vb -ab -ab -ab -ab -ag -ag +Co +Co +eO +yt +HE +nr +pu +nr +HE +te +ZT +BO +eO +eO +eO +eO +eO +eO +eO +DT +Qi +xh +SC +no +Yo +cc +io +RD +vn +NA +Zy +hx +na +na +JV +oT +Jm +it +eg +kO +Pf +db +Fd +jX +Yi +hV +eO +eO +eO +eO +ZT +BO +eO +eO +eO +Co +Co "} (15,1,1) = {" -ag -ag -ab -ab -ab -Zz -uy -Zz -Zz -Zz -Zz -ON -Zz -Zz -Zz -YE -Zz -Zz -ab -ab -ab -ab -ab -wB -AC -BH -HA -Mv -LX -Mv -JT -Vd -PZ -CK -Vb -wR -xm -Em -eK -Vb -nq -RN -Vb -wS -CB -JS -HN -Vb -oE -nq -Vb -ab -ab -ab -ab -ag -ag +Co +Co +eO +yt +pu +pu +pu +pu +BZ +te +hY +BO +eO +eO +eO +eO +eO +eO +DT +qe +Tl +Yv +Pe +bn +cc +az +JV +ne +uw +es +jv +Qt +IR +IR +JV +ut +Bc +Sr +eg +sm +Fn +aI +ie +Mr +dn +jz +hV +eO +eO +eO +BO +ZT +eO +eO +eO +Co +Co "} (16,1,1) = {" -ag -ag -ab -ab -ab -af -cP -bF -ey -Zz -nt -Ac -xN -hH -nt -Ac -CR -Zz -ab -ab -ab -ab -ab -wB -AC -BJ -HA -Mv -Mo -Mv -JT -RV -PZ -PZ -wL -VM -VM -Xp -Sp -Vb -Yb -IT -Vb -sj -CB -JS -de -Vb -Ps -Lb -Vb -ab -ab -ab -ab -ag -ag +Co +eO +eO +oh +HE +nr +pu +nr +HE +te +ZT +eO +eO +eO +eO +eO +eO +DT +Qi +Gr +EV +nG +nG +no +QQ +DK +JV +IL +Wx +ZS +Kv +dG +dG +IB +JV +oT +Jm +hc +eg +eH +sl +JK +kL +MN +BM +nE +ru +hV +eO +eO +BO +eO +eO +eO +eO +BO +Co "} (17,1,1) = {" -ag -ag -ab -ab -ab -af -aG -XR -cP -dA -Ac -Ac -Ac -Ac -Ac -Ac -lS -Zz -ab -ab -ab -ab -ab -wB -AC -BQ -HA -Mv -Mo -Mv -JT -FJ -PZ -jp -Vb -fF -df -Xv -Ss -Vb -vH +Co +eO +eO +oh +pu +BZ +pu +BZ +BZ +te +eO +eO +eO +eO +eO +eO +eO +DT +jG +xt +EH +xE +CR +bn +QQ +mr +JV +Hh +Gw qE -Vb -bW -CB -JS -Vb -Vb -HF -Re -Vb -ab -ab -ab -ab -ag -ag +DD +uJ +uJ +xH +JV +Xy +LS +PZ +eg +sm +Fn +aI +Vj +Ff +rm +hh +en +eg +eO +eO +eO +eO +eO +eO +Nv +ZT +Co "} (18,1,1) = {" -ag -ag -ab -ab -ab -af -aR -cP -eA -Zz -kV -Ac -gR -hN -iA -iO -lX -Zz -ab -ab -ab -ab -ab -wB -AC -BZ -HA -Mv -MK -Mv -JT -PZ -jx -Up -Vb -Vb -Vb -Vb -IO -Vb -Vb -XI -Vb -wx -CB -JS -Qa -Vb -Ae -Vb -Vb -ab -ab -ab -ab -ag -ag +Co +Co +eO +oh +HE +nr +pu +nr +HE +Lr +eO +eO +eO +eO +eO +eO +DT +bx +Ox +Vi +lR +PW +Hs +kp +QQ +JV +JV +JV +JV +JV +ZX +ZX +ZX +ZX +JV +rI +Ho +In +eg +WW +VZ +ry +XF +QF +Br +JJ +qD +eg +Si +eO +eO +eO +eO +eO +BO +Co +Co "} (19,1,1) = {" -ag -ag -ab -ab -ab -Zz -Zz +Co +Co +eO +oh +BZ +BZ +BZ +pu +pu +Lr +eO +eO +eO +eO +eO +eO +DT +JM +TC +Sc +lr +Rm +Dt +bn +Ba +JV +vb +gU +AQ +Jq +DU +KG +yU +Xg +nH bz -Zz -Zz -Zz -pq -Zz -Zz -Zz -Zz -Zz -Zz -ab -ab -ab -ab -ab -Wx -Wx -Ci -OW -Kx -zw -Kx -OW -Xx -Wx -Wx -Vb -Uq -oH -sx -yy -vj -Xs -Xs -JS -JS -CB -JS -JS +Et +iP +iP jP -Xs -Ns -SE -ab -ab -ab -ag -ag -aa +jP +lA +Vz +eg +WY +mF +kD +Sz +eg +eO +eO +eO +eO +eO +eO +Co +Co "} (20,1,1) = {" -aa -ag -ag -ab -ab -Zz -bc -bL -cn -Zz -Sn -qa -gS -vX -iH -bY -Zz -Zz -KK -KK -KK -KK -Zz -JB -Zq -Zq -Zq -Zq -MO -Zq -Tl -Zq -ZH -JB -Wx -dF -fO -fO -zP -Vb -so -da -pD -UI -UI -Ub -Ub -LN -Rx -fN -SE -ab -ab -ab -ag -ag -aa +Co +eO +eO +oh +uH +HE +pu +HE +uH +Lr +eO +eO +eO +eO +eO +eC +JV +UB +ee +TS +Zu +Lg +zm +An +Of +JV +iL +It +ZB +tx +cw +LQ +LQ +uR +Qb +Fc +OP +SG +LQ +uX +dd +dd +Gj +sS +RM +Wu +aX +XI +eg +Si +eO +eO +eO +eO +eO +Co +Co "} (21,1,1) = {" -aa -ag -ag -ab -ab -Zz -bl -bV -cC -Zz -qb -qa -vZ -vZ -HV -Qw -Ye -Zz -ZW -ZW -ZW -ZW -Zz -Wm -lA -Ao -Ao -nZ -QY -WN -ZA -ZA -ZA -An -Wx -an -LS -Vf -Kd -Vb -lq -YJ -JS -JS -JS -JS -JS -zl -zu -JS -SE -ab -ab -ag -ag -aa -aa +Co +fU +eO +bX +KR +EE +xB +EE +EE +rW +eO +eO +eO +eO +eO +JV +JV +JV +JV +JV +JV +pt +dD +bn +rk +Nq +tx +KN +Qb +dR +Oc +Bt +PT +bS +El +El +kU +lJ +RH +jx +rz +YZ +kc +dd +sS +eg +RQ +rP +ZJ +eg +eO +eO +UO +eO +eO +fU +Co "} (22,1,1) = {" -aa -ag -ag -ab -ab -Zz -Zz -Zz -Zz -Zz -eL -qa -vZ -hQ -vZ -Qw -mp -Zz -ni -ib -ni -nA -Iv -Zq -nh -Zq -HI -VI -Nc -Zq -Zq -Zq -ZA -Zq -Wx -UP -MU -Lg -ik -Vb -wc -EZ -oi -SC -SC -SC -Vb -GB -Nh -lf -Vb -ab -ab -ab -ag -ag -aa +Co +BO +eO +BO +ZT +eO +pN +eO +eO +eO +eO +eO +eO +eO +cZ +vm +vm +vJ +zv +uu +cZ +JV +JV +hk +qR +ec +AN +vR +El +vF +lJ +Ii +Ii +Ii +Ii +Wf +df +lh +pq +pq +pq +eR +YZ +dd +dd +Si +eg +zy +eg +eg +Si +eO +eO +eO +eO +BO +Co "} (23,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -Sy -Zz -fj -qa -gU -wi +Co +cL +eO +ZT +eO +eO +pN +eO +eO +eO +LE +eO +eO +cZ +vm +vm +FQ +yO +HF +GE +PA +cd +bp +Sg +Pl +Om +bS +lJ +ui +ZB +Ii +IP +JU +nz +zZ +WX +sh +fP +NI Ug -Qw -Rq -Zz -OC -OC -OC -OC -Zz -Za -nh -Zq -Wx -Wx -Wx -Wx -Wx -mn -yG -Zo -Tx -Tx -Tx -Tx -Tx -Tx -To -QQ -wo -Cd -Pd -YN -Vi -Ko -Ji -DQ -Tx -ab -ab -ab -ab -ag -ag +lq +pq +LW +YZ +Lu +Sf +DJ +TD +kr +Si +eg +eO +eO +eO +eO +Co +Co "} (24,1,1) = {" -aa -aa -ag -ag -ab -ab -ab -ab -Sy -Zz -fq -Oz -vZ -wq -HV -Qw -Sr -JX -Sr -Sr -Sr -Sr -SU -Zq -fX -Zq -Wx -HL -Vh -FC -Wx -qj -WN -Zq -qs -hR -WW -WW -WW -qs -WW -Cg -tS -XW -rQ -un -bS -WW -RK -zG -Tx -ab -ab -ab -ab -ag -ag +Co +CM +eO +eO +eO +eO +pN +eO +eO +eO +eO +eO +eO +vm +vm +vm +vm +lD +gy +DS +zh +Cq +kP +Pl +PP +vm +gU +vQ +eb +Ii +kB +Zr +xa +Qu +Qj +ny +ZU +MX +pG +Xs +WC +pq +ER +Bk +Ds +yT +wV +mF +Kt +yJ +kY +eO +eO +eO +eO +BO +Co "} (25,1,1) = {" -aa -aa -ag -ag -ab -ab -ab -Sy -dl -Zz -fH -gu -rf -wy -Aw -jh -Ro -mG -Qp -Zy -Zy -oW -mG -xP -Fi -An -Wx -if -Od -PM -ZO -Zq -xY -Ft -DU -aM -MJ -MJ -yA -DU -dd -gf -wo -xr -nT -Dk -DJ -WW -TV -vK -Tx -ab -ab -ab -ab -ag -ag +Co +BO +ZT +eO +zr +eO +pN +eO +yE +eO +eO +eO +SE +vm +pc +vA +vm +bH +Rs +eS +Cn +xD +Lq +zY +qr +vm +pq +pq +pq +sS +XK +hi +KZ +oN +bk +by +rw +of +lI +Wc +nh +pq +eg +jn +Ds +SL +FG +RK +Xx +to +kY +ZT +eO +eO +eO +ZT +Co "} (26,1,1) = {" -aa -aa -aa -ag -ag -ab -ab -NT -Zz -Zz -sK -rh -rh -wC -rh -jB -Tf -JX -Sr -Sr -Sr -Sr -SU -Zq -fX -gd -Wx -KS -ct -PS -Wx -BW -fX -Zq -qs -WW -WW -WW -lM -qs -WW -Cg -zB -oB -NX -CP -Ai -WW -vt -BP -Tx -ab -ab -ab -ab -ag -ag +Co +BO +BO +BO +DY +Rd +oU +Rd +zQ +Rd +Rd +Rd +cz +dQ +Nf +dA +oP +Nf +xG +MO +ij +as +Ro +Cb +Qy +yW +pq +Gc +jE +pq +xW +PX +nv +LX +EI +Kw +OQ +Xm +BY +hl +XD +pq +TF +Zg +Ds +SL +sg +ni +Xz +to +kY +BO +eO +eO +eO +Co +Co "} (27,1,1) = {" -aa -aa -aa -ag -ag -ab -ab -ca -dn -dN -Sr -Sr -Sr -wW -Sr -Sr -mD -Zz -OC -OC -OC -OC -Zz -Zo -OS -Zo -Wx -Wx -Wx -Wx -Wx -sd -nh -jN -Tx -Tx -Rt -Tx -Tx -Tx -vJ -QQ -wo -Oy -Dk -Dk -QN -ej -Jp -ae -Tx -ab -ab -ab -ab -ag -ag +Co +BO +BO +BO +Kh +nr +nr +nr +nr +nr +nr +nr +ID +dQ +Eh +Pd +DP +Eh +mj +mj +xZ +SR +iu +kk +Qy +Qy +pq +wA +ZD +Bu +hC +PX +jH +oD +bP +kv +cq +MT +oH +iZ +Ny +pq +XP +Sw +Ds +SL +kh +Sq +se +Rn +kY +ZT +eO +eO +ZT +fU +Co "} (28,1,1) = {" -aa -aa -aa -ag -ag -ab -ab -NT -Zz -Zz -gb -gv -tv -xk -Sr -Sr -Fc -Zz -rW -dn -dn -jR -sn -Zq -nh -Zq -Zq -Zq -mK -Zq -nd -Zq -nh -Zq -Tx -Hf -IC -fC -zO -Tx -JC -Hs -CN -Tx -CY -Vo -Tx -Tx -gD -Tx -Tx -ab -ab -ab -ab -ag -ag +Co +ZT +BO +BO +Ph +EE +EE +EE +Rf +EE +EE +EE +Iw +gh +FO +NH +DP +Oh +Yw +Hd +Hk +QZ +Ro +Cb +Qy +Qy +pq +Tk +bv +pq +JB +PX +Rj +wl +ty +SZ +iH +Fk +BY +yM +pY +pq +nB +Jz +Ds +SL +rS +wS +vS +Lf +kY +BO +eO +eO +BO +Co +Co "} (29,1,1) = {" -aa -aa -ag -ag -ab -ab -ab -ab -ab -Zz -vi -xT -vi -xT -vi -vi -Fk -Zz -ub -dn -yw -NS -Zz -Ui -cD -Ao -Ao -nZ -mz -nZ -Ao -Ao -AV -oY -Tx -fx -IC -IC -tx -Tx -WW -QQ -ml -Tx -ZS -Pj -lC -lo -wt -xJ -Tx -Tx -ab -ab -ag -ag -aa +Co +BO +BO +BO +pn +eO +eO +eO +ap +eO +eO +eO +vI +vm +qN +Cl +vm +Ec +WL +CS +OS +gI +xc +Md +oC +vm +pq +pq +pq +sS +Jn +Lp +Pz +oN +bk +by +rw +Ld +He +ev +gB +pq +eg +sI +Ap +hf +Mo +PV +Xx +mS +kY +BO +eO +eO +BO +Co +Co "} (30,1,1) = {" -aa -aa -ag -ag -ab -ab -ab -ab -ab -Zz -vZ -gB -tI -yh -vZ -jS -Zz -Zz -Qg -Qg -Qg -EP -Zz -JB -AH -Zq -Ih -Zq -OM -Zq -Zq -Zq -Zq -JB -Tx -yV -rj -IC -tt -Tx -WW -Cg -WW -Tx -ks -RZ -Fm -yp -ci -HQ -zd -Tx -ab -ab -ag -ag -aa +Co +Nv +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +vm +vm +vm +vm +Na +zV +Od +Px +qH +TJ +ql +dF +vm +Ao +HM +QD +Ii +Gt +oS +rA +qb +il +Bm +lH +Rb +Bl +BE +Mj +pq +LT +Bk +Ds +Cc +DJ +Ly +gE +KB +kY +eO +eO +eO +eO +Co +Co "} (31,1,1) = {" -aa -aa -ag -ag -ab -ab -ab -ab -ab -OC -gj -gF -Zz -zz -gj -OC -Zz -ab -ab -ab -ab -ab -ab -Wx -Wx -CM -ZX -HM -Lw -HM -ZX -Jg -ZX -ZX -Tx -Tx -Tx -Tx -Tx -Tx -WW -Cg -WW -Tx -WB -RZ -id -uJ -ci -HQ -sf -QV -ab -ab -ab -ag -ag +Co +BO +BO +BO +eO +eO +eO +eO +eO +eO +lx +eO +eO +cZ +vm +vm +Ef +fm +fp +PF +Cu +Jb +NB +uQ +ql +UN +bz +Xg +ZB +BX +Jh +WG +TT +wa +FS +mT +hW +KA +OB +NR +Xw +pq +TO +Ry +Lu +Sf +wV +ML +wb +Si +eg +eO +eO +eO +eO +Co +Co "} (32,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -ab -OC -dn -gQ -hb -yr -dn -OC -ab -ab -ab -ab -ab -ab -ab -xR -Vj -DZ -VO -Wq -Pf -Wq -WM -Wq -NO -HR -Tx -QR -wf -wf -tP -Tx -WW -Cg -WW -Tx -eI -RZ -ci -Th -ci -xp -zr -Tx -ab -ab -ab -ag -ag +Co +BO +BO +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +cZ +vm +vm +vy +NU +Xr +cZ +VP +VP +GR +aT +DM +AN +UF +iP +Pb +Xg +Ii +Ii +Ii +Ii +Wf +df +lh +pq +pq +pq +KE +Ry +dd +dd +Si +eg +KQ +eg +eg +Si +eO +eO +eO +eO +Jt +Co "} (33,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -ab -OC -AG -gF -Zz -zz -AG -OC -ab -ab -ab -ab -ab -ab -ab -xR -Vj -FE -VO -Wq -jK -Wq -WM -Wq -Wq -AS -Tx -Bp -vR -JU -Yo -Tx -cs -QQ -ky -Tx -XX -eb -nD -nD -xp -rm -ij -Tx -ab -ab -ab -ag -ag +Co +fU +BO +ZT +BO +Jt +eO +eO +eO +eO +eO +eO +ZT +IN +HP +XU +VP +Ia +VP +VP +VP +VY +ul +yj +oF +lc +VS +uY +LQ +uX +Oc +gm +hI +bz +iP +iP +Qb +Xg +Ve +AY +yU +Ry +kc +dd +sS +FZ +wU +iT +ot +eg +eO +eO +co +eO +eO +fU +Co "} (34,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -xR -Vj -YD -VO -Wq -jK -Wq -WM -Wq -CJ -CW -Tx -oK -tJ -UZ -ne -XO -Cv -JV -ml -Tx -Tx -Qc -lR -RT -MX -Tx -Tx -Tx -ab -ab -ab -ag -ag +Co +ZT +BO +BO +BO +BO +eO +eO +eO +eO +eO +eO +BO +ZT +Jt +Qx +VP +Cw +ha +aW +qa +UE +VN +RB +eN +VP +PB +VT +ui +VS +zq +Qb +Qb +cw +LQ +sj +kc +fg +Qb +dR +dd +dd +cN +sS +eg +dw +gO +AM +eg +Si +eO +eO +eO +eO +eO +ZT +Co "} (35,1,1) = {" -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -xR -Vj -ZC -VO -Wq -Rs -Wq -WM -lv +Co +Co +BO +BO +BO +BO +eO +eO +eO +eO +eO +eO +eO +BO +BO +ZT +Sl +hH +Vm +fw +GK +WJ +nW +GG +Zo +VP +Fq +gU +WS +ZB +MF +GT +rz +lJ +MJ +bS +pk +El +El +El +gV +fK +fn +eg +gR +Uw EA -Xn -Tx -Tx -Tx -Tx -Tx -Tx -To -QQ -WW -KA -Oi -PG -Dc -tD -Gs -oT -oT -Tx -ab -ab -ab -ag -ag +aL +eg +eO +eO +eO +eO +eO +eO +ZT +Co "} (36,1,1) = {" -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -rq -rq -rq -rq -ZX -AT -ZX -ZX -QJ -Lw -QJ -ZX -ZX -ZX -ZX -ZX -Js -Js -Js -Js -Tx -Jq -QQ -WW -YO -Ls -ow -sL -yk -CD -aS -MY -Tx -ab -ab -ag -ag -aa +CH +Co +Co +BO +BO +ZT +eO +BO +eO +eO +eO +eO +eO +eO +eO +BO +Sl +tn +PE +am +qa +Wy +OX +So +iW +VP +VP +VP +VP +VP +qa +qa +qa +qa +VP +fe +tY +fe +Pv +Pv +Pv +eg +eg +sb +Ds +YE +Ds +eg +Si +eO +eO +BO +eO +eO +eO +Co +Co "} (37,1,1) = {" -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -rq -HT -py -oM -zo -Yp -ZX -Zc -KX -Pr -zy -gg -ZX -Li -zv -ZX -pI -pR -je -Jm -Tx -WW -Cg -WW -YO -pz -Nl -Bq -rb -oT -vQ -IL -Tx -ab -ab -ab -ag -ag +CH +Co +Co +BO +fU +BO +BO +ZT +eO +eO +eO +eO +eO +eO +eO +eO +BO +Sl +Tp +aA +pP +ef +cv +ay +Ru +qy +xy +Nr +Eb +VH +Ok +GB +yi +on +VP +UA +ur +Pv +jR +Aj +Pv +yw +lW +sD +iT +yS +Tf +tS +eO +eO +eO +ZT +eO +eO +eO +BO +Co "} (38,1,1) = {" -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -rq -Xl -is -dy -BT -Bo -ZX -fs -KX -OX -Qm -Wq -ls -OK -yE -ZX -ZX -co -aj -Zr -Tx -WW -Cg -WW -YO -pz -sP -oX -rb -oT -vQ -vQ -Tx -ab -ab -ag -ag -aa +CH +Co +Co +Co +ZT +BO +BO +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +Sl +UU +RJ +UD +PG +wP +yF +DW +UD +SH +EQ +qK +JW +XM +vV +KM +Ov +VP +oQ +ur +Pv +je +Vx +Pv +yS +EA +Vc +AM +yS +fy +tS +eO +eO +eO +eO +eO +eO +eO +ZT +Co "} (39,1,1) = {" -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -zt -bu -PC -Xd -BT -Yp -ZX -uX -KX -cB -Qm -Wq -Le -tW -zc +CH +CH +Co +Co +Co +BO +Jt +BO +ZT +eO +eO +eO +eO +eO +eO +eO +eO +eO +Sl +qL +kV +nm +Ns +ZQ +wB +UD +Bb +Ze +wY +yI +so +Ci +vv +Zf +VP +HH +vX +Hf +YF +Fj +Pv eg -ZX -aT -pR -Jm -Tx -WW -uD -Nf -cc -xw -wD -wD -CT -sI -aS -aS -Tx -ab -ab -ab -ag -ag +xe +md +ND +yS +tS +eO +eO +eO +eO +BO +eO +eO +eO +cS +Co "} (40,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -kD -ZX -ZX -ZX -zE -Tb -ZX -jj -KX -IV -Qm -tH -Zg -Bn -Ar -pE -ZX -BA -Ay -ob -bI -Gb -ce -Tq -YO -pt -Ir -tT -cX -oT -iC -oT -Tx -ab -ab -ab -ag -ag +CH +CH +CH +Co +Co +Co +Co +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +Sl +mE +mh +an +Hn +aR +xV +sV +rc +AJ +iw +AJ +nI +aV +tG +PD +nu +qA +Pv +Pv +Pv +Pv +yS +oM +Mh +Vl +tS +eO +eO +eO +eO +ZT +BO +eO +eO +eO +Co +Co "} (41,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -kD -xo -xL -Yv -NH -Yp -ZX -ZX -Ld -ZX -Qx -ZX -ZX -ZX -Vw -ZX -ZX -ZX -aX -ZX -Lq -Lq -ru -Lq -Lq -Lq -Lq -Lq -Lq -Lq -Lq -Lq -Lq -ab -ab -ab -ag -ag +CH +CH +CH +Co +Co +Co +Co +BO +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +Sl +eA +nC +ey +YT +cj +Zz +bJ +iD +wT +iD +iD +Xd +nc +Zz +fN +xX +CT +rs +Aj +Pv +ox +Tf +pK +tS +eO +eO +eO +eO +eO +eO +eO +eO +eO +hY +Co +Co "} (42,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -kD -uP -rV -gO -NH -Yp -ZX -jn -Ln -MN -QW -ZX -XJ -Qk -mk -ZX -Oo -Oo -Oo -Oo -Lq -eT -Bw -rC -kw -GS -VL -ZG +CH +CH +CH +CH +CH +Co +Co +fU +BO +BO +eO +eO +eO +eO +eO +eO hY -mN -sY -Lq -ab -ab -ab -ab -ag -ag +LE +eO +eO +eO +Sl +VP +VP +XL +yc +VP +Hj +jO +ep +WM +bo +Ub +aB +VP +Pv +re +Pv +iX +Dk +Pv +eg +tS +tS +eO +eO +eO +co +BO +eO +eO +eO +eO +BO +Co +Co +Co "} (43,1,1) = {" -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -kD -mV -md -wU -WU -NH -FT -NH -NH -WQ -WQ -TY -WQ -WQ -WQ -Nd -yU -yU -yU -yU -KD -CL -zJ -LU -La -UO -pK -gT -cH -KG -HX -Lq -ab -ab -ab -ab -ag -ag +CH +CH +CH +CH +CH +CH +Co +Co +Nv +BO +eO +eO +eO +eO +eO +eO +eO +ZT +eO +eO +eO +BO +ZT +Qx +VP +VP +VP +VP +tT +xr +cg +GX +jb +II +VP +wF +Xa +Pv +WR +Pv +Pv +Si +ZT +eO +eO +eO +eO +ZT +BO +eO +eO +eO +eO +BO +Co +Co +CH "} (44,1,1) = {" -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -kD -ok -jF -sD -Xf -BN -ZX -IA -LC -Yp -pY -VY -NC -zM -Mn -ZX -Wk -Wk -Wk -Wk -Lq -Ig -oP -DP -JR -UO -pK -De -sl -SI -GZ -Lq -ab -ab -ab -ag -ag -aa +CH +CH +CH +CH +CH +CH +CH +Co +Co +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +BO +Nv +ZT +Qx +VP +VP +fi +Mg +Ui +Ar +RU +OO +VP +iB +LB +Pv +Pv +lS +ZT +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +BO +Co +Co +CH "} (45,1,1) = {" -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Sy -kD -RP -Vt -Vt -Xf -Yz -ZX -CZ -to -Yp -Yp -nX -xM -Wq -Sh -ZX -ab -ab -ab -ab -Lq -fc -Dp -rv -La -UO -pK -yd -ve -ta -zF -Lq -ab -ab -ab -ag -ag -aa +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +Qx +VP +VP +kI +kI +kI +kI +VP +kt +Pv +lS +eO +ZT +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +fU +Co +Co +CH +CH "} (46,1,1) = {" -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -wn -TJ -Sk -pW -Wd -Xo -YY -ZX -Qt -Vv -rE -qL -cp -kq -Ct -Ha -ZX -ab -ab -ab -ab -Lq -Ak -Ak -bv -MR -hl -FG -Lq -Lq -Lq -Lq -QS -ab -ab -ag -ag -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Co +fU +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +Co +Co +Co +CH +CH "} (47,1,1) = {" -aa -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -Sy -kL -ZX -ZX -ZX -ZX -ZX -ZX -ZX -VO -VO -ZX -ZX -ZX -ZX -ZX -QS -ab -ab -ab -ab -iG -Lq -Lq -Lq -Lq -Lq -eq -Lq -ab -ab -ab -ab -ab -ab -ab -ag -ag -aa +CH +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Co +Co +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +LE +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +co +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +cL +BO +Co +Co +Co +CH +CH +CH "} (48,1,1) = {" -aa -aa -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -lF -ab -ab -ab -ab -ab -ab -ab -ag -ag -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Jt +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +BO +Co +Co +Co +CH +CH +CH +CH +CH "} (49,1,1) = {" -aa -aa -aa -aa -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +Co +ZT +Co +BO +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +eO +BO +BO +fU +Co +Co +Co +CH +CH +CH +CH +CH +CH "} (50,1,1) = {" -aa -aa -aa -aa -aa -ag -ag -ag -ab -ab -ab -ab -ab -ag -ag -ag -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -ag -aa -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Co +BO +BO +fU +cL +ZT +BO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +eO +ZT +eO +eO +eO +eO +ZT +BO +eO +Co +Co +Co +Co +Co +Co +Co +CH +CH +CH +CH +CH +CH +CH +CH "} (51,1,1) = {" -aa -aa -aa -aa -aa -aa -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -aa -aa -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Co +Co +Co +Co +Co +Co +BO +fU +ZT +Co +Co +Co +BO +fU +Nv +ZT +BO +BO +BO +fU +om +BO +Jt +BO +fU +Co +Co +Co +Co +Co +Co +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH "} (52,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ag -ag -ag -ag -ag -aa -aa -aa -aa -aa -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -aa -aa -aa -aa -aa -aa +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +Co +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH +CH "} From cb03437ae624fc0b37c1f66b52eb547c6f5c9493 Mon Sep 17 00:00:00 2001 From: Dani Glore Date: Mon, 25 Dec 2023 15:42:19 -0500 Subject: [PATCH 039/166] Add: Forked Cybernetic Tongue & Lizard Voicebox (#24616) * Add cybernetic lizard tongue and lizard voicebox * Cleaning up naming and flavortext for lizard cybertongues * Remove erroneous can_speak_language override * Add forked cybernetic tongue to cyber organs techweb node --------- Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> --- .../research/designs/medical_designs.dm | 6 ++++ .../modules/research/techweb/all_nodes.dm | 1 + .../modules/client/augment/organs.dm | 8 +++++ .../modules/modular_vending/code/wardrobes.dm | 4 +++ modular_skyrat/modules/organs/code/tongue.dm | 29 ++++++++++++++++++ .../modules/organs/icons/cyber_tongue.dmi | Bin 354 -> 887 bytes 6 files changed, 48 insertions(+) diff --git a/modular_skyrat/master_files/code/modules/research/designs/medical_designs.dm b/modular_skyrat/master_files/code/modules/research/designs/medical_designs.dm index 1f5970c68a3..29bfcc4d02e 100644 --- a/modular_skyrat/master_files/code/modules/research/designs/medical_designs.dm +++ b/modular_skyrat/master_files/code/modules/research/designs/medical_designs.dm @@ -10,3 +10,9 @@ RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1 ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL + +/datum/design/cybernetic_tongue/lizard + name = "Forked Cybernetic Tongue" + desc = "A forked cybernetic tongue." + id = "cybernetic_tongue_lizard" + build_path = /obj/item/organ/internal/tongue/lizard/cybernetic diff --git a/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm b/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm index 3a7d072b7fa..5a39e2cb6a3 100644 --- a/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm +++ b/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm @@ -139,6 +139,7 @@ /datum/techweb_node/cyber_organs/New() design_ids += list( "cybernetic_tongue", + "cybernetic_tongue_lizard", ) return ..() diff --git a/modular_skyrat/modules/customization/modules/client/augment/organs.dm b/modular_skyrat/modules/customization/modules/client/augment/organs.dm index 9bc2579e378..51e640d6808 100644 --- a/modular_skyrat/modules/customization/modules/client/augment/organs.dm +++ b/modular_skyrat/modules/customization/modules/client/augment/organs.dm @@ -99,10 +99,18 @@ name = "Robotic voicebox" path = /obj/item/organ/internal/tongue/robot +/datum/augment_item/organ/tongue/robo/forked + name = "Robotic lizard voicebox" + path = /obj/item/organ/internal/tongue/lizard/robot + /datum/augment_item/organ/tongue/cybernetic name = "Cybernetic tongue" path = /obj/item/organ/internal/tongue/cybernetic +/datum/augment_item/organ/tongue/cybernetic/forked + name = "Forked cybernetic tongue" + path = /obj/item/organ/internal/tongue/lizard/cybernetic + /datum/augment_item/organ/tongue/forked name = "Forked tongue" path = /obj/item/organ/internal/tongue/lizard diff --git a/modular_skyrat/modules/modular_vending/code/wardrobes.dm b/modular_skyrat/modules/modular_vending/code/wardrobes.dm index 21e2ff5ebc8..e237a039078 100644 --- a/modular_skyrat/modules/modular_vending/code/wardrobes.dm +++ b/modular_skyrat/modules/modular_vending/code/wardrobes.dm @@ -73,6 +73,10 @@ /obj/item/storage/backpack/messenger/science/robo = 2, ) + skyrat_contraband = list( + /obj/item/organ/internal/tongue/lizard/robot = 2, + ) + /obj/machinery/vending/wardrobe/science_wardrobe skyrat_products = list( /obj/item/clothing/under/rank/rnd/scientist/skyrat/hlscience = 3, diff --git a/modular_skyrat/modules/organs/code/tongue.dm b/modular_skyrat/modules/organs/code/tongue.dm index e151840ae48..7b4cdef0744 100644 --- a/modular_skyrat/modules/organs/code/tongue.dm +++ b/modular_skyrat/modules/organs/code/tongue.dm @@ -54,6 +54,35 @@ /obj/item/organ/internal/tongue/human say_mod = "says" +/obj/item/organ/internal/tongue/lizard/robot + name = "robotic lizard voicebox" + desc = "A lizard-like voice synthesizer that can interface with organic lifeforms." + organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES + icon_state = "tonguerobot" + say_mod = "hizzes" + attack_verb_continuous = list("beeps", "boops") + attack_verb_simple = list("beep", "boop") + modifies_speech = TRUE + taste_sensitivity = 25 // not as good as an organic tongue + voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000" + +/obj/item/organ/internal/tongue/lizard/robot/can_speak_language(language) + return TRUE // THE MAGIC OF ELECTRONICS + +/obj/item/organ/internal/tongue/lizard/robot/modify_speech(datum/source, list/speech_args) + . = ..() + speech_args[SPEECH_SPANS] |= SPAN_ROBOT + +/obj/item/organ/internal/tongue/lizard/cybernetic + name = "forked cybernetic tongue" + icon = 'modular_skyrat/modules/organs/icons/cyber_tongue.dmi' + icon_state = "cybertongue-lizard" + desc = "A fully-functional forked synthetic tongue, encased in soft silicone. Features include high-resolution vocals and taste receptors." + organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES + // Not as good as organic tongues, not as bad as the robotic voicebox. + taste_sensitivity = 20 + modifies_speech = TRUE + /obj/item/organ/internal/tongue/cybernetic name = "cybernetic tongue" icon = 'modular_skyrat/modules/organs/icons/cyber_tongue.dmi' diff --git a/modular_skyrat/modules/organs/icons/cyber_tongue.dmi b/modular_skyrat/modules/organs/icons/cyber_tongue.dmi index 961aeb14f265383a8a7816e0cb1dbd17c5490000..6a05a20c623caab4f2922808c825d5ba57e96da5 100644 GIT binary patch delta 799 zcmV+)1K|AP0`~?biBL{Q4GJ0x0000DNk~Le0000$0000W2nGNE0HU3Kga7~ldXZ~p ze`8ato0D0USd@ZGi?V{Np9|PM0JPaGs^Y*{?EnA*xJg7oRCt_YJaFIu!$1ND2ZsT* zpJ_mC9|T}D00!Ct0}Vz4V4xi^&|owG2HF7w4MqcCpdB#KV8jOi%RoDTSRf)G{GXd& z6wKZiSq2wZ?nq*!#9T&F`vM^W!B`yve*=#_lt^+AzP^CGyvBbJ{q^H(29TZR*47M_ zta@;HbxUoA=MNrH6bM9Rf%y20{~!$WJjfv%95NY{9L>P^)AP?@b&?8l46-}!{U_Hk z$l%jlvHu`@Ko|rfVxk#hU-K~VN%Dd{4#GE&Uj^HLw_+aIb`nehMt8&hr|k6wf3x>( z+rW^VUBF;->J5XIu|C+tAi$|8!Ej;OUa;dpVxU+dHYH$70spT${%6$Q57!S${xExG zq?F+HfB+~E45FMF?(IKCR!YDd0QRDd{|~;dhZ_n?0k|9ja|}of6e}PH5fcc6y2GGs zfSd(DsQ?6!?FR)o%uZ4Rfuu43e?0&|09zn{k|!ut5EBT5$^cjv0HwY+ieDHQEZ7+s zGW{7g7Yk7(5Qq){P#J(86Sx8a1SkyvnCDk5n~RbaK=wZry3Zj0PLW}XnmbA$kdqyV z3ILGjkz<0GK%hkcU;~?7^Z%m<0<3lb0YU*mFaThl&q|9$DGTrg0?6~IycXIx z<<@Li%lPx#9R`+LQy9LNaYlk^Qan!&V7M@!5#)JXfM8z$xgCHFfC7OGchLlZJbRu2 z661Fn=KV*Gak8@jtpP3O1whFjRu&Pe1%^y-kQ4w)3B;-$@#6ub0Wi=G7-%pW00ZrS dfd(T!0077?TUx++DQ*A&002ovPDHLkV1h1NH*o*} delta 282 zcmey)_K2yzGr-TCmrII^fq{Y7)59eQNGpIa3p0>x3`su@q;vy(LR=3VI3OY*EHAHd zw_;vcRPy=wiT`(A`8H$Er@3O~)yb13Z{My;T%g(@BC9~3 From 6814bcb81f44a973a873675af0f80741301e0096 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 21:50:37 +0100 Subject: [PATCH 040/166] Automatic changelog for PR #25851 [ci skip] --- html/changelogs/AutoChangeLog-pr-25851.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25851.yml diff --git a/html/changelogs/AutoChangeLog-pr-25851.yml b/html/changelogs/AutoChangeLog-pr-25851.yml new file mode 100644 index 00000000000..0f99fecc980 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25851.yml @@ -0,0 +1,4 @@ +author: "jjpark-kb" +delete-after: True +changes: + - rscadd: "icecats(?) can now respawn, similarly to ashwalkers" \ No newline at end of file From 9a13d3dc9aa99049711fdabdef7daf3b834dfa89 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 21:51:03 +0100 Subject: [PATCH 041/166] Automatic changelog for PR #25856 [ci skip] --- html/changelogs/AutoChangeLog-pr-25856.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25856.yml diff --git a/html/changelogs/AutoChangeLog-pr-25856.yml b/html/changelogs/AutoChangeLog-pr-25856.yml new file mode 100644 index 00000000000..01f4c736c1e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25856.yml @@ -0,0 +1,4 @@ +author: "jjpark-kb" +delete-after: True +changes: + - rscadd: "added the crusher to mining borgs" \ No newline at end of file From 72dcf3777056b3e40bd90b25cf2ecc61abe79af0 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 21:51:54 +0100 Subject: [PATCH 042/166] Automatic changelog for PR #24616 [ci skip] --- html/changelogs/AutoChangeLog-pr-24616.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-24616.yml diff --git a/html/changelogs/AutoChangeLog-pr-24616.yml b/html/changelogs/AutoChangeLog-pr-24616.yml new file mode 100644 index 00000000000..1dc35bf0057 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-24616.yml @@ -0,0 +1,5 @@ +author: "A.C.M.O." +delete-after: True +changes: + - rscadd: "Added the forked cybernetic tongue to Augments+." + - rscadd: "Added the robotic lizard voicebox to Augments+ and the RoboDrobe vendor." \ No newline at end of file From 8b13337a37f861178a7a296941b6fa5c9db52671 Mon Sep 17 00:00:00 2001 From: Deadmon Date: Mon, 25 Dec 2023 13:20:57 -0800 Subject: [PATCH 043/166] Adds a buzzed effect to the half shaved hairstyle (#25593) * more hair * fex --------- Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> --- .../icons/mob/sprite_accessory/hair.dmi | Bin 77056 -> 85658 bytes .../icons/mob/sprite_accessory/more_hair.dmi | Bin 996 -> 4455 bytes .../new_player/sprite_accessories/hair.dm | 24 ++++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/modular_skyrat/master_files/icons/mob/sprite_accessory/hair.dmi b/modular_skyrat/master_files/icons/mob/sprite_accessory/hair.dmi index 681457fe596f1cba8651a9291a4305ada33888ed..a05c9ceebefbdcc421d52e8f7c180a0e8b5ef0c7 100644 GIT binary patch literal 85658 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 diff --git a/modular_skyrat/master_files/icons/mob/sprite_accessory/more_hair.dmi b/modular_skyrat/master_files/icons/mob/sprite_accessory/more_hair.dmi index 6de5f8a7309e4f23ea296bd69def2d1bacd91372..491818a76d581246e62e4bf5f468af2c7ce1bab6 100644 GIT binary patch literal 4455 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 Date: Mon, 25 Dec 2023 22:24:42 +0100 Subject: [PATCH 044/166] Automatic changelog for PR #25593 [ci skip] --- html/changelogs/AutoChangeLog-pr-25593.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25593.yml diff --git a/html/changelogs/AutoChangeLog-pr-25593.yml b/html/changelogs/AutoChangeLog-pr-25593.yml new file mode 100644 index 00000000000..f6e02051e8c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25593.yml @@ -0,0 +1,4 @@ +author: "JungleRat" +delete-after: True +changes: + - image: "Adds a buzzed effect to the left side of half shaved instead of leaving it bald." \ No newline at end of file From 6e3a77530116872294d1e8802c01494cebb62ff5 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 23:03:11 +0100 Subject: [PATCH 045/166] [MIRROR] Wizard items resprite [MDB IGNORE] (#25839) * Wizard items resprite (#80542) ## About The Pull Request Resprites wizard weapons ![Wizard Weapons](https://github.com/tgstation/tgstation/assets/99420088/2b4fc565-04df-4175-ae31-8f0124678aa9) ![StavesResprite](https://github.com/tgstation/tgstation/assets/99420088/41cce9e4-b04d-4842-bf34-71f89ffb6f84) ## Why It's Good For The Game Wizard weapons look old and boring ## Changelog :cl: MelokGleb and KREKS image: modified wizard weapon textures /:cl: * Wizard items resprite * screenbs --------- Co-authored-by: MelokGleb <99420088+MelokGleb@users.noreply.github.com> Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> --- .../screenshot_antag_icons_wizard.png | Bin 786 -> 782 bytes .../screenshot_antag_icons_wizardmidround.png | Bin 786 -> 782 bytes icons/mob/inhands/weapons/staves_lefthand.dmi | Bin 22090 -> 25344 bytes .../mob/inhands/weapons/staves_righthand.dmi | Bin 22814 -> 28199 bytes icons/mob/inhands/weapons/swords_lefthand.dmi | Bin 26254 -> 28983 bytes .../mob/inhands/weapons/swords_righthand.dmi | Bin 29425 -> 31921 bytes icons/obj/weapons/guns/magic.dmi | Bin 21268 -> 38090 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_wizard.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_wizard.png index 4cdec6cc5b6a8360cebc8d0291e16e08794736a4..6795b571c8f41321339fee546e92f4a050797f7b 100644 GIT binary patch delta 633 zcmV-<0*3vP295@hBwbWcOjJbx0009nZwyDB3qqACR+K@wFG!r;+0y2BG z`B?qSFz zT=eC|aUAE~Btu;A*8(IiKnfmm^)Be=oa{`}0oPCRECgc~Lm*g!>l`kKb*v1~OIiAaYFF7giYJf~n2KntCD zQ54;IWm!I>-~;f8oKK)sy3i_m>7c4AeVVWiTo8pMTd)qGb#xvCI}n*VE5ROMC*U09 z0kpV3U~K51q|$WQM;F{CVE7j>M^e`{Jvh`BzPGU>$u1Cc^)5J%DiaD&JvIP6-+(T( zSW|yutgC7CEj$)t*W3RVsB&WgEdg(Q+qN9Qp+!rARHZitN=uKtdKW|ql+g)PK(mkz z0v;r&!XlWtKnno(_5ipQAVaC_k&DR~V-J(3uP_&!2j5REeXjtt7BGODqM0R7JV%=lOFkFe zQ=oF10;KAvyG9d@77rLxt=+vLK8FA=czWI7{q62LKsdJvEs~{83D1#aJAO5E!F2+2 zbY~v|=4g~Gv=8m#!(A{1Zt%VTo%HXA9-?AGK{{7~ioD(*MB0m(KB1g@nBW(3z_1Y+ T)nrF!00000NkvXXu0mjftF{_3 delta 637 zcmV-@0)qXH29gGlBw$xiOjJbx0009nZwyDB3qqACR+X}00030;L#d`c!`OL z;jgCJo|0$e@38p(u&}V|zqG}Md{Z<8H8??kPX$(5V~nQGW>bedIolY;9o@dkPXXv_*%bgQ=r)D}hBDSB z*{yqu4bq>>JOB+OaQZ$i*2*---2vk{FHn*s8wf>$+JD8Z-AWFa3h)Z0X-dE*2sJdO zS(g184&xp41`T99HsBp%37-#0u4JK>_1w4SPV=4V8p8os0WHWLdI>_UKQxEBn~a7T z01gl$0rwycLXGhOeSOFg+M2rq{tTe`CuEGMC<<~=6lQ*~zBZ&R%RC=AcL!W^S7t&0 zvd0QS%YPR{7HZ5X(bwcOdI}pnaP|)lQ0B%2S^zG5UDxbDQKKe6tkfGFM{^%Idj|{x z$fE%$fo38d04xM3?GVfWpaX!lJwXfw@Q^E8#G*6$*us4nf5IGaS$IA+_d_sP+D113 zeOYUbQJi+bBmfKdm5$XnBmf#|RoTmc0Q5y62!D0&g3k=l9mDQ;nE?7aL;#P3TF}Qa z3PMcz955w7=`;aw)u+2k8;u$Z^eNYFZiw>$;DV>?2G_S)bqMAR6FMX-+Y*iuWPkQ* z=ztpl#%M;Lf{angSyCLzhnqWKj2Pfs|DE*rLoZRO9PzGvQh<`Y)(;}ZqLJy`-2gvr XO%kx?MZH0400000NkvXXu0mjfHNqGR diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_wizardmidround.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_wizardmidround.png index 4cdec6cc5b6a8360cebc8d0291e16e08794736a4..6795b571c8f41321339fee546e92f4a050797f7b 100644 GIT binary patch delta 633 zcmV-<0*3vP295@hBwbWcOjJbx0009nZwyDB3qqACR+K@wFG!r;+0y2BG z`B?qSFz zT=eC|aUAE~Btu;A*8(IiKnfmm^)Be=oa{`}0oPCRECgc~Lm*g!>l`kKb*v1~OIiAaYFF7giYJf~n2KntCD zQ54;IWm!I>-~;f8oKK)sy3i_m>7c4AeVVWiTo8pMTd)qGb#xvCI}n*VE5ROMC*U09 z0kpV3U~K51q|$WQM;F{CVE7j>M^e`{Jvh`BzPGU>$u1Cc^)5J%DiaD&JvIP6-+(T( zSW|yutgC7CEj$)t*W3RVsB&WgEdg(Q+qN9Qp+!rARHZitN=uKtdKW|ql+g)PK(mkz z0v;r&!XlWtKnno(_5ipQAVaC_k&DR~V-J(3uP_&!2j5REeXjtt7BGODqM0R7JV%=lOFkFe zQ=oF10;KAvyG9d@77rLxt=+vLK8FA=czWI7{q62LKsdJvEs~{83D1#aJAO5E!F2+2 zbY~v|=4g~Gv=8m#!(A{1Zt%VTo%HXA9-?AGK{{7~ioD(*MB0m(KB1g@nBW(3z_1Y+ T)nrF!00000NkvXXu0mjftF{_3 delta 637 zcmV-@0)qXH29gGlBw$xiOjJbx0009nZwyDB3qqACR+X}00030;L#d`c!`OL z;jgCJo|0$e@38p(u&}V|zqG}Md{Z<8H8??kPX$(5V~nQGW>bedIolY;9o@dkPXXv_*%bgQ=r)D}hBDSB z*{yqu4bq>>JOB+OaQZ$i*2*---2vk{FHn*s8wf>$+JD8Z-AWFa3h)Z0X-dE*2sJdO zS(g184&xp41`T99HsBp%37-#0u4JK>_1w4SPV=4V8p8os0WHWLdI>_UKQxEBn~a7T z01gl$0rwycLXGhOeSOFg+M2rq{tTe`CuEGMC<<~=6lQ*~zBZ&R%RC=AcL!W^S7t&0 zvd0QS%YPR{7HZ5X(bwcOdI}pnaP|)lQ0B%2S^zG5UDxbDQKKe6tkfGFM{^%Idj|{x z$fE%$fo38d04xM3?GVfWpaX!lJwXfw@Q^E8#G*6$*us4nf5IGaS$IA+_d_sP+D113 zeOYUbQJi+bBmfKdm5$XnBmf#|RoTmc0Q5y62!D0&g3k=l9mDQ;nE?7aL;#P3TF}Qa z3PMcz955w7=`;aw)u+2k8;u$Z^eNYFZiw>$;DV>?2G_S)bqMAR6FMX-+Y*iuWPkQ* z=ztpl#%M;Lf{angSyCLzhnqWKj2Pfs|DE*rLoZRO9PzGvQh<`Y)(;}ZqLJy`-2gvr XO%kx?MZH0400000NkvXXu0mjfHNqGR diff --git a/icons/mob/inhands/weapons/staves_lefthand.dmi b/icons/mob/inhands/weapons/staves_lefthand.dmi index 6e34949c9d5612089ab2f72e33ed1a2bf312c124..83504696b61a33cd4ca352cb20d941581c3ae89e 100644 GIT binary patch literal 25344 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 diff --git a/icons/mob/inhands/weapons/staves_righthand.dmi b/icons/mob/inhands/weapons/staves_righthand.dmi index df52d4d4198766d485be48ffe97f9f51ecd8597f..c83e0eed3abee9649c2c3586a8265765ecce8599 100644 GIT binary patch literal 28199 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 literal 26254 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 diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index 300e4c2e616f17fcd4e99b295cb0a0188891e92a..fcdac64bdca493c449ce9fe46604c2c82095fe00 100644 GIT binary patch literal 31921 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 literal 29425 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 diff --git a/icons/obj/weapons/guns/magic.dmi b/icons/obj/weapons/guns/magic.dmi index 53217ef461b37c184a686fc715c7742991b7104d..90eb4bdc669a5badfc1d3b8c3bbb88ac21d42009 100644 GIT binary patch literal 38090 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 literal 21268 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 I Date: Mon, 25 Dec 2023 23:03:34 +0100 Subject: [PATCH 046/166] Automatic changelog for PR #25839 [ci skip] --- html/changelogs/AutoChangeLog-pr-25839.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25839.yml diff --git a/html/changelogs/AutoChangeLog-pr-25839.yml b/html/changelogs/AutoChangeLog-pr-25839.yml new file mode 100644 index 00000000000..844e923db2a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25839.yml @@ -0,0 +1,4 @@ +author: "MelokGleb and KREKS" +delete-after: True +changes: + - image: "modified wizard weapon textures" \ No newline at end of file From 888e1c82c9d6573dc9775f839037696a5ac2dcf3 Mon Sep 17 00:00:00 2001 From: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> Date: Mon, 25 Dec 2023 23:43:39 +0000 Subject: [PATCH 047/166] Adds Epsilon alert level (#25857) * yes * tyes --- .../~skyrat_defines/security_alerts.dm | 4 +++- code/modules/admin/verbs/ert.dm | 3 +++ config/skyrat/skyrat_config.txt | 2 ++ modular_skyrat/modules/alerts/code/config.dm | 6 ++++++ .../alerts/code/security_level_datums.dm | 14 ++++++++++++++ .../alerts/sound/security_levels/epsilon.ogg | Bin 0 -> 136699 bytes 6 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 modular_skyrat/modules/alerts/sound/security_levels/epsilon.ogg diff --git a/code/__DEFINES/~skyrat_defines/security_alerts.dm b/code/__DEFINES/~skyrat_defines/security_alerts.dm index 9b8a3e9f7b7..adb8b834f5c 100644 --- a/code/__DEFINES/~skyrat_defines/security_alerts.dm +++ b/code/__DEFINES/~skyrat_defines/security_alerts.dm @@ -6,4 +6,6 @@ #define SEC_LEVEL_AMBER 4 #define SEC_LEVEL_RED 5 #define SEC_LEVEL_DELTA 6 -#define SEC_LEVEL_GAMMA 7 //Oh shit bois +#define SEC_LEVEL_EPSILON 7 +#define SEC_LEVEL_GAMMA 8 //Oh shit bois + diff --git a/code/modules/admin/verbs/ert.dm b/code/modules/admin/verbs/ert.dm index 91950d25ba9..dd9abab4278 100644 --- a/code/modules/admin/verbs/ert.dm +++ b/code/modules/admin/verbs/ert.dm @@ -256,6 +256,9 @@ //SKYRAT EDIT ADDITION BEGIN if(ertemplate.notify_players) priority_announce("Central command has responded to your request for a CODE [uppertext(ertemplate.code)] Emergency Response Team and have confirmed one to be enroute.", "ERT Request", ANNOUNCER_ERTYES) + // shitcode begin! + if(istype(ertemplate, /datum/ert/deathsquad)) + SSsecurity_level.set_level(SEC_LEVEL_EPSILON) //SKYRAT EDIT END //Open the Armory doors if(ertemplate.opendoors) diff --git a/config/skyrat/skyrat_config.txt b/config/skyrat/skyrat_config.txt index a232e3a3faf..9b75cc925e9 100644 --- a/config/skyrat/skyrat_config.txt +++ b/config/skyrat/skyrat_config.txt @@ -32,6 +32,8 @@ ALERT_ORANGE_UPTO A major engineering emergency has developed. Non-engineering p ALERT_ORANGE_DOWNTO A major engineering emergency has developed. Non-engineering personnel are required to evacuate any affected areas and obey relevant instructions from engineering staff. Engineering staff will have expanded access to areas of the station during the emergency. ALERT_VIOLET_UPTO A major medical emergency has developed. Non-medical personnel are required to obey all relevant instructions from medical staff. ALERT_VIOLET_DOWNTO A major medical emergency has developed. Non-medical personnel are required to obey all relevant instructions from medical staff. +ALERT_EPSILON_UPTO Central Command has ordered the Epsilon security level on the station. Consider all contracts terminated. +ALERT_EPSILON_DOWNTO Central Command has ordered the Epsilon security level on the station. Consider all contracts terminated. ALERT_DELTA_UPTO Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill. ALERT_DELTA_DOWNTO Destruction of the station is still imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill. ALERT_GAMMA The Solar Federation has placed this system under Gamma Alert status. This galactic system is facing a ZK-Class Reality Failure Scenario. Security Personnel is authorized full access to lethal equipment to enforce Martial Law. Failure to follow emergency procedures is punishable by death. This is not a drill. diff --git a/modular_skyrat/modules/alerts/code/config.dm b/modular_skyrat/modules/alerts/code/config.dm index ff2b31684f0..716fe8dd0ee 100644 --- a/modular_skyrat/modules/alerts/code/config.dm +++ b/modular_skyrat/modules/alerts/code/config.dm @@ -37,5 +37,11 @@ /datum/config_entry/string/alert_delta_downto config_entry_value = "Destruction of the station is still imminent. All crew are instructed to obey all instructions given by heads of staff or security. Any violations of these orders can be punished by death. This is not a drill." +/datum/config_entry/string/alert_epsilon_upto + config_entry_value = "Central Command has ordered the Epsilon security level on the station. Consider all contracts terminated." + +/datum/config_entry/string/alert_epsilon_downto + config_entry_value = "Central Command has ordered the Epsilon security level on the station. Consider all contracts terminated." + /datum/config_entry/string/alert_gamma config_entry_value = "The Solar Federation has placed this system under Gamma Alert status. This galactic system is facing a ZK-Class Reality Failure Scenario. Security Personnel is authorized full access to lethal equipment to enforce Martial Law. Failure to follow emergency procedures is punishable by death. This is not a drill." diff --git a/modular_skyrat/modules/alerts/code/security_level_datums.dm b/modular_skyrat/modules/alerts/code/security_level_datums.dm index a80ce9a519b..afa355df55a 100644 --- a/modular_skyrat/modules/alerts/code/security_level_datums.dm +++ b/modular_skyrat/modules/alerts/code/security_level_datums.dm @@ -63,6 +63,20 @@ sound = 'modular_skyrat/modules/alerts/sound/security_levels/amber.ogg' shuttle_call_time_mod = 0.5 +/** + * Epsilon + * + * Deathsquad comes to KILL ALL + */ +/datum/security_level/epsilon + name = "epsilon" + announcement_color = "grey" + number_level = SEC_LEVEL_EPSILON + lowering_to_configuration_key = /datum/config_entry/string/alert_epsilon_downto + elevating_to_configuration_key = /datum/config_entry/string/alert_epsilon_upto + sound = 'modular_skyrat/modules/alerts/sound/security_levels/epsilon.ogg' + looping_sound = 'modular_skyrat/modules/alerts/sound/misc/alarm_delta.ogg' + looping_sound_interval = 8 SECONDS /** * Gamma diff --git a/modular_skyrat/modules/alerts/sound/security_levels/epsilon.ogg b/modular_skyrat/modules/alerts/sound/security_levels/epsilon.ogg new file mode 100644 index 0000000000000000000000000000000000000000..24c4ecca9a10599643f342b8dd24d3d8fb02eede GIT binary patch literal 136699 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 W-o$hlX30!XRu+6I`&yD)qW*vL-2 Date: Tue, 26 Dec 2023 00:44:09 +0100 Subject: [PATCH 048/166] Automatic changelog for PR #25857 [ci skip] --- html/changelogs/AutoChangeLog-pr-25857.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25857.yml diff --git a/html/changelogs/AutoChangeLog-pr-25857.yml b/html/changelogs/AutoChangeLog-pr-25857.yml new file mode 100644 index 00000000000..b56fba8a6b6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25857.yml @@ -0,0 +1,4 @@ +author: "Gandalf2k15" +delete-after: True +changes: + - rscadd: "Epsilon alert level." \ No newline at end of file From 75b3cffa707070b2c426018859bc184de40de99a Mon Sep 17 00:00:00 2001 From: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Date: Tue, 26 Dec 2023 00:00:42 +0000 Subject: [PATCH 049/166] Revert announcement CSS back to TG (#25859) revert to TG --- .../tgui-panel/styles/tgchat/chat-dark.scss | 52 ------------------- .../tgui-panel/styles/tgchat/chat-light.scss | 52 ------------------- 2 files changed, 104 deletions(-) diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss index e3f4ecd2feb..18bc847b011 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss @@ -1056,8 +1056,6 @@ em { border-bottom: 1px dashed #fff; } -// SKYRAT EDIT CHANGE BEGIN - Remove neon colors, replaced with less saturated -/* $alert-stripe-colors: ( 'default': #00283a, 'green': #003d00, @@ -1105,56 +1103,6 @@ $alert-subheader-header-colors: ( 'purple': #33d5ff, 'grey': #33d5ff, ); -*/ - -$alert-stripe-colors: ( - 'default': #0e152c, - 'green': #0f2e0f, - 'blue': #121c3a, - 'pink': #240c19, - 'yellow': #574a00, - 'orange': #431b16, - 'red': #420000, - 'purple': #220c24, - 'grey': #252525, -); - -$alert-stripe-alternate-colors: ( - 'default': #111934, - 'green': #123512, - 'blue': #151f41, - 'pink': #301022, - 'yellow': #4d4100, - 'orange': #50211b, - 'red': #520000, - 'purple': #2b0f2e, - 'grey': #292929, -); - -$alert-major-header-colors: ( - 'default': #94a5db, - 'green': #00a854, - 'blue': #94a5db, - 'pink': #e990c3, - 'yellow': #e6af4c, - 'orange': #e79f79, - 'red': #ff4542, - 'purple': #bf9cde, - 'grey': #ff4542, -); - -$alert-subheader-header-colors: ( - 'default': #c5ba7c, - 'green': #d5a0a0, - 'blue': #c5ba7c, - 'pink': #f7cfcf, - 'yellow': #ffddbd, - 'orange': #ffddbd, - 'red': #e9aa72, - 'purple': #f7cfcf, - 'grey': #e9aa72, -); -// SKYRAT EDIT CHANGE END $border-width: 4; diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss index 81955e9eded..82efa14117a 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss @@ -984,8 +984,6 @@ h2.alert { border-bottom: 1px dashed #000; } -// SKYRAT EDIT CHANGE BEGIN - Remove neon colors, replaced with less saturated -/* $alert-stripe-colors: ( 'default': #b3bfff, 'green': #adffad, @@ -1033,56 +1031,6 @@ $alert-subheader-header-colors: ( 'purple': #002c85, 'grey': #002c85, ); -*/ - -$alert-stripe-colors: ( - 'default': #c6ccec, - 'green': #ceebc2, - 'blue': #c6ccec, - 'pink': #ecc6d9, - 'yellow': #fff3b3, - 'orange': #ffe2b3, - 'red': #ffbbb3, - 'purple': #e6d1f0, - 'grey': #e3e3e3, -); - -$alert-stripe-alternate-colors: ( - 'default': #ced3ef, - 'green': #d8efce, - 'blue': #ced3ef, - 'pink': #f0d1e1, - 'yellow': #fff5c2, - 'orange': #ffe8c2, - 'red': #ffc8c2, - 'purple': #ead9f2, - 'grey': #ebebeb, -); - -$alert-major-header-colors: ( - 'default': #003061, - 'green': #1f440e, - 'blue': #003061, - 'pink': #602040, - 'yellow': #990f00, - 'orange': #b14810, - 'red': #a80e00, - 'purple': #5b2673, - 'grey': #a80e00, -); - -$alert-subheader-header-colors: ( - 'default': #991200, - 'green': #002c85, - 'blue': #991200, - 'pink': #002c85, - 'yellow': #214164, - 'orange': #002c85, - 'red': #483c3c, - 'purple': #991200, - 'grey': #002c85, -); -// SKYRAT EDIT CHANGE END $border-width: 4; From e42d360c5503ae714818c76700b7590c3a385340 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 01:18:24 +0100 Subject: [PATCH 050/166] Automatic changelog for PR #25859 [ci skip] --- html/changelogs/AutoChangeLog-pr-25859.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25859.yml diff --git a/html/changelogs/AutoChangeLog-pr-25859.yml b/html/changelogs/AutoChangeLog-pr-25859.yml new file mode 100644 index 00000000000..793219c845a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25859.yml @@ -0,0 +1,4 @@ +author: "LT3" +delete-after: True +changes: + - code_imp: "Announcement CSS is reverted to TG default" \ No newline at end of file From 6c011fa79a715424f76be9e1d524083d707b0bc1 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 26 Dec 2023 00:34:45 +0000 Subject: [PATCH 051/166] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-24616.yml | 5 -- html/changelogs/AutoChangeLog-pr-25461.yml | 5 -- html/changelogs/AutoChangeLog-pr-25469.yml | 4 -- html/changelogs/AutoChangeLog-pr-25593.yml | 4 -- html/changelogs/AutoChangeLog-pr-25639.yml | 6 -- html/changelogs/AutoChangeLog-pr-25697.yml | 4 -- html/changelogs/AutoChangeLog-pr-25789.yml | 4 -- html/changelogs/AutoChangeLog-pr-25826.yml | 7 -- html/changelogs/AutoChangeLog-pr-25827.yml | 4 -- html/changelogs/AutoChangeLog-pr-25832.yml | 6 -- html/changelogs/AutoChangeLog-pr-25833.yml | 4 -- html/changelogs/AutoChangeLog-pr-25834.yml | 4 -- html/changelogs/AutoChangeLog-pr-25835.yml | 6 -- html/changelogs/AutoChangeLog-pr-25836.yml | 7 -- html/changelogs/AutoChangeLog-pr-25838.yml | 5 -- html/changelogs/AutoChangeLog-pr-25839.yml | 4 -- html/changelogs/AutoChangeLog-pr-25840.yml | 4 -- html/changelogs/AutoChangeLog-pr-25841.yml | 4 -- html/changelogs/AutoChangeLog-pr-25842.yml | 4 -- html/changelogs/AutoChangeLog-pr-25845.yml | 4 -- html/changelogs/AutoChangeLog-pr-25846.yml | 4 -- html/changelogs/AutoChangeLog-pr-25847.yml | 4 -- html/changelogs/AutoChangeLog-pr-25848.yml | 4 -- html/changelogs/AutoChangeLog-pr-25849.yml | 4 -- html/changelogs/AutoChangeLog-pr-25851.yml | 4 -- html/changelogs/AutoChangeLog-pr-25853.yml | 4 -- html/changelogs/AutoChangeLog-pr-25854.yml | 8 --- html/changelogs/AutoChangeLog-pr-25855.yml | 5 -- html/changelogs/AutoChangeLog-pr-25856.yml | 4 -- html/changelogs/AutoChangeLog-pr-25857.yml | 4 -- html/changelogs/AutoChangeLog-pr-25859.yml | 4 -- html/changelogs/archive/2023-12.yml | 84 ++++++++++++++++++++++ 32 files changed, 84 insertions(+), 144 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-24616.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25461.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25469.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25593.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25639.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25697.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25789.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25826.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25827.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25832.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25833.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25834.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25835.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25836.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25838.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25839.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25840.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25841.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25842.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25845.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25846.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25847.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25848.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25849.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25851.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25853.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25854.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25855.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25856.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25857.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25859.yml diff --git a/html/changelogs/AutoChangeLog-pr-24616.yml b/html/changelogs/AutoChangeLog-pr-24616.yml deleted file mode 100644 index 1dc35bf0057..00000000000 --- a/html/changelogs/AutoChangeLog-pr-24616.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "A.C.M.O." -delete-after: True -changes: - - rscadd: "Added the forked cybernetic tongue to Augments+." - - rscadd: "Added the robotic lizard voicebox to Augments+ and the RoboDrobe vendor." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25461.yml b/html/changelogs/AutoChangeLog-pr-25461.yml deleted file mode 100644 index f64d3726f72..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25461.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Lutowski" -delete-after: True -changes: - - rscadd: "Void Raptor pharmacy and lab is slightly more spacious and prettier." - - qol: "Chem vendor moved from pharmacy to chemistry lab on Void Raptor." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25469.yml b/html/changelogs/AutoChangeLog-pr-25469.yml deleted file mode 100644 index 3cca4d8f5a0..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25469.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "honkpocket" -delete-after: True -changes: - - balance: "Blueshift's vault, armoury, AI upload and prison are a little more antag friendly!" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25593.yml b/html/changelogs/AutoChangeLog-pr-25593.yml deleted file mode 100644 index f6e02051e8c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25593.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JungleRat" -delete-after: True -changes: - - image: "Adds a buzzed effect to the left side of half shaved instead of leaving it bald." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25639.yml b/html/changelogs/AutoChangeLog-pr-25639.yml deleted file mode 100644 index df665d52d0e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25639.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Thlumyn" -delete-after: True -changes: - - rscadd: "Added and moved some areas in the ghost cafe." - - rscadd: "Added an icewalker section to the ghost cafe." - - rscadd: "Added an ashwalker section to the ghost cafe." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25697.yml b/html/changelogs/AutoChangeLog-pr-25697.yml deleted file mode 100644 index 955e28c9fdb..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25697.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "zeroisthebiggay" -delete-after: True -changes: - - rscadd: "icewalkers can be digitigrade" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25789.yml b/html/changelogs/AutoChangeLog-pr-25789.yml deleted file mode 100644 index 5a0149a741d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25789.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - refactor: "Ghost roles now offer ghosts a clickable poll button. Ghosts can select a role, deselect it, alt-click it for \"Never For This Round\", can cancel \"Never\", can see the countdown, and can see how many other people are signed up for the role poll." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25826.yml b/html/changelogs/AutoChangeLog-pr-25826.yml deleted file mode 100644 index c3438da10ce..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25826.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "AI voice changer UI should show defaults properly" - - bugfix: "NTOS Software Hub should focus on the input immediately now" - - bugfix: "Ore container UI should autofocus on the search bar now" - - bugfix: "Vend-a-tray registration text should display as intended" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25827.yml b/html/changelogs/AutoChangeLog-pr-25827.yml deleted file mode 100644 index 502b586a388..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25827.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Fixed integrated circuit UI breaking." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25832.yml b/html/changelogs/AutoChangeLog-pr-25832.yml deleted file mode 100644 index ab0aa021ee6..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25832.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Camera circuits actually print pictures again!" - - qol: "Camera circuits can now take pictures while on a carbon, whether held, hung around the neck, or sneakily hidden in either pocket. When held they try to deposit their pictures into the holder's hands if possible." - - bugfix: "Camera circuits should now actually use the camera's x axis picture size, rather than using the camera's y axis picture size setting for both axis." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25833.yml b/html/changelogs/AutoChangeLog-pr-25833.yml deleted file mode 100644 index 9e08eb3e1bd..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25833.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "A.C.M.O." -delete-after: True -changes: - - bugfix: "Fixed Personal AI cards, allowing them to wake up from sleep." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25834.yml b/html/changelogs/AutoChangeLog-pr-25834.yml deleted file mode 100644 index 565ef811716..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25834.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - spellcheck: "changes mutiline text to multiline text in vv" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25835.yml b/html/changelogs/AutoChangeLog-pr-25835.yml deleted file mode 100644 index a7046d44fea..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25835.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "Canisters now have wires! You can pulse wires to do various canister functions like opening/closing the valve. Make sure it has a cell though." - - rscadd: "You can rig assembly combos (igniter-timer, prox-signaler, etc.) onto canisters" - - qol: "Canisters now have screentips" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25836.yml b/html/changelogs/AutoChangeLog-pr-25836.yml deleted file mode 100644 index 854665d0d7f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25836.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "mat container displays correct number of sheets inserted for alloy materials." - - bugfix: "remote materials now properly respect the `MATCONTAINER_NO_INSERT` flag." - - code_imp: "removes material breakdown flags and related traits." - - code_imp: "adds helper proc to insert materials via the remote material component with proper context." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25838.yml b/html/changelogs/AutoChangeLog-pr-25838.yml deleted file mode 100644 index 831e030644d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25838.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - qol: "Wendigo Cave ruin gets an aesthetic refresh" - - bugfix: "Wendigos (Wendigi?) no longer attack corpses" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25839.yml b/html/changelogs/AutoChangeLog-pr-25839.yml deleted file mode 100644 index 844e923db2a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25839.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MelokGleb and KREKS" -delete-after: True -changes: - - image: "modified wizard weapon textures" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25840.yml b/html/changelogs/AutoChangeLog-pr-25840.yml deleted file mode 100644 index c028a2e7a8b..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25840.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "LUA editor should be usable again" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25841.yml b/html/changelogs/AutoChangeLog-pr-25841.yml deleted file mode 100644 index 733bc290cba..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25841.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "fixing damaged sandy dirt lacking an icon" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25842.yml b/html/changelogs/AutoChangeLog-pr-25842.yml deleted file mode 100644 index 978aaa854a9..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25842.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Regal rats (and others), won't be punished by the automute system for repeating the same command several times." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25845.yml b/html/changelogs/AutoChangeLog-pr-25845.yml deleted file mode 100644 index 3d63438d608..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25845.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "fixes a potential mob hard del with cardboard boxes" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25846.yml b/html/changelogs/AutoChangeLog-pr-25846.yml deleted file mode 100644 index b771335783a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25846.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "fixes a hard del with thrown items" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25847.yml b/html/changelogs/AutoChangeLog-pr-25847.yml deleted file mode 100644 index 2c08033109f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25847.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "plumbing rcd ui no longer has any graphical glitches" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25848.yml b/html/changelogs/AutoChangeLog-pr-25848.yml deleted file mode 100644 index 1daa7d374d0..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25848.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Nikothedude" -delete-after: True -changes: - - rscadd: "Pet owners can now name and describe their pet" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25849.yml b/html/changelogs/AutoChangeLog-pr-25849.yml deleted file mode 100644 index 2967722c725..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25849.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - qol: "You can now build multiple pipe layers with the RPD, with just 1 click!" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25851.yml b/html/changelogs/AutoChangeLog-pr-25851.yml deleted file mode 100644 index 0f99fecc980..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25851.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "jjpark-kb" -delete-after: True -changes: - - rscadd: "icecats(?) can now respawn, similarly to ashwalkers" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25853.yml b/html/changelogs/AutoChangeLog-pr-25853.yml deleted file mode 100644 index 6fb5f2c7070..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25853.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "jjpark-kb" -delete-after: True -changes: - - rscadd: "added a cursed ashen necklace to loadout (allows you to understand and speak to ashwalkers)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25854.yml b/html/changelogs/AutoChangeLog-pr-25854.yml deleted file mode 100644 index dd81785cff7..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25854.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "debug chem heater now withdraws more than 100 units from its inserted beaker." - - bugfix: "chem heater has correct overlay when its panel is closed with a screwdriver while a beaker is inside." - - qol: "added more examines and tooltips for the chem heater." - - code_imp: "converted chem heater UI to typescript. removed unused procs, vars, ui tracking code. Added auto doc for everything." - - refactor: "removed chem heater tutorial help button & its related reward, chem heater code has been optimized as a whole." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25855.yml b/html/changelogs/AutoChangeLog-pr-25855.yml deleted file mode 100644 index 41ebafa5cd1..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25855.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "Added the 'Coupon Master' program for the PDA. Install it to receive periodical, redeemable coupons for several cargo packs. Requires NTnet connection and the messenger enabled to work." - - rscadd: "Coupons are no longer only limited to goodies, but may also apply discount to some other packs as well." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25856.yml b/html/changelogs/AutoChangeLog-pr-25856.yml deleted file mode 100644 index 01f4c736c1e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25856.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "jjpark-kb" -delete-after: True -changes: - - rscadd: "added the crusher to mining borgs" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25857.yml b/html/changelogs/AutoChangeLog-pr-25857.yml deleted file mode 100644 index b56fba8a6b6..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25857.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Gandalf2k15" -delete-after: True -changes: - - rscadd: "Epsilon alert level." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25859.yml b/html/changelogs/AutoChangeLog-pr-25859.yml deleted file mode 100644 index 793219c845a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25859.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "LT3" -delete-after: True -changes: - - code_imp: "Announcement CSS is reverted to TG default" \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index 848e483b330..7887f1da9ef 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -894,3 +894,87 @@ - bugfix: You can select Cargo Tech and Shaft Miner, again. zeroisthebiggay: - image: bluesec MODsuits. finally goddamn +2023-12-26: + A.C.M.O.: + - rscadd: Added the forked cybernetic tongue to Augments+. + - rscadd: Added the robotic lizard voicebox to Augments+ and the RoboDrobe vendor. + - bugfix: Fixed Personal AI cards, allowing them to wake up from sleep. + Gandalf2k15: + - rscadd: Epsilon alert level. + JungleRat: + - image: Adds a buzzed effect to the left side of half shaved instead of leaving + it bald. + LT3: + - code_imp: Announcement CSS is reverted to TG default + Lutowski: + - rscadd: Void Raptor pharmacy and lab is slightly more spacious and prettier. + - qol: Chem vendor moved from pharmacy to chemistry lab on Void Raptor. + MelokGleb and KREKS: + - image: modified wizard weapon textures + Nikothedude: + - rscadd: Pet owners can now name and describe their pet + SkyratBot: + - refactor: Ghost roles now offer ghosts a clickable poll button. Ghosts can select + a role, deselect it, alt-click it for "Never For This Round", can cancel "Never", + can see the countdown, and can see how many other people are signed up for the + role poll. + - rscadd: Added the 'Coupon Master' program for the PDA. Install it to receive periodical, + redeemable coupons for several cargo packs. Requires NTnet connection and the + messenger enabled to work. + - rscadd: Coupons are no longer only limited to goodies, but may also apply discount + to some other packs as well. + - bugfix: Regal rats (and others), won't be punished by the automute system for + repeating the same command several times. + - bugfix: LUA editor should be usable again + - bugfix: fixing damaged sandy dirt lacking an icon + - bugfix: plumbing rcd ui no longer has any graphical glitches + - bugfix: fixes a potential mob hard del with cardboard boxes + - qol: You can now build multiple pipe layers with the RPD, with just 1 click! + - bugfix: mat container displays correct number of sheets inserted for alloy materials. + - bugfix: remote materials now properly respect the `MATCONTAINER_NO_INSERT` flag. + - code_imp: removes material breakdown flags and related traits. + - code_imp: adds helper proc to insert materials via the remote material component + with proper context. + - spellcheck: changes mutiline text to multiline text in vv + - bugfix: Camera circuits actually print pictures again! + - qol: Camera circuits can now take pictures while on a carbon, whether held, hung + around the neck, or sneakily hidden in either pocket. When held they try to + deposit their pictures into the holder's hands if possible. + - bugfix: Camera circuits should now actually use the camera's x axis picture size, + rather than using the camera's y axis picture size setting for both axis. + - bugfix: AI voice changer UI should show defaults properly + - bugfix: NTOS Software Hub should focus on the input immediately now + - bugfix: Ore container UI should autofocus on the search bar now + - bugfix: Vend-a-tray registration text should display as intended + - qol: Wendigo Cave ruin gets an aesthetic refresh + - bugfix: Wendigos (Wendigi?) no longer attack corpses + - bugfix: fixes a hard del with thrown items + - bugfix: Fixed integrated circuit UI breaking. + - rscadd: Canisters now have wires! You can pulse wires to do various canister functions + like opening/closing the valve. Make sure it has a cell though. + - rscadd: You can rig assembly combos (igniter-timer, prox-signaler, etc.) onto + canisters + - qol: Canisters now have screentips + - bugfix: debug chem heater now withdraws more than 100 units from its inserted + beaker. + - bugfix: chem heater has correct overlay when its panel is closed with a screwdriver + while a beaker is inside. + - qol: added more examines and tooltips for the chem heater. + - code_imp: converted chem heater UI to typescript. removed unused procs, vars, + ui tracking code. Added auto doc for everything. + - refactor: removed chem heater tutorial help button & its related reward, chem + heater code has been optimized as a whole. + Thlumyn: + - rscadd: Added and moved some areas in the ghost cafe. + - rscadd: Added an icewalker section to the ghost cafe. + - rscadd: Added an ashwalker section to the ghost cafe. + honkpocket: + - balance: Blueshift's vault, armoury, AI upload and prison are a little more antag + friendly! + jjpark-kb: + - rscadd: added the crusher to mining borgs + - rscadd: added a cursed ashen necklace to loadout (allows you to understand and + speak to ashwalkers) + - rscadd: icecats(?) can now respawn, similarly to ashwalkers + zeroisthebiggay: + - rscadd: icewalkers can be digitigrade From b54ca5ce5b6dfcf2acb22638e16be085c4d69e54 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 03:51:55 +0100 Subject: [PATCH 052/166] [MIRROR] Reduces Yawn prop chances [MDB IGNORE] (#25863) * Reduces Yawn prop chances * Update emote.dm --------- Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com> Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> --- code/modules/mob/living/emote.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 8c95f897817..9fea3be8a20 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -560,9 +560,9 @@ message = "smiles weakly." /// The base chance for your yawn to propagate to someone else if they're on the same tile as you -#define YAWN_PROPAGATE_CHANCE_BASE 0 // SKYRAT EDIT - Group yawn no more - ORIGINAL: #define YAWN_PROPAGATE_CHANCE_BASE 40 -/// The base chance for your yawn to propagate to someone else if they're on the same tile as you -#define YAWN_PROPAGATE_CHANCE_DECAY 8 +#define YAWN_PROPAGATE_CHANCE_BASE 20 +/// The amount the base chance to propagate yawns falls for each tile of distance +#define YAWN_PROPAGATE_CHANCE_DECAY 4 /datum/emote/living/yawn key = "yawn" From e04066299c3a5ffd8916a88e5c3e5da3128c787e Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 03:52:14 +0100 Subject: [PATCH 053/166] [MIRROR] Fix heartbeat continuing for a while on revival [MDB IGNORE] (#25862) * Fix heartbeat continuing for a while on revival (#80561) ## About The Pull Request - If you are defibbed (into hard crit), your heartbeat will be `BEAT_FAST` - If you are healed fast enough from hard crit, such that you do not life tick while in soft crit, you skip `BEAT_SLOW` - If you skip `BEAT_SLOW`, it never stops the heartbeat This PR fixes this issue by checking `if not in crit, and heartbeat sound is playing -> stop sound`. ## Changelog :cl: Melbert fix: Fixed some occasions in which heartbeat SFX will continue on revival for longer than expected /:cl: * Fix heartbeat continuing for a while on revival --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> --- code/modules/surgery/organs/internal/heart/_heart.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm index e2ca8725b9d..2773f588b24 100644 --- a/code/modules/surgery/organs/internal/heart/_heart.dm +++ b/code/modules/surgery/organs/internal/heart/_heart.dm @@ -119,7 +119,7 @@ SEND_SOUND(owner, sound('sound/health/fastbeat.ogg', repeat = TRUE, channel = CHANNEL_HEARTBEAT, volume = 40)) beat = BEAT_FAST - else if(beat == BEAT_SLOW) + else if(beat != BEAT_NONE) owner.stop_sound_channel(CHANNEL_HEARTBEAT) beat = BEAT_NONE From 913eb0b921876fe9463bc603fe5120dbdd1c588e Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 03:52:16 +0100 Subject: [PATCH 054/166] Automatic changelog for PR #25863 [ci skip] --- html/changelogs/AutoChangeLog-pr-25863.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25863.yml diff --git a/html/changelogs/AutoChangeLog-pr-25863.yml b/html/changelogs/AutoChangeLog-pr-25863.yml new file mode 100644 index 00000000000..c366dbea77b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25863.yml @@ -0,0 +1,4 @@ +author: "Ryll/Shaps" +delete-after: True +changes: + - balance: "Yawns are less likely to propagate" \ No newline at end of file From c5fa2bcf16b65f17f1696fb7792b743a87da1c2b Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 03:52:35 +0100 Subject: [PATCH 055/166] Automatic changelog for PR #25862 [ci skip] --- html/changelogs/AutoChangeLog-pr-25862.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25862.yml diff --git a/html/changelogs/AutoChangeLog-pr-25862.yml b/html/changelogs/AutoChangeLog-pr-25862.yml new file mode 100644 index 00000000000..379d31e8d41 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25862.yml @@ -0,0 +1,4 @@ +author: "Melbert" +delete-after: True +changes: + - bugfix: "Fixed some occasions in which heartbeat SFX will continue on revival for longer than expected" \ No newline at end of file From 0d118af802d5ffe8eddbef362ab1e4cc5009bdbf Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 03:53:41 +0100 Subject: [PATCH 056/166] [MIRROR] Adds a brown variant of the Detective's Noir Suit [MDB IGNORE] (#25858) * Adds a brown variant of the Detective's Noir Suit (#80451) * Adds a brown variant of the Detective's Noir Suit --------- Co-authored-by: ReinaCoder <83892995+ReinaCoder@users.noreply.github.com> --- code/modules/clothing/suits/jobs.dm | 6 ++++++ code/modules/vending/wardrobes.dm | 1 + icons/mob/clothing/suits/jacket.dmi | Bin 14532 -> 14934 bytes icons/obj/clothing/suits/jacket.dmi | Bin 5385 -> 5461 bytes 4 files changed, 7 insertions(+) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 3ed9be8cb1d..b63bb493e58 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -144,6 +144,12 @@ icon_state = "detsuit" inhand_icon_state = null +/obj/item/clothing/suit/jacket/det_suit/brown + name = "brown suit jacket" + desc = "A suit jacket perfect for dinner dates and criminal investigations." + icon_state = "detsuit_brown" + inhand_icon_state = null + /obj/item/clothing/suit/jacket/det_suit/kim name = "aerostatic bomber jacket" desc = "A jacket once worn by the revolutionary air brigades during the Antecentennial Revolution. There are quite a few pockets on the inside, mostly for storing notebooks and compasses." diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 24c619012cd..68a721fb00c 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -642,6 +642,7 @@ /obj/item/clothing/under/rank/security/detective = 2, /obj/item/clothing/under/rank/security/detective/skirt = 2, /obj/item/clothing/suit/jacket/det_suit = 2, + /obj/item/clothing/suit/jacket/det_suit/brown = 2, /obj/item/clothing/shoes/sneakers/brown = 2, /obj/item/clothing/gloves/latex = 2, /obj/item/clothing/gloves/color/black = 2, diff --git a/icons/mob/clothing/suits/jacket.dmi b/icons/mob/clothing/suits/jacket.dmi index a6f25d91c59bfe13b83f6192ca035a66221b9cc9..fa93a85c7c6f1572afc218c8e9b147b092485377 100644 GIT binary patch delta 14276 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 YM|G2E_ek#cyE&Yvs@f`*N>*Y23kC}1HUIzs delta 13881 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 diff --git a/icons/obj/clothing/suits/jacket.dmi b/icons/obj/clothing/suits/jacket.dmi index dc507017cd25d97cc66d87e48909a7715abf9a8c..30e1a99d9eed4197b708bb86c2688c9abaa307d8 100644 GIT binary patch delta 5082 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 delta 5005 zcmYkAc{tSV_s2gY%NR@cB{7ziM97+DEE#JV>q7`-PnIV{3?Iu_vP9N|$i7A)S%<92 zTJ~+G?7Qq{#`yJof8XEldftDWbMEW9|GVGUIrr;~iM|l61|fEXgM;yjY0PYFeEcHb zchxTe(sF?Dy?ggKrG+2Sc?WZcNXaPZ>KkY^Xo*3Y&8~{X-j%9F0P!(4Fagw-C!PM(Pm^&Fc5uKWT#~+LXqT;|1x0M!zUBKS zz`|DGR=ewWiia;<#}H>48K26cx~6D(&ay~n>R&zv1O?i9mW}l^D)UpV5Z4O>TAL(d z^W7%3R@Od3NM-*Vc2kzYG3S)F8rkP}2@yk8#?XykE`k+hA zwR))QdJ$Z!a~_RzZOL}yy^!rBtJ{3^ApQzw#sWrEwH))1C^?e66z775l%;kzoss*AWkjU<>-%WixHofyYEPUao76Akoew_71z zW=ZTx2lKDoLvF};6g|O;=}u0e_TY@``@(8I+R5S`3vH@tzmH8t5dpv03KLWrY7c)U zufRBJ$tEJ{w1MvD8tG#*PQItQClu9Czt-virDOnLeyyviZt9=4l^tu#dOxkF+?Wa~ zQwt_hYWVkjGINp|aTs?(sy$&WcYT+g-6|{a@e6=n?icub){+^*I@Rd*4N+{ zrBHPsSRfjKwP?U)c@N!NH)ih`{{D{?uiX;Bxyoy#3>_FPpj(q>T&B_-Q&SUd)N4#} zwPJ8ucd@Ohc4q>tt2!^qRA9=CvrHG{EbF}1D_ea9S34||*5)xisVW>I%rrjA z@(}6H;A#HgqzHyK!|7nsT+6Aauc8b)X&N@H5Z9@TmN4mEl(|G@5?EDUSy5V2QBqn_ zX@9m(D5EnQvsf=bJ<9)SfO$H!cz9j22%njf*;kLg972%K=@?wT{VbPIooJnZR9{z@ z3RF~7o{cY`+_b5vYBUWhEhGOzrVS&~9?dfL){kgEnb-E;mjJ^0Pn`G?kJ^>PQD^0C z6T9LXQI{(Lr-6C~J}miB&|y~qFm7AXEmuPmYopGt4o@DTgoC2j(Xhnr8!ExRL5GFw zu|RWlAVN3jlx>L!)LB8EB7jQe+%7;+vWTukPxzc3HataUt1imR(}H}Dq^T}zB(sER zhtwJkjB|f;&$U3_qv|DKmPmeP)Ke4D(4fwhy8cZ24BZO=n zEGB}4gc%N9UTslKQ(I|euV&0|O3%vE8a(+8y`+0z%?ugws{p;N` z$g_lyq*1y~#grruOTHOWzG$wVC2b&<((H#`Fc}Qnl33@wAeJW3WvUR?{Q;V${TH91 zzeM^_2n+3X^!n8kHiYjD_v5Y<9>>nVyVK#$L)+K#GzcA%?TEI5`n)vXG}S%!#G!si zkrrM~jS>WX_6)!mn|l!2qfq4&Nzt!uNUhvMu&`hBt68yv(0 zZrAEw4B34`%%|Vi+Bb}JY~v0dY<-@7fmHC~j(@Pz$k)yi3q#M%^`cf@E_A5+ z38C>DPP7-^6@5$3B(1tas-|XFRhNl8E$Xe$%ZtzY*c%UL8^3POe;gPr2hG>Ihfv+D zBfWA$dC$@5laxL?6n!$M-|#FwfH=$rfnV++~-?t?_#!aYunHlB1Utx8>^sM7QGKW^UoGx9v=O9!Z82 zjh(hokXna!YS5peN(5`=Q=Gko{x z2an2@2jvVmLU7YZX!0xH{tKj#2c?iQ9GR%dZEOT!q5!=PXdey3F9Fe_c@`Gv<>O3> zyS$Cx$BW8D#y455w^pkmE`C1Nj%OPW9>@V(@855riSc%^F?O*EjGr)It`X+=&bBVT>N!WrM~(iuCe?Ofh{$>Q_QMdG zKWApVCQSC-(yDzhcw?r=GWNvTMu6Va07i{LSWK$!!%7akCxlO&Z9@}8zpBDT)6gro zZr9cRSA)#~fq@^$5_M#3$-I(Z+qk}8@m$Ksl4Ao~Tz2a`qVdMXpL1k#C>R<_CO3t_ z6T0$7T*SHu?}{)eimpus?#wn#`0X%m6Sn7W(EYjjP5@wJpvC;Q5QMa8YFxS8d@i)h zHw$0fau6-tHYvTba5TRW&WAwj_yvjO7B1gZQtVLXDeL<7w<;a^Teg-V&3!aN;1i7;T@pK|9p864ghJcRC-B*=6n377u!Gp*Gtg%~dCv9O^g8L9gzZBR zzpbYFr`twV`yQKoaZ$c>=P`>Nh1K5@0s~lvc~I>^Vm4UrCTZg9E95Iwx>!Ah*Zn@P z9n>Rq(o5%(ncq3=YL!2`7LG(a6pg4Bl&u=7M(mrYQHrM-n#nNddj&x5x$U-6G^_TK z2YlzelJcTNz&v=s>^xRkFMoyQv{ zZ5I9f%1P6E6es=a@?qg$aMs0_w30gPE;}{PV-f3TCEDO2Ahi8OJTyG*9Sw_#J-l4Wr197o0useQq<`l+ES$z8}}ADt9vsA>E&UEOJG!C`>VL zpHE!B^`)8=d?^{&35KP!_FaQ?pPoL@Oq3}ZCtZkCSD;78g;7I{Bc59T!+cBnt1G7$ zZi2afab9e`kiscp?_u6mnh0mWF542r%NC0-QKXvu)WAlf2l4OeM40k86+&*kbBCbb zg3`MPE%C4zq@-RDJ-3Jo$c$CJ*t_B)c2Q($Ro6@`Oy-hygVf1BiHwecg`Bd9^WbrO zzxMGR*wnQJ{#7=72$ah#WaJ~{QFJd@_3d4-bHNU0d5QG*p1!VQ_ED55zDLKlQr7Zc zI`@>3L&!xg)n*!fT*hQ9>&V$^dcoo&l`Y+eoga&2a!mL>0YFEP9)= zs-3_6>S3rCX|0nB=(+m#Wes`JK^%V-J^{m|ZP`4#n*|r!M1kiA4lxId#cN4u{1RhO z&3@DZDhI*Klfwn?P|=1eb23H8q0Es!kb=|pFmiIv9-#WSl<0B~>u+Vdtc(k9{S~Dc z+x`Y#qWb#-NK+YalP>2+q4{Y zj!)vA`aD_2_H^%Nt}rJjTnp7!o&5E-ZKY<6-O2rDpLMG;{|@S&Q8ZKT^-pJuO(D%y zS0x_#*t_+2z7E}^Xe)jk8`$eGu+Za^T;@WC)#Q09nuCL^r0aSbS8_+mrLJSNNL)sX zh@@ZWC74#yq%O!O$b?GpD)O3iC|@~=<}Gv{ux~g2 zQBSo(lMRhoz#kmcT5956In^qb5ap@E^)RT|DwWEDqec>w!wlh`4h zSpCA&ucmsZq|^A}y&>;?u%IC)U4Jj00{!YreYDl5Du{8dUl#Uzv{UCwWD<~<_suP{QU&$H-^m{p%L zFssqI-fvuP@yF=~b-d2W^n+BJg<+Yjy&%pI+M!Q3mF6nk6OY<)FGZ2wcE z7t0Mq2&ILEi_$4CoE`Vr@o1yAhOiJiBqTiVTr9&<;{sW!K-k zr~509nS-u@VM$o1O1@bJI_1^U((~OH%vmPPY(bPOrxYihP--(u~jqJI(x$KE5N>J{0 zjjWPVlWa$p)sZk7vr|9DS&kKmuE4go{(fqI;Tu75W2aEucRM+C-u`T&3bfhUBn=G? zmYY}I$GTmW4d=)Ul9t{i&Cs5W)!~Bg1S|T*VLvor8$Kk!8=X%X8RsX9&X(~Z!m~ld zqphZTC5!piIY&~jtR^5{;Fy*TDrI=`qtyZ-2+CIrf!N=B!Y9=ML(GIt`NV|3`p486 zgp%iih}(06O@5w!HQe1G?oE8br;^YK!I@W6;!`ML{XGWFov!Iib4*C;-81qsp-SS| zmfYCda6V7>IsH>*xI7I)ENvh{();rr-5AQb+lxSa<<=s7!0_fK{XhP&XCJXL`Bo;6 zydFXc2}RN z6-_>WbPwqj5Ax8+%UzGjEXm7cQz`0u-5MU=qT=njgI81d!RNRv>D`;oRk)Saw^;SQ z4EmJ23=<4h`-BlK#FYr{N3MnFP0{y#`)P3X#)(UAj2a{)`BdU53tCi$hs5_PfaMJ;Jl#Qd*F}){m(6Ac9V>_VDh~f$z-W zQf=Spe&M!5;xR5%cE>gArSV}>fa8im4RDq=( zWNbMt5KJ@TPZ9E>Mo(wo4QBY-_JYk{5U0@IEq)FprG2#BRIBN-L*A(@O`^(4wu)k( zA#{x#{q4JjAaerb4<%IFRz6!d-gg7omM56xLU_x*#^0fqG?;i0Pa&yi{wNizb9hi& zlX<(}=~l+3fD$$>B12ftcZaG#0*r{c(dOSSk)Vid(F(fKCKMbTKfE@qS}Fa{*fae@ z*7Ip;Wy-mWa57!uIm-%ek68@0Z*Vh(8|d42 Date: Tue, 26 Dec 2023 04:04:08 +0100 Subject: [PATCH 057/166] Automatic changelog for PR #25858 [ci skip] --- html/changelogs/AutoChangeLog-pr-25858.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25858.yml diff --git a/html/changelogs/AutoChangeLog-pr-25858.yml b/html/changelogs/AutoChangeLog-pr-25858.yml new file mode 100644 index 00000000000..a38328d48fa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25858.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - rscadd: "Adds a brown suit jacket to the detective's vendor" + - image: "Adds a new sprite for the a brown detective suit jacket\n:cl:" \ No newline at end of file From 4c5b11ad931da44a51a41df1522b72ddb3b7f7ac Mon Sep 17 00:00:00 2001 From: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Date: Tue, 26 Dec 2023 09:09:19 -0500 Subject: [PATCH 058/166] forging unleashed (#25861) --- .../modules/reagent_forging/code/forge.dm | 49 ++----------------- .../reagent_forging/code/forge_items.dm | 26 ---------- .../reagent_forging/code/reagent_component.dm | 3 -- 3 files changed, 3 insertions(+), 75 deletions(-) diff --git a/modular_skyrat/modules/reagent_forging/code/forge.dm b/modular_skyrat/modules/reagent_forging/code/forge.dm index 148ff5b02be..cf0d05656cc 100644 --- a/modular_skyrat/modules/reagent_forging/code/forge.dm +++ b/modular_skyrat/modules/reagent_forging/code/forge.dm @@ -90,26 +90,6 @@ ) /// List of possible choices for the selection radial var/list/radial_choice_list = list() - /// Blacklist that contains reagents that weapons and armor are unable to be imbued with. - var/static/list/disallowed_reagents = typecacheof(list( - /datum/reagent/inverse/, - /datum/reagent/consumable/entpoly, - /datum/reagent/pax, - /datum/reagent/consumable/liquidelectricity/enriched, - /datum/reagent/teslium, - /datum/reagent/eigenstate, - /datum/reagent/drug/pcp, - /datum/reagent/consumable/cum, - /datum/reagent/consumable/femcum, - /datum/reagent/consumable/breast_milk, - /datum/reagent/toxin/acid, - /datum/reagent/phlogiston, - /datum/reagent/napalm, - /datum/reagent/thermite, - /datum/reagent/medicine/earthsblood, - /datum/reagent/medicine/ephedrine, - /datum/reagent/medicine/epinephrine, - )) /obj/structure/reagent_forge/examine(mob/user) . = ..() @@ -160,7 +140,7 @@ . += span_notice("
[src] is currently [forge_temperature] degrees hot, going towards [target_temperature] degrees.
") - if(reagent_forging && (is_species(user, /datum/species/lizard/ashwalker) || is_species(user, /datum/species/human/felinid/primitive))) + if(reagent_forging) . += span_warning("[src] has a fine gold trim, it is ready to imbue chemicals into reagent objects.") return . @@ -407,11 +387,8 @@ if(SKILL_LEVEL_LEGENDARY) if(!forced) - if(is_species(user, /datum/species/lizard/ashwalker) || is_species(user, /datum/species/human/felinid/primitive)) - to_chat(user, span_notice("With just the right heat treating technique, metal could be made to accept reagents...")) - create_reagent_forge() - if(forge_level == FORGE_LEVEL_MASTER) - to_chat(user, span_warning("It is impossible to further improve the forge!")) + to_chat(user, span_notice("With just the right heat treating technique, metal could be made to accept reagents...")) + create_reagent_forge() temperature_loss_reduction = MAX_TEMPERATURE_LOSS_DECREASE minimum_target_temperature = 25 // This won't matter except in a few cases here, but we still need to cover those few cases forge_level = FORGE_LEVEL_LEGENDARY @@ -565,11 +542,6 @@ to_chat(user, span_danger("It is impossible for you to imbue!")) //maybe remove (ashwalkers & icecats only) after some time return - var/mob/living/carbon/human/human_user = user - if(!is_species(human_user, /datum/species/lizard/ashwalker) && !is_species(human_user, /datum/species/human/felinid/primitive)) - to_chat(user, span_danger("It is impossible for you to imbue!")) //maybe remove (ashwalkers & icecats only) after some time - return - in_use = TRUE balloon_alert_to_viewers("imbuing...") @@ -593,11 +565,6 @@ attacking_weapon.reagents.remove_reagent(weapon_reagent.type) continue - if(is_type_in_typecache(weapon_reagent, disallowed_reagents)) - balloon_alert(user, "cannot imbue with [weapon_reagent.name]") - attacking_weapon.reagents.remove_reagent(weapon_reagent.type, include_subtypes = TRUE) - continue - weapon_component.imbued_reagent += weapon_reagent.type attacking_weapon.name = "[weapon_reagent.name] [attacking_weapon.name]" @@ -615,11 +582,6 @@ to_chat(user, span_danger("It is impossible for you to imbue!")) //maybe remove (ashwalkers & icecats only) after some time return - var/mob/living/carbon/human/human_user = user - if(!is_species(human_user, /datum/species/lizard/ashwalker) && !is_species(human_user, /datum/species/human/felinid/primitive)) - to_chat(user, span_danger("It is impossible for you to imbue!")) //maybe remove (ashwalkers & icecats only) after some time - return - in_use = TRUE balloon_alert_to_viewers("imbuing...") @@ -643,11 +605,6 @@ attacking_clothing.reagents.remove_reagent(clothing_reagent.type, include_subtypes = TRUE) continue - if(is_type_in_typecache(clothing_reagent, disallowed_reagents)) - balloon_alert(user, "cannot imbue with [clothing_reagent.name]") - attacking_clothing.reagents.remove_reagent(clothing_reagent.type, include_subtypes = TRUE) - continue - clothing_component.imbued_reagent += clothing_reagent.type attacking_clothing.name = "[clothing_reagent.name] [attacking_clothing.name]" diff --git a/modular_skyrat/modules/reagent_forging/code/forge_items.dm b/modular_skyrat/modules/reagent_forging/code/forge_items.dm index 50ffdd078dd..f5d85ea8e10 100644 --- a/modular_skyrat/modules/reagent_forging/code/forge_items.dm +++ b/modular_skyrat/modules/reagent_forging/code/forge_items.dm @@ -1,26 +1,3 @@ -GLOBAL_LIST_INIT(allowed_forging_materials, list( - /datum/material/iron, - /datum/material/silver, - /datum/material/gold, - /datum/material/uranium, - /datum/material/bananium, - /datum/material/titanium, - /datum/material/runite, - /datum/material/adamantine, - /datum/material/mythril, - /datum/material/metalhydrogen, - /datum/material/runedmetal, - /datum/material/bronze, - /datum/material/hauntium, - /datum/material/alloy/plasteel, - /datum/material/alloy/plastitanium, - /datum/material/alloy/alien, - /datum/material/cobolterium, - /datum/material/copporcitite, - /datum/material/tinumium, - /datum/material/brussite, -)) - /obj/item/forging icon = 'modular_skyrat/modules/reagent_forging/icons/obj/forge_items.dmi' lefthand_file = 'modular_skyrat/modules/reagent_forging/icons/mob/forge_weapon_l.dmi' @@ -319,9 +296,6 @@ GLOBAL_LIST_INIT(allowed_forging_materials, list( /obj/item/stack/tong_act(mob/living/user, obj/item/tool) . = ..() - if(!(material_type in GLOB.allowed_forging_materials)) - user.balloon_alert(user, "can only forge metal!") - return if(length(tool.contents) > 0) user.balloon_alert(user, "tongs are full already!") return FALSE diff --git a/modular_skyrat/modules/reagent_forging/code/reagent_component.dm b/modular_skyrat/modules/reagent_forging/code/reagent_component.dm index 02f93269c94..8bd66dd8f3f 100644 --- a/modular_skyrat/modules/reagent_forging/code/reagent_component.dm +++ b/modular_skyrat/modules/reagent_forging/code/reagent_component.dm @@ -108,9 +108,6 @@ for(var/create_reagent in imbued_reagent) living_target.reagents.add_reagent(create_reagent, REAGENT_WEAPON_INJECT_AMOUNT) - //now lets take damage corresponding to the amount of chems we have imbued (hit either 100 times or 50 times before it breaks) - parent_weapon.take_damage(length(imbued_reagent) * REAGENT_WEAPON_DAMAGE_MULTIPLIER) - #undef MAX_IMBUE_STORAGE #undef REAGENT_CLOTHING_INJECT_AMOUNT #undef REAGENT_WEAPON_INJECT_AMOUNT From c1401458b92bec3c4d06f1d07ed866c4e5c1509f Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 15:09:43 +0100 Subject: [PATCH 059/166] Automatic changelog for PR #25861 [ci skip] --- html/changelogs/AutoChangeLog-pr-25861.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25861.yml diff --git a/html/changelogs/AutoChangeLog-pr-25861.yml b/html/changelogs/AutoChangeLog-pr-25861.yml new file mode 100644 index 00000000000..923402c8ba9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25861.yml @@ -0,0 +1,4 @@ +author: "jjpark-kb" +delete-after: True +changes: + - balance: "forging is unleashed-- everyone can imbue, use whatever materials/reagents, and it will no longer break" \ No newline at end of file From 283fc85929f67498f71f4f9b334272f38469281d Mon Sep 17 00:00:00 2001 From: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Date: Tue, 26 Dec 2023 10:57:40 -0500 Subject: [PATCH 060/166] bokken block effect (nova port) (#25864) --- modular_skyrat/modules/reagent_forging/code/forge_weapons.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_skyrat/modules/reagent_forging/code/forge_weapons.dm b/modular_skyrat/modules/reagent_forging/code/forge_weapons.dm index c30aeb2ffc2..7bea534b894 100644 --- a/modular_skyrat/modules/reagent_forging/code/forge_weapons.dm +++ b/modular_skyrat/modules/reagent_forging/code/forge_weapons.dm @@ -293,6 +293,8 @@ else playsound(src, 'sound/weapons/parry.ogg', 75, TRUE) owner.visible_message(span_danger("[owner] parries [attack_text] with [src]!")) + var/owner_turf = get_turf(owner) + new block_effect(owner_turf, COLOR_YELLOW) return TRUE return FALSE From ddbba4b9daab750f4e9320bbb5896f0e968f0758 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 16:58:01 +0100 Subject: [PATCH 061/166] Automatic changelog for PR #25864 [ci skip] --- html/changelogs/AutoChangeLog-pr-25864.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25864.yml diff --git a/html/changelogs/AutoChangeLog-pr-25864.yml b/html/changelogs/AutoChangeLog-pr-25864.yml new file mode 100644 index 00000000000..522533f5307 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25864.yml @@ -0,0 +1,4 @@ +author: "jjpark-kb" +delete-after: True +changes: + - bugfix: "bokkens have visual block effects now" \ No newline at end of file From 7ca9c6250ca854584a981c0424dda5510be34be3 Mon Sep 17 00:00:00 2001 From: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Date: Tue, 26 Dec 2023 10:58:11 -0500 Subject: [PATCH 062/166] icewalker seed additions (nova port) (#25865) --- .../skyrat/icemoon_underground_icewalker_lower.dmm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_icewalker_lower.dmm b/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_icewalker_lower.dmm index 4e5a3e21f19..3d9b5410eea 100644 --- a/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_icewalker_lower.dmm +++ b/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_icewalker_lower.dmm @@ -159,6 +159,18 @@ }, /turf/open/floor/wood/icemoon, /area/ruin/unpowered/primitive_catgirl_den) +"cT" = ( +/obj/structure/closet/crate/wooden/storage_barrel, +/obj/item/seeds/watermelon, +/obj/item/seeds/watermelon, +/obj/item/seeds/grass, +/obj/item/seeds/grass, +/obj/item/seeds/lavaland/polypore, +/obj/item/seeds/lavaland/polypore, +/obj/item/seeds/lavaland/ember, +/obj/item/seeds/lavaland/ember, +/turf/open/misc/asteroid/snow/icemoon, +/area/ruin/unpowered/primitive_catgirl_den) "cW" = ( /obj/effect/turf_decal/weather/snow/corner, /obj/effect/turf_decal/weather/snow/corner{ @@ -2477,7 +2489,7 @@ jw ZJ ZJ Ug -oJ +cT pa pa oJ From 173230c56800dbfa12ef25d3cbab1ea4b458b5ad Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 16:58:32 +0100 Subject: [PATCH 063/166] Automatic changelog for PR #25865 [ci skip] --- html/changelogs/AutoChangeLog-pr-25865.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25865.yml diff --git a/html/changelogs/AutoChangeLog-pr-25865.yml b/html/changelogs/AutoChangeLog-pr-25865.yml new file mode 100644 index 00000000000..f797df9162a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25865.yml @@ -0,0 +1,4 @@ +author: "jjpark-kb" +delete-after: True +changes: + - rscadd: "added embershroom, polyporeshroom, watermelon, and grass seeds to icewalker seed storage" \ No newline at end of file From a4cffad43acca53ca9fb7f16e6b329929848cffc Mon Sep 17 00:00:00 2001 From: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Date: Tue, 26 Dec 2023 13:09:29 -0500 Subject: [PATCH 064/166] requested modular computer fix (#25868) --- code/modules/modular_computers/computers/item/computer_ui.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm index 436b261aca3..f5ca1d74765 100644 --- a/code/modules/modular_computers/computers/item/computer_ui.dm +++ b/code/modules/modular_computers/computers/item/computer_ui.dm @@ -137,14 +137,14 @@ switch(action) if("PC_exit") //you can't close apps in emergency mode. - if(internal_cell.charge) + if(isnull(internal_cell) || internal_cell.charge) active_program.kill_program(usr) return TRUE if("PC_shutdown") shutdown_computer() return TRUE if("PC_minimize") - if(!active_program || !internal_cell.charge) + if(!active_program || (!isnull(internal_cell) && !internal_cell.charge)) return active_program.background_program() return TRUE From b9a5d5e308c3f7e8da99277c5afe9601df7549d1 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 19:15:27 +0100 Subject: [PATCH 065/166] Automatic changelog for PR #25868 [ci skip] --- html/changelogs/AutoChangeLog-pr-25868.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25868.yml diff --git a/html/changelogs/AutoChangeLog-pr-25868.yml b/html/changelogs/AutoChangeLog-pr-25868.yml new file mode 100644 index 00000000000..07a7264d48f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25868.yml @@ -0,0 +1,4 @@ +author: "jjpark-kb" +delete-after: True +changes: + - bugfix: "modular computers won't runtime while closing/minimizing programs" \ No newline at end of file From a7886e0709c3a4699c4a066cbc79eb5743cc622d Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 19:26:48 +0100 Subject: [PATCH 066/166] [MIRROR] Fixes search in NTOS messenger [MDB IGNORE] (#25866) * Fixes search in NTOS messenger (#80563) ## About The Pull Request onChange => onInput ## Why It's Good For The Game searches without hitting enter ## Changelog :cl: fix: NTOS Messenger should search as you type now /:cl: * Fixes search in NTOS messenger --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> --- tgui/packages/tgui/interfaces/NtosMessenger/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tgui/packages/tgui/interfaces/NtosMessenger/index.tsx b/tgui/packages/tgui/interfaces/NtosMessenger/index.tsx index e6a29c5d7b1..9a9f27adf97 100644 --- a/tgui/packages/tgui/interfaces/NtosMessenger/index.tsx +++ b/tgui/packages/tgui/interfaces/NtosMessenger/index.tsx @@ -213,7 +213,7 @@ const ContactsScreen = (props: any) => { width="220px" placeholder="Search by name or job..." value={searchUser} - onChange={(_, value) => setSearchUser(value)} + onInput={(_, value) => setSearchUser(value)} /> From ee0c2343ef4e2a0829f1699fa4d357668cc14a92 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 19:26:59 +0100 Subject: [PATCH 067/166] [MIRROR] Remove eye surgery fluff line [MDB IGNORE] (#25867) * Remove eye surgery fluff line (#80565) ## About The Pull Request Removes a side effect in can_start which MUST be pure. This causes the surgery tgui to spam this message. It's pointless because you can't do the surgery to begin with if this returns false, so you only ever see this where you shouldn't. ## Changelog :cl: fix: Fixed the surgery menu spamming chat messages when on the eyes section of a player with no eyes. /:cl: * Remove eye surgery fluff line --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- code/modules/surgery/eye_surgery.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm index 7b6d7844ee6..748dab1f4ec 100644 --- a/code/modules/surgery/eye_surgery.dm +++ b/code/modules/surgery/eye_surgery.dm @@ -22,10 +22,7 @@ /datum/surgery/eye_surgery/can_start(mob/user, mob/living/carbon/target) var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES) - if(!target_eyes) - to_chat(user, span_warning("It's hard to do surgery on someone's eyes when [target.p_they()] [target.p_do()]n't have any.")) - return FALSE - return TRUE + return !isnull(target_eyes) /datum/surgery_step/fix_eyes/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results( From ffd601af4dffa0ca502da1da4c1aa0114547a689 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 19:29:10 +0100 Subject: [PATCH 068/166] Automatic changelog for PR #25866 [ci skip] --- html/changelogs/AutoChangeLog-pr-25866.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25866.yml diff --git a/html/changelogs/AutoChangeLog-pr-25866.yml b/html/changelogs/AutoChangeLog-pr-25866.yml new file mode 100644 index 00000000000..001cd3cacd2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25866.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "NTOS Messenger should search as you type now" \ No newline at end of file From 4fa3e0852b815cc26fb5cf8140b76ae079258524 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 26 Dec 2023 19:29:24 +0100 Subject: [PATCH 069/166] Automatic changelog for PR #25867 [ci skip] --- html/changelogs/AutoChangeLog-pr-25867.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25867.yml diff --git a/html/changelogs/AutoChangeLog-pr-25867.yml b/html/changelogs/AutoChangeLog-pr-25867.yml new file mode 100644 index 00000000000..2ee8e131c36 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25867.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "Fixed the surgery menu spamming chat messages when on the eyes section of a player with no eyes." \ No newline at end of file From 4cc3da0894914e1bf0b9ced00ceab49999415e13 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 27 Dec 2023 00:32:59 +0000 Subject: [PATCH 070/166] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-25858.yml | 5 ----- html/changelogs/AutoChangeLog-pr-25861.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25862.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25863.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25864.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25865.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25866.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25867.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25868.yml | 4 ---- html/changelogs/archive/2023-12.yml | 21 +++++++++++++++++++++ 10 files changed, 21 insertions(+), 37 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-25858.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25861.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25862.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25863.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25864.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25865.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25866.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25867.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25868.yml diff --git a/html/changelogs/AutoChangeLog-pr-25858.yml b/html/changelogs/AutoChangeLog-pr-25858.yml deleted file mode 100644 index a38328d48fa..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25858.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "Adds a brown suit jacket to the detective's vendor" - - image: "Adds a new sprite for the a brown detective suit jacket\n:cl:" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25861.yml b/html/changelogs/AutoChangeLog-pr-25861.yml deleted file mode 100644 index 923402c8ba9..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25861.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "jjpark-kb" -delete-after: True -changes: - - balance: "forging is unleashed-- everyone can imbue, use whatever materials/reagents, and it will no longer break" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25862.yml b/html/changelogs/AutoChangeLog-pr-25862.yml deleted file mode 100644 index 379d31e8d41..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25862.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Melbert" -delete-after: True -changes: - - bugfix: "Fixed some occasions in which heartbeat SFX will continue on revival for longer than expected" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25863.yml b/html/changelogs/AutoChangeLog-pr-25863.yml deleted file mode 100644 index c366dbea77b..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25863.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ryll/Shaps" -delete-after: True -changes: - - balance: "Yawns are less likely to propagate" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25864.yml b/html/changelogs/AutoChangeLog-pr-25864.yml deleted file mode 100644 index 522533f5307..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25864.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "jjpark-kb" -delete-after: True -changes: - - bugfix: "bokkens have visual block effects now" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25865.yml b/html/changelogs/AutoChangeLog-pr-25865.yml deleted file mode 100644 index f797df9162a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25865.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "jjpark-kb" -delete-after: True -changes: - - rscadd: "added embershroom, polyporeshroom, watermelon, and grass seeds to icewalker seed storage" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25866.yml b/html/changelogs/AutoChangeLog-pr-25866.yml deleted file mode 100644 index 001cd3cacd2..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25866.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "NTOS Messenger should search as you type now" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25867.yml b/html/changelogs/AutoChangeLog-pr-25867.yml deleted file mode 100644 index 2ee8e131c36..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25867.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Fixed the surgery menu spamming chat messages when on the eyes section of a player with no eyes." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25868.yml b/html/changelogs/AutoChangeLog-pr-25868.yml deleted file mode 100644 index 07a7264d48f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25868.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "jjpark-kb" -delete-after: True -changes: - - bugfix: "modular computers won't runtime while closing/minimizing programs" \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index 7887f1da9ef..766db512a0f 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -978,3 +978,24 @@ - rscadd: icecats(?) can now respawn, similarly to ashwalkers zeroisthebiggay: - rscadd: icewalkers can be digitigrade +2023-12-27: + Melbert: + - bugfix: Fixed some occasions in which heartbeat SFX will continue on revival for + longer than expected + Ryll/Shaps: + - balance: Yawns are less likely to propagate + SkyratBot: + - bugfix: NTOS Messenger should search as you type now + - bugfix: Fixed the surgery menu spamming chat messages when on the eyes section + of a player with no eyes. + - rscadd: Adds a brown suit jacket to the detective's vendor + - image: 'Adds a new sprite for the a brown detective suit jacket + + :cl:' + jjpark-kb: + - rscadd: added embershroom, polyporeshroom, watermelon, and grass seeds to icewalker + seed storage + - bugfix: modular computers won't runtime while closing/minimizing programs + - bugfix: bokkens have visual block effects now + - balance: forging is unleashed-- everyone can imbue, use whatever materials/reagents, + and it will no longer break From 055cc674376a5c46da350cac2187c41bbeda6455 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 27 Dec 2023 03:51:31 +0100 Subject: [PATCH 071/166] [MIRROR] Add UI screentips to spraycans [MDB IGNORE] (#25869) * Add UI screentips to spraycans (#80564) ## About The Pull Request This adds screentips to spraycans for: - AltClick - toggle cap - RMB - copy - LMB - paint ## Why It's Good For The Game Better UI/UX. ## Changelog :cl: qol: Add UI screentips to spraycans /:cl: --------- Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> * Add UI screentips to spraycans --------- Co-authored-by: Tim Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> --- code/game/objects/items/crayons.dm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 5ba709ef324..35732e23101 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -762,6 +762,30 @@ /datum/component/slapcrafting,\ slapcraft_recipes = slapcraft_recipe_list,\ ) + register_context() + register_item_context() + +/obj/item/toy/crayon/spraycan/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + + if(!user.can_perform_action(src, NEED_DEXTERITY|NEED_HANDS)) + return . + + if(has_cap) + context[SCREENTIP_CONTEXT_ALT_LMB] = "Toggle cap" + + return CONTEXTUAL_SCREENTIP_SET + +/obj/item/toy/crayon/spraycan/add_item_context(datum/source, list/context, atom/target, mob/living/user) + . = ..() + + if(!user.can_perform_action(src, NEED_DEXTERITY|NEED_HANDS)) + return . + + context[SCREENTIP_CONTEXT_LMB] = "Paint" + context[SCREENTIP_CONTEXT_RMB] = "Copy color" + + return CONTEXTUAL_SCREENTIP_SET /obj/item/toy/crayon/spraycan/isValidSurface(surface) return (isfloorturf(surface) || iswallturf(surface)) From 08668ffb5e567907783e86d839c144b1f746b252 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 27 Dec 2023 03:51:53 +0100 Subject: [PATCH 072/166] Automatic changelog for PR #25869 [ci skip] --- html/changelogs/AutoChangeLog-pr-25869.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25869.yml diff --git a/html/changelogs/AutoChangeLog-pr-25869.yml b/html/changelogs/AutoChangeLog-pr-25869.yml new file mode 100644 index 00000000000..de040037d0a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25869.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - qol: "Add UI screentips to spraycans" \ No newline at end of file From cf00bcb7b7431b9953661744ba770474504124d4 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 27 Dec 2023 15:46:33 +0100 Subject: [PATCH 073/166] [MIRROR] basic bot path huds and medbot research [MDB IGNORE] (#25870) * basic bot path huds and medbot research (#80277) ## About The Pull Request this pr integrates the bot path huds to ai controllers and move loops to allow basic bots to display their paths in the hud. also closes #80280 and closes #80330 ## Why It's Good For The Game basic bots now can display their path on huds ## Changelog :cl: add: basic bots can now display their paths on huds fix: medbots can research healing again /:cl: * basic bot path huds and medbot research --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> --- .../__DEFINES/dcs/signals/signals_moveloop.dm | 2 + .../subsystem/movement/movement_types.dm | 10 ++- code/datums/ai/movement/ai_movement_jps.dm | 15 +++- code/modules/mob/living/basic/bots/_bots.dm | 22 ++++-- code/modules/mob/living/basic/bots/bot_hud.dm | 78 +++++++++++++++++++ .../living/basic/bots/cleanbot/cleanbot.dm | 1 + .../living/basic/bots/cleanbot/cleanbot_ai.dm | 19 +++-- .../mob/living/basic/bots/medbot/medbot.dm | 5 +- .../mob/living/basic/bots/medbot/medbot_ai.dm | 6 +- 9 files changed, 139 insertions(+), 19 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_moveloop.dm b/code/__DEFINES/dcs/signals/signals_moveloop.dm index 38ab63a5969..8a354f8bfbb 100644 --- a/code/__DEFINES/dcs/signals/signals_moveloop.dm +++ b/code/__DEFINES/dcs/signals/signals_moveloop.dm @@ -9,3 +9,5 @@ #define COMSIG_MOVELOOP_POSTPROCESS "moveloop_postprocess" //from [/datum/move_loop/has_target/jps/recalculate_path] (): #define COMSIG_MOVELOOP_JPS_REPATH "moveloop_jps_repath" +///from [/datum/move_loop/has_target/jps/on_finish_pathing] +#define COMSIG_MOVELOOP_JPS_FINISHED_PATHING "moveloop_jps_finished_pathing" diff --git a/code/controllers/subsystem/movement/movement_types.dm b/code/controllers/subsystem/movement/movement_types.dm index de8e4531236..bf4b6a43029 100644 --- a/code/controllers/subsystem/movement/movement_types.dm +++ b/code/controllers/subsystem/movement/movement_types.dm @@ -323,6 +323,7 @@ turf/avoid, skip_first, subsystem, + diagonal_handling, priority, flags, datum/extra_info, @@ -343,6 +344,7 @@ simulated_only, avoid, skip_first, + diagonal_handling, initial_path) /datum/move_loop/has_target/jps @@ -360,6 +362,8 @@ var/turf/avoid ///Should we skip the first step? This is the tile we're currently on, which breaks some things var/skip_first + ///Whether we replace diagonal movements with cardinal movements or follow through with them + var/diagonal_handling ///A list for the path we're currently following var/list/movement_path ///Cooldown for repathing, prevents spam @@ -373,7 +377,7 @@ . = ..() on_finish_callbacks += CALLBACK(src, PROC_REF(on_finish_pathing)) -/datum/move_loop/has_target/jps/setup(delay, timeout, atom/chasing, repath_delay, max_path_length, minimum_distance, list/access, simulated_only, turf/avoid, skip_first, list/initial_path) +/datum/move_loop/has_target/jps/setup(delay, timeout, atom/chasing, repath_delay, max_path_length, minimum_distance, list/access, simulated_only, turf/avoid, skip_first, diagonal_handling, list/initial_path) . = ..() if(!.) return @@ -384,6 +388,7 @@ src.simulated_only = simulated_only src.avoid = avoid src.skip_first = skip_first + src.diagonal_handling = diagonal_handling movement_path = initial_path?.Copy() /datum/move_loop/has_target/jps/compare_loops(datum/move_loop/loop_type, priority, flags, extra_info, delay, timeout, atom/chasing, repath_delay, max_path_length, minimum_distance, list/access, simulated_only, turf/avoid, skip_first, initial_path) @@ -410,7 +415,7 @@ if(!COOLDOWN_FINISHED(src, repath_cooldown)) return COOLDOWN_START(src, repath_cooldown, repath_delay) - if(SSpathfinder.pathfind(moving, target, max_path_length, minimum_distance, access, simulated_only, avoid, skip_first, on_finish = on_finish_callbacks)) + if(SSpathfinder.pathfind(moving, target, max_path_length, minimum_distance, access, simulated_only, avoid, skip_first, diagonal_handling, on_finish = on_finish_callbacks)) is_pathing = TRUE SEND_SIGNAL(src, COMSIG_MOVELOOP_JPS_REPATH) @@ -418,6 +423,7 @@ /datum/move_loop/has_target/jps/proc/on_finish_pathing(list/path) movement_path = path is_pathing = FALSE + SEND_SIGNAL(src, COMSIG_MOVELOOP_JPS_FINISHED_PATHING, path) /datum/move_loop/has_target/jps/move() if(!length(movement_path)) diff --git a/code/datums/ai/movement/ai_movement_jps.dm b/code/datums/ai/movement/ai_movement_jps.dm index 31fd90ccf53..3644869140d 100644 --- a/code/datums/ai/movement/ai_movement_jps.dm +++ b/code/datums/ai/movement/ai_movement_jps.dm @@ -4,13 +4,15 @@ /datum/ai_movement/jps max_pathing_attempts = 20 var/maximum_length = AI_MAX_PATH_LENGTH + ///how we deal with diagonal movement, whether we try to avoid them or follow through with them + var/diagonal_flags = DIAGONAL_REMOVE_CLUNKY /datum/ai_movement/jps/start_moving_towards(datum/ai_controller/controller, atom/current_movement_target, min_distance) . = ..() var/atom/movable/moving = controller.pawn var/delay = controller.movement_delay - var/datum/move_loop/loop = SSmove_manager.jps_move(moving, + var/datum/move_loop/has_target/jps/loop = SSmove_manager.jps_move(moving, current_movement_target, delay, repath_delay = 0.5 SECONDS, @@ -18,6 +20,7 @@ minimum_distance = controller.get_minimum_distance(), access = controller.get_access(), subsystem = SSai_movement, + diagonal_handling = diagonal_flags, extra_info = controller, ) @@ -25,6 +28,8 @@ RegisterSignal(loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(post_move)) RegisterSignal(loop, COMSIG_MOVELOOP_JPS_REPATH, PROC_REF(repath_incoming)) + return loop + /datum/ai_movement/jps/proc/repath_incoming(datum/move_loop/has_target/jps/source) SIGNAL_HANDLER var/datum/ai_controller/controller = source.extra_info @@ -35,3 +40,11 @@ /datum/ai_movement/jps/bot max_pathing_attempts = 25 maximum_length = AI_BOT_PATH_LENGTH + diagonal_flags = DIAGONAL_REMOVE_ALL + +/datum/ai_movement/jps/bot/start_moving_towards(datum/ai_controller/controller, atom/current_movement_target, min_distance) + var/datum/move_loop/loop = ..() + var/atom/our_pawn = controller.pawn + if(isnull(our_pawn)) + return + our_pawn.RegisterSignal(loop, COMSIG_MOVELOOP_JPS_FINISHED_PATHING, TYPE_PROC_REF(/mob/living/basic/bot, generate_bot_path)) diff --git a/code/modules/mob/living/basic/bots/_bots.dm b/code/modules/mob/living/basic/bots/_bots.dm index 81d69ce7701..5151ec116fc 100644 --- a/code/modules/mob/living/basic/bots/_bots.dm +++ b/code/modules/mob/living/basic/bots/_bots.dm @@ -69,6 +69,14 @@ GLOBAL_LIST_INIT(command_strings, list( var/obj/item/card/id/access_card ///The trim type that will grant additional acces var/datum/id_trim/additional_access + ///file the path icon is stored in + var/path_image_icon = 'icons/mob/silicon/aibots.dmi' + ///state of the path icon + var/path_image_icon_state = "path_indicator" + ///what color this path icon will use + var/path_image_color = "#FFFFFF" + ///list of all layed path icons + var/list/current_pathed_turfs = list() ///The type of data HUD the bot uses. Diagnostic by default. var/data_hud_type = DATA_HUD_DIAGNOSTIC_BASIC @@ -91,8 +99,9 @@ GLOBAL_LIST_INIT(command_strings, list( /mob/living/basic/bot/Initialize(mapload) . = ..() - AddElement(/datum/element/relay_attackers) + AddElement(/datum/element/relay_attackers) + RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(handle_loop_movement)) RegisterSignal(src, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(after_attacked)) RegisterSignal(src, COMSIG_MOB_TRIED_ACCESS, PROC_REF(attempt_access)) ADD_TRAIT(src, TRAIT_NO_GLIDE, INNATE_TRAIT) @@ -185,6 +194,7 @@ GLOBAL_LIST_INIT(command_strings, list( /mob/living/basic/bot/Destroy() GLOB.bots_list -= src calling_ai_ref = null + clear_path_hud() QDEL_NULL(paicard) QDEL_NULL(pa_system) QDEL_NULL(internal_radio) @@ -261,10 +271,10 @@ GLOBAL_LIST_INIT(command_strings, list( fully_replace_character_name(real_name, new_name) /mob/living/basic/bot/proc/check_access(mob/living/user, obj/item/card/id) - if(!istype(user)) // Non-living mobs shouldn't be manipulating bots (like observes using the botkeeper UI). - return FALSE if(user.has_unlimited_silicon_privilege || isAdminGhostAI(user)) // Silicon and Admins always have access. return TRUE + if(!istype(user)) // Non-living mobs shouldn't be manipulating bots (like observes using the botkeeper UI). + return FALSE if(!length(maints_access_required)) // No requirements to access it. return TRUE if(bot_access_flags & BOT_CONTROL_PANEL_OPEN) // Unlocked. @@ -540,6 +550,7 @@ GLOBAL_LIST_INIT(command_strings, list( access_card.set_access(initial_access) diag_hud_set_botstat() diag_hud_set_botmode() + clear_path_hud() if(bypass_ai_reset || isnull(calling_ai_ref)) return var/mob/living/ai_caller = calling_ai_ref.resolve() @@ -593,9 +604,9 @@ GLOBAL_LIST_INIT(command_strings, list( // Actions received from TGUI /mob/living/basic/bot/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() - if(. || !isliving(ui.user)) + if(.) return - var/mob/living/the_user = ui.user + var/mob/the_user = ui.user if(!check_access(the_user)) balloon_alert(the_user, "access denied!") return @@ -747,6 +758,7 @@ GLOBAL_LIST_INIT(command_strings, list( speed = 2 diag_hud_set_botmode() + clear_path_hud() /mob/living/basic/bot/Logout() . = ..() diff --git a/code/modules/mob/living/basic/bots/bot_hud.dm b/code/modules/mob/living/basic/bots/bot_hud.dm index d9b429a32bf..4ed97fe32f7 100644 --- a/code/modules/mob/living/basic/bots/bot_hud.dm +++ b/code/modules/mob/living/basic/bots/bot_hud.dm @@ -37,3 +37,81 @@ holder.icon_state = "hudmove" else holder.icon_state = "" + +///proc that handles drawing and transforming the bot's path onto diagnostic huds +/mob/living/basic/bot/proc/generate_bot_path(datum/move_loop/has_target/jps/source) + SIGNAL_HANDLER + + UnregisterSignal(src, COMSIG_MOVELOOP_JPS_FINISHED_PATHING) + + if(isnull(ai_controller)) + return + + clear_path_hud() + + var/list/path_images = active_hud_list[DIAG_PATH_HUD] + QDEL_LIST(path_images) + + var/list/path_huds_watching_me = list(GLOB.huds[DATA_HUD_DIAGNOSTIC_ADVANCED]) + + var/atom/move_target = ai_controller.current_movement_target + if(move_target != ai_controller.blackboard[BB_BEACON_TARGET]) + return + + var/list/our_path = source.movement_path + if(!length(our_path)) + return + + for(var/datum/atom_hud/hud as anything in path_huds_watching_me) + hud.remove_atom_from_hud(src) + + for(var/index in 1 to our_path.len) + if(index == 1 || index == our_path.len) + continue + var/turf/current_turf = our_path[index] + var/turf/previous_turf = our_path[index - 1] + + var/turf/next_turf = our_path[index + 1] + var/next_direction = get_dir(previous_turf, next_turf) + var/previous_direction = get_dir(current_turf, previous_turf) + + var/image/path_display = image(icon = path_image_icon, loc = current_turf, icon_state = path_image_icon_state, layer = GAME_PLANE, dir = next_direction) + + if((ISDIAGONALDIR(next_direction) && (previous_direction & (NORTH|SOUTH)))) + var/turn_value = (next_direction == SOUTHWEST || next_direction == NORTHEAST) ? 90 : -90 + path_display.transform = path_display.transform.Turn(turn_value) + path_display.transform = path_display.transform.Scale(1, -1) + + path_display.color = path_image_color + path_images += path_display + current_pathed_turfs[current_turf] = path_display + + for(var/datum/atom_hud/hud as anything in path_huds_watching_me) + hud.add_atom_to_hud(src) + +///proc that handles moving along the bot's drawn path +/mob/living/basic/bot/proc/handle_loop_movement(atom/movable/source) + SIGNAL_HANDLER + + if(client || !length(current_pathed_turfs) || isnull(ai_controller)) + return + + var/atom/move_target = ai_controller.current_movement_target + + if(move_target != ai_controller.blackboard[BB_BEACON_TARGET]) + clear_path_hud() + + var/turf/our_turf = get_turf(src) + var/image/target_image = current_pathed_turfs[our_turf] + if(target_image) + animate(target_image, alpha = 0, time = 0.3 SECONDS) + current_pathed_turfs -= our_turf + return + +///proc that handles deleting the bot's drawn path when needed +/mob/living/basic/bot/proc/clear_path_hud() + for(var/turf/index as anything in current_pathed_turfs) + var/image/our_image = current_pathed_turfs[index] + animate(our_image, alpha = 0, time = 0.3 SECONDS) + current_pathed_turfs -= index + diff --git a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm index 204e6f7ba62..c19ba69c5ce 100644 --- a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm +++ b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm @@ -19,6 +19,7 @@ additional_access = /datum/id_trim/job/janitor possessed_message = "You are a cleanbot! Clean the station to the best of your ability!" ai_controller = /datum/ai_controller/basic_controller/bot/cleanbot + path_image_color = "#993299" ///the bucket used to build us. var/obj/item/reagent_containers/cup/bucket/build_bucket ///Flags indicating what kind of cleanables we should scan for to set as our target to clean. diff --git a/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm b/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm index 9d1367ee075..8007f56f789 100644 --- a/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm +++ b/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm @@ -21,7 +21,7 @@ /datum/ai_planning_subtree/acid_spray, /datum/ai_planning_subtree/use_mob_ability/foam_area, /datum/ai_planning_subtree/salute_authority, - /datum/ai_planning_subtree/find_patrol_beacon, + /datum/ai_planning_subtree/find_patrol_beacon/cleanbot, ) reset_keys = list( BB_ACTIVE_PET_COMMAND, @@ -37,6 +37,7 @@ BB_CLEANABLE_DRAWINGS = CLEANBOT_CLEAN_DRAWINGS, BB_HUNTABLE_TRASH = CLEANBOT_CLEAN_TRASH, ) + ai_traits = PAUSE_DURING_DO_AFTER /datum/ai_planning_subtree/pet_planning/cleanbot/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) var/mob/living/basic/bot/bot_pawn = controller.pawn @@ -49,12 +50,8 @@ /datum/ai_planning_subtree/cleaning_subtree /datum/ai_planning_subtree/cleaning_subtree/SelectBehaviors(datum/ai_controller/basic_controller/bot/cleanbot/controller, seconds_per_tick) - var/mob/living/basic/bot/cleanbot/bot_pawn = controller.pawn - - if(LAZYLEN(bot_pawn.do_afters)) - return SUBTREE_RETURN_FINISH_PLANNING - if(controller.reachable_key(BB_CLEAN_TARGET, BOT_CLEAN_PATH_LIMIT)) + controller.clear_blackboard_key(BB_BEACON_TARGET) controller.queue_behavior(/datum/ai_behavior/execute_clean, BB_CLEAN_TARGET) return SUBTREE_RETURN_FINISH_PLANNING @@ -62,6 +59,7 @@ final_hunt_list += controller.blackboard[BB_CLEANABLE_DECALS] var/list/flag_list = controller.clean_flags + var/mob/living/basic/bot/cleanbot/bot_pawn = controller.pawn for(var/list_key in flag_list) if(!(bot_pawn.janitor_mode_flags & flag_list[list_key])) continue @@ -70,7 +68,7 @@ controller.queue_behavior(/datum/ai_behavior/find_and_set/in_list/clean_targets, BB_CLEAN_TARGET, final_hunt_list) /datum/ai_behavior/find_and_set/in_list/clean_targets - action_cooldown = 2 SECONDS + action_cooldown = 1 SECONDS /datum/ai_behavior/find_and_set/in_list/clean_targets/search_tactic(datum/ai_controller/controller, locate_paths, search_range) var/list/found = typecache_filter_list(oview(search_range, controller.pawn), locate_paths) @@ -185,6 +183,13 @@ return human_target return null +/datum/ai_planning_subtree/find_patrol_beacon/cleanbot + +/datum/ai_planning_subtree/find_patrol_beacon/cleanbot/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + if(controller.blackboard_key_exists(BB_CLEAN_TARGET)) + return + return ..() + /datum/pet_command/point_targeting/clean command_name = "Clean" command_desc = "Command a cleanbot to clean the mess." diff --git a/code/modules/mob/living/basic/bots/medbot/medbot.dm b/code/modules/mob/living/basic/bots/medbot/medbot.dm index 278a69d154b..cad238b01d1 100644 --- a/code/modules/mob/living/basic/bots/medbot/medbot.dm +++ b/code/modules/mob/living/basic/bots/medbot/medbot.dm @@ -25,6 +25,7 @@ additional_access = /datum/id_trim/job/paramedic announcement_type = /datum/action/cooldown/bot_announcement/medbot + path_image_color = "#d9d9f4" ///anouncements when we find a target to heal var/static/list/wait_announcements = list( @@ -146,8 +147,10 @@ ) RegisterSignal(src, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(pre_attack)) + if(!HAS_TRAIT(SSstation, STATION_TRAIT_MEDBOT_MANIA) || !mapload || !is_station_level(z)) - return + return INITIALIZE_HINT_LATELOAD + skin = "advanced" update_appearance(UPDATE_OVERLAYS) damage_type_healer = HEAL_ALL_DAMAGE diff --git a/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm b/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm index 54315deda72..8d8e3efbfe3 100644 --- a/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm +++ b/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm @@ -192,15 +192,15 @@ . = ..() var/mob/living/living_target = controller.blackboard[target_key] if(QDELETED(living_target)) - finish_action(controller, FALSE) + finish_action(controller, FALSE, target_key) return var/datum/action/cooldown/bot_announcement/announcement = controller.blackboard[BB_ANNOUNCE_ABILITY] if(QDELETED(announcement)) - finish_action(controller, FALSE) + finish_action(controller, FALSE, target_key) return var/text_to_announce = "Medical emergency! [living_target] is in critical condition at [get_area(living_target)]!" announcement.announce(text_to_announce, controller.blackboard[BB_RADIO_CHANNEL]) - finish_action(controller, TRUE) + finish_action(controller, TRUE, target_key) /datum/ai_behavior/announce_patient/finish_action(datum/ai_controller/controller, succeeded, target_key) . = ..() From bb7b80d30a5f63271b75e84b34cd55b9531642ca Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 27 Dec 2023 15:46:53 +0100 Subject: [PATCH 074/166] [MIRROR] Makes the turbine core part remove references on deactivation [MDB IGNORE] (#25871) * Makes the turbine core part remove references on deactivation (#80593) ## About The Pull Request The delete the world test was showing that the turbine's non-core parts, the compressor and outlet were causing runtimes, so I made the deactivation of the core remove the references from the secondary turbine parts ## Why It's Good For The Game Less harddels means less lag, hopefully No changelog since nothing player facing * Makes the turbine core part remove references on deactivation --------- Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> --- code/modules/power/turbine/turbine.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/power/turbine/turbine.dm b/code/modules/power/turbine/turbine.dm index 2ca8b1df7f2..06466318025 100644 --- a/code/modules/power/turbine/turbine.dm +++ b/code/modules/power/turbine/turbine.dm @@ -512,7 +512,9 @@ /obj/machinery/power/turbine/core_rotor/deactivate_parts() if(all_parts_connected) power_off() + compressor?.rotor = null compressor = null + turbine?.rotor = null turbine = null all_parts_connected = FALSE disconnect_from_network() From c6d32799a477ee3ffba779fcca97c27ff3fd3ff2 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 27 Dec 2023 15:46:59 +0100 Subject: [PATCH 075/166] Automatic changelog for PR #25870 [ci skip] --- html/changelogs/AutoChangeLog-pr-25870.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25870.yml diff --git a/html/changelogs/AutoChangeLog-pr-25870.yml b/html/changelogs/AutoChangeLog-pr-25870.yml new file mode 100644 index 00000000000..543abb2f4b8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25870.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - rscadd: "basic bots can now display their paths on huds" + - bugfix: "medbots can research healing again" \ No newline at end of file From df48b09424c0983f9dbe07febbaeaf2211a94640 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 27 Dec 2023 15:47:39 +0100 Subject: [PATCH 076/166] [MIRROR] Spelling Error fix and death knell logging for the Vorpal Scythe [MDB IGNORE] (#25872) * Spelling Error fix and death knell logging for the Vorpal Scythe (#80587) ## About The Pull Request Fixes a spelling error in the death knell windup chat message for the Vorpal Scythe. Adds logging for starting the windup of a death knell, and on a successful death knell for the Vorpal Scythe. ## Why It's Good For The Game Oops, this was unlogged. Fixes https://github.com/tgstation/tgstation/issues/80458 ## Changelog :cl: spellcheck: Fixes a typo in chat message when starting a Death Knell with the Vorpal Scythe admin: Adds logging for the death knell, both when starts and when it is completed successfully. /:cl: * Spelling Error fix and death knell logging for the Vorpal Scythe --------- Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> --- .../jobs/job_types/chaplain/chaplain_vorpal_scythe.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm index 0dffeda5781..74b1cdcf627 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm @@ -139,7 +139,7 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and var/death_knell_speed_mod = 1 - potential_reaping.visible_message(span_danger("[user] begins to raise [src] arove [potential_reaping]'s [head_name]."), span_userdanger("[user] begins to raise [src], aiming to slice off your [head_name]!")) + potential_reaping.visible_message(span_danger("[user] begins to raise [src] above [potential_reaping]'s [head_name]."), span_userdanger("[user] begins to raise [src], aiming to slice off your [head_name]!")) if(potential_reaping.stat >= UNCONSCIOUS || HAS_TRAIT(potential_reaping, TRAIT_INCAPACITATED)) //if the victim is incapacitated (due to paralysis, a stun, being in staminacrit, etc.), critted, unconscious, or dead, it's much easier to properly behead death_knell_speed_mod *= 0.5 if(potential_reaping.stat != DEAD && potential_reaping.has_status_effect(/datum/status_effect/jitter)) //jittering will make it harder to perform the death knell, even if they're still @@ -149,6 +149,8 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and if(ispodperson(potential_reaping) || ismonkey(potential_reaping)) //And if they're a podperson or monkey, they can just die. death_knell_speed_mod *= 0.5 + log_combat(user, potential_reaping, "prepared to use [src] to decapitate") + if(do_after(user, 15 SECONDS * death_knell_speed_mod, target = potential_reaping)) playsound(get_turf(potential_reaping), 'sound/weapons/bladeslice.ogg', 250, TRUE) reaped_head.dismember() @@ -165,6 +167,7 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and ) scythe_empowerment(potential_empowerment) + log_combat(user, potential_reaping, "used [src] to decapitate") if(HAS_MIND_TRAIT(user, TRAIT_MORBID)) //You feel good about yourself, pal? user.add_mood_event("morbid_dismemberment", /datum/mood_event/morbid_dismemberment) From 015babfaae52e4a219005d813f4692ac7b505e55 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 27 Dec 2023 15:48:58 +0100 Subject: [PATCH 077/166] [MIRROR] Adds turf checks for mercury & lithium random step logic. [MDB IGNORE] (#25873) * Adds turf checks for mercury & lithium random step logic. (#80586) ## About The Pull Request - Fixes #74092 We not only want to make sure it's a turf but also a ground turf (i.e. something you can stand on and not turfs like lava, water, space etc) so you know you can use your legs to move on that ground. ## Changelog :cl: fix: mercury & lithium will no longer make you randomly move outside of cryotubes or in ground less turfs (space, water, lava etc) /:cl: * Adds turf checks for mercury & lithium random step logic. --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> --- code/modules/reagents/chemistry/reagents/other_reagents.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index ebaddf7dd0d..2b68aca1893 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1028,7 +1028,7 @@ /datum/reagent/mercury/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - if(!HAS_TRAIT(src, TRAIT_IMMOBILIZED) && !isspaceturf(affected_mob.loc)) + if(!HAS_TRAIT(src, TRAIT_IMMOBILIZED) && isturf(affected_mob.loc) && !isgroundlessturf(affected_mob.loc)) step(affected_mob, pick(GLOB.cardinals)) if(SPT_PROB(3.5, seconds_per_tick)) affected_mob.emote(pick("twitch","drool","moan")) @@ -1140,7 +1140,7 @@ /datum/reagent/lithium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - if(!HAS_TRAIT(affected_mob, TRAIT_IMMOBILIZED) && !isspaceturf(affected_mob.loc) && isturf(affected_mob.loc)) + if(!HAS_TRAIT(affected_mob, TRAIT_IMMOBILIZED) && isturf(affected_mob.loc) && !isgroundlessturf(affected_mob.loc)) step(affected_mob, pick(GLOB.cardinals)) if(SPT_PROB(2.5, seconds_per_tick)) affected_mob.emote(pick("twitch","drool","moan")) From 8c5d719dbf6be7a95cc2e334d27bbaf20a12da2b Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 27 Dec 2023 15:58:42 +0100 Subject: [PATCH 078/166] Automatic changelog for PR #25872 [ci skip] --- html/changelogs/AutoChangeLog-pr-25872.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25872.yml diff --git a/html/changelogs/AutoChangeLog-pr-25872.yml b/html/changelogs/AutoChangeLog-pr-25872.yml new file mode 100644 index 00000000000..933f31b6ae1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25872.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - spellcheck: "Fixes a typo in chat message when starting a Death Knell with the Vorpal Scythe" + - admin: "Adds logging for the death knell, both when starts and when it is completed successfully." \ No newline at end of file From 410dbce7262444ccc5af0b91b2d0b9f28a313b47 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 27 Dec 2023 15:59:03 +0100 Subject: [PATCH 079/166] Automatic changelog for PR #25873 [ci skip] --- html/changelogs/AutoChangeLog-pr-25873.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25873.yml diff --git a/html/changelogs/AutoChangeLog-pr-25873.yml b/html/changelogs/AutoChangeLog-pr-25873.yml new file mode 100644 index 00000000000..b653701b8ae --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25873.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "mercury & lithium will no longer make you randomly move outside of cryotubes or in ground less turfs (space, water, lava etc)" \ No newline at end of file From 7c50b5fb55a84f65d6d36ef39bac947d93130fcf Mon Sep 17 00:00:00 2001 From: Changelogs Date: Thu, 28 Dec 2023 00:33:00 +0000 Subject: [PATCH 080/166] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-25869.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25870.yml | 5 ----- html/changelogs/AutoChangeLog-pr-25872.yml | 5 ----- html/changelogs/AutoChangeLog-pr-25873.yml | 4 ---- html/changelogs/archive/2023-12.yml | 11 +++++++++++ 5 files changed, 11 insertions(+), 18 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-25869.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25870.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25872.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25873.yml diff --git a/html/changelogs/AutoChangeLog-pr-25869.yml b/html/changelogs/AutoChangeLog-pr-25869.yml deleted file mode 100644 index de040037d0a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25869.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - qol: "Add UI screentips to spraycans" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25870.yml b/html/changelogs/AutoChangeLog-pr-25870.yml deleted file mode 100644 index 543abb2f4b8..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25870.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "basic bots can now display their paths on huds" - - bugfix: "medbots can research healing again" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25872.yml b/html/changelogs/AutoChangeLog-pr-25872.yml deleted file mode 100644 index 933f31b6ae1..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25872.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - spellcheck: "Fixes a typo in chat message when starting a Death Knell with the Vorpal Scythe" - - admin: "Adds logging for the death knell, both when starts and when it is completed successfully." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25873.yml b/html/changelogs/AutoChangeLog-pr-25873.yml deleted file mode 100644 index b653701b8ae..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25873.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "mercury & lithium will no longer make you randomly move outside of cryotubes or in ground less turfs (space, water, lava etc)" \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index 766db512a0f..79b6d4d8ad2 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -999,3 +999,14 @@ - bugfix: bokkens have visual block effects now - balance: forging is unleashed-- everyone can imbue, use whatever materials/reagents, and it will no longer break +2023-12-28: + SkyratBot: + - bugfix: mercury & lithium will no longer make you randomly move outside of cryotubes + or in ground less turfs (space, water, lava etc) + - spellcheck: Fixes a typo in chat message when starting a Death Knell with the + Vorpal Scythe + - admin: Adds logging for the death knell, both when starts and when it is completed + successfully. + - qol: Add UI screentips to spraycans + - rscadd: basic bots can now display their paths on huds + - bugfix: medbots can research healing again From e8d1502beaf5120362b9df31d2ea46b591e7e3b2 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:44:34 +0100 Subject: [PATCH 081/166] [MIRROR] Reverts Canister Wiring (#80265) [MDB IGNORE] (#25875) * Reverts Canister Wiring (#80265) (#80607) ## About The Pull Request Reverts #80265 It's a cool idea, but the ability to toggle valves/control pressure make this just a ttv but without the access issues we tie to that. Eats into that space way too much. Removing those but not the rest results in disappointment, so I'm just full removing this. I am keeping the code quality changes, screentips, that sort of thing tho. That bit goes hard. Also, refactored a few procs slightly to make them easier to read. Early returns, sane loops, etc. ## Why It's Good For The Game Closes #80604 Cheap remote mass producible maxcaps are a bad idea actually Sorry I didn't catch this in review, been resting for the week ## Changelog :cl: del: Removes the wires from canisters. It's a cool idea, but cheap controlled maxcaps are bad actually /:cl: * Reverts Canister Wiring (#80265) --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> --- code/__DEFINES/wires.dm | 6 - code/datums/wires/canister.dm | 33 ---- .../machinery/portable/canister.dm | 151 ++++++------------ tgstation.dme | 1 - 4 files changed, 45 insertions(+), 146 deletions(-) delete mode 100644 code/datums/wires/canister.dm diff --git a/code/__DEFINES/wires.dm b/code/__DEFINES/wires.dm index 633dcc360c2..2b4c528abc2 100644 --- a/code/__DEFINES/wires.dm +++ b/code/__DEFINES/wires.dm @@ -64,12 +64,6 @@ #define WIRE_ZAP1 "High Voltage Circuit 1" #define WIRE_ZAP2 "High Voltage Circuit 2" #define WIRE_OVERCLOCK "Overclock" -#define WIRE_VALVE "Valve" -#define WIRE_SHIELDING "Shielding" -#define WIRE_REGULATOR_MIN "Minimize Regulator Pressure" -#define WIRE_REGULATOR_MAX "Maximize Regulator Pressure" -#define WIRE_TANK_EJECT "Eject Tank" -#define WIRE_REACTION_SUPPRESSION "Reaction Suppression" // Wire states for the AI #define AI_WIRE_NORMAL 0 diff --git a/code/datums/wires/canister.dm b/code/datums/wires/canister.dm deleted file mode 100644 index c692ff22872..00000000000 --- a/code/datums/wires/canister.dm +++ /dev/null @@ -1,33 +0,0 @@ -/datum/wires/canister - holder_type = /obj/machinery/portable_atmospherics/canister - proper_name = "Canister" - -/datum/wires/canister/New(atom/holder) - wires = list(WIRE_VALVE, WIRE_SHIELDING, WIRE_REGULATOR_MIN, WIRE_REGULATOR_MAX, WIRE_TANK_EJECT, WIRE_REACTION_SUPPRESSION) - ..() - -/datum/wires/canister/on_pulse(wire) - var/obj/machinery/portable_atmospherics/canister/the_canister = holder - if(!the_canister.internal_cell) - return - switch(wire) - if(WIRE_VALVE) - the_canister.toggle_valve(usr, wire_pulsed = TRUE) - if(WIRE_SHIELDING) - the_canister.toggle_shielding(usr, wire_pulsed = TRUE) - if(WIRE_TANK_EJECT) - the_canister.eject_tank(usr, wire_pulsed = TRUE) - if(WIRE_REGULATOR_MIN) - the_canister.release_pressure = CAN_MIN_RELEASE_PRESSURE - the_canister.investigate_log("was set to [the_canister.release_pressure] kPa by [key_name(usr)] via wire pulse.", INVESTIGATE_ATMOS) - if(WIRE_REGULATOR_MAX) - the_canister.release_pressure = CAN_MAX_RELEASE_PRESSURE - the_canister.investigate_log("was set to [the_canister.release_pressure] kPa by [key_name(usr)] via wire pulse.", INVESTIGATE_ATMOS) - if(WIRE_REACTION_SUPPRESSION) - the_canister.toggle_reaction_suppression(usr, wire_pulsed = TRUE) - -/datum/wires/canister/can_reveal_wires(mob/user) - if(HAS_TRAIT(user, TRAIT_KNOW_ENGI_WIRES)) - return TRUE - - return ..() diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index bef8eb7300d..18fe9817e81 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -38,12 +38,6 @@ var/obj/item/stock_parts/cell/internal_cell ///used while processing to update appearance only when its pressure state changes var/current_pressure_state - /// An assembly attached to the canister - var/obj/item/assembly_holder/rig = null - /// The person who attached an assembly to this canister, usually for ignition purposes in tandem with valve wire pulse - var/mob/last_rigger = "" - //overlay of attached assemblies - var/mutable_appearance/assemblies_overlay /datum/armor/portable_atmospherics_canister melee = 50 @@ -60,8 +54,6 @@ if(mapload) internal_cell = new /obj/item/stock_parts/cell/high(src) - set_wires(new /datum/wires/canister(src)) - if(existing_mixture) air_contents.copy_from(existing_mixture) else @@ -81,17 +73,6 @@ AddComponent(/datum/component/gas_leaker, leak_rate=0.01) register_context() -/obj/machinery/portable_atmospherics/canister/Destroy() - QDEL_NULL(wires) - return ..() - -/obj/machinery/portable_atmospherics/canister/Exited(atom/movable/gone) - if(gone == rig) - rig = null - last_rigger = null - cut_overlays(assemblies_overlay) - return ..() - /obj/machinery/portable_atmospherics/canister/interact(mob/user) . = ..() if(!allowed(user)) @@ -101,14 +82,10 @@ /obj/machinery/portable_atmospherics/canister/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() - if(rig) - context[SCREENTIP_CONTEXT_RMB] = "Remove rigged device" if(holding) context[SCREENTIP_CONTEXT_ALT_LMB] = "Remove tank" if(!held_item) return CONTEXTUAL_SCREENTIP_SET - if(istype(held_item, /obj/item/assembly_holder)) - context[SCREENTIP_CONTEXT_LMB] = "Rig" if(istype(held_item, /obj/item/stock_parts/cell)) context[SCREENTIP_CONTEXT_LMB] = "Insert cell" switch(held_item.tool_behaviour) @@ -132,11 +109,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(get_dist(user, src) <= 2) - if(rig) - . += span_warning("There is some kind of device rigged to the canister!") - else - . += span_notice("It looks like you could rig a device to the canister.") // Please keep the canister types sorted // Basic canister per gas below here @@ -411,50 +383,8 @@ balloon_alert(user, "you install the cell") internal_cell = active_cell return TRUE - if(is_wire_tool(item) && panel_open) - wires.interact(user) - return - if(istype(item, /obj/item/assembly_holder)) - if(rig) - balloon_alert(user, "another device is in the way!") - return ..() - var/obj/item/assembly_holder/holder = item - - user.balloon_alert_to_viewers("attaching rig...") - add_fingerprint(user) - if(!do_after(user, 2 SECONDS, target = src) || !user.transferItemToLoc(holder, src)) - return - rig = holder - holder.master = src - holder.on_attach() - assemblies_overlay = holder - assemblies_overlay.layer = 3.3 - assemblies_overlay.pixel_y -= 5 - add_overlay(assemblies_overlay) - log_bomber(user, "attached [holder.name] to ", src) - last_rigger = user - user.balloon_alert_to_viewers("attached rig") - return - return ..() -/obj/machinery/portable_atmospherics/canister/attack_hand_secondary(mob/user, list/modifiers) - if(!rig) - return - // mousetrap rigs only make sense if you can set them off, can't step on them - // If you see a mousetrap-rigged fuel tank, just leave it alone - rig.on_found() - if(QDELETED(src)) - return - user.balloon_alert_to_viewers("detaching rig...") - if(!do_after(user, 2 SECONDS, target = src)) - return - user.balloon_alert_to_viewers("detached rig") - user.log_message("detached [rig] from [src].", LOG_GAME) - if(!user.put_in_hands(rig)) - rig.forceMove(get_turf(user)) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - /obj/machinery/portable_atmospherics/canister/screwdriver_act(mob/living/user, obj/item/screwdriver) if(default_deconstruction_screwdriver(user, icon_state, icon_state, screwdriver)) update_appearance() @@ -723,39 +653,47 @@ update_appearance() - /// Opens/closes the canister valve /obj/machinery/portable_atmospherics/canister/proc/toggle_valve(mob/user, wire_pulsed = FALSE) - var/logmsg - var/admin_msg - var/danger = FALSE - var/n = 0 valve_open = !valve_open - if(valve_open) - SSair.start_processing_machine(src) - logmsg = "Valve was opened by [key_name(user)] [wire_pulsed ? "via wire pulse" : ""], starting a transfer into \the [holding || "air"].
" - if(!holding) - var/list/gaseslog = list() //list for logging all gases in canister - for(var/id in air_contents.gases) - var/gas = air_contents.gases[id] - gaseslog[gas[GAS_META][META_GAS_NAME]] = gas[MOLES] //adds gases to gaseslog - if(!gas[GAS_META][META_GAS_DANGER]) - continue - if(gas[MOLES] > (gas[GAS_META][META_GAS_MOLES_VISIBLE] || MOLES_GAS_VISIBLE)) //if moles_visible is undefined, default to default visibility - danger = TRUE //at least 1 danger gas - logmsg = "[key_name(user)] opened a canister [wire_pulsed ? "via wire pulse" : ""] that contains the following:" - admin_msg = "[ADMIN_LOOKUPFLW(user)] opened a canister [wire_pulsed ? "via wire pulse" : ""] that contains the following at [ADMIN_VERBOSEJMP(src)]:" - for(var/name in gaseslog) - n = n + 1 - logmsg += "\n[name]: [gaseslog[name]] moles." - if(n <= 5) //the first five gases added - admin_msg += "\n[name]: [gaseslog[name]] moles." - if(n == 5 && length(gaseslog) > 5) //message added if more than 5 gases - admin_msg += "\nToo many gases to log. Check investigate log." - if(danger) //sent to admin's chat if contains dangerous gases - message_admins(admin_msg) - else - logmsg = "valve was closed by [key_name(user)] [wire_pulsed ? "via wire pulse" : ""], stopping the transfer into \the [holding || "air"].
" + if(!valve_open) + var/logmsg = "valve was closed by [key_name(user)] [wire_pulsed ? "via wire pulse" : ""], stopping the transfer into \the [holding || "air"].
" + investigate_log(logmsg, INVESTIGATE_ATMOS) + release_log += logmsg + return + + SSair.start_processing_machine(src) + if(holding) + var/logmsg = "Valve was opened by [key_name(user)] [wire_pulsed ? "via wire pulse" : ""], starting a transfer into \the [holding || "air"].
" + investigate_log(logmsg, INVESTIGATE_ATMOS) + release_log += logmsg + return + + // Go over the gases in canister, pull all their info and mark the spooky ones + var/list/output = list() + output += "[key_name(user)] opened a canister [wire_pulsed ? "via wire pulse" : ""] that contains the following:" + var/list/admin_output = list() + admin_output += "[ADMIN_LOOKUPFLW(user)] opened a canister [wire_pulsed ? "via wire pulse" : ""] that contains the following at [ADMIN_VERBOSEJMP(src)]:" + var/list/gases = air_contents.gases + var/danger = FALSE + for(var/gas_index in 1 to length(gases)) + var/list/gas_info = gases[gases[gas_index]] + var/list/meta = gas_info[GAS_META] + var/name = meta[META_GAS_NAME] + var/moles = gas_info[MOLES] + + output += "[name]: [moles] moles." + if(gas_index <= 5) //the first five gases added + admin_output += "[name]: [moles] moles." + else if(gas_index == 6) // anddd the warning + admin_output += "Too many gases to log. Check investigate log." + //if moles_visible is undefined, default to default visibility + if(meta[META_GAS_DANGER] && moles > (meta[META_GAS_MOLES_VISIBLE] || MOLES_GAS_VISIBLE)) + danger = TRUE + + if(danger) //sent to admin's chat if contains dangerous gases + message_admins(admin_output.Join("\n")) + var/logmsg = output.Join("\n") investigate_log(logmsg, INVESTIGATE_ATMOS) release_log += logmsg @@ -769,12 +707,13 @@ /// Ejects tank from canister, if any /obj/machinery/portable_atmospherics/canister/proc/eject_tank(mob/user, wire_pulsed = FALSE) - if(holding) - if(valve_open) - message_admins("[ADMIN_LOOKUPFLW(user)] removed [holding] from [src] with valve still open [wire_pulsed ? "via wire pulse" : ""] at [ADMIN_VERBOSEJMP(src)] releasing contents into the [span_boldannounce("air")].") - user.investigate_log("removed the [holding] [wire_pulsed ? "via wire pulse" : ""], leaving the valve open and transferring into the [span_boldannounce("air")].", INVESTIGATE_ATMOS) - replace_tank(user, FALSE) - return TRUE + if(!holding) + return FALSE + if(valve_open) + message_admins("[ADMIN_LOOKUPFLW(user)] removed [holding] from [src] with valve still open [wire_pulsed ? "via wire pulse" : ""] at [ADMIN_VERBOSEJMP(src)] releasing contents into the [span_boldannounce("air")].") + user.investigate_log("removed the [holding] [wire_pulsed ? "via wire pulse" : ""], leaving the valve open and transferring into the [span_boldannounce("air")].", INVESTIGATE_ATMOS) + replace_tank(user, FALSE) + return TRUE /// Turns hyper-noblium crystal reaction suppression in the canister on or off /obj/machinery/portable_atmospherics/canister/proc/toggle_reaction_suppression(mob/user, wire_pulsed = FALSE) diff --git a/tgstation.dme b/tgstation.dme index b06cf4b55b9..1615237a9b7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1904,7 +1904,6 @@ #include "code\datums\wires\airlock.dm" #include "code\datums\wires\apc.dm" #include "code\datums\wires\autolathe.dm" -#include "code\datums\wires\canister.dm" #include "code\datums\wires\conveyor.dm" #include "code\datums\wires\ecto_sniffer.dm" #include "code\datums\wires\emitter.dm" From fba004f1d22f2a37fb46ecdac2a40d00af10a042 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:44:58 +0100 Subject: [PATCH 082/166] Automatic changelog for PR #25875 [ci skip] --- html/changelogs/AutoChangeLog-pr-25875.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25875.yml diff --git a/html/changelogs/AutoChangeLog-pr-25875.yml b/html/changelogs/AutoChangeLog-pr-25875.yml new file mode 100644 index 00000000000..e6b37eaf48d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25875.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - rscdel: "Removes the wires from canisters. It's a cool idea, but cheap controlled maxcaps are bad actually" \ No newline at end of file From d5e4188d21c8746cad789fc7b2aa853d0a3a387d Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:48:23 +0100 Subject: [PATCH 083/166] [MIRROR] Spellchecks let's -> lets [MDB IGNORE] (#25877) * Spellchecks let's -> lets (#80612) ## About The Pull Request This is a spellcheck pr ## Changelog :cl: spellcheck: changes some let's to lets /:cl: * Spellchecks let's -> lets --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- code/modules/antagonists/heretic/magic/void_phase.dm | 2 +- code/modules/mob/living/simple_animal/slime/slime.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/antagonists/heretic/magic/void_phase.dm b/code/modules/antagonists/heretic/magic/void_phase.dm index a3f16a2aeaf..350ca0f29c1 100644 --- a/code/modules/antagonists/heretic/magic/void_phase.dm +++ b/code/modules/antagonists/heretic/magic/void_phase.dm @@ -1,6 +1,6 @@ /datum/action/cooldown/spell/pointed/void_phase name = "Void Phase" - desc = "Let's you blink to your pointed destination, causes 3x3 aoe damage bubble \ + desc = "Lets you blink to your pointed destination, causes 3x3 aoe damage bubble \ around your pointed destination and your current location. \ It has a minimum range of 3 tiles and a maximum range of 9 tiles." background_icon_state = "bg_heretic" diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 8d0770d2bf5..b4fbd05add0 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -354,7 +354,7 @@ for(var/datum/surgery/operations as anything in surgeries) if(operations.next_step(user, modifiers)) return TRUE - if(istype(attacking_item, /obj/item/stack/sheet/mineral/plasma) && !stat) //Let's you feed slimes plasma. + if(istype(attacking_item, /obj/item/stack/sheet/mineral/plasma) && !stat) //Lets you feed slimes plasma. add_friendship(user, 1) to_chat(user, span_notice("You feed the slime the plasma. It chirps happily.")) var/obj/item/stack/sheet/mineral/plasma/sheet = attacking_item From 1313ee67beaed7bf1c8eac3b4aead9a3596eb911 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:48:47 +0100 Subject: [PATCH 084/166] Automatic changelog for PR #25877 [ci skip] --- html/changelogs/AutoChangeLog-pr-25877.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25877.yml diff --git a/html/changelogs/AutoChangeLog-pr-25877.yml b/html/changelogs/AutoChangeLog-pr-25877.yml new file mode 100644 index 00000000000..e4e5e290445 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25877.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - spellcheck: "changes some let's to lets" \ No newline at end of file From 6db20fee95266c6f313245792682954d6453f7ca Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:49:34 +0100 Subject: [PATCH 085/166] [MIRROR] Cache sprite data alongside spritesheets, fixing emotes and a whole lotta other missing images [MDB IGNORE] (#25878) * Cache sprite data alongside spritesheets, fixing emotes and a whole lotta other missing images (#80601) * Cache sprite data alongside spritesheets, fixing emotes and a whole lotta other missing images --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- code/modules/asset_cache/asset_list.dm | 32 +++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/code/modules/asset_cache/asset_list.dm b/code/modules/asset_cache/asset_list.dm index 8512c253bb0..02607062111 100644 --- a/code/modules/asset_cache/asset_list.dm +++ b/code/modules/asset_cache/asset_list.dm @@ -165,7 +165,7 @@ GLOBAL_LIST_EMPTY(asset_datums) if (isnull(should_refresh)) // `fexists` seems to always fail on static-time - should_refresh = !fexists("[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].css") + should_refresh = !fexists(css_cache_filename()) || !fexists(data_cache_filename()) return should_refresh @@ -296,8 +296,17 @@ GLOBAL_LIST_EMPTY(asset_datums) return out.Join("\n") +/datum/asset/spritesheet/proc/css_cache_filename() + return "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].css" + +/datum/asset/spritesheet/proc/data_cache_filename() + return "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].json" + /datum/asset/spritesheet/proc/read_from_cache() - var/replaced_css = file2text("[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].css") + return read_css_from_cache() && read_data_from_cache() + +/datum/asset/spritesheet/proc/read_css_from_cache() + var/replaced_css = file2text(css_cache_filename()) var/regex/find_background_urls = regex(@"background:url\('%(.+?)%'\)", "g") while (find_background_urls.Find(replaced_css)) @@ -319,6 +328,14 @@ GLOBAL_LIST_EMPTY(asset_datums) return TRUE +/datum/asset/spritesheet/proc/read_data_from_cache() + var/json = json_decode(file2text(data_cache_filename())) + + if (islist(json["sprites"])) + sprites = json["sprites"] + + return TRUE + /datum/asset/spritesheet/proc/send_from_cache(client/client) if (isnull(cached_spritesheets_needed)) stack_trace("cached_spritesheets_needed was null when sending assets from [type] from cache") @@ -334,6 +351,10 @@ GLOBAL_LIST_EMPTY(asset_datums) return SSassets.transport.get_asset_url(asset) /datum/asset/spritesheet/proc/write_to_cache() + write_css_to_cache() + write_data_to_cache() + +/datum/asset/spritesheet/proc/write_css_to_cache() for (var/size_id in sizes) fcopy(SSassets.cache["[name]_[size_id].png"].resource, "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name]_[size_id].png") @@ -341,7 +362,12 @@ GLOBAL_LIST_EMPTY(asset_datums) var/mock_css = generate_css() generating_cache = FALSE - rustg_file_write(mock_css, "[ASSET_CROSS_ROUND_CACHE_DIRECTORY]/spritesheet.[name].css") + rustg_file_write(mock_css, css_cache_filename()) + +/datum/asset/spritesheet/proc/write_data_to_cache() + rustg_file_write(json_encode(list( + "sprites" = sprites, + )), data_cache_filename()) /datum/asset/spritesheet/proc/get_cached_url_mappings() var/list/mappings = list() From 97e515ceb9e5c6f2958b03333f7925bdc2e1e2e2 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:51:15 +0100 Subject: [PATCH 086/166] [MIRROR] [NO GBP] Some reaction & chamber fixes [MDB IGNORE] (#25879) * [NO GBP] Some reaction & chamber fixes (#80600) ## About The Pull Request - Fixes #80596 The UI opens when you remove/add a beaker to it - Fixes #80597 Calls `handle_reactions()` per step and updates UI thus reporting changes more often - Fixes https://github.com/tgstation/tgstation/issues/80597#issuecomment-1869693182. For instant reactions such as plastic we want to call `handle_reactions()` wherever possible (in this case whenever new reagent is added per equilibrium step) so that we can maximise product formed and start new reactions whenever possible - Fixes #80632 Same explanation as above since it now triggers all reactions more often ## Changelog :cl: fix: reaction chamber open its UI when inserting/removing beakers from it fix: reaction chamber triggers new reactions & updates UI more often during heating fix: instant and normal reactions now get triggered more often so for e.g. more plastic sheets from polymer reactions or more reactions occur when there are multiple reagents present /:cl: * [NO GBP] Some reaction & chamber fixes --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> --- code/modules/reagents/chemistry/equilibrium.dm | 2 +- code/modules/reagents/chemistry/holder/holder.dm | 2 +- .../reagents/chemistry/machinery/chem_heater.dm | 10 +++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/code/modules/reagents/chemistry/equilibrium.dm b/code/modules/reagents/chemistry/equilibrium.dm index c9d6226930c..ffa8e0c32d4 100644 --- a/code/modules/reagents/chemistry/equilibrium.dm +++ b/code/modules/reagents/chemistry/equilibrium.dm @@ -341,7 +341,7 @@ var/total_step_added = 0 for(var/datum/reagent/product as anything in reaction.results) //create the products - step_add = holder.add_reagent(product, delta_chem_factor * reaction.results[product], null, cached_temp, purity, override_base_ph = TRUE, no_react = TRUE) + step_add = holder.add_reagent(product, delta_chem_factor * reaction.results[product], null, cached_temp, purity, override_base_ph = TRUE) if(!step_add) to_delete = TRUE return diff --git a/code/modules/reagents/chemistry/holder/holder.dm b/code/modules/reagents/chemistry/holder/holder.dm index 867245e9c25..5872f5db1ae 100644 --- a/code/modules/reagents/chemistry/holder/holder.dm +++ b/code/modules/reagents/chemistry/holder/holder.dm @@ -194,7 +194,7 @@ set_temperature(reagtemp) SEND_SIGNAL(src, COMSIG_REAGENTS_NEW_REAGENT, new_reagent, amount, reagtemp, data, no_react) - if(!no_react && !is_reacting) + if(!no_react) handle_reactions() return amount diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index f0113153c92..c31c099c255 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -146,12 +146,14 @@ //keep constant with the chemical acclimator please beaker.reagents.adjust_thermal_energy((target_temperature - beaker.reagents.chem_temp) * heater_coefficient * seconds_per_tick * SPECIFIC_HEAT_DEFAULT * beaker.reagents.total_volume * randomness) - if(!beaker.reagents.is_reacting) - beaker.reagents.handle_reactions() + beaker.reagents.handle_reactions() //use power use_power(active_power_usage * seconds_per_tick) + //show changes to ui immediatly for responsivenes + SStgui.update_uis(src) + /obj/machinery/chem_heater/wrench_act(mob/living/user, obj/item/tool) . = ITEM_INTERACT_BLOCKING if(default_unfasten_wrench(user, tool) == SUCCESSFUL_UNFASTEN) @@ -176,8 +178,10 @@ var/obj/item/reagent_containers/injector = held_item injector.afterattack(beaker, user, proximity_flag = TRUE) return TRUE + if(is_reagent_container(held_item) && held_item.is_open_container()) - replace_beaker(user, held_item) + if(replace_beaker(user, held_item)) + ui_interact(user) balloon_alert(user, "beaker added!") return TRUE From a0ffc717f1f2f6f6161389d74a061e6f116da6fd Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:51:57 +0100 Subject: [PATCH 087/166] [MIRROR] Fixes wallmounted lights falling on drag [MDB IGNORE] (#25880) * Fixes wallmounted lights falling on drag (#80609) ## About The Pull Request Being able to move around lights when using the light debugger is important Can't just be qdeling em whenever you try Closes https://github.com/tgstation/tgstation/issues/78662 ## Changelog :cl: fix: Dear mappers, the light debugger tool no longer deletes dragged wall lights /:cl: * Fixes wallmounted lights falling on drag --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> --- code/datums/components/wall_mounted.dm | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/code/datums/components/wall_mounted.dm b/code/datums/components/wall_mounted.dm index 00482592f2b..a10fb246833 100644 --- a/code/datums/components/wall_mounted.dm +++ b/code/datums/components/wall_mounted.dm @@ -19,7 +19,7 @@ ADD_TRAIT(parent, TRAIT_WALLMOUNTED, REF(src)) RegisterSignal(hanging_wall_turf, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) RegisterSignal(hanging_wall_turf, COMSIG_TURF_CHANGE, PROC_REF(on_turf_changing)) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(drop_wallmount)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(on_linked_destroyed)) /datum/component/wall_mounted/UnregisterFromParent() @@ -51,6 +51,18 @@ if (ispath(path, /turf/open)) drop_wallmount() + +/** + * If we get dragged from our wall (by a singulo for instance) we should deconstruct + */ +/datum/component/wall_mounted/proc/on_move(datum/source, atom/old_loc, dir, forced, list/old_locs) + SIGNAL_HANDLER + // If we're having our lighting messed with we're likely to get dragged about + // That shouldn't lead to a decon + if(HAS_TRAIT(parent, TRAIT_LIGHTING_DEBUGGED)) + return + drop_wallmount() + /** * Handles the dropping of the linked object. This is done via deconstruction, as that should be the most sane way to handle it for most objects. * Except for intercoms, which are handled by creating a new wallframe intercom, as they're apparently items. @@ -68,6 +80,7 @@ if(!QDELING(src)) qdel(src) //Well, we fell off the wall, so we're done here. + /** * Checks object direction and then verifies if there's a wall in that direction. Finally, applies a wall_mounted component to the object. * From 78044ab111c9a037961652832750245b05034dd4 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:52:44 +0100 Subject: [PATCH 088/166] [MIRROR] Fixes input value not clearing on NTOS app [no gbp] [MDB IGNORE] (#25881) * Fixes input value not clearing on NTOS app [no gbp] (#80614) ## About The Pull Request Problem goes a little deeper than simply adding "selfClear" prop - ntos messenger is looking for more of a controlled component. Whenever messages are sent, it attempts to update the value in the input box ## Why It's Good For The Game Fixes #80611 ## Changelog :cl: fix: NTOS Messenger should clear on enter now /:cl: * Fixes input value not clearing on NTOS app [no gbp] --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> --- tgui/packages/tgui/components/Input.tsx | 31 +++++++++++++++++-------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/tgui/packages/tgui/components/Input.tsx b/tgui/packages/tgui/components/Input.tsx index c515627b8c1..d9b517f1cb5 100644 --- a/tgui/packages/tgui/components/Input.tsx +++ b/tgui/packages/tgui/components/Input.tsx @@ -77,21 +77,32 @@ export const Input = (props: Props) => { } }; + /** Focuses the input on mount */ + useEffect(() => { + if (!autoFocus && !autoSelect) return; + + const input = inputRef.current; + if (!input) return; + + setTimeout(() => { + input.focus(); + + if (autoSelect) { + input.select(); + } + }, 1); + }, []); + + /** Updates the initial value on props change */ useEffect(() => { const input = inputRef.current; if (!input) return; - input.value = toInputValue(value); - if (autoFocus || autoSelect) { - setTimeout(() => { - input.focus(); + const newValue = toInputValue(value); + if (input.value === newValue) return; - if (autoSelect) { - input.select(); - } - }, 1); - } - }, []); + input.value = newValue; + }, [value]); return ( Date: Thu, 28 Dec 2023 16:54:25 +0100 Subject: [PATCH 089/166] [MIRROR] Fix some incorrect uses of "src" in energized component [MDB IGNORE] (#25882) * Fix some incorrect uses of "src" in energized component (#80613) ## About The Pull Request Fixes this: ![image](https://github.com/tgstation/tgstation/assets/35135081/d4265136-9324-4057-992b-fbc9a6f6eb46) Untested ## Changelog :cl: fix: Fixed "was shocked by /datum/component/energized" message. /:cl: * Fix some incorrect uses of "src" in energized component --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- code/datums/components/energized.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/datums/components/energized.dm b/code/datums/components/energized.dm index 97ff670113f..d637bc2eb76 100644 --- a/code/datums/components/energized.dm +++ b/code/datums/components/energized.dm @@ -76,7 +76,7 @@ if(prob(100 - toast_prob)) if(prob(25)) do_sparks(1, FALSE, source) - playsound(src, SFX_SPARKS, 40, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + playsound(parent, SFX_SPARKS, 40, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) source.audible_message(span_danger("[parent] makes an electric crackle...")) return FALSE @@ -116,10 +116,10 @@ header = "Electrifying!", ) do_sparks(4, FALSE, source) - playsound(src, SFX_SPARKS, 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + playsound(parent, SFX_SPARKS, 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) source.audible_message(span_danger("[parent] makes a loud electric crackle!")) to_chat(future_tram_victim, span_userdanger("You hear a loud electric crackle!")) - future_tram_victim.electrocute_act(15, src, 1) + future_tram_victim.electrocute_act(15, parent, 1) return TRUE #undef NORMAL_TOAST_PROB From d538bf0de028ffce037338e9135df2f1f26fa0e6 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:55:30 +0100 Subject: [PATCH 090/166] [MIRROR] Optimize find_potential_targets self cost [MDB IGNORE] (#25883) * Optimize find_potential_targets self cost (#80602) ![image](https://github.com/tgstation/tgstation/assets/35135081/84ae20b6-5f44-4a69-bda3-0df1435dea5c) `find_potential_targets/perform` currently has a pretty bad self cost in part due to it running a second "loop over everything in range" check to find turrets and mechs. This doesn't drop it down by as much as I'd like because it still needs `hearers`, it still shows up pretty high, but this at least cuts out some unnecessary work. Best case is likely to minimize work AIs need to do when there are no players on their z-level, as there are a lot of calls from Lavaland. * Optimize find_potential_targets self cost --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- .../ai/basic_mobs/basic_ai_behaviors/targeting.dm | 11 ++++++----- code/datums/elements/hostile_machine.dm | 15 +++++++++++++++ .../machinery/porta_turret/portable_turret.dm | 2 ++ code/modules/vehicles/mecha/_mecha.dm | 1 + tgstation.dme | 1 + 5 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 code/datums/elements/hostile_machine.dm diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/targeting.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/targeting.dm index 435b9cb1ef3..8ba9624c21e 100644 --- a/code/datums/ai/basic_mobs/basic_ai_behaviors/targeting.dm +++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/targeting.dm @@ -1,11 +1,12 @@ +/// List of objects that AIs will treat as targets +GLOBAL_LIST_EMPTY_TYPED(hostile_machines, /atom) + /datum/ai_behavior/find_potential_targets action_cooldown = 2 SECONDS /// How far can we see stuff? var/vision_range = 9 /// Blackboard key for aggro range, uses vision range if not specified var/aggro_range_key = BB_AGGRO_RANGE - /// Static typecache list of potentially dangerous objs - var/static/list/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/vehicle/sealed/mecha)) /datum/ai_behavior/find_potential_targets/perform(seconds_per_tick, datum/ai_controller/controller, target_key, targeting_strategy_key, hiding_location_key) . = ..() @@ -26,9 +27,9 @@ var/list/potential_targets = hearers(aggro_range, get_turf(controller.pawn)) - living_mob //Remove self, so we don't suicide - for(var/HM in typecache_filter_list(range(aggro_range, living_mob), hostile_machines)) //Can we see any hostile machines? - if(can_see(living_mob, HM, aggro_range)) - potential_targets += HM + for (var/atom/hostile_machine as anything in GLOB.hostile_machines) + if (can_see(living_mob, hostile_machine, aggro_range)) + potential_targets += hostile_machine if(!potential_targets.len) finish_action(controller, succeeded = FALSE) diff --git a/code/datums/elements/hostile_machine.dm b/code/datums/elements/hostile_machine.dm new file mode 100644 index 00000000000..0a5f19287bb --- /dev/null +++ b/code/datums/elements/hostile_machine.dm @@ -0,0 +1,15 @@ +/// AIs will attack this as a potential target if they see it +/datum/element/hostile_machine + element_flags = ELEMENT_DETACH_ON_HOST_DESTROY + +/datum/element/hostile_machine/Attach(datum/target) + . = ..() + + if (!isatom(target)) + return ELEMENT_INCOMPATIBLE + + GLOB.hostile_machines += target + +/datum/element/hostile_machine/Detach(datum/source) + GLOB.hostile_machines -= source + return ..() diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 5a7e1da9984..76b1b73ba53 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -133,6 +133,8 @@ DEFINE_BITFIELD(turret_flags, list( if(!has_cover) INVOKE_ASYNC(src, PROC_REF(popUp)) + AddElement(/datum/element/hostile_machine) + /obj/machinery/porta_turret/proc/toggle_on(set_to) var/current = on if (!isnull(set_to)) diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index 208bd8d68c2..d971b82a856 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -267,6 +267,7 @@ equip_by_category[key] -= path AddElement(/datum/element/falling_hazard, damage = 80, wound_bonus = 10, hardhat_safety = FALSE, crushes = TRUE) + AddElement(/datum/element/hostile_machine) /obj/vehicle/sealed/mecha/Destroy() for(var/ejectee in occupants) diff --git a/tgstation.dme b/tgstation.dme index 1615237a9b7..07414c62a5f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1495,6 +1495,7 @@ #include "code\datums\elements\haunted.dm" #include "code\datums\elements\high_fiver.dm" #include "code\datums\elements\honkspam.dm" +#include "code\datums\elements\hostile_machine.dm" #include "code\datums\elements\human_biter.dm" #include "code\datums\elements\immerse.dm" #include "code\datums\elements\item_fov.dm" From d3f324c652656b577f9caca1adff1576fa8aac2c Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:56:55 +0100 Subject: [PATCH 091/166] Automatic changelog for PR #25878 [ci skip] --- html/changelogs/AutoChangeLog-pr-25878.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25878.yml diff --git a/html/changelogs/AutoChangeLog-pr-25878.yml b/html/changelogs/AutoChangeLog-pr-25878.yml new file mode 100644 index 00000000000..673a7528488 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25878.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "Fixed a lot of missing/broken images, such as emojis, language icons, commendation hearts, icons in R&D menu, etc." \ No newline at end of file From fb3a64d6ab1e2f41bd6abcc6c426598830402c45 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:57:20 +0100 Subject: [PATCH 092/166] Automatic changelog for PR #25879 [ci skip] --- html/changelogs/AutoChangeLog-pr-25879.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25879.yml diff --git a/html/changelogs/AutoChangeLog-pr-25879.yml b/html/changelogs/AutoChangeLog-pr-25879.yml new file mode 100644 index 00000000000..2d93d4e4262 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25879.yml @@ -0,0 +1,6 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "reaction chamber open its UI when inserting/removing beakers from it" + - bugfix: "reaction chamber triggers new reactions & updates UI more often during heating" + - bugfix: "instant and normal reactions now get triggered more often so for e.g. more plastic sheets from polymer reactions or more reactions occur when there are multiple reagents present" \ No newline at end of file From df072715bf51da78e585ebf9fb1cd99402cba5ee Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:57:43 +0100 Subject: [PATCH 093/166] Automatic changelog for PR #25880 [ci skip] --- html/changelogs/AutoChangeLog-pr-25880.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25880.yml diff --git a/html/changelogs/AutoChangeLog-pr-25880.yml b/html/changelogs/AutoChangeLog-pr-25880.yml new file mode 100644 index 00000000000..aa1f0601173 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25880.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "Dear mappers, the light debugger tool no longer deletes dragged wall lights" \ No newline at end of file From aa20326102ed5beb0a6f21211dd6b7d03b84b6a6 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:58:04 +0100 Subject: [PATCH 094/166] Automatic changelog for PR #25881 [ci skip] --- html/changelogs/AutoChangeLog-pr-25881.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25881.yml diff --git a/html/changelogs/AutoChangeLog-pr-25881.yml b/html/changelogs/AutoChangeLog-pr-25881.yml new file mode 100644 index 00000000000..2fb645add18 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25881.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "NTOS Messenger should clear on enter now" \ No newline at end of file From c47bce1f09e594a4d805bb3b605e8a668ba36720 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:58:27 +0100 Subject: [PATCH 095/166] Automatic changelog for PR #25882 [ci skip] --- html/changelogs/AutoChangeLog-pr-25882.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25882.yml diff --git a/html/changelogs/AutoChangeLog-pr-25882.yml b/html/changelogs/AutoChangeLog-pr-25882.yml new file mode 100644 index 00000000000..51df23a8d14 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25882.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "Fixed \"was shocked by /datum/component/energized\" message." \ No newline at end of file From 99bf83f35d4b7faf4533223cd0c425228cf2c9c9 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 16:58:44 +0100 Subject: [PATCH 096/166] [MIRROR] Fixes for mat container & ORM [MDB IGNORE] (#25885) * Fixes for mat container & ORM (#80573) ## About The Pull Request - Fixes #80559 1) The ORM now hooks onto the local container only if off station. The ui act if statement was also messed up but that's fixed now too. 2) Creates a dedicated signal for items inserted into the silo for clarity & uses the helper proc defined inside remote materials for inserting items so we don't have to specify the `context` manually. 3) Properly updates the auto Doc for the container signal defines ## Changelog :cl: fix: Off station ORM's can redeem points again. /:cl: * Fixes for mat container & ORM --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> --- .../dcs/signals/signals_material_container.dm | 10 ++-- .../components/material/remote_materials.dm | 20 ++++++-- code/modules/mining/machine_redemption.dm | 50 +++++++++++++------ code/modules/mining/machine_silo.dm | 2 +- 4 files changed, 61 insertions(+), 21 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_material_container.dm b/code/__DEFINES/dcs/signals/signals_material_container.dm index f33567a2739..2c77be55c31 100644 --- a/code/__DEFINES/dcs/signals/signals_material_container.dm +++ b/code/__DEFINES/dcs/signals/signals_material_container.dm @@ -2,10 +2,14 @@ /// Called from datum/component/material_container/proc/can_hold_material() : (mat) #define COMSIG_MATCONTAINER_MAT_CHECK "matcontainer_mat_check" #define MATCONTAINER_ALLOW_MAT (1<<0) -/// Called from datum/component/material_container/proc/user_insert() : (held_item, user) +/// Called from datum/component/material_container/proc/user_insert() : (target_item, user) #define COMSIG_MATCONTAINER_PRE_USER_INSERT "matcontainer_pre_user_insert" #define MATCONTAINER_BLOCK_INSERT (1<<1) -/// Called from datum/component/material_container/proc/insert_item() : (target, last_inserted_id, mats_consumed, material_amount, context) +/// Called from datum/component/material_container/proc/insert_item() : (item, primary_mat, mats_consumed, material_amount, context) #define COMSIG_MATCONTAINER_ITEM_CONSUMED "matcontainer_item_consumed" -/// Called from datum/component/material_container/proc/retrieve_sheets() : (sheets, context) +/// Called from datum/component/material_container/proc/retrieve_sheets() : (new_sheets, context) #define COMSIG_MATCONTAINER_SHEETS_RETRIEVED "matcontainer_sheets_retrieved" + +//mat container signals but from the ore silo's perspective +/// Called from /obj/machinery/ore_silo/on_item_consumed() : (container, item_inserted, last_inserted_id, mats_consumed, amount_inserted) +#define COMSIG_SILO_ITEM_CONSUMED "silo_item_consumed" diff --git a/code/datums/components/material/remote_materials.dm b/code/datums/components/material/remote_materials.dm index 376157903a6..33d85a5376f 100644 --- a/code/datums/components/material/remote_materials.dm +++ b/code/datums/components/material/remote_materials.dm @@ -19,15 +19,24 @@ handles linking back and forth. var/allow_standalone ///Local size of container when silo = null var/local_size = INFINITY - ///Flags used when converting inserted materials into their component materials. + ///Flags used for the local material container(exceptions for item insert & intent flags) var/mat_container_flags = NONE + ///List of signals to hook onto the local container + var/list/mat_container_signals -/datum/component/remote_materials/Initialize(mapload, allow_standalone = TRUE, force_connect = FALSE, mat_container_flags = NONE) +/datum/component/remote_materials/Initialize( + mapload, + allow_standalone = TRUE, + force_connect = FALSE, + mat_container_flags = NONE, + list/mat_container_signals = null +) if (!isatom(parent)) return COMPONENT_INCOMPATIBLE src.allow_standalone = allow_standalone src.mat_container_flags = mat_container_flags + src.mat_container_signals = mat_container_signals RegisterSignal(parent, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(OnMultitool)) @@ -51,6 +60,8 @@ handles linking back and forth. * only if allow_standalone = TRUE, else you a null mat_container */ /datum/component/remote_materials/proc/_PrepareStorage(connect_to_silo) + PRIVATE_PROC(TRUE) + if (connect_to_silo) silo = GLOB.ore_silo_default if (silo) @@ -69,6 +80,8 @@ handles linking back and forth. return ..() /datum/component/remote_materials/proc/_MakeLocal() + PRIVATE_PROC(TRUE) + silo = null var/static/list/allowed_mats = list( @@ -90,6 +103,7 @@ handles linking back and forth. allowed_mats, \ local_size, \ mat_container_flags, \ + container_signals = mat_container_signals, \ allowed_items = /obj/item/stack \ ) @@ -268,7 +282,7 @@ handles linking back and forth. * * obj/item/weapon - the item you are trying to insert * * multiplier - the multiplier applied on the materials consumed */ -/datum/component/remote_materials/proc/insert_item(obj/item/weapon, multiplier) +/datum/component/remote_materials/proc/insert_item(obj/item/weapon, multiplier = 1) if(!_can_use_resource(FALSE)) return MATERIAL_INSERT_ITEM_FAILURE diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 2d542445f8a..cfa8203615e 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -52,9 +52,21 @@ if(!GLOB.autounlock_techwebs[/datum/techweb/autounlocking/smelter]) GLOB.autounlock_techwebs[/datum/techweb/autounlocking/smelter] = new /datum/techweb/autounlocking/smelter stored_research = GLOB.autounlock_techwebs[/datum/techweb/autounlocking/smelter] - materials = AddComponent(/datum/component/remote_materials, mapload) - RegisterSignal(src, COMSIG_MATCONTAINER_ITEM_CONSUMED, TYPE_PROC_REF(/obj/machinery/mineral/ore_redemption, redeem_points)) + //mat_container_signals is for reedeming points from local storage if silo is not required + var/list/local_signals = null + if(!requires_silo) + local_signals = list( + COMSIG_MATCONTAINER_ITEM_CONSUMED = TYPE_PROC_REF(/obj/machinery/mineral/ore_redemption, local_redeem_points) + ) + materials = AddComponent( \ + /datum/component/remote_materials, \ + mapload, \ + mat_container_signals = local_signals \ + ) + + //for reedeming points from items inserted into ore silo + RegisterSignal(src, COMSIG_SILO_ITEM_CONSUMED, TYPE_PROC_REF(/obj/machinery/mineral/ore_redemption, silo_redeem_points)) /obj/machinery/mineral/ore_redemption/Destroy() stored_research = null @@ -67,7 +79,12 @@ . += span_notice("Alt-click to rotate the input and output direction.") -/obj/machinery/mineral/ore_redemption/proc/redeem_points(obj/machinery/mineral/ore_redemption/machine, container, obj/item/stack/ore/gathered_ore) +/obj/machinery/mineral/ore_redemption/proc/silo_redeem_points(obj/machinery/mineral/ore_redemption/machine, container, obj/item/stack/ore/gathered_ore) + SIGNAL_HANDLER + + local_redeem_points(container, gathered_ore) + +/obj/machinery/mineral/ore_redemption/proc/local_redeem_points(container, obj/item/stack/ore/gathered_ore) SIGNAL_HANDLER if(istype(gathered_ore) && gathered_ore.refined_type) @@ -156,7 +173,7 @@ if(isnull(gathered_ore.refined_type)) continue - if(materials.mat_container.insert_item(gathered_ore, ore_multiplier, context = src) <= 0) + if(materials.insert_item(gathered_ore, ore_multiplier) <= 0) unload_mineral(gathered_ore) //if rejected unload SEND_SIGNAL(src, COMSIG_ORM_COLLECTED_ORE) @@ -289,21 +306,26 @@ var/datum/component/material_container/mat_container = materials.mat_container switch(action) if("Claim") + //requires silo but silo not in range + if(requires_silo && !materials.check_z_level()) + return FALSE + + //no ID var/obj/item/card/id/user_id_card if(isliving(usr)) var/mob/living/user = usr user_id_card = user.get_idcard(TRUE) - if(!materials.check_z_level() && (requires_silo || !user_id_card.registered_account.replaceable)) - return TRUE + if(isnull(user_id_card)) + to_chat(usr, span_warning("No valid ID detected.")) + return FALSE + + //we have points if(points) - if(user_id_card) - user_id_card.registered_account.mining_points += points - points = 0 - else - to_chat(usr, span_warning("No valid ID detected.")) - else - to_chat(usr, span_warning("No points to claim.")) - return TRUE + user_id_card.registered_account.mining_points += points + points = 0 + return TRUE + + return FALSE if("Release") if(!mat_container) return diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm index 61e340d3540..dcc85dc1c1c 100644 --- a/code/modules/mining/machine_silo.dm +++ b/code/modules/mining/machine_silo.dm @@ -64,7 +64,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs) silo_log(context, "deposited", amount_inserted, item_inserted.name, mats_consumed) - SEND_SIGNAL(context, COMSIG_MATCONTAINER_ITEM_CONSUMED, container, item_inserted, last_inserted_id, mats_consumed, amount_inserted) + SEND_SIGNAL(context, COMSIG_SILO_ITEM_CONSUMED, container, item_inserted, last_inserted_id, mats_consumed, amount_inserted) /obj/machinery/ore_silo/proc/log_sheets_ejected(datum/component/material_container/container, obj/item/stack/sheet/sheets, atom/context) SIGNAL_HANDLER From 66884aae131efcb41d1f589811bb399094afd0db Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:00:03 +0100 Subject: [PATCH 097/166] [MIRROR] Add 50% graffiti speed boost to tagger quirk [MDB IGNORE] (#25886) * Add 50% graffiti speed boost to tagger quirk (#80567) ## About The Pull Request This gives the tagger quirk a 50% speed boost when drawing graffiti. There was also some unused variable intended to make large graffiti more time consuming that is now fixed. ## Why It's Good For The Game It'd be nice to be able to spraypaint messages on the floor quicker. Especially if you are doing a gimmick that requires making a shop sign using letters. ## Changelog :cl: add: Add 50% graffiti speed boost to tagger quirk fix: Fix time duration of large graffiti not applying properly /:cl: * Add 50% graffiti speed boost to tagger quirk --------- Co-authored-by: Tim --- code/datums/quirks/positive_quirks/tagger.dm | 4 ++-- code/game/objects/items/crayons.dm | 8 ++++++-- code/game/objects/items/syndie_spraycan.dm | 10 +++++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/code/datums/quirks/positive_quirks/tagger.dm b/code/datums/quirks/positive_quirks/tagger.dm index 4b0f48a1ca8..c2640081a6d 100644 --- a/code/datums/quirks/positive_quirks/tagger.dm +++ b/code/datums/quirks/positive_quirks/tagger.dm @@ -1,10 +1,10 @@ /datum/quirk/item_quirk/tagger name = "Tagger" - desc = "You're an experienced artist. People will actually be impressed by your graffiti, and you can get twice as many uses out of drawing supplies." + desc = "You're an experienced artist. People will actually be impressed by your graffiti, and you can get twice as many uses out of drawing supplies in half the time." icon = FA_ICON_SPRAY_CAN value = 4 mob_trait = TRAIT_TAGGER - gain_text = span_notice("You know how to tag walls efficiently.") + gain_text = span_notice("You know how to tag walls efficiently and quickly.") lose_text = span_danger("You forget how to tag walls properly.") medical_record_text = "Patient was recently seen for possible paint huffing incident." mail_goodies = list( diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 35732e23101..3090842b65a 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -14,6 +14,7 @@ #define AVAILABLE_SPRAYCAN_SPACE 8 // enough to fill one radial menu page +#define DRAW_TIME 5 SECONDS #define INFINITE_CHARGES -1 /* @@ -504,11 +505,13 @@ audible_message(span_notice("You hear spraying.")) playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5) - var/wait_time = 50 + var/wait_time = DRAW_TIME if(paint_mode == PAINT_LARGE_HORIZONTAL) wait_time *= 3 + if(istagger) + wait_time *= 0.5 - if(!instant && !do_after(user, 50, target = target)) + if(!instant && !do_after(user, wait_time, target = target)) return if(!use_charges(user, cost)) @@ -1064,3 +1067,4 @@ #undef PAINT_LARGE_HORIZONTAL_ICON #undef INFINITE_CHARGES +#undef DRAW_TIME diff --git a/code/game/objects/items/syndie_spraycan.dm b/code/game/objects/items/syndie_spraycan.dm index deab6229a28..02a576a2cb9 100644 --- a/code/game/objects/items/syndie_spraycan.dm +++ b/code/game/objects/items/syndie_spraycan.dm @@ -1,3 +1,5 @@ +#define SYNDIE_DRAW_TIME 3 SECONDS + // Extending the existing spraycan item was more trouble than it was worth, I don't want or need this to be able to draw arbitrary shapes. /obj/item/traitor_spraycan name = "seditious spraycan" @@ -79,7 +81,12 @@ /obj/item/traitor_spraycan/proc/try_draw_step(start_output, mob/living/user, atom/target) drawing_rune = TRUE user.balloon_alert(user, "[start_output]") - if (!do_after(user, 3 SECONDS, target)) + var/wait_time = SYNDIE_DRAW_TIME + + if(HAS_TRAIT(user, TRAIT_TAGGER)) + wait_time *= 0.5 + + if(!do_after(user, wait_time, target)) user.balloon_alert(user, "interrupted!") drawing_rune = FALSE return FALSE @@ -220,6 +227,7 @@ return ..() +#undef SYNDIE_DRAW_TIME #undef RUNE_STAGE_COLOURED #undef RUNE_STAGE_COMPLETE #undef RUNE_STAGE_OUTLINE From 3e6edd73ee28b5e52ee8fce1a34909fc0614752b Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:08:13 +0100 Subject: [PATCH 098/166] [MIRROR] Add system for safely manipulating JSON databases and apply it to photo albums and photo frames [MDB IGNORE] (#25887) * Add system for safely manipulating JSON databases and apply it to photo albums and photo frames (#80519) We frequently have issues with data loss in our long storage .json files for various reasons, such as the file being completely blanked out on write etc. This introduces a system that tries to safely handle that by saving the known working json file into a backup that will be loaded in the case a write fails. This system queues updates in order to send through to the next tick. This is an improvement over the existing implementation of photo albums and photo frames (I think all persistence, even) which do not save until the end of a properly rebooted round, but not during a server crash. Also saves the jsons in pretty prints, which make them easier to read but especially make them easier to diff in a git repository, which MSO wants to setup (and hopefully make public so I can make a dashboard on bus.moth.fans for looking at photo albums and their history, which is something I've wanted to do for a very long time). ## Changelog :cl: refactor: Photo albums and photo frames are now more resilient to data loss, especially when a server crashes. /:cl: * Add system for safely manipulating JSON databases and apply it to photo albums and photo frames --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- .../subsystem/persistence/_persistence.dm | 20 ++- .../subsystem/persistence/photo_albums.dm | 79 ++--------- code/datums/json_database.dm | 128 ++++++++++++++++++ code/modules/photography/photos/album.dm | 36 +++-- code/modules/photography/photos/frame.dm | 38 +++--- tgstation.dme | 1 + 6 files changed, 207 insertions(+), 95 deletions(-) create mode 100644 code/datums/json_database.dm diff --git a/code/controllers/subsystem/persistence/_persistence.dm b/code/controllers/subsystem/persistence/_persistence.dm index 565cf519d4b..e42247c71a9 100644 --- a/code/controllers/subsystem/persistence/_persistence.dm +++ b/code/controllers/subsystem/persistence/_persistence.dm @@ -20,8 +20,23 @@ SUBSYSTEM_DEF(persistence) var/list/blocked_maps = list() var/list/saved_trophies = list() var/list/picture_logging_information = list() - var/list/obj/structure/sign/picture_frame/photo_frames - var/list/obj/item/storage/photo_album/photo_albums + + /// A json_database linking to data/photo_frames.json. + /// Schema is persistence_id => array of photo names. + var/datum/json_database/photo_frames_database + + /// A lazy list of every picture frame that is going to be loaded with persistent photos. + /// Will be null'd once the persistence system initializes, and never read from again. + var/list/obj/structure/sign/picture_frame/queued_photo_frames + + /// A json_database linking to data/photo_albums.json. + /// Schema is persistence_id => array of photo names. + var/datum/json_database/photo_albums_database + + /// A lazy list of every photo album that is going to be loaded with persistent photos. + /// Will be null'd once the persistence system initializes, and never read from again. + var/list/obj/item/storage/photo_album/queued_photo_albums + var/rounds_since_engine_exploded = 0 var/delam_highscore = 0 var/tram_hits_this_round = 0 @@ -48,7 +63,6 @@ SUBSYSTEM_DEF(persistence) save_prisoner_tattoos() collect_trophies() collect_maps() - save_photo_persistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION. save_randomized_recipes() save_scars() save_custom_outfits() diff --git a/code/controllers/subsystem/persistence/photo_albums.dm b/code/controllers/subsystem/persistence/photo_albums.dm index 3aee856b2c2..90c8ec31ac1 100644 --- a/code/controllers/subsystem/persistence/photo_albums.dm +++ b/code/controllers/subsystem/persistence/photo_albums.dm @@ -1,15 +1,3 @@ -///Loads up the photo album source file. -/datum/controller/subsystem/persistence/proc/get_photo_albums() - var/album_path = file("data/photo_albums.json") - if(fexists(album_path)) - return json_decode(file2text(album_path)) - -///Loads up the photo frames source file. -/datum/controller/subsystem/persistence/proc/get_photo_frames() - var/frame_path = file("data/photo_frames.json") - if(fexists(frame_path)) - return json_decode(file2text(frame_path)) - /// Removes the identifier of a persistent photo frame from the json. /datum/controller/subsystem/persistence/proc/remove_photo_frames(identifier) var/frame_path = file("data/photo_frames.json") @@ -25,62 +13,23 @@ ///Loads photo albums, and populates them; also loads and applies frames to picture frames. /datum/controller/subsystem/persistence/proc/load_photo_persistence() - var/album_path = file("data/photo_albums.json") - var/frame_path = file("data/photo_frames.json") - if(fexists(album_path)) - var/list/json = json_decode(file2text(album_path)) - if(json.len) - for(var/i in photo_albums) - var/obj/item/storage/photo_album/A = i - if(!A.persistence_id) - continue - if(json[A.persistence_id]) - A.populate_from_id_list(json[A.persistence_id]) - - if(fexists(frame_path)) - var/list/json = json_decode(file2text(frame_path)) - if(json.len) - for(var/i in photo_frames) - var/obj/structure/sign/picture_frame/PF = i - if(!PF.persistence_id) - continue - if(json[PF.persistence_id]) - PF.load_from_id(json[PF.persistence_id]) - -///Saves the contents of photo albums and the picture frames. -/datum/controller/subsystem/persistence/proc/save_photo_persistence() - var/album_path = file("data/photo_albums.json") - var/frame_path = file("data/photo_frames.json") - - var/list/frame_json = list() - var/list/album_json = list() - - if(fexists(album_path)) - album_json = json_decode(file2text(album_path)) - fdel(album_path) - - for(var/i in photo_albums) - var/obj/item/storage/photo_album/A = i - if(!istype(A) || !A.persistence_id) + photo_albums_database = new("data/photo_albums.json") + for (var/obj/item/storage/photo_album/album as anything in queued_photo_albums) + if (isnull(album.persistence_id)) continue - var/list/L = A.get_picture_id_list() - album_json[A.persistence_id] = L - album_json = json_encode(album_json) + var/album_data = photo_albums_database.get_key(album.persistence_id) + if (!isnull(album_data)) + album.populate_from_id_list(album_data) - WRITE_FILE(album_path, album_json) - - if(fexists(frame_path)) - frame_json = json_decode(file2text(frame_path)) - fdel(frame_path) - - for(var/i in photo_frames) - var/obj/structure/sign/picture_frame/F = i - if(!istype(F) || !F.persistence_id) + photo_frames_database = new("data/photo_frames.json") + for (var/obj/structure/sign/picture_frame/frame as anything in queued_photo_frames) + if (isnull(frame.persistence_id)) continue - frame_json[F.persistence_id] = F.get_photo_id() - frame_json = json_encode(frame_json) - - WRITE_FILE(frame_path, frame_json) + var/frame_data = photo_frames_database.get_key(frame.persistence_id) + if (!isnull(frame_data)) + frame.load_from_id(frame_data) + queued_photo_albums = null + queued_photo_frames = null diff --git a/code/datums/json_database.dm b/code/datums/json_database.dm new file mode 100644 index 00000000000..ea3ff354b48 --- /dev/null +++ b/code/datums/json_database.dm @@ -0,0 +1,128 @@ +/// Represents a json file being used as a database in the data/ folder. +/// Changes made here will save back to the associated file, with recovery. +/// Will defer writes until later if multiple happen in the same tick. +/// Do not add an extra cache on top of this. This IS your cache. +/datum/json_database + VAR_PRIVATE + filepath + backup_filepath + + cached_data + save_queued = FALSE + + static/existing_json_database = list() + +/datum/json_database/New(filepath) + if (IsAdminAdvancedProcCall()) + to_chat(usr, "json_database creation, linking to [html_encode(filepath)], was blocked.", confidential = TRUE) + return + + ASSERT(isnull(existing_json_database[filepath]), "[filepath] already has an associated json_database. You must expose it somehow and use that instead of making a new one.") + + existing_json_database[filepath] = TRUE + + src.filepath = filepath + backup_filepath = "[filepath].savebac" + + if (fexists(filepath)) + cached_data = safe_json_decode(file2text(filepath)) + if (isnull(cached_data)) + var/scenario = "[filepath] existed, but did not have valid JSON" + + if (fexists(backup_filepath)) + load_backup(scenario) + else + stack_trace("[scenario]. No backup could be found.") + cached_data = list() + else + if (fexists(backup_filepath)) + load_backup("[filepath] didn't exist") + else + cached_data = list() + +/datum/json_database/Destroy() + if (save_queued) + save() + + existing_json_database -= filepath + + return ..() + +/// Returns the cached data. +/// Be careful on holding onto this data for too long, as it can mutate when other stuff changes it. +/// Do not mutate it yourself. +/datum/json_database/proc/get() + return cached_data + +/// Returns the data with the given key. +/// For arrays, this is a number. +/// Be careful on holding onto this data for too long, as it can mutate when other stuff changes it. +/// Do not mutate it yourself. +/datum/json_database/proc/get_key(key) + return cached_data[key] + +/// Sets the data at the key to the value, and queues a save. +/datum/json_database/proc/set_key(key, value) + cached_data[key] = value + queue_save() + +/// Removes the data at the given item, and queues a save. +/// For dictionaries, this can be the key. +/// For arrays, this can be the value. +/datum/json_database/proc/remove(item) + UNTYPED_LIST_REMOVE(cached_data, item) + queue_save() + +/// Inserts the data at the end of what is assumed to be an array, and queues a save. +/datum/json_database/proc/insert(value) + UNTYPED_LIST_ADD(cached_data, value) + queue_save() + +/// Replaces the cache with the new data completely, and queues a save. +/// Do not touch the new data after passing it in. +/datum/json_database/proc/replace(list/new_data) + cached_data = new_data + queue_save() + +/datum/json_database/proc/queue_save() + PRIVATE_PROC(TRUE) + + if (save_queued) + return + + addtimer(CALLBACK(src, PROC_REF(save)), 0) + +/datum/json_database/proc/save() + PRIVATE_PROC(TRUE) + + save_queued = FALSE + + if (fexists(filepath)) + rustg_file_write(file2text(filepath), backup_filepath) + + rustg_file_write(json_encode(cached_data, JSON_PRETTY_PRINT), filepath) + + ASSERT(!isnull(safe_json_decode(file2text(filepath))), "JSON written to [filepath] was not valid. Backup will be preserved.") + + fdel(backup_filepath) + +/datum/json_database/proc/load_backup(scenario) + PRIVATE_PROC(TRUE) + + var/cached_contents = file2text(backup_filepath) + var/list/backed_up_data = safe_json_decode(cached_contents) + + if (isnull(backed_up_data)) + stack_trace("[scenario]. Backup existed, but also did not have valid JSON.") + cached_data = list() + else + stack_trace("[scenario]. Backup existed and was used instead. The JSON file has been updated.") + cached_data = backed_up_data + rustg_file_write(cached_contents, filepath) + +/datum/json_database/vv_edit_var(var_name, var_value) + switch (var_name) + if (nameof(filepath), nameof(backup_filepath)) + return FALSE + else + return ..() diff --git a/code/modules/photography/photos/album.dm b/code/modules/photography/photos/album.dm index 35d7f27017c..f8f8a8fb062 100644 --- a/code/modules/photography/photos/album.dm +++ b/code/modules/photography/photos/album.dm @@ -9,6 +9,7 @@ inhand_icon_state = "album" lefthand_file = 'icons/mob/inhands/items/books_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/books_righthand.dmi' + storage_type = /datum/storage/photo_album resistance_flags = FLAMMABLE w_class = WEIGHT_CLASS_SMALL flags_1 = PREVENT_CONTENTS_EXPLOSION_1 @@ -16,13 +17,11 @@ /obj/item/storage/photo_album/Initialize(mapload) . = ..() - atom_storage.set_holdable(list(/obj/item/photo)) - atom_storage.max_total_storage = 42 - atom_storage.max_slots = 21 - LAZYADD(SSpersistence.photo_albums, src) + if (!SSpersistence.initialized) + LAZYADD(SSpersistence.queued_photo_albums, src) /obj/item/storage/photo_album/Destroy() - LAZYREMOVE(SSpersistence.photo_albums, src) + LAZYREMOVE(SSpersistence.queued_photo_albums, src) return ..() /obj/item/storage/photo_album/proc/get_picture_id_list() @@ -41,9 +40,9 @@ //Manual loading, DO NOT USE FOR HARDCODED/MAPPED IN ALBUMS. This is for if an album needs to be loaded mid-round from an ID. /obj/item/storage/photo_album/proc/persistence_load() - var/list/data = SSpersistence.get_photo_albums() - if(data[persistence_id]) - populate_from_id_list(data[persistence_id]) + var/list/data = SSpersistence.photo_albums_database.get_key(persistence_id) + if (!isnull(data)) + populate_from_id_list(data) /obj/item/storage/photo_album/proc/populate_from_id_list(list/ids) var/list/current_ids = get_picture_id_list() @@ -55,6 +54,27 @@ if(!atom_storage?.attempt_insert(P, override = TRUE)) qdel(P) +/datum/storage/photo_album + max_total_storage = 42 + max_slots = 21 + +/datum/storage/photo_album/New(atom/parent, max_slots, max_specific_storage, max_total_storage, numerical_stacking, allow_quick_gather, allow_quick_empty, collection_mode, attack_hand_interact) + . = ..() + set_holdable(list(/obj/item/photo)) + +/datum/storage/photo_album/proc/save_everything() + var/obj/item/storage/photo_album/album = parent.resolve() + ASSERT(istype(album)) + SSpersistence.photo_albums_database.set_key(album.persistence_id, album.get_picture_id_list()) + +/datum/storage/photo_album/handle_enter(datum/source, obj/item/arrived) + . = ..() + save_everything() + +/datum/storage/photo_album/handle_exit(datum/source, obj/item/gone) + . = ..() + save_everything() + /obj/item/storage/photo_album/hos name = "photo album (Head of Security)" icon_state = "album_blue" diff --git a/code/modules/photography/photos/frame.dm b/code/modules/photography/photos/frame.dm index f2d77553ea1..4fbe3e034d8 100644 --- a/code/modules/photography/photos/frame.dm +++ b/code/modules/photography/photos/frame.dm @@ -56,7 +56,7 @@ var/obj/structure/sign/picture_frame/PF = O PF.copy_overlays(src) if(displayed) - PF.framed = displayed + PF.set_and_save_framed(displayed) if(contents.len) var/obj/item/I = pick(contents) I.forceMove(PF) @@ -70,27 +70,19 @@ resistance_flags = FLAMMABLE var/obj/item/photo/framed var/persistence_id - var/del_id_on_destroy = FALSE var/art_value = OK_ART var/can_decon = TRUE -#define FRAME_DEFINE(id) /obj/structure/sign/picture_frame/##id/persistence_id = #id - -//Put default persistent frame defines here! - -#undef FRAME_DEFINE - /obj/structure/sign/picture_frame/Initialize(mapload, dir, building) . = ..() AddElement(/datum/element/art, art_value) - LAZYADD(SSpersistence.photo_frames, src) + if (!SSpersistence.initialized) + LAZYADD(SSpersistence.queued_photo_frames, src) if(dir) setDir(dir) /obj/structure/sign/picture_frame/Destroy() - LAZYREMOVE(SSpersistence.photo_frames, src) - if(persistence_id && del_id_on_destroy) - SSpersistence.remove_photo_frames(persistence_id) + LAZYREMOVE(SSpersistence.queued_photo_frames, src) return ..() /obj/structure/sign/picture_frame/proc/get_photo_id() @@ -99,9 +91,9 @@ //Manual loading, DO NOT USE FOR HARDCODED/MAPPED IN ALBUMS. This is for if an album needs to be loaded mid-round from an ID. /obj/structure/sign/picture_frame/proc/persistence_load() - var/list/data = SSpersistence.get_photo_frames() - if(data[persistence_id]) - load_from_id(data[persistence_id]) + var/list/data = SSpersistence.photo_frames_database.get_key(persistence_id) + if(!isnull(data)) + load_from_id(data) /obj/structure/sign/picture_frame/proc/load_from_id(id) var/obj/item/photo/old/P = load_photo_from_disk(id) @@ -113,6 +105,15 @@ framed = P update_appearance() +/// Given a photo (or null), will change the contained picture, and queue a persistent save. +/obj/structure/sign/picture_frame/proc/set_and_save_framed(obj/item/photo/photo) + framed = photo + + if (isnull(persistence_id)) + return + + SSpersistence.photo_frames_database.set_key(persistence_id, photo?.picture?.id) + /obj/structure/sign/picture_frame/examine(mob/user) . = ..() if(in_range(src, user)) @@ -141,7 +142,7 @@ tool.play_tool_sound(src) framed.forceMove(drop_location()) user.visible_message(span_warning("[user] cuts away [framed] from [src]!")) - framed = null + set_and_save_framed(null) update_appearance() return ITEM_INTERACT_SUCCESS @@ -155,7 +156,7 @@ var/obj/item/photo/P = I if(!user.transferItemToLoc(P, src)) return - framed = P + set_and_save_framed(P) update_appearance() return TRUE ..() @@ -177,7 +178,7 @@ var/obj/item/wallframe/picture/F = new /obj/item/wallframe/picture(loc) if(framed) F.displayed = framed - framed = null + set_and_save_framed(null) if(contents.len) var/obj/item/I = pick(contents) I.forceMove(F) @@ -277,7 +278,6 @@ /obj/structure/sign/picture_frame/portrait/bar persistence_id = "frame_bar" - del_id_on_destroy = TRUE ///Generates a persistence id unique to the current map. Every bar should feel a little bit different after all. /obj/structure/sign/picture_frame/portrait/bar/Initialize(mapload) diff --git a/tgstation.dme b/tgstation.dme index 07414c62a5f..a694eecd449 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -856,6 +856,7 @@ #include "code\datums\hotkeys_help.dm" #include "code\datums\http.dm" #include "code\datums\hud.dm" +#include "code\datums\json_database.dm" #include "code\datums\json_savefile.dm" #include "code\datums\lazy_template.dm" #include "code\datums\map_config.dm" From 09351396ec8a66d24369b35439a716f70f23abcf Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:09:15 +0100 Subject: [PATCH 099/166] [MIRROR] Fixes AI behavior with breaking cuffs and resisting aggressive grabs [MDB IGNORE] (#25888) * Fixes AI behavior with breaking cuffs and resisting aggressive grabs (#80328) ## About The Pull Request Makes it so that ai's recognize they're in a do_after after resisting, preventing them from processing and interrupting the do_after while they're in a condition that necessitates it. If it gets interrupted then they'll process as normal, or if they finish they'll be free. ## Why It's Good For The Game Monkeys can now resist things that they should've been, such as aggressive grabs or cuffs, instead of having their ai completely freeze when they're cuffed. ## Changelog :cl: fix: ai can now tell if it is in a do_after for resisting and will not interrupt it. monkeys also now don't freeze up when aggressively grabbed and will resist out of those and cuffs. /:cl: * Fixes AI behavior with breaking cuffs and resisting aggressive grabs --------- Co-authored-by: Diamond_ --- code/__DEFINES/ai/monkey.dm | 1 + code/datums/ai/_ai_controller.dm | 1 + code/datums/ai/generic/generic_behaviors.dm | 1 + code/datums/ai/monkey/monkey_controller.dm | 15 ++++++++++++++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/ai/monkey.dm b/code/__DEFINES/ai/monkey.dm index fc4af74d9f0..0e8c44e40fa 100644 --- a/code/__DEFINES/ai/monkey.dm +++ b/code/__DEFINES/ai/monkey.dm @@ -15,3 +15,4 @@ #define BB_MONKEY_TARGET_MONKEYS "BB_monkey_target_monkeys" #define BB_MONKEY_DISPOSING "BB_monkey_disposing" #define BB_MONKEY_RECRUIT_COOLDOWN "BB_monkey_recruit_cooldown" +#define BB_RESISTING "BB_resisting" diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm index 6bbdabfc50d..04dc7901c85 100644 --- a/code/datums/ai/_ai_controller.dm +++ b/code/datums/ai/_ai_controller.dm @@ -175,6 +175,7 @@ multiple modular subtrees with behaviors ///Runs any actions that are currently running /datum/ai_controller/process(seconds_per_tick) + if(!able_to_run()) SSmove_manager.stop_looping(pawn) //stop moving return //this should remove them from processing in the future through event-based stuff. diff --git a/code/datums/ai/generic/generic_behaviors.dm b/code/datums/ai/generic/generic_behaviors.dm index 4f61a261659..43e37f66e8c 100644 --- a/code/datums/ai/generic/generic_behaviors.dm +++ b/code/datums/ai/generic/generic_behaviors.dm @@ -2,6 +2,7 @@ /datum/ai_behavior/resist/perform(seconds_per_tick, datum/ai_controller/controller) . = ..() var/mob/living/living_pawn = controller.pawn + living_pawn.ai_controller.set_blackboard_key(BB_RESISTING, TRUE) living_pawn.execute_resist() finish_action(controller, TRUE) diff --git a/code/datums/ai/monkey/monkey_controller.dm b/code/datums/ai/monkey/monkey_controller.dm index 781bfb70a85..8be754f8d4b 100644 --- a/code/datums/ai/monkey/monkey_controller.dm +++ b/code/datums/ai/monkey/monkey_controller.dm @@ -26,9 +26,22 @@ have ways of interacting with a specific mob and control it. BB_MONKEY_GUN_NEURONS_ACTIVATED = FALSE, BB_MONKEY_GUN_WORKED = TRUE, BB_SONG_LINES = MONKEY_SONG, + BB_RESISTING = FALSE, ) idle_behavior = /datum/idle_behavior/idle_monkey +/datum/ai_controller/monkey/process(seconds_per_tick) + + var/mob/living/living_pawn = src.pawn + + if(!length(living_pawn.do_afters) && living_pawn.ai_controller.blackboard[BB_RESISTING]) + living_pawn.ai_controller.set_blackboard_key(BB_RESISTING, FALSE) + + if(living_pawn.ai_controller.blackboard[BB_RESISTING]) + return + + . = ..() + /datum/ai_controller/monkey/New(atom/new_pawn) var/static/list/control_examine = list( ORGAN_SLOT_EYES = span_monkey("eyes have a primal look in them."), @@ -91,7 +104,7 @@ have ways of interacting with a specific mob and control it. /datum/ai_controller/monkey/able_to_run() var/mob/living/living_pawn = pawn - if(IS_DEAD_OR_INCAP(living_pawn)) + if(living_pawn.incapacitated(IGNORE_RESTRAINTS | IGNORE_GRAB | IGNORE_STASIS) || living_pawn.stat > CONSCIOUS) return FALSE return ..() From 307f38dad6c10d447ccab83846e5c6f0b1b2ae9a Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:24:56 +0100 Subject: [PATCH 100/166] Automatic changelog for PR #25885 [ci skip] --- html/changelogs/AutoChangeLog-pr-25885.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25885.yml diff --git a/html/changelogs/AutoChangeLog-pr-25885.yml b/html/changelogs/AutoChangeLog-pr-25885.yml new file mode 100644 index 00000000000..fd3f6effed1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25885.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "Off station ORM's can redeem points again." \ No newline at end of file From 1bde7093c7d5d67ff4c9e6724e21f84aed324069 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:38:44 +0100 Subject: [PATCH 101/166] Automatic changelog for PR #25886 [ci skip] --- html/changelogs/AutoChangeLog-pr-25886.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25886.yml diff --git a/html/changelogs/AutoChangeLog-pr-25886.yml b/html/changelogs/AutoChangeLog-pr-25886.yml new file mode 100644 index 00000000000..ec47fc60aac --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25886.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - rscadd: "Add 50% graffiti speed boost to tagger quirk" + - bugfix: "Fix time duration of large graffiti not applying properly" \ No newline at end of file From f73b8190744e8df4e69b7d0823de1ccae8e2ac8e Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:39:25 +0100 Subject: [PATCH 102/166] Automatic changelog for PR #25887 [ci skip] --- html/changelogs/AutoChangeLog-pr-25887.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25887.yml diff --git a/html/changelogs/AutoChangeLog-pr-25887.yml b/html/changelogs/AutoChangeLog-pr-25887.yml new file mode 100644 index 00000000000..89a03db3a0c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25887.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - refactor: "Photo albums and photo frames are now more resilient to data loss, especially when a server crashes." \ No newline at end of file From c0c8eab20eabb917054435f0f4b7b8f1d4633ae9 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:40:01 +0100 Subject: [PATCH 103/166] Automatic changelog for PR #25888 [ci skip] --- html/changelogs/AutoChangeLog-pr-25888.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25888.yml diff --git a/html/changelogs/AutoChangeLog-pr-25888.yml b/html/changelogs/AutoChangeLog-pr-25888.yml new file mode 100644 index 00000000000..c34b119eef9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25888.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "ai can now tell if it is in a do_after for resisting and will not interrupt it. monkeys also now don't freeze up when aggressively grabbed and will resist out of those and cuffs." \ No newline at end of file From 24ff84cc24b63e794b47831222a06c1c4d034519 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 29 Dec 2023 00:28:09 +0000 Subject: [PATCH 104/166] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-25875.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25877.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25878.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25879.yml | 6 ------ html/changelogs/AutoChangeLog-pr-25880.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25881.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25882.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25885.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25886.yml | 5 ----- html/changelogs/AutoChangeLog-pr-25887.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25888.yml | 4 ---- html/changelogs/archive/2023-12.yml | 24 ++++++++++++++++++++++ 12 files changed, 24 insertions(+), 47 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-25875.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25877.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25878.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25879.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25880.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25881.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25882.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25885.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25886.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25887.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25888.yml diff --git a/html/changelogs/AutoChangeLog-pr-25875.yml b/html/changelogs/AutoChangeLog-pr-25875.yml deleted file mode 100644 index e6b37eaf48d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25875.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscdel: "Removes the wires from canisters. It's a cool idea, but cheap controlled maxcaps are bad actually" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25877.yml b/html/changelogs/AutoChangeLog-pr-25877.yml deleted file mode 100644 index e4e5e290445..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25877.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - spellcheck: "changes some let's to lets" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25878.yml b/html/changelogs/AutoChangeLog-pr-25878.yml deleted file mode 100644 index 673a7528488..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25878.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Fixed a lot of missing/broken images, such as emojis, language icons, commendation hearts, icons in R&D menu, etc." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25879.yml b/html/changelogs/AutoChangeLog-pr-25879.yml deleted file mode 100644 index 2d93d4e4262..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25879.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "reaction chamber open its UI when inserting/removing beakers from it" - - bugfix: "reaction chamber triggers new reactions & updates UI more often during heating" - - bugfix: "instant and normal reactions now get triggered more often so for e.g. more plastic sheets from polymer reactions or more reactions occur when there are multiple reagents present" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25880.yml b/html/changelogs/AutoChangeLog-pr-25880.yml deleted file mode 100644 index aa1f0601173..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25880.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Dear mappers, the light debugger tool no longer deletes dragged wall lights" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25881.yml b/html/changelogs/AutoChangeLog-pr-25881.yml deleted file mode 100644 index 2fb645add18..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25881.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "NTOS Messenger should clear on enter now" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25882.yml b/html/changelogs/AutoChangeLog-pr-25882.yml deleted file mode 100644 index 51df23a8d14..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25882.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Fixed \"was shocked by /datum/component/energized\" message." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25885.yml b/html/changelogs/AutoChangeLog-pr-25885.yml deleted file mode 100644 index fd3f6effed1..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25885.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Off station ORM's can redeem points again." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25886.yml b/html/changelogs/AutoChangeLog-pr-25886.yml deleted file mode 100644 index ec47fc60aac..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25886.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "Add 50% graffiti speed boost to tagger quirk" - - bugfix: "Fix time duration of large graffiti not applying properly" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25887.yml b/html/changelogs/AutoChangeLog-pr-25887.yml deleted file mode 100644 index 89a03db3a0c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25887.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - refactor: "Photo albums and photo frames are now more resilient to data loss, especially when a server crashes." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25888.yml b/html/changelogs/AutoChangeLog-pr-25888.yml deleted file mode 100644 index c34b119eef9..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25888.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "ai can now tell if it is in a do_after for resisting and will not interrupt it. monkeys also now don't freeze up when aggressively grabbed and will resist out of those and cuffs." \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index 79b6d4d8ad2..adcb9478105 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -1010,3 +1010,27 @@ - qol: Add UI screentips to spraycans - rscadd: basic bots can now display their paths on huds - bugfix: medbots can research healing again +2023-12-29: + SkyratBot: + - bugfix: Fixed a lot of missing/broken images, such as emojis, language icons, + commendation hearts, icons in R&D menu, etc. + - bugfix: Fixed "was shocked by /datum/component/energized" message. + - rscdel: Removes the wires from canisters. It's a cool idea, but cheap controlled + maxcaps are bad actually + - refactor: Photo albums and photo frames are now more resilient to data loss, especially + when a server crashes. + - spellcheck: changes some let's to lets + - bugfix: Off station ORM's can redeem points again. + - rscadd: Add 50% graffiti speed boost to tagger quirk + - bugfix: Fix time duration of large graffiti not applying properly + - bugfix: reaction chamber open its UI when inserting/removing beakers from it + - bugfix: reaction chamber triggers new reactions & updates UI more often during + heating + - bugfix: instant and normal reactions now get triggered more often so for e.g. + more plastic sheets from polymer reactions or more reactions occur when there + are multiple reagents present + - bugfix: Dear mappers, the light debugger tool no longer deletes dragged wall lights + - bugfix: NTOS Messenger should clear on enter now + - bugfix: ai can now tell if it is in a do_after for resisting and will not interrupt + it. monkeys also now don't freeze up when aggressively grabbed and will resist + out of those and cuffs. From 067188d366baf846bb32d946b95804e7e5a26732 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 15:41:12 +0100 Subject: [PATCH 105/166] [MIRROR] Micro-optimize qdel by only permitting one parameter [MDB IGNORE] (#25889) * Micro-optimize qdel by only permitting one parameter (#80628) Productionizes #80615. The core optimization is this: ```patch - var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. + var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up. ``` We avoid a heap allocation in the form of copying the args over to a new list. A/B testing shows this results in 33% better overtime, and in a real round shaving off a full second of self time and 0.4 seconds of overtime--both of these would be doubled in the event this is merged as the new proc was only being run 50% of the time. * Micro-optimize qdel by only permitting one parameter --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- code/controllers/subsystem/garbage.dm | 4 ++-- code/datums/components/_component.dm | 6 ++---- code/datums/components/acid.dm | 2 +- code/datums/components/action_item_overlay.dm | 2 +- code/datums/components/admin_popup.dm | 2 +- code/datums/components/ai_has_target_timer.dm | 2 +- code/datums/components/ai_retaliate_advanced.dm | 2 +- code/datums/components/anti_magic.dm | 2 +- code/datums/components/aquarium_content.dm | 2 +- code/datums/components/area_sound_manager.dm | 2 +- code/datums/components/areabound.dm | 2 +- code/datums/components/aura_healing.dm | 2 +- code/datums/components/basic_mob_attack_telegraph.dm | 2 +- code/datums/components/basic_ranged_ready_overlay.dm | 2 +- code/datums/components/boss_music.dm | 2 +- code/datums/components/bullet_intercepting.dm | 2 +- code/datums/components/burning.dm | 2 +- code/datums/components/butchering.dm | 2 +- code/datums/components/cleaner.dm | 2 +- code/datums/components/combo_attacks.dm | 2 +- code/datums/components/cracked.dm | 2 +- code/datums/components/crafting/slapcrafting.dm | 2 +- code/datums/components/crate_carrier.dm | 2 +- code/datums/components/cult_ritual_item.dm | 2 +- code/datums/components/customizable_reagent_holder.dm | 2 +- code/datums/components/damage_aura.dm | 2 +- code/datums/components/damage_chain.dm | 2 +- code/datums/components/deadchat_control.dm | 2 +- code/datums/components/direct_explosive_trap.dm | 2 +- code/datums/components/echolocation.dm | 2 +- code/datums/components/effect_remover.dm | 2 +- code/datums/components/egg_layer.dm | 2 +- code/datums/components/engraved.dm | 2 +- code/datums/components/evolutionary_leap.dm | 2 +- code/datums/components/focused_attacker.dm | 2 +- code/datums/components/food/edible.dm | 2 +- code/datums/components/food/ghost_edible.dm | 2 +- code/datums/components/food/golem_food.dm | 2 +- code/datums/components/food_storage.dm | 2 +- code/datums/components/gas_leaker.dm | 2 +- code/datums/components/geiger_sound.dm | 2 +- code/datums/components/ghost_direct_control.dm | 2 +- code/datums/components/ground_sinking.dm | 2 +- code/datums/components/growth_and_differentiation.dm | 2 +- code/datums/components/gunpoint.dm | 2 +- code/datums/components/hazard_area.dm | 2 +- code/datums/components/healing_touch.dm | 2 +- code/datums/components/health_scaling_effects.dm | 2 +- code/datums/components/heirloom.dm | 2 +- code/datums/components/interaction_booby_trap.dm | 2 +- code/datums/components/irradiated.dm | 2 +- code/datums/components/itembound.dm | 2 +- code/datums/components/jetpack.dm | 2 +- code/datums/components/keep_me_secure.dm | 2 +- code/datums/components/light_eater.dm | 2 +- code/datums/components/listen_and_repeat.dm | 2 +- code/datums/components/lock_on_cursor.dm | 2 +- code/datums/components/magnet.dm | 2 +- code/datums/components/manual_blinking.dm | 2 +- code/datums/components/manual_breathing.dm | 2 +- code/datums/components/material/material_container.dm | 2 +- code/datums/components/mind_linker.dm | 2 +- code/datums/components/mob_chain.dm | 2 +- code/datums/components/mob_harvest.dm | 2 +- code/datums/components/nuclear_bomb_operator.dm | 2 +- code/datums/components/on_hit_effect.dm | 2 +- code/datums/components/pellet_cloud.dm | 2 +- code/datums/components/pet_commands/obeys_commands.dm | 2 +- code/datums/components/pinata.dm | 2 +- code/datums/components/plumbing/chemical_acclimator.dm | 2 +- code/datums/components/puzzgrid.dm | 2 +- code/datums/components/radioactive_emitter.dm | 2 +- code/datums/components/radioactive_exposure.dm | 2 +- code/datums/components/reagent_refiller.dm | 2 +- code/datums/components/redirect_attack_hand_from_turf.dm | 2 +- code/datums/components/reflection.dm | 2 +- code/datums/components/regenerator.dm | 2 +- code/datums/components/religious_tool.dm | 2 +- code/datums/components/riding/riding_mob.dm | 4 ++-- code/datums/components/scope.dm | 2 +- code/datums/components/seclight_attachable.dm | 2 +- code/datums/components/seethrough_mob.dm | 2 +- code/datums/components/shell.dm | 2 +- code/datums/components/shielded.dm | 2 +- code/datums/components/shovel_hands.dm | 2 +- code/datums/components/shuttle_cling.dm | 2 +- code/datums/components/singularity.dm | 2 +- code/datums/components/sitcomlaughter.dm | 2 +- code/datums/components/slippery.dm | 2 +- code/datums/components/smooth_tunes.dm | 2 +- code/datums/components/spin2win.dm | 2 +- code/datums/components/spinny.dm | 2 +- code/datums/components/spirit_holding.dm | 2 +- code/datums/components/squashable.dm | 2 +- code/datums/components/strong_pull.dm | 2 +- code/datums/components/style/style.dm | 2 +- code/datums/components/subtype_picker.dm | 2 +- code/datums/components/supermatter_crystal.dm | 2 +- code/datums/components/surgery_initiator.dm | 2 +- code/datums/components/swabbing.dm | 2 +- code/datums/components/takes_reagent_appearance.dm | 2 +- code/datums/components/tameable.dm | 2 +- code/datums/components/tattoo.dm | 2 +- code/datums/components/toggle_attached_clothing.dm | 2 +- code/datums/components/twohanded.dm | 2 +- code/datums/components/unbreakable.dm | 2 +- code/datums/components/unusual_effect.dm | 2 +- code/datums/components/weatherannouncer.dm | 2 +- code/datums/datum.dm | 6 +++--- code/game/objects/items/implants/implantuplink.dm | 8 ++++++-- code/modules/antagonists/heretic/heretic_living_heart.dm | 2 +- code/modules/antagonists/revenant/haunted_item.dm | 2 +- code/modules/bitrunning/components/netpod_healing.dm | 2 +- code/modules/bitrunning/components/npc_friendly.dm | 2 +- code/modules/capture_the_flag/ctf_player_component.dm | 2 +- .../experisci/experiment/handlers/experiment_handler.dm | 2 +- 116 files changed, 126 insertions(+), 124 deletions(-) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 66d3f2e5e15..4f11a3ee577 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -337,7 +337,7 @@ SUBSYSTEM_DEF(garbage) /// Should be treated as a replacement for the 'del' keyword. /// /// Datums passed to this will be given a chance to clean up references to allow the GC to collect them. -/proc/qdel(datum/to_delete, force = FALSE, ...) +/proc/qdel(datum/to_delete, force = FALSE) if(!istype(to_delete)) del(to_delete) return @@ -359,7 +359,7 @@ SUBSYSTEM_DEF(garbage) var/start_time = world.time var/start_tick = world.tick_usage SEND_SIGNAL(to_delete, COMSIG_QDELETING, force) // Let the (remaining) components know about the result of Destroy - var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. + var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up. if(world.time != start_time) trash.slept_destroy++ diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index e461aa2ee36..acf9ceead56 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -72,15 +72,13 @@ * * Arguments: * * force - makes it not check for and remove the component from the parent - * * silent - deletes the component without sending a [COMSIG_COMPONENT_REMOVING] signal */ -/datum/component/Destroy(force=FALSE, silent=FALSE) +/datum/component/Destroy(force = FALSE) if(!parent) return ..() if(!force) _RemoveFromParent() - if(!silent) - SEND_SIGNAL(parent, COMSIG_COMPONENT_REMOVING, src) + SEND_SIGNAL(parent, COMSIG_COMPONENT_REMOVING, src) parent = null return ..() diff --git a/code/datums/components/acid.dm b/code/datums/components/acid.dm index 67be754c504..fc60e0312fd 100644 --- a/code/datums/components/acid.dm +++ b/code/datums/components/acid.dm @@ -72,7 +72,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e particle_effect = new(atom_parent, acid_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB) START_PROCESSING(SSacid, src) -/datum/component/acid/Destroy(force, silent) +/datum/component/acid/Destroy(force) STOP_PROCESSING(SSacid, src) if(sizzle) QDEL_NULL(sizzle) diff --git a/code/datums/components/action_item_overlay.dm b/code/datums/components/action_item_overlay.dm index e7e567cde36..80478aa9ca4 100644 --- a/code/datums/components/action_item_overlay.dm +++ b/code/datums/components/action_item_overlay.dm @@ -24,7 +24,7 @@ src.item_ref = WEAKREF(item) src.item_callback = item_callback -/datum/component/action_item_overlay/Destroy(force, silent) +/datum/component/action_item_overlay/Destroy(force) item_ref = null item_callback = null item_appearance = null diff --git a/code/datums/components/admin_popup.dm b/code/datums/components/admin_popup.dm index 1d258653bae..ff1e2a3d285 100644 --- a/code/datums/components/admin_popup.dm +++ b/code/datums/components/admin_popup.dm @@ -26,7 +26,7 @@ PROC_REF(delete_self), ) -/datum/component/admin_popup/Destroy(force, silent) +/datum/component/admin_popup/Destroy(force) var/client/parent_client = parent parent_client?.screen -= admin_popup diff --git a/code/datums/components/ai_has_target_timer.dm b/code/datums/components/ai_has_target_timer.dm index bcd748ce638..5fdc07417f4 100644 --- a/code/datums/components/ai_has_target_timer.dm +++ b/code/datums/components/ai_has_target_timer.dm @@ -33,7 +33,7 @@ REMOVE_TRAIT(parent, TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM, type) return ..() -/datum/component/ai_target_timer/Destroy(force, silent) +/datum/component/ai_target_timer/Destroy(force) finalise_losing_target() return ..() diff --git a/code/datums/components/ai_retaliate_advanced.dm b/code/datums/components/ai_retaliate_advanced.dm index ca477a0db27..d734fa92b3c 100644 --- a/code/datums/components/ai_retaliate_advanced.dm +++ b/code/datums/components/ai_retaliate_advanced.dm @@ -16,7 +16,7 @@ ADD_TRAIT(parent, TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM, type) -/datum/component/ai_retaliate_advanced/Destroy(force, silent) +/datum/component/ai_retaliate_advanced/Destroy(force) post_retaliate_callback = null return ..() diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm index 059bc2f787d..48e5b10b25f 100644 --- a/code/datums/components/anti_magic.dm +++ b/code/datums/components/anti_magic.dm @@ -56,7 +56,7 @@ src.drain_antimagic = drain_antimagic src.expiration = expiration -/datum/component/anti_magic/Destroy(force, silent) +/datum/component/anti_magic/Destroy(force) drain_antimagic = null expiration = null return ..() diff --git a/code/datums/components/aquarium_content.dm b/code/datums/components/aquarium_content.dm index 589b831aa72..3e7e704638f 100644 --- a/code/datums/components/aquarium_content.dm +++ b/code/datums/components/aquarium_content.dm @@ -138,7 +138,7 @@ . = ..() REMOVE_TRAIT(parent, TRAIT_FISH_CASE_COMPATIBILE, REF(src)) -/datum/component/aquarium_content/Destroy(force, silent) +/datum/component/aquarium_content/Destroy(force) if(current_aquarium) remove_from_aquarium() QDEL_NULL(vc_obj) diff --git a/code/datums/components/area_sound_manager.dm b/code/datums/components/area_sound_manager.dm index bea20222699..65faf7ab3d6 100644 --- a/code/datums/components/area_sound_manager.dm +++ b/code/datums/components/area_sound_manager.dm @@ -29,7 +29,7 @@ else if(!isnull(remove_on)) RegisterSignal(parent, remove_on, PROC_REF(handle_removal)) -/datum/component/area_sound_manager/Destroy(force, silent) +/datum/component/area_sound_manager/Destroy(force) QDEL_NULL(our_loop) . = ..() diff --git a/code/datums/components/areabound.dm b/code/datums/components/areabound.dm index f952d5db2e1..872fab2d8e7 100644 --- a/code/datums/components/areabound.dm +++ b/code/datums/components/areabound.dm @@ -26,6 +26,6 @@ AM.forceMove(reset_turf) moving = FALSE -/datum/component/areabound/Destroy(force, silent) +/datum/component/areabound/Destroy(force) QDEL_NULL(move_tracker) . = ..() diff --git a/code/datums/components/aura_healing.dm b/code/datums/components/aura_healing.dm index ebd7691ac3b..2aa33203b41 100644 --- a/code/datums/components/aura_healing.dm +++ b/code/datums/components/aura_healing.dm @@ -78,7 +78,7 @@ src.limit_to_trait = limit_to_trait src.healing_color = healing_color -/datum/component/aura_healing/Destroy(force, silent) +/datum/component/aura_healing/Destroy(force) STOP_PROCESSING(SSaura_healing, src) var/alert_category = "aura_healing_[REF(src)]" diff --git a/code/datums/components/basic_mob_attack_telegraph.dm b/code/datums/components/basic_mob_attack_telegraph.dm index 5473dbd0fa0..2ccf2f5022b 100644 --- a/code/datums/components/basic_mob_attack_telegraph.dm +++ b/code/datums/components/basic_mob_attack_telegraph.dm @@ -25,7 +25,7 @@ src.telegraph_duration = telegraph_duration src.on_began_forecast = on_began_forecast -/datum/component/basic_mob_attack_telegraph/Destroy(force, silent) +/datum/component/basic_mob_attack_telegraph/Destroy(force) if(current_target) forget_target(current_target) target_overlay = null diff --git a/code/datums/components/basic_ranged_ready_overlay.dm b/code/datums/components/basic_ranged_ready_overlay.dm index 434a64dd6ff..4bcbd580ca7 100644 --- a/code/datums/components/basic_ranged_ready_overlay.dm +++ b/code/datums/components/basic_ranged_ready_overlay.dm @@ -29,7 +29,7 @@ UnregisterSignal(parent, list(COMSIG_BASICMOB_POST_ATTACK_RANGED, COMSIG_LIVING_REVIVE)) return ..() -/datum/component/basic_ranged_ready_overlay/Destroy(force, silent) +/datum/component/basic_ranged_ready_overlay/Destroy(force) deltimer(waiting_timer) return ..() diff --git a/code/datums/components/boss_music.dm b/code/datums/components/boss_music.dm index 56307d12655..a5d2de4c8d5 100644 --- a/code/datums/components/boss_music.dm +++ b/code/datums/components/boss_music.dm @@ -22,7 +22,7 @@ src.boss_track = boss_track src.track_duration = track_duration -/datum/component/boss_music/Destroy(force, silent) +/datum/component/boss_music/Destroy(force) . = ..() for(var/callback in music_callbacks) deltimer(callback) diff --git a/code/datums/components/bullet_intercepting.dm b/code/datums/components/bullet_intercepting.dm index d8de0680665..c176de54b94 100644 --- a/code/datums/components/bullet_intercepting.dm +++ b/code/datums/components/bullet_intercepting.dm @@ -25,7 +25,7 @@ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_parent_equipped)) RegisterSignal(parent, COMSIG_ITEM_PRE_UNEQUIP, PROC_REF(on_unequipped)) -/datum/component/bullet_intercepting/Destroy(force, silent) +/datum/component/bullet_intercepting/Destroy(force) wearer = null on_intercepted = null return ..() diff --git a/code/datums/components/burning.dm b/code/datums/components/burning.dm index e5624d69b08..2535a5b6f90 100644 --- a/code/datums/components/burning.dm +++ b/code/datums/components/burning.dm @@ -30,7 +30,7 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e particle_effect = new(atom_parent, fire_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB) START_PROCESSING(SSburning, src) -/datum/component/burning/Destroy(force, silent) +/datum/component/burning/Destroy(force) STOP_PROCESSING(SSburning, src) fire_overlay = null if(particle_effect) diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 183203ed709..0cf6631f807 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -34,7 +34,7 @@ if(isitem(parent)) RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(onItemAttack)) -/datum/component/butchering/Destroy(force, silent) +/datum/component/butchering/Destroy(force) butcher_callback = null return ..() diff --git a/code/datums/components/cleaner.dm b/code/datums/components/cleaner.dm index 0ab0b199d74..242ad72071c 100644 --- a/code/datums/components/cleaner.dm +++ b/code/datums/components/cleaner.dm @@ -29,7 +29,7 @@ src.pre_clean_callback = pre_clean_callback src.on_cleaned_callback = on_cleaned_callback -/datum/component/cleaner/Destroy(force, silent) +/datum/component/cleaner/Destroy(force) pre_clean_callback = null on_cleaned_callback = null return ..() diff --git a/code/datums/components/combo_attacks.dm b/code/datums/components/combo_attacks.dm index 33989e26682..a8dbe423780 100644 --- a/code/datums/components/combo_attacks.dm +++ b/code/datums/components/combo_attacks.dm @@ -32,7 +32,7 @@ src.leniency_time = leniency_time src.can_attack_callback = can_attack_callback -/datum/component/combo_attacks/Destroy(force, silent) +/datum/component/combo_attacks/Destroy(force) can_attack_callback = null return ..() diff --git a/code/datums/components/cracked.dm b/code/datums/components/cracked.dm index 60264090b31..4d67a9190ea 100644 --- a/code/datums/components/cracked.dm +++ b/code/datums/components/cracked.dm @@ -12,7 +12,7 @@ src.crack_appearances = crack_appearances src.crack_integrity = crack_integrity -/datum/component/cracked/Destroy(force, silent) +/datum/component/cracked/Destroy(force) RemoveCracks(parent, length(applied_cracks)) return ..() diff --git a/code/datums/components/crafting/slapcrafting.dm b/code/datums/components/crafting/slapcrafting.dm index e08fa3ad6c6..a15a8a80b17 100644 --- a/code/datums/components/crafting/slapcrafting.dm +++ b/code/datums/components/crafting/slapcrafting.dm @@ -38,7 +38,7 @@ return src.slapcraft_recipes += slapcraft_recipes -/datum/component/slapcrafting/Destroy(force, silent) +/datum/component/slapcrafting/Destroy(force) UnregisterSignal(parent, list(COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_EXAMINE, COMSIG_ATOM_EXAMINE_MORE)) return ..() diff --git a/code/datums/components/crate_carrier.dm b/code/datums/components/crate_carrier.dm index a36128b89e1..9f2f1ac9dae 100644 --- a/code/datums/components/crate_carrier.dm +++ b/code/datums/components/crate_carrier.dm @@ -23,7 +23,7 @@ var/static/default_cache = typecacheof(list(/obj/structure/closet/crate)) src.carriable_cache = default_cache -/datum/component/crate_carrier/Destroy(force, silent) +/datum/component/crate_carrier/Destroy(force) LAZYCLEARLIST(crates_in_hand) return ..() diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm index 749fa1eac1c..c3acb0b9467 100644 --- a/code/datums/components/cult_ritual_item.dm +++ b/code/datums/components/cult_ritual_item.dm @@ -39,7 +39,7 @@ var/datum/action/added_action = item_parent.add_item_action(action) linked_action_ref = WEAKREF(added_action) -/datum/component/cult_ritual_item/Destroy(force, silent) +/datum/component/cult_ritual_item/Destroy(force) cleanup_shields() QDEL_NULL(linked_action_ref) return ..() diff --git a/code/datums/components/customizable_reagent_holder.dm b/code/datums/components/customizable_reagent_holder.dm index 36c84fc94af..7bffb3d9ada 100644 --- a/code/datums/components/customizable_reagent_holder.dm +++ b/code/datums/components/customizable_reagent_holder.dm @@ -55,7 +55,7 @@ handle_fill(ingredient) -/datum/component/customizable_reagent_holder/Destroy(force, silent) +/datum/component/customizable_reagent_holder/Destroy(force) QDEL_NULL(top_overlay) return ..() diff --git a/code/datums/components/damage_aura.dm b/code/datums/components/damage_aura.dm index e1111dc628d..b4c535cb52d 100644 --- a/code/datums/components/damage_aura.dm +++ b/code/datums/components/damage_aura.dm @@ -74,7 +74,7 @@ src.immune_factions = immune_factions src.current_owner = WEAKREF(current_owner) -/datum/component/damage_aura/Destroy(force, silent) +/datum/component/damage_aura/Destroy(force) STOP_PROCESSING(SSobj, src) return ..() diff --git a/code/datums/components/damage_chain.dm b/code/datums/components/damage_chain.dm index be61ec68a33..9b24a4c2bae 100644 --- a/code/datums/components/damage_chain.dm +++ b/code/datums/components/damage_chain.dm @@ -61,7 +61,7 @@ /datum/component/damage_chain/UnregisterFromParent() UnregisterSignal(parent, COMSIG_LIVING_DEATH) -/datum/component/damage_chain/Destroy(force, silent) +/datum/component/damage_chain/Destroy(force) if (!QDELETED(chain)) UnregisterSignal(chain, COMSIG_QDELETING) QDEL_NULL(chain) diff --git a/code/datums/components/deadchat_control.dm b/code/datums/components/deadchat_control.dm index f1ec2d73bc8..7517f35ff29 100644 --- a/code/datums/components/deadchat_control.dm +++ b/code/datums/components/deadchat_control.dm @@ -48,7 +48,7 @@ SSpoints_of_interest.make_point_of_interest(parent) generated_point_of_interest = TRUE -/datum/component/deadchat_control/Destroy(force, silent) +/datum/component/deadchat_control/Destroy(force) on_removal?.Invoke() inputs = null orbiters = null diff --git a/code/datums/components/direct_explosive_trap.dm b/code/datums/components/direct_explosive_trap.dm index 0d204f21a1e..e3a125eb928 100644 --- a/code/datums/components/direct_explosive_trap.dm +++ b/code/datums/components/direct_explosive_trap.dm @@ -46,7 +46,7 @@ if (!isnull(saboteur)) UnregisterSignal(saboteur, COMSIG_QDELETING) -/datum/component/direct_explosive_trap/Destroy(force, silent) +/datum/component/direct_explosive_trap/Destroy(force) if (isnull(saboteur)) return ..() UnregisterSignal(saboteur, COMSIG_QDELETING) diff --git a/code/datums/components/echolocation.dm b/code/datums/components/echolocation.dm index 2de6d028605..5e4f7528415 100644 --- a/code/datums/components/echolocation.dm +++ b/code/datums/components/echolocation.dm @@ -63,7 +63,7 @@ echolocator.overlay_fullscreen("echo", /atom/movable/screen/fullscreen/echo, echo_icon) START_PROCESSING(SSfastprocess, src) -/datum/component/echolocation/Destroy(force, silent) +/datum/component/echolocation/Destroy(force) STOP_PROCESSING(SSfastprocess, src) var/mob/living/echolocator = parent QDEL_NULL(client_color) diff --git a/code/datums/components/effect_remover.dm b/code/datums/components/effect_remover.dm index 7f1f437eddf..a02be73f568 100644 --- a/code/datums/components/effect_remover.dm +++ b/code/datums/components/effect_remover.dm @@ -41,7 +41,7 @@ src.effects_we_clear = typecacheof(effects_we_clear) src.time_to_remove = time_to_remove -/datum/component/effect_remover/Destroy(force, silent) +/datum/component/effect_remover/Destroy(force) on_clear_callback = null return ..() diff --git a/code/datums/components/egg_layer.dm b/code/datums/components/egg_layer.dm index a1e137de6d3..3092829fd13 100644 --- a/code/datums/components/egg_layer.dm +++ b/code/datums/components/egg_layer.dm @@ -47,7 +47,7 @@ . = ..() UnregisterSignal(parent, COMSIG_ATOM_ATTACKBY) -/datum/component/egg_layer/Destroy(force, silent) +/datum/component/egg_layer/Destroy(force) . = ..() STOP_PROCESSING(SSobj, src) egg_laid_callback = null diff --git a/code/datums/components/engraved.dm b/code/datums/components/engraved.dm index 016e3082a8d..60bfa5f6177 100644 --- a/code/datums/components/engraved.dm +++ b/code/datums/components/engraved.dm @@ -52,7 +52,7 @@ RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_update_overlays)) engraved_wall.update_appearance() -/datum/component/engraved/Destroy(force, silent) +/datum/component/engraved/Destroy(force) if(!parent) return ..() parent.RemoveElement(/datum/element/art) diff --git a/code/datums/components/evolutionary_leap.dm b/code/datums/components/evolutionary_leap.dm index 5ff7f31beaa..3a47dbbdcf0 100644 --- a/code/datums/components/evolutionary_leap.dm +++ b/code/datums/components/evolutionary_leap.dm @@ -30,7 +30,7 @@ setup_timer() -/datum/component/evolutionary_leap/Destroy(force, silent) +/datum/component/evolutionary_leap/Destroy(force) . = ..() deltimer(timer_id) diff --git a/code/datums/components/focused_attacker.dm b/code/datums/components/focused_attacker.dm index 8635973f263..c927aab8822 100644 --- a/code/datums/components/focused_attacker.dm +++ b/code/datums/components/focused_attacker.dm @@ -17,7 +17,7 @@ src.maximum_gain = maximum_gain src.gain_per_attack = gain_per_attack -/datum/component/focused_attacker/Destroy(force, silent) +/datum/component/focused_attacker/Destroy(force) if (!isnull(last_target)) UnregisterSignal(last_target, COMSIG_QDELETING) return ..() diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index 9986b2a4d43..b7b6bda2f5a 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -187,7 +187,7 @@ Behavior that's still missing from this component that original food items had t // add newly passed in reagents setup_initial_reagents(initial_reagents) -/datum/component/edible/Destroy(force, silent) +/datum/component/edible/Destroy(force) after_eat = null on_consume = null check_liked = null diff --git a/code/datums/components/food/ghost_edible.dm b/code/datums/components/food/ghost_edible.dm index 801aa95cb6b..fb8a0c55559 100644 --- a/code/datums/components/food/ghost_edible.dm +++ b/code/datums/components/food/ghost_edible.dm @@ -36,7 +36,7 @@ /datum/component/ghost_edible/UnregisterFromParent() STOP_PROCESSING(SSdcs, src) -/datum/component/ghost_edible/Destroy(force, silent) +/datum/component/ghost_edible/Destroy(force) STOP_PROCESSING(SSdcs, src) return ..() diff --git a/code/datums/components/food/golem_food.dm b/code/datums/components/food/golem_food.dm index c2540f54cc1..136d495b59e 100644 --- a/code/datums/components/food/golem_food.dm +++ b/code/datums/components/food/golem_food.dm @@ -29,7 +29,7 @@ UnregisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ATOM_EXAMINE)) return ..() -/datum/component/golem_food/Destroy(force, silent) +/datum/component/golem_food/Destroy(force) QDEL_NULL(golem_snack) snack_type = null extra_validation = null diff --git a/code/datums/components/food_storage.dm b/code/datums/components/food_storage.dm index 60fc3f6c486..cb1008f88f0 100644 --- a/code/datums/components/food_storage.dm +++ b/code/datums/components/food_storage.dm @@ -33,7 +33,7 @@ food.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1 -/datum/component/food_storage/Destroy(force, silent) +/datum/component/food_storage/Destroy(force) if(stored_item) stored_item.forceMove(stored_item.drop_location()) stored_item.dropped() diff --git a/code/datums/components/gas_leaker.dm b/code/datums/components/gas_leaker.dm index d386b73ff00..eeceb73f5fa 100644 --- a/code/datums/components/gas_leaker.dm +++ b/code/datums/components/gas_leaker.dm @@ -30,7 +30,7 @@ src.integrity_leak_percent = integrity_leak_percent src.leak_rate = leak_rate -/datum/component/gas_leaker/Destroy(force, silent) +/datum/component/gas_leaker/Destroy(force) SSair.stop_processing_machine(src) return ..() diff --git a/code/datums/components/geiger_sound.dm b/code/datums/components/geiger_sound.dm index 3a8a22df383..441aef27756 100644 --- a/code/datums/components/geiger_sound.dm +++ b/code/datums/components/geiger_sound.dm @@ -8,7 +8,7 @@ if (!isatom(parent)) return COMPONENT_INCOMPATIBLE -/datum/component/geiger_sound/Destroy(force, silent) +/datum/component/geiger_sound/Destroy(force) QDEL_NULL(sound) if (!isnull(last_parent)) diff --git a/code/datums/components/ghost_direct_control.dm b/code/datums/components/ghost_direct_control.dm index 6942b72c480..a131a2d3ca7 100644 --- a/code/datums/components/ghost_direct_control.dm +++ b/code/datums/components/ghost_direct_control.dm @@ -48,7 +48,7 @@ UnregisterSignal(parent, list(COMSIG_ATOM_ATTACK_GHOST, COMSIG_ATOM_EXAMINE, COMSIG_MOB_LOGIN)) return ..() -/datum/component/ghost_direct_control/Destroy(force, silent) +/datum/component/ghost_direct_control/Destroy(force) extra_control_checks = null after_assumed_control = null diff --git a/code/datums/components/ground_sinking.dm b/code/datums/components/ground_sinking.dm index b4f069fb507..d29e84908a4 100644 --- a/code/datums/components/ground_sinking.dm +++ b/code/datums/components/ground_sinking.dm @@ -59,7 +59,7 @@ deltimer(ground_sinking_start_timer) UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) -/datum/component/ground_sinking/Destroy(force, silent) +/datum/component/ground_sinking/Destroy(force) if(sinked || is_sinking) unsink() . = ..() diff --git a/code/datums/components/growth_and_differentiation.dm b/code/datums/components/growth_and_differentiation.dm index 0920344ce58..a6e10b98f6d 100644 --- a/code/datums/components/growth_and_differentiation.dm +++ b/code/datums/components/growth_and_differentiation.dm @@ -63,7 +63,7 @@ return setup_growth_tracking() -/datum/component/growth_and_differentiation/Destroy(force, silent) +/datum/component/growth_and_differentiation/Destroy(force) STOP_PROCESSING(SSdcs, src) deltimer(timer_id) optional_checks = null diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm index bf44f1c4b3c..cb8dfb1ec8d 100644 --- a/code/datums/components/gunpoint.dm +++ b/code/datums/components/gunpoint.dm @@ -73,7 +73,7 @@ addtimer(CALLBACK(src, PROC_REF(update_stage), 2), GUNPOINT_DELAY_STAGE_2) -/datum/component/gunpoint/Destroy(force, silent) +/datum/component/gunpoint/Destroy(force) var/mob/living/shooter = parent shooter.remove_status_effect(/datum/status_effect/holdup) target.remove_status_effect(/datum/status_effect/grouped/heldup, REF(shooter)) diff --git a/code/datums/components/hazard_area.dm b/code/datums/components/hazard_area.dm index 79b4399023e..f747e8e2ace 100644 --- a/code/datums/components/hazard_area.dm +++ b/code/datums/components/hazard_area.dm @@ -39,7 +39,7 @@ UnregisterSignal(SSdcs, COMSIG_AREA_CREATED) parent_mob.lose_area_sensitivity(type) -/datum/component/hazard_area/Destroy(force, silent) +/datum/component/hazard_area/Destroy(force) . = ..() area_created = null diff --git a/code/datums/components/healing_touch.dm b/code/datums/components/healing_touch.dm index cf6ef88f24d..bc0493b4787 100644 --- a/code/datums/components/healing_touch.dm +++ b/code/datums/components/healing_touch.dm @@ -103,7 +103,7 @@ UnregisterSignal(parent, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)) return ..() -/datum/component/healing_touch/Destroy(force, silent) +/datum/component/healing_touch/Destroy(force) extra_checks = null return ..() diff --git a/code/datums/components/health_scaling_effects.dm b/code/datums/components/health_scaling_effects.dm index 140a60ea962..e3754ae2061 100644 --- a/code/datums/components/health_scaling_effects.dm +++ b/code/datums/components/health_scaling_effects.dm @@ -53,7 +53,7 @@ UnregisterSignal(parent, COMSIG_LIVING_HEALTH_UPDATE) return ..() -/datum/component/health_scaling_effects/Destroy(force, silent) +/datum/component/health_scaling_effects/Destroy(force) additional_status_callback = null return ..() diff --git a/code/datums/components/heirloom.dm b/code/datums/components/heirloom.dm index 064c33ff7d7..fe3aa73bcd3 100644 --- a/code/datums/components/heirloom.dm +++ b/code/datums/components/heirloom.dm @@ -14,7 +14,7 @@ RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) -/datum/component/heirloom/Destroy(force, silent) +/datum/component/heirloom/Destroy(force) owner = null return ..() diff --git a/code/datums/components/interaction_booby_trap.dm b/code/datums/components/interaction_booby_trap.dm index 12cf0a7c677..2ae22ffbb5a 100644 --- a/code/datums/components/interaction_booby_trap.dm +++ b/code/datums/components/interaction_booby_trap.dm @@ -56,7 +56,7 @@ if (length(additional_triggers)) RegisterSignals(parent, additional_triggers, PROC_REF(trigger_explosive)) -/datum/component/interaction_booby_trap/Destroy(force, silent) +/datum/component/interaction_booby_trap/Destroy(force) UnregisterSignal(parent, list(COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_TOOL_ACT(defuse_tool), COMSIG_ATOM_EXAMINE_MORE) + additional_triggers) QDEL_NULL(active_sound_loop) on_triggered_callback = null diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm index bffd56459bf..805288fe486 100644 --- a/code/datums/components/irradiated.dm +++ b/code/datums/components/irradiated.dm @@ -58,7 +58,7 @@ COMSIG_GEIGER_COUNTER_SCAN, )) -/datum/component/irradiated/Destroy(force, silent) +/datum/component/irradiated/Destroy(force) var/atom/movable/parent_movable = parent if (istype(parent_movable)) parent_movable.remove_filter("rad_glow") diff --git a/code/datums/components/itembound.dm b/code/datums/components/itembound.dm index f742c1233fd..f6df7f0bab5 100644 --- a/code/datums/components/itembound.dm +++ b/code/datums/components/itembound.dm @@ -40,7 +40,7 @@ return qdel(src) -/datum/component/itembound/Destroy(force, silent) +/datum/component/itembound/Destroy(force) var/atom/movable/container = containerref?.resolve() if (!QDELETED(container)) UnregisterSignal(container, COMSIG_ATOM_EXAMINE_MORE) diff --git a/code/datums/components/jetpack.dm b/code/datums/components/jetpack.dm index f7e1fca70e6..3e0fd28ed80 100644 --- a/code/datums/components/jetpack.dm +++ b/code/datums/components/jetpack.dm @@ -63,7 +63,7 @@ if(trail && trail.effect_type != effect_type) setup_trail(trail.holder) -/datum/component/jetpack/Destroy(force, silent) +/datum/component/jetpack/Destroy(force) if(trail) QDEL_NULL(trail) check_on_move = null diff --git a/code/datums/components/keep_me_secure.dm b/code/datums/components/keep_me_secure.dm index 9bce3ab5e86..84e295db178 100644 --- a/code/datums/components/keep_me_secure.dm +++ b/code/datums/components/keep_me_secure.dm @@ -22,7 +22,7 @@ src.secured_callback = secured_callback src.unsecured_callback = unsecured_callback -/datum/component/keep_me_secure/Destroy(force, silent) +/datum/component/keep_me_secure/Destroy(force) secured_callback = null unsecured_callback = null return ..() diff --git a/code/datums/components/light_eater.dm b/code/datums/components/light_eater.dm index 0501af5e0cb..11344d5f37c 100644 --- a/code/datums/components/light_eater.dm +++ b/code/datums/components/light_eater.dm @@ -22,7 +22,7 @@ LAZYSET(cached_eaten_lights, morsel, TRUE) RegisterSignal(morsel, COMSIG_QDELETING, PROC_REF(deref_eaten_light)) -/datum/component/light_eater/Destroy(force, silent) +/datum/component/light_eater/Destroy(force) for(var/light in eaten_lights) var/atom/eaten_light = light eaten_light.RemoveElement(/datum/element/light_eaten) diff --git a/code/datums/components/listen_and_repeat.dm b/code/datums/components/listen_and_repeat.dm index 307e515bbb2..9ffee682972 100644 --- a/code/datums/components/listen_and_repeat.dm +++ b/code/datums/components/listen_and_repeat.dm @@ -33,7 +33,7 @@ ADD_TRAIT(parent, TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM, type) -/datum/component/listen_and_repeat/Destroy(force, silent) +/datum/component/listen_and_repeat/Destroy(force) REMOVE_TRAIT(parent, TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM, type) return ..() diff --git a/code/datums/components/lock_on_cursor.dm b/code/datums/components/lock_on_cursor.dm index 30140dd95bd..4b78f031aa0 100644 --- a/code/datums/components/lock_on_cursor.dm +++ b/code/datums/components/lock_on_cursor.dm @@ -62,7 +62,7 @@ mouse_tracker.assign_to_mob(owner) START_PROCESSING(SSfastprocess, src) -/datum/component/lock_on_cursor/Destroy(force, silent) +/datum/component/lock_on_cursor/Destroy(force) clear_visuals() STOP_PROCESSING(SSfastprocess, src) mouse_tracker = null diff --git a/code/datums/components/magnet.dm b/code/datums/components/magnet.dm index 5c78b8665ce..2d1d8932dfa 100644 --- a/code/datums/components/magnet.dm +++ b/code/datums/components/magnet.dm @@ -40,7 +40,7 @@ STOP_PROCESSING(SSdcs, src) UnregisterSignal(parent, COMSIG_MOB_STATCHANGE) -/datum/component/magnet/Destroy(force, silent) +/datum/component/magnet/Destroy(force) STOP_PROCESSING(SSdcs, src) on_pulled = null on_contact = null diff --git a/code/datums/components/manual_blinking.dm b/code/datums/components/manual_blinking.dm index 1a742c68678..67229a8b85f 100644 --- a/code/datums/components/manual_blinking.dm +++ b/code/datums/components/manual_blinking.dm @@ -22,7 +22,7 @@ last_blink = world.time to_chat(C, span_notice("You suddenly realize you're blinking manually.")) -/datum/component/manual_blinking/Destroy(force, silent) +/datum/component/manual_blinking/Destroy(force) E = null STOP_PROCESSING(SSdcs, src) to_chat(parent, span_notice("You revert back to automatic blinking.")) diff --git a/code/datums/components/manual_breathing.dm b/code/datums/components/manual_breathing.dm index 0488cce6aa3..d8d4fea07d9 100644 --- a/code/datums/components/manual_breathing.dm +++ b/code/datums/components/manual_breathing.dm @@ -22,7 +22,7 @@ last_breath = world.time to_chat(C, span_notice("You suddenly realize you're breathing manually.")) -/datum/component/manual_breathing/Destroy(force, silent) +/datum/component/manual_breathing/Destroy(force) L = null STOP_PROCESSING(SSdcs, src) to_chat(parent, span_notice("You revert back to automatic breathing.")) diff --git a/code/datums/components/material/material_container.dm b/code/datums/components/material/material_container.dm index ad852a00471..e84e3a46c82 100644 --- a/code/datums/components/material/material_container.dm +++ b/code/datums/components/material/material_container.dm @@ -74,7 +74,7 @@ RegisterSignal(atom_target, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item)) -/datum/component/material_container/Destroy(force, silent) +/datum/component/material_container/Destroy(force) retrieve_all() materials = null allowed_materials = null diff --git a/code/datums/components/mind_linker.dm b/code/datums/components/mind_linker.dm index 41ed23ecc2f..2c85c0079c9 100644 --- a/code/datums/components/mind_linker.dm +++ b/code/datums/components/mind_linker.dm @@ -71,7 +71,7 @@ master_speech.Grant(owner) //SKYRAT EDIT END -/datum/component/mind_linker/Destroy(force, silent) +/datum/component/mind_linker/Destroy(force) for(var/mob/living/remaining_mob as anything in linked_mobs) unlink_mob(remaining_mob) linked_mobs.Cut() diff --git a/code/datums/components/mob_chain.dm b/code/datums/components/mob_chain.dm index 583a80534c1..a258fe3f5be 100644 --- a/code/datums/components/mob_chain.dm +++ b/code/datums/components/mob_chain.dm @@ -28,7 +28,7 @@ var/mob/living/living_parent = parent living_parent.set_glide_size(front.glide_size) -/datum/component/mob_chain/Destroy(force, silent) +/datum/component/mob_chain/Destroy(force) if (!isnull(front)) SEND_SIGNAL(front, COMSIG_MOB_LOST_CHAIN_TAIL, parent) front = null diff --git a/code/datums/components/mob_harvest.dm b/code/datums/components/mob_harvest.dm index 8342ee411fe..b9f9f86350b 100644 --- a/code/datums/components/mob_harvest.dm +++ b/code/datums/components/mob_harvest.dm @@ -42,7 +42,7 @@ item_generation_time = item_generation_wait START_PROCESSING(SSobj, src) -/datum/component/mob_harvest/Destroy(force, silent) +/datum/component/mob_harvest/Destroy(force) STOP_PROCESSING(SSobj, src) return ..() diff --git a/code/datums/components/nuclear_bomb_operator.dm b/code/datums/components/nuclear_bomb_operator.dm index da6e8b0cab1..6ab9330e5ca 100644 --- a/code/datums/components/nuclear_bomb_operator.dm +++ b/code/datums/components/nuclear_bomb_operator.dm @@ -48,7 +48,7 @@ )) parent.remove_traits(list(TRAIT_DISK_VERIFIER, TRAIT_CAN_STRIP, TRAIT_CAN_USE_NUKE), NUKE_OP_MINION_TRAIT) -/datum/component/nuclear_bomb_operator/Destroy(force, silent) +/datum/component/nuclear_bomb_operator/Destroy(force) QDEL_NULL(disky) on_disk_collected = null add_disk_overlays = null diff --git a/code/datums/components/on_hit_effect.dm b/code/datums/components/on_hit_effect.dm index 50f31269f16..4093249c1ad 100644 --- a/code/datums/components/on_hit_effect.dm +++ b/code/datums/components/on_hit_effect.dm @@ -21,7 +21,7 @@ return ELEMENT_INCOMPATIBLE src.thrown_effect = thrown_effect -/datum/component/on_hit_effect/Destroy(force, silent) +/datum/component/on_hit_effect/Destroy(force) on_hit_callback = null extra_check_callback = null return ..() diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm index fbd32fe5e4f..52b0cc9c954 100644 --- a/code/datums/components/pellet_cloud.dm +++ b/code/datums/components/pellet_cloud.dm @@ -69,7 +69,7 @@ else if(isgrenade(parent) || islandmine(parent) || issupplypod(parent) || ishorrorling(parent)) //SKYRAT EDIT CHANGE: else if(isgrenade(parent) || islandmine(parent) || issupplypod(parent)) radius = magnitude -/datum/component/pellet_cloud/Destroy(force, silent) +/datum/component/pellet_cloud/Destroy(force) purple_hearts = null pellets = null targets_hit = null diff --git a/code/datums/components/pet_commands/obeys_commands.dm b/code/datums/components/pet_commands/obeys_commands.dm index efe01985d20..2fceaa2b337 100644 --- a/code/datums/components/pet_commands/obeys_commands.dm +++ b/code/datums/components/pet_commands/obeys_commands.dm @@ -22,7 +22,7 @@ var/datum/pet_command/new_command = new command_path(parent) available_commands[new_command.command_name] = new_command -/datum/component/obeys_commands/Destroy(force, silent) +/datum/component/obeys_commands/Destroy(force) . = ..() QDEL_NULL(available_commands) diff --git a/code/datums/components/pinata.dm b/code/datums/components/pinata.dm index 1056200e3e2..064bc2de26b 100644 --- a/code/datums/components/pinata.dm +++ b/code/datums/components/pinata.dm @@ -52,7 +52,7 @@ new dropped_item(get_turf(parent)) qdel(src) -/datum/component/pinata/Destroy(force, silent) +/datum/component/pinata/Destroy(force) UnregisterSignal(parent, list( COMSIG_MOB_APPLY_DAMAGE, COMSIG_LIVING_DEATH, diff --git a/code/datums/components/plumbing/chemical_acclimator.dm b/code/datums/components/plumbing/chemical_acclimator.dm index 777a2804a78..f84252c51de 100644 --- a/code/datums/components/plumbing/chemical_acclimator.dm +++ b/code/datums/components/plumbing/chemical_acclimator.dm @@ -9,7 +9,7 @@ return COMPONENT_INCOMPATIBLE myacclimator = parent -/datum/component/plumbing/acclimator/Destroy(force, silent) +/datum/component/plumbing/acclimator/Destroy(force) myacclimator = null return ..() diff --git a/code/datums/components/puzzgrid.dm b/code/datums/components/puzzgrid.dm index 8a7620b06e3..611df16ccaa 100644 --- a/code/datums/components/puzzgrid.dm +++ b/code/datums/components/puzzgrid.dm @@ -55,7 +55,7 @@ addtimer(CALLBACK(src, PROC_REF(out_of_time)), timer) time_to_finish = world.time + timer -/datum/component/puzzgrid/Destroy(force, silent) +/datum/component/puzzgrid/Destroy(force) puzzgrid = null on_victory_callback = null on_fail_callback = null diff --git a/code/datums/components/radioactive_emitter.dm b/code/datums/components/radioactive_emitter.dm index 6a95f36079c..26e33855a11 100644 --- a/code/datums/components/radioactive_emitter.dm +++ b/code/datums/components/radioactive_emitter.dm @@ -41,7 +41,7 @@ // Easier to handle edits to the cooldown duration, prevents timer spam for short cooldown emitters START_PROCESSING(SSfastprocess, src) -/datum/component/radioactive_emitter/Destroy(force, silent) +/datum/component/radioactive_emitter/Destroy(force) STOP_PROCESSING(SSfastprocess, src) return ..() diff --git a/code/datums/components/radioactive_exposure.dm b/code/datums/components/radioactive_exposure.dm index 0819b46f7df..b8a034e7788 100644 --- a/code/datums/components/radioactive_exposure.dm +++ b/code/datums/components/radioactive_exposure.dm @@ -66,7 +66,7 @@ qdel(src) -/datum/component/radioactive_exposure/Destroy(force, silent) +/datum/component/radioactive_exposure/Destroy(force) var/mob/living/carbon/human/human_parent = parent human_parent.clear_alert(ALERT_RADIOACTIVE_AREA) diff --git a/code/datums/components/reagent_refiller.dm b/code/datums/components/reagent_refiller.dm index ffb451b83ac..35bdcb4ce51 100644 --- a/code/datums/components/reagent_refiller.dm +++ b/code/datums/components/reagent_refiller.dm @@ -28,7 +28,7 @@ return ..() -/datum/component/reagent_refiller/Destroy(force, silent) +/datum/component/reagent_refiller/Destroy(force) power_draw_callback = null return ..() diff --git a/code/datums/components/redirect_attack_hand_from_turf.dm b/code/datums/components/redirect_attack_hand_from_turf.dm index 5beef957dd3..bb823609241 100644 --- a/code/datums/components/redirect_attack_hand_from_turf.dm +++ b/code/datums/components/redirect_attack_hand_from_turf.dm @@ -25,7 +25,7 @@ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) connect_to_new_turf() -/datum/component/redirect_attack_hand_from_turf/Destroy(force, silent) +/datum/component/redirect_attack_hand_from_turf/Destroy(force) disconnect_from_old_turf() return ..() diff --git a/code/datums/components/reflection.dm b/code/datums/components/reflection.dm index 80532ca2a61..d85960951aa 100644 --- a/code/datums/components/reflection.dm +++ b/code/datums/components/reflection.dm @@ -55,7 +55,7 @@ var/list/reflect_update_signals = list(COMSIG_MOVABLE_MOVED) + update_signals RegisterSignals(parent, reflect_update_signals, PROC_REF(get_reflection_targets)) -/datum/component/reflection/Destroy(force, silent) +/datum/component/reflection/Destroy(force) QDEL_LIST_ASSOC_VAL(reflected_movables) QDEL_NULL(reflection_holder) can_reflect = null diff --git a/code/datums/components/regenerator.dm b/code/datums/components/regenerator.dm index b9886764565..a8fd3d0c46c 100644 --- a/code/datums/components/regenerator.dm +++ b/code/datums/components/regenerator.dm @@ -59,7 +59,7 @@ UnregisterSignal(parent, COMSIG_MOB_APPLY_DAMAGE) stop_regenerating() -/datum/component/regenerator/Destroy(force, silent) +/datum/component/regenerator/Destroy(force) stop_regenerating() . = ..() if(regeneration_start_timer) diff --git a/code/datums/components/religious_tool.dm b/code/datums/components/religious_tool.dm index 8491e489bed..3c421a04aa3 100644 --- a/code/datums/components/religious_tool.dm +++ b/code/datums/components/religious_tool.dm @@ -43,7 +43,7 @@ RegisterSignal(SSdcs, COMSIG_RELIGIOUS_SECT_CHANGED, PROC_REF(SetGlobalToLocal)) RegisterSignal(SSdcs, COMSIG_RELIGIOUS_SECT_RESET, PROC_REF(on_sect_reset)) -/datum/component/religious_tool/Destroy(force, silent) +/datum/component/religious_tool/Destroy(force) easy_access_sect = null performing_rite = null catalyst_type = null diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index 032113a8f7e..e89541cb6f7 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -32,7 +32,7 @@ var/mob/living/simple_animal/simple_parent = parent simple_parent.stop_automated_movement = TRUE -/datum/component/riding/creature/Destroy(force, silent) +/datum/component/riding/creature/Destroy(force) unequip_buckle_inhands(parent) if(isanimal(parent)) var/mob/living/simple_animal/simple_parent = parent @@ -464,7 +464,7 @@ var/mob/living/basic/mining/goliath/goliath = parent goliath.add_movespeed_modifier(/datum/movespeed_modifier/goliath_mount) -/datum/component/riding/creature/goliath/Destroy(force, silent) +/datum/component/riding/creature/goliath/Destroy(force) var/mob/living/basic/mining/goliath/goliath = parent goliath.remove_movespeed_modifier(/datum/movespeed_modifier/goliath_mount) return ..() diff --git a/code/datums/components/scope.dm b/code/datums/components/scope.dm index 853820eaa73..c5a0da1f368 100644 --- a/code/datums/components/scope.dm +++ b/code/datums/components/scope.dm @@ -13,7 +13,7 @@ return COMPONENT_INCOMPATIBLE src.range_modifier = range_modifier -/datum/component/scope/Destroy(force, silent) +/datum/component/scope/Destroy(force) if(tracker) stop_zooming(tracker.owner) return ..() diff --git a/code/datums/components/seclight_attachable.dm b/code/datums/components/seclight_attachable.dm index d82f274a07c..b1d4aebc93f 100644 --- a/code/datums/components/seclight_attachable.dm +++ b/code/datums/components/seclight_attachable.dm @@ -50,7 +50,7 @@ if(istype(starting_light)) add_light(starting_light) -/datum/component/seclite_attachable/Destroy(force, silent) +/datum/component/seclite_attachable/Destroy(force) if(light) remove_light() return ..() diff --git a/code/datums/components/seethrough_mob.dm b/code/datums/components/seethrough_mob.dm index 4359c454f1a..bae87faf615 100644 --- a/code/datums/components/seethrough_mob.dm +++ b/code/datums/components/seethrough_mob.dm @@ -42,7 +42,7 @@ var/datum/action/cooldown/toggle_seethrough/action = new(src) action.Grant(parent) -/datum/component/seethrough_mob/Destroy(force, silent) +/datum/component/seethrough_mob/Destroy(force) QDEL_NULL(render_source_atom) return ..() diff --git a/code/datums/components/shell.dm b/code/datums/components/shell.dm index 77f0b16ab71..a436a40d516 100644 --- a/code/datums/components/shell.dm +++ b/code/datums/components/shell.dm @@ -101,7 +101,7 @@ QDEL_NULL(attached_circuit) -/datum/component/shell/Destroy(force, silent) +/datum/component/shell/Destroy(force) QDEL_LIST(unremovable_circuit_components) return ..() diff --git a/code/datums/components/shielded.dm b/code/datums/components/shielded.dm index 0265148c8b5..8a46697745f 100644 --- a/code/datums/components/shielded.dm +++ b/code/datums/components/shielded.dm @@ -57,7 +57,7 @@ if(recharge_start_delay) START_PROCESSING(SSdcs, src) -/datum/component/shielded/Destroy(force, silent) +/datum/component/shielded/Destroy(force) if(wearer) shield_icon = "broken" UnregisterSignal(wearer, COMSIG_ATOM_UPDATE_OVERLAYS) diff --git a/code/datums/components/shovel_hands.dm b/code/datums/components/shovel_hands.dm index 34eaf8a98b6..752af0d8bd9 100644 --- a/code/datums/components/shovel_hands.dm +++ b/code/datums/components/shovel_hands.dm @@ -20,7 +20,7 @@ UnregisterSignal(parent, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)) return ..() -/datum/component/shovel_hands/Destroy(force, silent) +/datum/component/shovel_hands/Destroy(force) if (internal_shovel) UnregisterSignal(internal_shovel, COMSIG_QDELETING) QDEL_NULL(internal_shovel) diff --git a/code/datums/components/shuttle_cling.dm b/code/datums/components/shuttle_cling.dm index 9cbff17c0a3..6702b9d601d 100644 --- a/code/datums/components/shuttle_cling.dm +++ b/code/datums/components/shuttle_cling.dm @@ -177,7 +177,7 @@ qdel(src) -/datum/component/shuttle_cling/Destroy(force, silent) +/datum/component/shuttle_cling/Destroy(force) REMOVE_TRAIT(parent, TRAIT_HYPERSPACED, REF(src)) QDEL_NULL(hyperloop) diff --git a/code/datums/components/singularity.dm b/code/datums/components/singularity.dm index 41b11a219c0..c1323d01e2f 100644 --- a/code/datums/components/singularity.dm +++ b/code/datums/components/singularity.dm @@ -108,7 +108,7 @@ GLOB.singularities |= src -/datum/component/singularity/Destroy(force, silent) +/datum/component/singularity/Destroy(force) GLOB.singularities -= src consume_callback = null target = null diff --git a/code/datums/components/sitcomlaughter.dm b/code/datums/components/sitcomlaughter.dm index 8ca335eb8b5..62e9276b1d7 100644 --- a/code/datums/components/sitcomlaughter.dm +++ b/code/datums/components/sitcomlaughter.dm @@ -22,7 +22,7 @@ if(laugh_delay) src.laugh_delay = laugh_delay -/datum/component/wearertargeting/sitcomlaughter/Destroy(force, silent) +/datum/component/wearertargeting/sitcomlaughter/Destroy(force) post_comedy_callback = null return ..() diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index 620f6baa816..74dbdd5642f 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -88,7 +88,7 @@ else RegisterSignal(parent, COMSIG_ATOM_ENTERED, PROC_REF(Slip)) -/datum/component/slippery/Destroy(force, silent) +/datum/component/slippery/Destroy(force) can_slip_callback = null on_slip_callback = null holder = null diff --git a/code/datums/components/smooth_tunes.dm b/code/datums/components/smooth_tunes.dm index 1442d29547b..0b86693f7f2 100644 --- a/code/datums/components/smooth_tunes.dm +++ b/code/datums/components/smooth_tunes.dm @@ -24,7 +24,7 @@ src.particles_path = particles_path src.glow_color = glow_color -/datum/component/smooth_tunes/Destroy(force, silent) +/datum/component/smooth_tunes/Destroy(force) if(particle_holder) QDEL_NULL(particle_holder) qdel(linked_songtuner_rite) diff --git a/code/datums/components/spin2win.dm b/code/datums/components/spin2win.dm index 0812258f769..4524b403355 100644 --- a/code/datums/components/spin2win.dm +++ b/code/datums/components/spin2win.dm @@ -38,7 +38,7 @@ src.start_spin_message = start_spin_message src.end_spin_message = end_spin_message -/datum/component/spin2win/Destroy(force, silent) +/datum/component/spin2win/Destroy(force) on_spin_callback = null on_unspin_callback = null return ..() diff --git a/code/datums/components/spinny.dm b/code/datums/components/spinny.dm index bec04b34560..d3cf52e29e0 100644 --- a/code/datums/components/spinny.dm +++ b/code/datums/components/spinny.dm @@ -18,7 +18,7 @@ turn_degrees = (reverse ? -90 : 90) START_PROCESSING(SSfastprocess, src) -/datum/component/spinny/Destroy(force, silent) +/datum/component/spinny/Destroy(force) STOP_PROCESSING(SSfastprocess, src) return ..() diff --git a/code/datums/components/spirit_holding.dm b/code/datums/components/spirit_holding.dm index 37186825d62..cb626801d86 100644 --- a/code/datums/components/spirit_holding.dm +++ b/code/datums/components/spirit_holding.dm @@ -13,7 +13,7 @@ if(!ismovable(parent)) //you may apply this to mobs, i take no responsibility for how that works out return COMPONENT_INCOMPATIBLE -/datum/component/spirit_holding/Destroy(force, silent) +/datum/component/spirit_holding/Destroy(force) . = ..() if(bound_spirit) QDEL_NULL(bound_spirit) diff --git a/code/datums/components/squashable.dm b/code/datums/components/squashable.dm index 86135faa7bb..785c6771ad3 100644 --- a/code/datums/components/squashable.dm +++ b/code/datums/components/squashable.dm @@ -29,7 +29,7 @@ AddComponent(/datum/component/connect_loc_behalf, parent, loc_connections) -/datum/component/squashable/Destroy(force, silent) +/datum/component/squashable/Destroy(force) on_squash_callback = null return ..() diff --git a/code/datums/components/strong_pull.dm b/code/datums/components/strong_pull.dm index bfcfb34c163..afb46b7252d 100644 --- a/code/datums/components/strong_pull.dm +++ b/code/datums/components/strong_pull.dm @@ -10,7 +10,7 @@ Basically, the items they pull cannot be pulled (except by the puller) if(!isliving(parent)) return COMPONENT_INCOMPATIBLE -/datum/component/strong_pull/Destroy(force, silent) +/datum/component/strong_pull/Destroy(force) if(strongpulling) lose_strong_grip() return ..() diff --git a/code/datums/components/style/style.dm b/code/datums/components/style/style.dm index 99fe652fad6..d50b9736e8f 100644 --- a/code/datums/components/style/style.dm +++ b/code/datums/components/style/style.dm @@ -146,7 +146,7 @@ qdel(projectile_parry.resolve()) -/datum/component/style/Destroy(force, silent) +/datum/component/style/Destroy(force) STOP_PROCESSING(SSdcs, src) var/mob/mob_parent = parent if(mob_parent.hud_used) diff --git a/code/datums/components/subtype_picker.dm b/code/datums/components/subtype_picker.dm index 2bc429f9b70..78401c9e022 100644 --- a/code/datums/components/subtype_picker.dm +++ b/code/datums/components/subtype_picker.dm @@ -22,7 +22,7 @@ src.on_picked_callback = on_picked_callback build_radial_list() -/datum/component/subtype_picker/Destroy(force, silent) +/datum/component/subtype_picker/Destroy(force) on_picked_callback = null return ..() diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm index f3047f87768..cf9e9d36a82 100644 --- a/code/datums/components/supermatter_crystal.dm +++ b/code/datums/components/supermatter_crystal.dm @@ -28,7 +28,7 @@ src.tool_act_callback = tool_act_callback src.consume_callback = consume_callback -/datum/component/supermatter_crystal/Destroy(force, silent) +/datum/component/supermatter_crystal/Destroy(force) tool_act_callback = null consume_callback = null return ..() diff --git a/code/datums/components/surgery_initiator.dm b/code/datums/components/surgery_initiator.dm index bc8b0ee9b97..d67c85edcba 100644 --- a/code/datums/components/surgery_initiator.dm +++ b/code/datums/components/surgery_initiator.dm @@ -14,7 +14,7 @@ var/obj/item/surgery_tool = parent surgery_tool.item_flags |= ITEM_HAS_CONTEXTUAL_SCREENTIPS -/datum/component/surgery_initiator/Destroy(force, silent) +/datum/component/surgery_initiator/Destroy(force) last_user_ref = null surgery_target_ref = null diff --git a/code/datums/components/swabbing.dm b/code/datums/components/swabbing.dm index fa649a5e018..12d851afe39 100644 --- a/code/datums/components/swabbing.dm +++ b/code/datums/components/swabbing.dm @@ -32,7 +32,7 @@ This component is used in vat growing to swab for microbiological samples which src.update_icons = update_icons src.update_overlays = update_overlays -/datum/component/swabbing/Destroy(force, silent) +/datum/component/swabbing/Destroy(force) for(var/swabbed in swabbed_items) qdel(swabbed) update_icons = null diff --git a/code/datums/components/takes_reagent_appearance.dm b/code/datums/components/takes_reagent_appearance.dm index fd1312ba112..96b9a4d6f0c 100644 --- a/code/datums/components/takes_reagent_appearance.dm +++ b/code/datums/components/takes_reagent_appearance.dm @@ -43,7 +43,7 @@ src.base_container_type = base_container_type || parent.type -/datum/component/takes_reagent_appearance/Destroy(force, silent) +/datum/component/takes_reagent_appearance/Destroy(force) on_icon_changed = null on_icon_reset = null return ..() diff --git a/code/datums/components/tameable.dm b/code/datums/components/tameable.dm index 81228b2c3cc..3da6d616149 100644 --- a/code/datums/components/tameable.dm +++ b/code/datums/components/tameable.dm @@ -32,7 +32,7 @@ RegisterSignal(parent, COMSIG_SIMPLEMOB_SENTIENCEPOTION, PROC_REF(on_tame)) //Instantly succeeds RegisterSignal(parent, COMSIG_SIMPLEMOB_TRANSFERPOTION, PROC_REF(on_tame)) //Instantly succeeds -/datum/component/tameable/Destroy(force, silent) +/datum/component/tameable/Destroy(force) after_tame = null return ..() diff --git a/code/datums/components/tattoo.dm b/code/datums/components/tattoo.dm index 7289c301520..fe51a53781b 100644 --- a/code/datums/components/tattoo.dm +++ b/code/datums/components/tattoo.dm @@ -25,7 +25,7 @@ if(tatted_limb.owner) setup_tatted_owner(tatted_limb.owner) -/datum/component/tattoo/Destroy(force, silent) +/datum/component/tattoo/Destroy(force) if(!parent) return ..() var/obj/item/bodypart/tatted_limb = parent diff --git a/code/datums/components/toggle_attached_clothing.dm b/code/datums/components/toggle_attached_clothing.dm index 5d8f7c2b3ea..da503985169 100644 --- a/code/datums/components/toggle_attached_clothing.dm +++ b/code/datums/components/toggle_attached_clothing.dm @@ -77,7 +77,7 @@ if (!destroy_on_removal) create_deployable() -/datum/component/toggle_attached_clothing/Destroy(force, silent) +/datum/component/toggle_attached_clothing/Destroy(force) unequip_deployable() QDEL_NULL(deployable) QDEL_NULL(toggle_action) diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index 89db2d27c83..464f1a58a07 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -56,7 +56,7 @@ if(require_twohands) ADD_TRAIT(parent, TRAIT_NEEDS_TWO_HANDS, ABSTRACT_ITEM_TRAIT) -/datum/component/two_handed/Destroy(force, silent) +/datum/component/two_handed/Destroy(force) offhand_item = null wield_callback = null unwield_callback = null diff --git a/code/datums/components/unbreakable.dm b/code/datums/components/unbreakable.dm index 423fad138bb..594b8dc7b8f 100644 --- a/code/datums/components/unbreakable.dm +++ b/code/datums/components/unbreakable.dm @@ -6,7 +6,7 @@ return COMPONENT_INCOMPATIBLE ADD_TRAIT(parent, TRAIT_UNBREAKABLE, INNATE_TRAIT) -/datum/component/unbreakable/Destroy(force, silent) +/datum/component/unbreakable/Destroy(force) REMOVE_TRAIT(parent, TRAIT_UNBREAKABLE, INNATE_TRAIT) return ..() diff --git a/code/datums/components/unusual_effect.dm b/code/datums/components/unusual_effect.dm index eb67b953799..7fe5b281825 100644 --- a/code/datums/components/unusual_effect.dm +++ b/code/datums/components/unusual_effect.dm @@ -39,7 +39,7 @@ special_effects = new(parent_movable, /particles/unusual_effect) START_PROCESSING(SSobj, src) -/datum/component/unusual_effect/Destroy(force, silent) +/datum/component/unusual_effect/Destroy(force) var/atom/movable/parent_movable = parent if (istype(parent_movable)) parent_movable.remove_filter("unusual_effect") diff --git a/code/datums/components/weatherannouncer.dm b/code/datums/components/weatherannouncer.dm index fec31ccf9d3..0eda6c47a32 100644 --- a/code/datums/components/weatherannouncer.dm +++ b/code/datums/components/weatherannouncer.dm @@ -38,7 +38,7 @@ speaker.update_appearance(UPDATE_ICON) update_light_color() -/datum/component/weather_announcer/Destroy(force, silent) +/datum/component/weather_announcer/Destroy(force) STOP_PROCESSING(SSprocessing, src) return ..() diff --git a/code/datums/datum.dm b/code/datums/datum.dm index a0fcd94c89e..5bfd548b64e 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -101,7 +101,7 @@ * * Returns [QDEL_HINT_QUEUE] */ -/datum/proc/Destroy(force=FALSE, ...) +/datum/proc/Destroy(force = FALSE) SHOULD_CALL_PARENT(TRUE) SHOULD_NOT_SLEEP(TRUE) tag = null @@ -129,10 +129,10 @@ var/component_or_list = dc[component_key] if(islist(component_or_list)) for(var/datum/component/component as anything in component_or_list) - qdel(component, FALSE, TRUE) + qdel(component, FALSE) else var/datum/component/C = component_or_list - qdel(C, FALSE, TRUE) + qdel(C, FALSE) dc.Cut() _clear_signal_refs() diff --git a/code/game/objects/items/implants/implantuplink.dm b/code/game/objects/items/implants/implantuplink.dm index 3631ddc94ae..c3c06d51f47 100644 --- a/code/game/objects/items/implants/implantuplink.dm +++ b/code/game/objects/items/implants/implantuplink.dm @@ -16,7 +16,7 @@ if(!uplink_flag) uplink_flag = src.uplink_flag src.uplink_handler = uplink_handler - RegisterSignal(src, COMSIG_COMPONENT_REMOVING, PROC_REF(_component_removal)) + RegisterSignal(src, COMSIG_COMPONENT_REMOVING, PROC_REF(on_component_removing)) /obj/item/implant/uplink/implant(mob/living/carbon/target, mob/user, silent, force) . = ..() @@ -34,8 +34,12 @@ * generally by admin verbs or var editing. Implant does nothing without * the component, so delete itself. */ -/obj/item/implant/uplink/proc/_component_removal(datum/source, datum/component/component) +/obj/item/implant/uplink/proc/on_component_removing(datum/source, datum/component/component) SIGNAL_HANDLER + + if (QDELING(src)) + return + if(istype(component, /datum/component/uplink)) qdel(src) diff --git a/code/modules/antagonists/heretic/heretic_living_heart.dm b/code/modules/antagonists/heretic/heretic_living_heart.dm index 1766cb4cd76..b616d300097 100644 --- a/code/modules/antagonists/heretic/heretic_living_heart.dm +++ b/code/modules/antagonists/heretic/heretic_living_heart.dm @@ -19,7 +19,7 @@ action = new(src) action.Grant(organ_parent.owner) -/datum/component/living_heart/Destroy(force, silent) +/datum/component/living_heart/Destroy(force) QDEL_NULL(action) return ..() diff --git a/code/modules/antagonists/revenant/haunted_item.dm b/code/modules/antagonists/revenant/haunted_item.dm index d035e2694d9..30116d6802b 100644 --- a/code/modules/antagonists/revenant/haunted_item.dm +++ b/code/modules/antagonists/revenant/haunted_item.dm @@ -65,7 +65,7 @@ src.types_which_dispell_us = types_which_dispell_us || default_dispell_types src.despawn_message = despawn_message -/datum/component/haunted_item/Destroy(force, silent) +/datum/component/haunted_item/Destroy(force) var/obj/item/haunted_item = parent // Handle these two specifically in Destroy() instead of clear_haunting(), // because we want to make sure they always get dealt with no matter how the component is removed diff --git a/code/modules/bitrunning/components/netpod_healing.dm b/code/modules/bitrunning/components/netpod_healing.dm index f400f42bc5d..03cdbc000be 100644 --- a/code/modules/bitrunning/components/netpod_healing.dm +++ b/code/modules/bitrunning/components/netpod_healing.dm @@ -13,7 +13,7 @@ START_PROCESSING(SSmachines, src) -/datum/component/netpod_healing/Destroy(force, silent) +/datum/component/netpod_healing/Destroy(force) STOP_PROCESSING(SSmachines, src) var/mob/living/carbon/player = parent diff --git a/code/modules/bitrunning/components/npc_friendly.dm b/code/modules/bitrunning/components/npc_friendly.dm index 3686f024056..0e15ec60e6f 100644 --- a/code/modules/bitrunning/components/npc_friendly.dm +++ b/code/modules/bitrunning/components/npc_friendly.dm @@ -28,7 +28,7 @@ previous_factions.Add(player.faction) player.faction |= npc_factions -/datum/component/npc_friendly/Destroy(force, silent) +/datum/component/npc_friendly/Destroy(force) . = ..() var/mob/living/player = parent diff --git a/code/modules/capture_the_flag/ctf_player_component.dm b/code/modules/capture_the_flag/ctf_player_component.dm index d3abc0f2571..c51b48b918c 100644 --- a/code/modules/capture_the_flag/ctf_player_component.dm +++ b/code/modules/capture_the_flag/ctf_player_component.dm @@ -74,7 +74,7 @@ player_mob.dust() qdel(src) -/datum/component/ctf_player/Destroy(force, silent) +/datum/component/ctf_player/Destroy(force) if(player_mob) UnregisterSignal(player_mob, list(COMSIG_MOB_AFTER_APPLY_DAMAGE, COMSIG_MOB_GHOSTIZED)) return ..() diff --git a/code/modules/experisci/experiment/handlers/experiment_handler.dm b/code/modules/experisci/experiment/handlers/experiment_handler.dm index 29e7da95391..ef4cd581cb9 100644 --- a/code/modules/experisci/experiment/handlers/experiment_handler.dm +++ b/code/modules/experisci/experiment/handlers/experiment_handler.dm @@ -72,7 +72,7 @@ GLOB.experiment_handlers += src -/datum/component/experiment_handler/Destroy(force, silent) +/datum/component/experiment_handler/Destroy(force) . = ..() GLOB.experiment_handlers -= src From f837ce844404990318d511173138df8f3bdb07b7 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:13:44 +0100 Subject: [PATCH 106/166] [MIRROR] Makes immerse use weakrefs [MDB IGNORE] (#25876) * Makes immerse use weakrefs (#80594) ## About The Pull Request Immerse was causing harddels due to it having references to mobs. Makes it use weakrefs for mobs instead. ## Why It's Good For The Game Immerse would cause harddels if a mob was deleted while it was in it's list. It could probably also happen if a turf was deleted too, but doing that here would be much harder. no CL since nothing playerfacing * Makes immerse use weakrefs --------- Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> --- code/datums/elements/immerse.dm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/code/datums/elements/immerse.dm b/code/datums/elements/immerse.dm index 900c096aa65..d4171588c31 100644 --- a/code/datums/elements/immerse.dm +++ b/code/datums/elements/immerse.dm @@ -96,8 +96,8 @@ /datum/element/immerse/proc/stop_immersion(turf/source) SIGNAL_HANDLER UnregisterSignal(source, list(COMSIG_ATOM_ABSTRACT_ENTERED, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, COMSIG_ATOM_ABSTRACT_EXITED)) - for(var/atom/movable/movable as anything in attached_turfs_and_movables[source]) - remove_from_element(source, movable) + for(var/datum/weakref/movable as anything in attached_turfs_and_movables[source]) + remove_from_element(source, movable.resolve()) attached_turfs_and_movables -= source /** @@ -122,7 +122,7 @@ try_immerse(movable, buckled) RegisterSignal(movable, COMSIG_QDELETING, PROC_REF(on_movable_qdel)) - LAZYADD(attached_turfs_and_movables[source], movable) + LAZYADD(attached_turfs_and_movables[source], WEAKREF(movable)) ADD_TRAIT(movable, TRAIT_IMMERSED, ELEMENT_TRAIT(src)) /datum/element/immerse/proc/on_movable_qdel(atom/movable/source) @@ -170,7 +170,7 @@ movable.vis_contents |= vis_overlay - LAZYSET(immersed_movables, movable, vis_overlay) + LAZYSET(immersed_movables, WEAKREF(movable), vis_overlay) ///Initializes and caches a new visual overlay given parameters such as width, height and whether it should appear fully underwater. /datum/element/immerse/proc/generate_vis_overlay(width, height, is_below_water) @@ -212,11 +212,11 @@ ///This proc removes the vis_overlay, the keep together trait and some signals from the movable. /datum/element/immerse/proc/remove_immerse_overlay(atom/movable/movable) - var/atom/movable/immerse_overlay/vis_overlay = LAZYACCESS(immersed_movables, movable) + var/atom/movable/immerse_overlay/vis_overlay = LAZYACCESS(immersed_movables, WEAKREF(movable)) if(!vis_overlay) return movable.vis_contents -= vis_overlay - LAZYREMOVE(immersed_movables, movable) + LAZYREMOVE(immersed_movables, WEAKREF(movable)) if(HAS_TRAIT(movable, TRAIT_UNIQUE_IMMERSE)) UnregisterSignal(movable, list(COMSIG_ATOM_SPIN_ANIMATION, COMSIG_LIVING_POST_UPDATE_TRANSFORM)) qdel(vis_overlay) @@ -298,8 +298,8 @@ if(!(exited.loc in attached_turfs_and_movables)) remove_from_element(source, exited) else - LAZYREMOVE(attached_turfs_and_movables[source], exited) - LAZYADD(attached_turfs_and_movables[exited.loc], exited) + LAZYREMOVE(attached_turfs_and_movables[source], WEAKREF(exited)) + LAZYADD(attached_turfs_and_movables[exited.loc], WEAKREF(exited)) ///Remove any signal, overlay, trait given to the movable and reference to it within the element. /datum/element/immerse/proc/remove_from_element(turf/source, atom/movable/movable) @@ -311,7 +311,7 @@ UnregisterSignal(movable, list(COMSIG_LIVING_SET_BUCKLED, COMSIG_QDELETING)) REMOVE_TRAIT(movable, TRAIT_IMMERSED, ELEMENT_TRAIT(src)) - LAZYREMOVE(attached_turfs_and_movables[source], movable) + LAZYREMOVE(attached_turfs_and_movables[source], WEAKREF(movable)) /// A band-aid to keep the (unique) visual overlay from scaling and rotating along with its owner. I'm sorry. /datum/element/immerse/proc/on_update_transform(mob/living/source, resize, new_lying_angle, is_opposite_angle) @@ -320,7 +320,7 @@ new_transform.Scale(1/source.current_size) new_transform.Turn(-new_lying_angle) - var/atom/movable/immerse_overlay/vis_overlay = immersed_movables[source] + var/atom/movable/immerse_overlay/vis_overlay = immersed_movables[WEAKREF(source)] if(is_opposite_angle) vis_overlay.transform = new_transform vis_overlay.adjust_living_overlay_offset(source) @@ -361,7 +361,7 @@ ///Spin the overlay in the opposite direction so it doesn't look like it's spinning at all. /datum/element/immerse/proc/on_spin_animation(atom/source, speed, loops, segments, segment) SIGNAL_HANDLER - var/atom/movable/immerse_overlay/vis_overlay = immersed_movables[source] + var/atom/movable/immerse_overlay/vis_overlay = immersed_movables[WEAKREF(source)] vis_overlay.do_spin_animation(speed, loops, segments, -segment) ///We need to make sure to remove hard refs from the element when deleted. From 55f60e5e4bfff5991e8f224a2f87dd78752ebb90 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:14:25 +0100 Subject: [PATCH 107/166] [MIRROR] Fixes TextArea lag [MDB IGNORE] (#25890) * Fixes TextArea lag (#80616) ## About The Pull Request Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/25684 Helps with https://github.com/tgstation/tgstation/issues/80468 (maybe?) This should fix the lag in the TextArea input boxes.

Before ![MdbjaR3hDc](https://github.com/tgstation/tgstation/assets/13398309/2094443b-04c0-4f5b-99e3-2efb5f1a2605)
After ![7aOoVFa76R](https://github.com/tgstation/tgstation/assets/13398309/1faaac7f-3861-4246-84f6-1af1b6977a01)
## Why It's Good For The Game Fixes laggy UIs. ## Changelog :cl: fix: reduces lag in the tgui textarea input boxes /:cl: * Fixes TextArea lag --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- tgui/packages/tgui/components/TextArea.tsx | 23 +++++++++++-------- .../tgui/interfaces/TextInputModal.tsx | 5 ++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/tgui/packages/tgui/components/TextArea.tsx b/tgui/packages/tgui/components/TextArea.tsx index b8620f5a2df..191d6ff43ac 100644 --- a/tgui/packages/tgui/components/TextArea.tsx +++ b/tgui/packages/tgui/components/TextArea.tsx @@ -15,7 +15,7 @@ import { useRef, useState, } from 'react'; -import { ChangeEvent, KeyboardEvent } from 'react'; +import { KeyboardEvent, SyntheticEvent } from 'react'; import { Box, BoxProps } from './Box'; import { toInputValue } from './Input'; @@ -28,12 +28,14 @@ type Props = Partial<{ fluid: boolean; maxLength: number; noborder: boolean; - // This fires when: value changes - onChange: (event: ChangeEvent, value: string) => void; - // This fires when: enter is pressed - onEnter: (event: KeyboardEvent, value: string) => void; - // This fires when: escape is pressed - onEscape: (event: KeyboardEvent) => void; + /** Fires when user is 'done typing': Clicked out, blur, enter key (but not shift+enter) */ + onChange: (event: SyntheticEvent, value: string) => void; + /** Fires once the enter key is pressed */ + onEnter: (event: SyntheticEvent, value: string) => void; + /** Fires once the escape key is pressed */ + onEscape: (event: SyntheticEvent) => void; + /** Fires on each key press / value change. Used for searching */ + onInput: (event: SyntheticEvent, value: string) => void; placeholder: string; scrollbar: boolean; selfClear: boolean; @@ -53,6 +55,7 @@ export const TextArea = forwardRef( onChange, onEnter, onEscape, + onInput, placeholder, scrollbar, selfClear, @@ -67,7 +70,7 @@ export const TextArea = forwardRef( const handleKeyDown = (event: KeyboardEvent) => { if (event.key === KEY.Enter) { if (event.shiftKey) { - onChange?.(event as any, event.currentTarget.value); + event.currentTarget.focus(); return; } @@ -76,7 +79,6 @@ export const TextArea = forwardRef( event.currentTarget.value = ''; } event.currentTarget.blur(); - return; } @@ -164,7 +166,8 @@ export const TextArea = forwardRef( nowrap && 'TextArea__nowrap', ])} maxLength={maxLength} - onChange={(event) => onChange?.(event, event.target.value)} + onBlur={(event) => onChange?.(event, event.target.value)} + onChange={(event) => onInput?.(event, event.target.value)} onKeyDown={handleKeyDown} onScroll={() => { if (displayedValue && textareaRef.current) { diff --git a/tgui/packages/tgui/interfaces/TextInputModal.tsx b/tgui/packages/tgui/interfaces/TextInputModal.tsx index f9ec036575e..395ea44870d 100644 --- a/tgui/packages/tgui/interfaces/TextInputModal.tsx +++ b/tgui/packages/tgui/interfaces/TextInputModal.tsx @@ -1,5 +1,5 @@ import { KEY } from 'common/keys'; -import { useState } from 'react'; +import { KeyboardEvent, useState } from 'react'; import { useBackend } from '../backend'; import { Box, Section, Stack, TextArea } from '../components'; @@ -111,7 +111,7 @@ const InputArea = (props: { height={multiline || input.length >= 30 ? '100%' : '1.8rem'} maxLength={max_length} onEscape={() => act('cancel')} - onEnter={(event) => { + onEnter={(event: KeyboardEvent) => { if (visualMultiline && event.shiftKey) { return; } @@ -119,6 +119,7 @@ const InputArea = (props: { act('submit', { entry: input }); }} onChange={(_, value) => onType(value)} + onInput={(_, value) => onType(value)} placeholder="Type something..." value={input} /> From b4d3b18baea5120e678c4ac5cfeb9509b7cf3f3a Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:14:38 +0100 Subject: [PATCH 108/166] [MIRROR] Fixing the constant poll alert runtimes, and the selector outline not being updated. [MDB IGNORE] (#25891) * Fixing the constant poll alert runtimes, and the selector outline not being updated. (#80610) * Fixing the constant poll alert runtimes, and the selector outline not being updated. --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/_onclick/hud/alert.dm | 16 +++++++---- code/controllers/subsystem/polling.dm | 41 ++++++++++++++++++++------- code/datums/candidate_poll.dm | 20 ++++++------- 3 files changed, 51 insertions(+), 26 deletions(-) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 48fa6fdd88d..210190faaeb 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -826,6 +826,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." /atom/movable/screen/alert/poll_alert/Initialize(mapload) . = ..() + signed_up_overlay = mutable_appearance('icons/hud/screen_gen.dmi', icon_state = "selector") register_context() /atom/movable/screen/alert/poll_alert/proc/set_role_overlay() @@ -888,18 +889,24 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." if(LAZYACCESS(modifiers, CTRL_CLICK) && poll.jump_to_me) jump_to_pic_source() return - handle_sign_up() + if(handle_sign_up()) + update_candidates_number_overlay() + update_signed_up_overlay() /atom/movable/screen/alert/poll_alert/proc/handle_sign_up() if(owner in poll.signed_up) - poll.remove_candidate(owner) - else if(!(owner.ckey in GLOB.poll_ignore[poll.ignoring_category])) - poll.sign_up(owner) + return poll.remove_candidate(owner, src) + if(owner.ckey in GLOB.poll_ignore[poll.ignoring_category]) + return FALSE + if(poll.sign_up(owner)) + return poll.sign_up(owner) /atom/movable/screen/alert/poll_alert/proc/set_never_round() if(!(owner.ckey in GLOB.poll_ignore[poll.ignoring_category])) poll.do_never_for_this_round(owner) color = "red" + update_candidates_number_overlay() + update_signed_up_overlay() return poll.undo_never_for_this_round(owner) color = initial(color) @@ -922,7 +929,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." return /atom/movable/screen/alert/poll_alert/proc/update_signed_up_overlay() - signed_up_overlay = mutable_appearance('icons/hud/screen_gen.dmi', icon_state = "selector") if(owner in poll.signed_up) add_overlay(signed_up_overlay) else diff --git a/code/controllers/subsystem/polling.dm b/code/controllers/subsystem/polling.dm index 479358cc4fd..d25ba18f3fd 100644 --- a/code/controllers/subsystem/polling.dm +++ b/code/controllers/subsystem/polling.dm @@ -38,6 +38,8 @@ SUBSYSTEM_DEF(polling) var/category = "[new_poll.poll_key]_poll_alert" for(var/mob/candidate_mob as anything in group) + if(!candidate_mob.client) + continue // Universal opt-out for all players. if((!candidate_mob.client.prefs.read_preference(/datum/preference/toggle/ghost_roles))) continue @@ -55,7 +57,7 @@ SUBSYSTEM_DEF(polling) // we need to keep the first one's timeout rather than use the shorter one var/atom/movable/screen/alert/poll_alert/current_alert = LAZYACCESS(candidate_mob.alerts, category) var/alert_time = poll_time - var/alert_poll = new_poll + var/datum/candidate_poll/alert_poll = new_poll if(current_alert && current_alert.timeout > (world.time + poll_time - world.tick_lag)) alert_time = current_alert.timeout - world.time + world.tick_lag alert_poll = current_alert.poll @@ -65,22 +67,24 @@ SUBSYSTEM_DEF(polling) if(!poll_alert_button) continue + new_poll.alert_buttons += poll_alert_button + new_poll.RegisterSignal(poll_alert_button, COMSIG_QDELETING, TYPE_PROC_REF(/datum/candidate_poll, clear_alert_ref)) + poll_alert_button.icon = ui_style2icon(candidate_mob.client?.prefs?.read_preference(/datum/preference/choiced/ui_style)) poll_alert_button.desc = "[question]" poll_alert_button.show_time_left = TRUE poll_alert_button.poll = alert_poll - poll_alert_button.poll.alert_button = poll_alert_button poll_alert_button.set_role_overlay() poll_alert_button.update_stacks_overlay() + // Sign up inheritance and stacking - var/inherited_sign_up = FALSE - for(var/existing_poll in currently_polling) - var/datum/candidate_poll/other_poll = existing_poll - if(new_poll != other_poll && new_poll.poll_key == other_poll.poll_key) - // If there's already a poll for an identical mob type ongoing and the client is signed up for it, sign them up for this one - if(!inherited_sign_up && (candidate_mob in other_poll.signed_up) && new_poll.sign_up(candidate_mob, TRUE)) - inherited_sign_up = TRUE + for(var/datum/candidate_poll/other_poll as anything in currently_polling) + if(new_poll == other_poll || new_poll.poll_key != other_poll.poll_key) + continue + // If there's already a poll for an identical mob type ongoing and the client is signed up for it, sign them up for this one + if((candidate_mob in other_poll.signed_up) && new_poll.sign_up(candidate_mob, TRUE)) + break // Image to display var/image/poll_image @@ -185,13 +189,28 @@ SUBSYSTEM_DEF(polling) return TRUE /datum/controller/subsystem/polling/proc/polling_finished(datum/candidate_poll/finishing_poll) + currently_polling -= finishing_poll // Trim players who aren't eligible anymore var/length_pre_trim = length(finishing_poll.signed_up) finishing_poll.trim_candidates() log_game("Candidate poll [finishing_poll.role ? "for [finishing_poll.role]" : "\"[finishing_poll.question]\""] finished. [length_pre_trim] players signed up, [length(finishing_poll.signed_up)] after trimming") finishing_poll.finished = TRUE - finishing_poll.alert_button.update_stacks_overlay() - currently_polling -= finishing_poll + + // Take care of updating the remaining screen alerts if a similar poll is found, or deleting them. + if(length(finishing_poll.alert_buttons)) + var/polls_of_same_type_left = FALSE + for(var/datum/candidate_poll/running_poll as anything in currently_polling) + if(running_poll.poll_key == finishing_poll.poll_key && running_poll.time_left() > 0) + polls_of_same_type_left = TRUE + break + for(var/atom/movable/screen/alert/poll_alert/alert as anything in finishing_poll.alert_buttons) + if(polls_of_same_type_left) + alert.update_stacks_overlay() + else + alert.owner.clear_alert("[finishing_poll.poll_key]_poll_alert") + + //More than enough time for the the `UNTIL()` stopping loop in `poll_candidates()` to be over, and the results to be turned in. + QDEL_IN(finishing_poll, 0.5 SECONDS) /datum/controller/subsystem/polling/stat_entry(msg) msg += "Active: [length(currently_polling)] | Total: [total_polls]" diff --git a/code/datums/candidate_poll.dm b/code/datums/candidate_poll.dm index cec4e268bef..da646405fb2 100644 --- a/code/datums/candidate_poll.dm +++ b/code/datums/candidate_poll.dm @@ -12,8 +12,8 @@ var/ignoring_category /// The players who signed up to this poll var/list/mob/signed_up - /// the linked alert button - var/atom/movable/screen/alert/poll_alert/alert_button + /// the linked alert buttons + var/list/atom/movable/screen/alert/poll_alert/alert_buttons = list() /// The world.time at which the poll was created var/time_started /// Whether the polling is finished @@ -33,11 +33,17 @@ return ..() /datum/candidate_poll/Destroy() - QDEL_NULL(alert_button) + if(src in SSpolling.currently_polling) + SSpolling.polling_finished(src) + return QDEL_HINT_IWILLGC // the above proc will call QDEL_IN(src, 0.5 SECONDS) jump_to_me = null - signed_up.Cut() + signed_up = null return ..() +/datum/candidate_poll/proc/clear_alert_ref(atom/movable/screen/alert/poll_alert/source) + SIGNAL_HANDLER + alert_buttons -= source + /datum/candidate_poll/proc/sign_up(mob/candidate, silent = FALSE) if(!istype(candidate) || isnull(candidate.key) || isnull(candidate.client)) return FALSE @@ -58,9 +64,6 @@ for(var/datum/candidate_poll/existing_poll as anything in SSpolling.currently_polling) if(src != existing_poll && poll_key == existing_poll.poll_key && !(candidate in existing_poll.signed_up)) existing_poll.sign_up(candidate, TRUE) - if(alert_button) - alert_button.update_candidates_number_overlay() - alert_button.update_signed_up_overlay() return TRUE /datum/candidate_poll/proc/remove_candidate(mob/candidate, silent = FALSE) @@ -83,9 +86,6 @@ for(var/datum/candidate_poll/existing_poll as anything in SSpolling.currently_polling) if(src != existing_poll && poll_key == existing_poll.poll_key && (candidate in existing_poll.signed_up)) existing_poll.remove_candidate(candidate, TRUE) - if(alert_button) - alert_button.update_candidates_number_overlay() - alert_button.update_signed_up_overlay() return TRUE /datum/candidate_poll/proc/do_never_for_this_round(mob/candidate) From 5a52944756f634b450a3877d891ebb8b39a55686 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:14:52 +0100 Subject: [PATCH 109/166] [MIRROR] Fixes .jsx missing from TguiTarget in build.js [MDB IGNORE] (#25893) * Fixes .jsx missing from TguiTarget in build.js (#80630) ## About The Pull Request .jsx files were recently switched to by TGstation, but because they were not in TGUITarget, when you make changes to a .jsx file, it doesn't recompile TGUI! Yippee! I SPENT HALF AN HOUR RECOMPILING MY TGUI AND HAVING IT JUST NOT SHOW UP. IT'S THE WORST. PLEASE FREE ME. This PR fixes that ## Why It's Good For The Game This has no game impact, it just fixes something that infuriates me. It will save coders from the pain I had to go through before I realized what was wrong. ## Changelog :cl: ReturnToZender fix: JSX files, when edited, cause TGUI to recompile on build /:cl: * Fixes .jsx missing from TguiTarget in build.js --------- Co-authored-by: ReturnToZender --- tools/build/build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/build/build.js b/tools/build/build.js index e047ae5fa29..95ccf42308e 100644 --- a/tools/build/build.js +++ b/tools/build/build.js @@ -328,7 +328,7 @@ export const TguiTarget = new Juke.Target({ 'tgui/.yarn/install-target', 'tgui/webpack.config.js', 'tgui/**/package.json', - 'tgui/packages/**/*.+(js|cjs|ts|tsx|scss)', + 'tgui/packages/**/*.+(js|cjs|ts|tsx|jsx|scss)', ], outputs: [ 'tgui/public/tgui.bundle.css', From 4b1815fd05bde1080fcc85415539628a4cd82ff3 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:24:37 +0100 Subject: [PATCH 110/166] [MIRROR] Automatic TGS DMAPI Update [MDB IGNORE] (#25894) * Automatic TGS DMAPI Update (#80555) This pull request updates the TGS DMAPI to the latest version. Please note any changes that may be breaking or unimplemented in your codebase by checking what changes are in the definitions file: code/__DEFINES/tgs.dm before merging. Co-authored-by: tgstation-server Co-authored-by: Jordan Dominion * Automatic TGS DMAPI Update --------- Co-authored-by: orange man <61334995+comfyorange@users.noreply.github.com> Co-authored-by: tgstation-server Co-authored-by: Jordan Dominion --- code/__DEFINES/tgs.dm | 26 ++++++++++++++++++-------- code/modules/tgs/core/core.dm | 11 +++++++++-- code/modules/tgs/v5/_defines.dm | 2 +- code/modules/tgs/v5/api.dm | 21 ++++++++++++++++----- code/modules/tgs/v5/bridge.dm | 13 ++++++++++--- code/modules/tgs/v5/topic.dm | 1 + code/modules/tgs/v5/undefs.dm | 2 +- 7 files changed, 56 insertions(+), 20 deletions(-) diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index b0e97e05e9b..c6596ea46c1 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "6.7.0" +#define TGS_DMAPI_VERSION "7.0.0" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -73,12 +73,12 @@ #define TGS_EVENT_REPO_MERGE_PULL_REQUEST 3 /// Before the repository makes a sychronize operation. Parameters: Absolute repostiory path. #define TGS_EVENT_REPO_PRE_SYNCHRONIZE 4 -/// Before a BYOND install operation begins. Parameters: [/datum/tgs_version] of the installing BYOND. -#define TGS_EVENT_BYOND_INSTALL_START 5 -/// When a BYOND install operation fails. Parameters: Error message -#define TGS_EVENT_BYOND_INSTALL_FAIL 6 -/// When the active BYOND version changes. Parameters: (Nullable) [/datum/tgs_version] of the current BYOND, [/datum/tgs_version] of the new BYOND. -#define TGS_EVENT_BYOND_ACTIVE_VERSION_CHANGE 7 +/// Before a engine install operation begins. Parameters: Version string of the installing engine. +#define TGS_EVENT_ENGINE_INSTALL_START 5 +/// When a engine install operation fails. Parameters: Error message +#define TGS_EVENT_ENGINE_INSTALL_FAIL 6 +/// When the active engine version changes. Parameters: (Nullable) Version string of the current engine, version string of the new engine. +#define TGS_EVENT_ENGINE_ACTIVE_VERSION_CHANGE 7 /// When the compiler starts running. Parameters: Game directory path, origin commit SHA. #define TGS_EVENT_COMPILE_START 8 /// When a compile is cancelled. No parameters. @@ -108,7 +108,7 @@ // #define TGS_EVENT_DREAM_DAEMON_LAUNCH 22 /// After a single submodule update is performed. Parameters: Updated submodule name. #define TGS_EVENT_REPO_SUBMODULE_UPDATE 23 -/// After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, byond version. +/// After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, version string of the used engine. #define TGS_EVENT_PRE_DREAM_MAKER 24 /// Whenever a deployment folder is deleted from disk. Parameters: Game directory path. #define TGS_EVENT_DEPLOYMENT_CLEANUP 25 @@ -122,6 +122,7 @@ /// The watchdog will restart on reboot. #define TGS_REBOOT_MODE_RESTART 2 +// Note that security levels are currently meaningless in OpenDream /// DreamDaemon Trusted security level. #define TGS_SECURITY_TRUSTED 0 /// DreamDaemon Safe security level. @@ -136,6 +137,11 @@ /// DreamDaemon invisible visibility level. #define TGS_VISIBILITY_INVISIBLE 2 +/// The Build Your Own Net Dream engine. +#define TGS_ENGINE_TYPE_BYOND 0 +/// The OpenDream engine. +#define TGS_ENGINE_TYPE_OPENDREAM 1 + //REQUIRED HOOKS /** @@ -449,6 +455,10 @@ /world/proc/TgsVersion() return +/// Returns the running engine type +/world/proc/TgsEngine() + return + /// Returns the current [/datum/tgs_version] of the DMAPI being used if it was activated, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsApiVersion() return diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index b9a9f27a28a..8be96f27404 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -42,11 +42,11 @@ var/datum/tgs_version/max_api_version = TgsMaximumApiVersion(); if(version.suite != null && version.minor != null && version.patch != null && version.deprecated_patch != null && version.deprefixed_parameter > max_api_version.deprefixed_parameter) - TGS_ERROR_LOG("Detected unknown API version! Defaulting to latest. Update the DMAPI to fix this problem.") + TGS_ERROR_LOG("Detected unknown Interop API version! Defaulting to latest. Update the DMAPI to fix this problem.") api_datum = /datum/tgs_api/latest if(!api_datum) - TGS_ERROR_LOG("Found unsupported API version: [raw_parameter]. If this is a valid version please report this, backporting is done on demand.") + TGS_ERROR_LOG("Found unsupported Interop API version: [raw_parameter]. If this is a valid version please report this, backporting is done on demand.") return TGS_INFO_LOG("Activating API for version [version.deprefixed_parameter]") @@ -107,6 +107,13 @@ if(api) return api.ApiVersion() +/world/TgsEngine() +#ifdef OPENDREAM + return TGS_ENGINE_TYPE_OPENDREAM +#else + return TGS_ENGINE_TYPE_BYOND +#endif + /world/TgsInstanceName() var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) if(api) diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index 48969c0c7d5..1c7d67d20cd 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -8,7 +8,6 @@ #define DMAPI5_TOPIC_REQUEST_LIMIT 65528 #define DMAPI5_TOPIC_RESPONSE_LIMIT 65529 -#define DMAPI5_BRIDGE_COMMAND_PORT_UPDATE 0 #define DMAPI5_BRIDGE_COMMAND_STARTUP 1 #define DMAPI5_BRIDGE_COMMAND_PRIME 2 #define DMAPI5_BRIDGE_COMMAND_REBOOT 3 @@ -18,6 +17,7 @@ #define DMAPI5_PARAMETER_ACCESS_IDENTIFIER "accessIdentifier" #define DMAPI5_PARAMETER_CUSTOM_COMMANDS "customCommands" +#define DMAPI5_PARAMETER_TOPIC_PORT "topicPort" #define DMAPI5_CHUNK "chunk" #define DMAPI5_CHUNK_PAYLOAD "payload" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 7226f29bba6..25d49b3e3bd 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -17,6 +17,8 @@ var/list/chat_channels var/initialized = FALSE + var/initial_bridge_request_received = FALSE + var/datum/tgs_version/interop_version var/chunked_requests = 0 var/list/chunked_topics = list() @@ -25,7 +27,8 @@ /datum/tgs_api/v5/New() . = ..() - TGS_DEBUG_LOG("V5 API created") + interop_version = version + TGS_DEBUG_LOG("V5 API created: [json_encode(args)]") /datum/tgs_api/v5/ApiVersion() return new /datum/tgs_version( @@ -38,8 +41,8 @@ access_identifier = world.params[DMAPI5_PARAM_ACCESS_IDENTIFIER] var/datum/tgs_version/api_version = ApiVersion() - version = null - var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands())) + version = null // we want this to be the TGS version, not the interop version + var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands(), DMAPI5_PARAMETER_TOPIC_PORT = GetTopicPort())) if(!istype(bridge_response)) TGS_ERROR_LOG("Failed initial bridge request!") return FALSE @@ -53,7 +56,8 @@ TGS_INFO_LOG("DMAPI validation, exiting...") TerminateWorld() - version = new /datum/tgs_version(runtime_information[DMAPI5_RUNTIME_INFORMATION_SERVER_VERSION]) + initial_bridge_request_received = TRUE + version = new /datum/tgs_version(runtime_information[DMAPI5_RUNTIME_INFORMATION_SERVER_VERSION]) // reassigning this because it can change if TGS updates security_level = runtime_information[DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL] visibility = runtime_information[DMAPI5_RUNTIME_INFORMATION_VISIBILITY] instance_name = runtime_information[DMAPI5_RUNTIME_INFORMATION_INSTANCE_NAME] @@ -102,10 +106,17 @@ initialized = TRUE return TRUE +/datum/tgs_api/v5/proc/GetTopicPort() +#if defined(OPENDREAM) && defined(OPENDREAM_TOPIC_PORT_EXISTS) + return "[world.opendream_topic_port]" +#else + return null +#endif + /datum/tgs_api/v5/proc/RequireInitialBridgeResponse() TGS_DEBUG_LOG("RequireInitialBridgeResponse()") var/logged = FALSE - while(!version) + while(!initial_bridge_request_received) if(!logged) TGS_DEBUG_LOG("RequireInitialBridgeResponse: Starting sleep") logged = TRUE diff --git a/code/modules/tgs/v5/bridge.dm b/code/modules/tgs/v5/bridge.dm index 37f58bcdf63..60cbcbfb7df 100644 --- a/code/modules/tgs/v5/bridge.dm +++ b/code/modules/tgs/v5/bridge.dm @@ -48,7 +48,9 @@ var/json = CreateBridgeData(command, data, TRUE) var/encoded_json = url_encode(json) - var/url = "http://127.0.0.1:[server_port]/Bridge?[DMAPI5_BRIDGE_DATA]=[encoded_json]" + var/api_prefix = interop_version.minor >= 7 ? "api/" : "" + + var/url = "http://127.0.0.1:[server_port]/[api_prefix]Bridge?[DMAPI5_BRIDGE_DATA]=[encoded_json]" return url /datum/tgs_api/v5/proc/CreateBridgeData(command, list/data, needs_auth) @@ -81,11 +83,16 @@ TGS_ERROR_LOG("Failed bridge request: [bridge_request]") return - var/response_json = file2text(export_response["CONTENT"]) - if(!response_json) + var/content = export_response["CONTENT"] + if(!content) TGS_ERROR_LOG("Failed bridge request, missing content!") return + var/response_json = file2text(content) + if(!response_json) + TGS_ERROR_LOG("Failed bridge request, failed to load content!") + return + var/list/bridge_response = json_decode(response_json) if(!bridge_response) TGS_ERROR_LOG("Failed bridge request, bad json: [response_json]") diff --git a/code/modules/tgs/v5/topic.dm b/code/modules/tgs/v5/topic.dm index 2ef0c70a97f..05e6c4e1b21 100644 --- a/code/modules/tgs/v5/topic.dm +++ b/code/modules/tgs/v5/topic.dm @@ -175,6 +175,7 @@ var/list/reattach_response = TopicResponse(error_message) reattach_response[DMAPI5_PARAMETER_CUSTOM_COMMANDS] = ListCustomCommands() + reattach_response[DMAPI5_PARAMETER_TOPIC_PORT] = GetTopicPort() return reattach_response if(DMAPI5_TOPIC_COMMAND_SEND_CHUNK) diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index fd1ed7e4cf5..d531d4b7b9d 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -8,7 +8,6 @@ #undef DMAPI5_TOPIC_REQUEST_LIMIT #undef DMAPI5_TOPIC_RESPONSE_LIMIT -#undef DMAPI5_BRIDGE_COMMAND_PORT_UPDATE #undef DMAPI5_BRIDGE_COMMAND_STARTUP #undef DMAPI5_BRIDGE_COMMAND_PRIME #undef DMAPI5_BRIDGE_COMMAND_REBOOT @@ -18,6 +17,7 @@ #undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER #undef DMAPI5_PARAMETER_CUSTOM_COMMANDS +#undef DMAPI5_PARAMETER_TOPIC_PORT #undef DMAPI5_CHUNK #undef DMAPI5_CHUNK_PAYLOAD From 75cd7f69f66b0fe2cbe06d3e2265d789202ca55e Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:25:27 +0100 Subject: [PATCH 111/166] [MIRROR] A "postal workers strike" negative station trait. (can be positive) [MDB IGNORE] (#25874) * A "postal workers strike" negative station trait. (can be positive) * Update shuttle_loan_datum.dm --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> --- code/__DEFINES/wall_dents.dm | 1 + code/datums/station_traits/negative_traits.dm | 24 ++++ .../effects/spawners/random/contraband.dm | 56 +++++++++ .../effects/spawners/random/entertainment.dm | 9 ++ .../effects/spawners/random/food_or_drink.dm | 14 +++ code/game/objects/items/mail.dm | 86 +++++++++++++- code/game/turfs/closed/walls.dm | 2 - .../events/shuttle_loan/shuttle_loan_datum.dm | 107 +++++++++++++++--- .../events/shuttle_loan/shuttle_loan_event.dm | 15 ++- icons/obj/storage/crates.dmi | Bin 38239 -> 40702 bytes 10 files changed, 286 insertions(+), 28 deletions(-) diff --git a/code/__DEFINES/wall_dents.dm b/code/__DEFINES/wall_dents.dm index 1e4f813849e..555f98671c0 100644 --- a/code/__DEFINES/wall_dents.dm +++ b/code/__DEFINES/wall_dents.dm @@ -1,2 +1,3 @@ #define WALL_DENT_HIT 1 #define WALL_DENT_SHOT 2 +#define MAX_DENT_DECALS 15 diff --git a/code/datums/station_traits/negative_traits.dm b/code/datums/station_traits/negative_traits.dm index e623c9b1870..f73bd480f84 100644 --- a/code/datums/station_traits/negative_traits.dm +++ b/code/datums/station_traits/negative_traits.dm @@ -17,6 +17,30 @@ /datum/station_trait/distant_supply_lines/on_round_start() SSeconomy.pack_price_modifier *= 1.2 +///A negative trait that stops mail from arriving (or the inverse if on holiday). It also enables a specific shuttle loan situation. +/datum/station_trait/mail_blocked + name = "Postal workers strike" + trait_type = STATION_TRAIT_NEGATIVE + weight = 2 + show_in_report = TRUE + report_message = "Due to an ongoing strike announced by the postal workers union, mail won't be delivered this shift." + +/datum/station_trait/mail_blocked/on_round_start() + //This is either a holiday or sunday... well then, let's flip the situation. + if(SSeconomy.mail_blocked) + name = "Postal system overtime" + report_message = "Despite being a day off, the postal system is working overtime today. Mail will be delivered this shift." + else + var/datum/round_event_control/shuttle_loan/our_event = locate() in SSevents.control + our_event.unavailable_situations -= /datum/shuttle_loan_situation/mail_strike + SSeconomy.mail_blocked = !SSeconomy.mail_blocked + +/datum/station_trait/mail_blocked/hangover/revert() + var/datum/round_event_control/shuttle_loan/our_event = locate() in SSevents.control + our_event.unavailable_situations |= /datum/shuttle_loan_situation/mail_strike + SSeconomy.mail_blocked = !SSeconomy.mail_blocked + return ..() + ///A negative trait that reduces the amount of products available from vending machines throughout the station. /datum/station_trait/vending_shortage name = "Vending products shortage" diff --git a/code/game/objects/effects/spawners/random/contraband.dm b/code/game/objects/effects/spawners/random/contraband.dm index f5bf0f452a3..ca5acbdbe67 100644 --- a/code/game/objects/effects/spawners/random/contraband.dm +++ b/code/game/objects/effects/spawners/random/contraband.dm @@ -141,3 +141,59 @@ /obj/item/restraints/legcuffs/beartrap/prearmed = 5, //not really a landmine, but still a good threat /obj/effect/mine/shrapnel = 5, ) + +/obj/effect/spawner/random/contraband/grenades + name = "grenades spawner" + loot = list( + /obj/item/grenade/chem_grenade/metalfoam, + /obj/item/grenade/chem_grenade/cleaner, + /obj/effect/spawner/random/entertainment/colorful_grenades, + /obj/item/grenade/smokebomb, + /obj/item/grenade/chem_grenade/antiweed, + /obj/item/grenade/spawnergrenade/syndiesoap, + /obj/effect/spawner/random/contraband/grenades/dangerous, + ) + +/obj/effect/spawner/random/contraband/grenades/dangerous + name = "dangerous grenades spawner" + loot = list( + /obj/item/grenade/flashbang = 3, + /obj/item/grenade/chem_grenade/teargas = 2, + /obj/item/grenade/iedcasing/spawned = 2, + /obj/item/grenade/empgrenade = 2, + /obj/item/grenade/antigravity = 2, + /obj/effect/spawner/random/contraband/grenades/cluster = 1, + /obj/effect/spawner/random/contraband/grenades/lethal = 1, + ) + +/obj/effect/spawner/random/contraband/grenades/cluster + name = "clusterbusters spawner" + loot = list( + /obj/item/grenade/clusterbuster/smoke = 4, + /obj/item/grenade/clusterbuster/metalfoam = 4, + /obj/item/grenade/clusterbuster/cleaner = 4, + /obj/item/grenade/clusterbuster = 3, + /obj/item/grenade/clusterbuster/teargas = 3, + /obj/item/grenade/clusterbuster/antiweed = 3, + /obj/item/grenade/clusterbuster/soap = 2, + /obj/item/grenade/clusterbuster/emp = 1, + /obj/item/grenade/clusterbuster/spawner_spesscarp = 1, + /obj/item/grenade/clusterbuster/facid = 1, + /obj/item/grenade/clusterbuster/inferno = 1, + /obj/item/grenade/clusterbuster/clf3 = 1, + ) + +/obj/effect/spawner/random/contraband/grenades/lethal + name = "lethal grenades spawner" + loot = list( + /obj/item/grenade/chem_grenade/incendiary = 3, + /obj/item/grenade/chem_grenade/facid = 3, + /obj/item/grenade/chem_grenade/ez_clean = 3, + /obj/item/grenade/chem_grenade/clf3 = 2, + /obj/item/grenade/gluon = 2, + /obj/item/grenade/chem_grenade/holy = 2, + /obj/item/grenade/spawnergrenade/spesscarp = 1, + /obj/item/grenade/spawnergrenade/cat = 1, + /obj/item/grenade/frag = 1, + /obj/item/grenade/chem_grenade/bioterrorfoam = 1, + ) diff --git a/code/game/objects/effects/spawners/random/entertainment.dm b/code/game/objects/effects/spawners/random/entertainment.dm index 1c635f07a5a..0a61cd1ab1f 100644 --- a/code/game/objects/effects/spawners/random/entertainment.dm +++ b/code/game/objects/effects/spawners/random/entertainment.dm @@ -281,3 +281,12 @@ /obj/item/toy/plush/ratplush = 2, /obj/item/toy/plush/narplush = 2, ) + +/obj/effect/spawner/random/entertainment/colorful_grenades + name = "colorful/glitter grenades spawner" + loot = list( + /obj/item/grenade/chem_grenade/glitter/pink, + /obj/item/grenade/chem_grenade/glitter/blue, + /obj/item/grenade/chem_grenade/glitter/white, + /obj/item/grenade/chem_grenade/colorful + ) diff --git a/code/game/objects/effects/spawners/random/food_or_drink.dm b/code/game/objects/effects/spawners/random/food_or_drink.dm index b2639b2df68..192914b6e3d 100644 --- a/code/game/objects/effects/spawners/random/food_or_drink.dm +++ b/code/game/objects/effects/spawners/random/food_or_drink.dm @@ -323,3 +323,17 @@ /obj/item/food/donut/jelly/slimejelly/matcha = 2, /obj/item/food/donut/jelly/slimejelly/trumpet = 2, ) + +/obj/effect/spawner/random/food_or_drink/any_snack_or_beverage + name = "any snack or beverage spawner" + icon_state = "slime_jelly_donut" + loot = list( + /obj/effect/spawner/random/food_or_drink/snack = 6, + /obj/effect/spawner/random/food_or_drink/refreshing_beverage = 6, + /obj/effect/spawner/random/food_or_drink/donuts = 5, + /obj/effect/spawner/random/food_or_drink/donkpockets_single = 5, + /obj/effect/spawner/random/food_or_drink/booze = 4, + /obj/effect/spawner/random/food_or_drink/snack/lizard = 4, + /obj/effect/spawner/random/food_or_drink/jelly_donuts = 3, + /obj/effect/spawner/random/food_or_drink/slime_jelly_donuts = 1, + ) diff --git a/code/game/objects/items/mail.dm b/code/game/objects/items/mail.dm index d058f96a40c..50b81ab6bc3 100644 --- a/code/game/objects/items/mail.dm +++ b/code/game/objects/items/mail.dm @@ -154,14 +154,18 @@ /obj/item/mail/examine_more(mob/user) . = ..() - var/list/msg = list(span_notice("You notice the postmarking on the front of the mail...")) + if(!postmarked) + . += span_info("This mail has no postmarking of any sort...") + else + . += span_notice("You notice the postmarking on the front of the mail...") var/datum/mind/recipient = recipient_ref.resolve() if(recipient) - msg += "\t[span_info("Certified NT mail for [recipient].")]" + . += span_info("[postmarked ? "Certified NT" : "Uncertfieid"] mail for [recipient].") + else if(postmarked) + . += span_info("Certified mail for [GLOB.station_name].") else - msg += "\t[span_info("Certified mail for [GLOB.station_name].")]" - msg += "\t[span_info("Distribute by hand or via destination tagger using the certified NT disposal system.")]" - return msg + . += span_info("This is a dead letter mail with no recipient.") + . += span_info("Distribute by hand or via destination tagger using the certified NT disposal system.") /// Accepts a mind to initialize goodies for a piece of mail. /obj/item/mail/proc/initialize_for_recipient(datum/mind/recipient) @@ -251,6 +255,8 @@ lid_x = -26 lid_y = 2 paint_jobs = null + ///if it'll show the nt mark on the crate + var/postmarked = TRUE /obj/structure/closet/crate/mail/update_icon_state() . = ..() @@ -261,6 +267,11 @@ else icon_state = "[base_icon_state]sealed" +/obj/structure/closet/crate/mail/update_overlays() + . = ..() + if(postmarked) + . += "mail_nt" + /// Fills this mail crate with N pieces of mail, where N is the lower of the amount var passed, and the maximum capacity of this crate. If N is larger than the number of alive human players, the excess will be junkmail. /obj/structure/closet/crate/mail/proc/populate(amount) var/mail_count = min(amount, storage_capacity) @@ -306,6 +317,19 @@ . = ..() populate(INFINITY) +///Used in the mail strike shuttle loan event +/obj/structure/closet/crate/mail/full/mail_strike + desc = "A post crate from somewhere else. It has no NT logo on it." + postmarked = FALSE + +/obj/structure/closet/crate/mail/full/mail_strike/populate(amount) + var/strike_mail_to_spawn = rand(1, storage_capacity-1) + for(var/i in 1 to strike_mail_to_spawn) + if(prob(95)) + new /obj/item/mail/mail_strike(src) + else + new /obj/item/mail/traitor/mail_strike(src) + return ..(storage_capacity - strike_mail_to_spawn) /// Opened mail crate /obj/structure/closet/crate/mail/preopen @@ -383,7 +407,8 @@ playsound(loc, 'sound/items/poster_ripped.ogg', vol = 50, vary = TRUE) for(var/obj/item/stuff as anything in contents) // Mail and envelope actually can have more than 1 item. if(user.put_in_hands(stuff) && armed) - log_bomber(user, "opened armed mail made by [made_by_cached_name] ([made_by_cached_ckey]), activating", stuff) + var/whomst = made_by_cached_name ? "[made_by_cached_name] ([made_by_cached_ckey])" : "no one in particular" + log_bomber(user, "opened armed mail made by [whomst], activating", stuff) INVOKE_ASYNC(stuff, TYPE_PROC_REF(/obj/item, attack_self), user) qdel(src) return TRUE @@ -414,6 +439,55 @@ after_unwrap(user) return TRUE +///Generic mail used in the mail strike shuttle loan event +/obj/item/mail/mail_strike + name = "dead mail" + desc = "An unmarked parcel of unknown origins, effectively undeliverable." + postmarked = FALSE + generic_goodies = list( + /obj/effect/spawner/random/entertainment/money_medium = 2, + /obj/effect/spawner/random/contraband = 2, + /obj/effect/spawner/random/entertainment/money_large = 1, + /obj/effect/spawner/random/entertainment/coin = 1, + /obj/effect/spawner/random/food_or_drink/any_snack_or_beverage = 1, + /obj/effect/spawner/random/entertainment/drugs = 1, + /obj/effect/spawner/random/contraband/grenades = 1, + ) + +/obj/item/mail/mail_strike/Initialize(mapload) + if(prob(35)) + stamped = FALSE + if(prob(35)) + name = "dead envelope" + icon_state = "mail_large" + goodie_count = 2 + stamp_max = 2 + stamp_offset_y = 5 + . = ..() + color = pick(COLOR_SILVER, COLOR_DARK, COLOR_DRIED_TAN, COLOR_ORANGE_BROWN, COLOR_BROWN, COLOR_SYNDIE_RED) + for(var/goodie in 1 to goodie_count) + var/target_good = pick_weight(generic_goodies) + new target_good(src) + +///Also found in the mail strike shuttle loan. It contains a random grenade that'll be triggered when unwrapped +/obj/item/mail/traitor/mail_strike + name = "dead mail" + desc = "An unmarked parcel of unknown origins, effectively undeliverable." + postmarked = FALSE + +/obj/item/mail/traitor/mail_strike/Initialize(mapload) + if(prob(35)) + stamped = FALSE + if(prob(35)) + name = "dead envelope" + icon_state = "mail_large" + goodie_count = 2 + stamp_max = 2 + stamp_offset_y = 5 + . = ..() + color = pick(COLOR_SILVER, COLOR_DARK, COLOR_DRIED_TAN, COLOR_ORANGE_BROWN, COLOR_BROWN, COLOR_SYNDIE_RED) + new /obj/effect/spawner/random/contraband/grenades/dangerous(src) + /obj/item/storage/mail_counterfeit_device name = "GLA-2 mail counterfeit device" desc = "Device that actually able to counterfeit NT's mail. This device also able to place a trap inside of mail for malicious actions. Trap will \"activate\" any item inside of mail. Also it might be used for contraband purposes. Integrated micro-computer will give you great configuration optionality for your needs." diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index f8d411acee4..2cc6d32bc03 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -1,4 +1,3 @@ -#define MAX_DENT_DECALS 15 #define LEANING_OFFSET 11 /turf/closed/wall @@ -387,5 +386,4 @@ . = ..() SEND_SIGNAL(gone, COMSIG_LIVING_WALL_EXITED, src) -#undef MAX_DENT_DECALS #undef LEANING_OFFSET diff --git a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm index 6c325e43da3..706274dfd85 100644 --- a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm +++ b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm @@ -7,7 +7,7 @@ /// What the shuttle says about it. var/shuttle_transit_text = "Unset transit text" /// Supply points earned for taking the deal. - var/bonus_points = 10000 + var/bonus_points = CARGO_CRATE_VALUE * 50 /// Response for taking the deal. var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble." /// Small description of the loan for easier log reading. @@ -21,7 +21,7 @@ bonus_points *= 1.15 /// Spawns paths added to `spawn_list`, and passes empty shuttle turfs so you can spawn more complicated things like dead bodies. -/datum/shuttle_loan_situation/proc/spawn_items(list/spawn_list, list/empty_shuttle_turfs) +/datum/shuttle_loan_situation/proc/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) SHOULD_CALL_PARENT(FALSE) CRASH("Unimplemented get_spawned_items() on [src.type].") @@ -31,7 +31,7 @@ shuttle_transit_text = "Virus samples incoming." logging_desc = "Virus shuttle" -/datum/shuttle_loan_situation/antidote/spawn_items(list/spawn_list, list/empty_shuttle_turfs) +/datum/shuttle_loan_situation/antidote/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) var/obj/effect/mob_spawn/corpse/human/assistant/infected_assistant = pick(list( /obj/effect/mob_spawn/corpse/human/assistant/beesease_infection, /obj/effect/mob_spawn/corpse/human/assistant/brainrot_infection, @@ -58,7 +58,7 @@ bonus_points = 0 logging_desc = "Resupply packages" -/datum/shuttle_loan_situation/department_resupply/spawn_items(list/spawn_list, list/empty_shuttle_turfs) +/datum/shuttle_loan_situation/department_resupply/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) var/list/crate_types = list( /datum/supply_pack/emergency/equipment, /datum/supply_pack/security/supplies, @@ -84,7 +84,7 @@ shuttle_transit_text = "Syndicate hijack team incoming." logging_desc = "Syndicate boarding party" -/datum/shuttle_loan_situation/syndiehijacking/spawn_items(list/spawn_list, list/empty_shuttle_turfs) +/datum/shuttle_loan_situation/syndiehijacking/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/imports/specialops] pack.generate(pick_n_take(empty_shuttle_turfs)) @@ -99,10 +99,10 @@ sender = "CentCom Janitorial Division" announcement_text = "One of our freighters carrying a bee shipment has been attacked by eco-terrorists. Can you clean up the mess for us?" shuttle_transit_text = "Biohazard cleanup incoming." - bonus_points = 20000 //Toxin bees can be unbeelievably lethal + bonus_points = CARGO_CRATE_VALUE * 100 //Toxin bees can be unbeelievably lethal logging_desc = "Shuttle full of bees" -/datum/shuttle_loan_situation/lots_of_bees/spawn_items(list/spawn_list, list/empty_shuttle_turfs) +/datum/shuttle_loan_situation/lots_of_bees/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/organic/hydroponics/beekeeping_fullkit] pack.generate(pick_n_take(empty_shuttle_turfs)) @@ -135,10 +135,10 @@ announcement_text = "We have discovered an active Syndicate bomb near our VIP shuttle's fuel lines. If you feel up to the task, we will pay you for defusing it." shuttle_transit_text = "Live explosive ordnance incoming. Exercise extreme caution." thanks_msg = "Live explosive ordnance incoming via supply shuttle. Evacuating cargo bay is recommended." - bonus_points = 45000 //If you mess up, people die and the shuttle gets turned into swiss cheese + bonus_points = CARGO_CRATE_VALUE * 225 //If you mess up, people die and the shuttle gets turned into swiss cheese logging_desc = "Shuttle with a ticking bomb" -/datum/shuttle_loan_situation/jc_a_bomb/spawn_items(list/spawn_list, list/empty_shuttle_turfs) +/datum/shuttle_loan_situation/jc_a_bomb/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) spawn_list.Add(/obj/machinery/syndicatebomb/shuttle_loan) if(prob(95)) spawn_list.Add(/obj/item/paper/fluff/cargo/bomb) @@ -153,7 +153,7 @@ bonus_points = 0 //Payout is made when the stamped papers are returned logging_desc = "Paperwork shipment" -/datum/shuttle_loan_situation/papers_please/spawn_items(list/spawn_list, list/empty_shuttle_turfs) +/datum/shuttle_loan_situation/papers_please/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) spawn_list += subtypesof(/obj/item/paperwork) - typesof(/obj/item/paperwork/photocopy) - typesof(/obj/item/paperwork/ancient) /datum/shuttle_loan_situation/pizza_delivery @@ -164,8 +164,8 @@ bonus_points = 0 logging_desc = "Pizza delivery" -/datum/shuttle_loan_situation/pizza_delivery/spawn_items(list/spawn_list, list/empty_shuttle_turfs) - var/naughtypizza = list(/obj/item/pizzabox/bomb /*/obj/item/pizzabox/margherita/robo*/) // SKYRAT EDIT: oh look another blacklist, for pizza nonetheless! removes borg pizza +/datum/shuttle_loan_situation/pizza_delivery/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) + var/naughtypizza = list(/obj/item/pizzabox/bomb, /obj/item/pizzabox/margherita/robo) //oh look another blacklist, for pizza nonetheless! var/nicepizza = list(/obj/item/pizzabox/margherita, /obj/item/pizzabox/meat, /obj/item/pizzabox/vegetable, /obj/item/pizzabox/mushroom) for(var/i in 1 to 6) spawn_list.Add(pick(prob(5) ? naughtypizza : nicepizza)) @@ -176,7 +176,7 @@ shuttle_transit_text = "Partying Russians incoming." logging_desc = "Russian party squad" -/datum/shuttle_loan_situation/russian_party/spawn_items(list/spawn_list, list/empty_shuttle_turfs) +/datum/shuttle_loan_situation/russian_party/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/service/party] pack.generate(pick_n_take(empty_shuttle_turfs)) @@ -194,7 +194,7 @@ shuttle_transit_text = "Spider Clan gift incoming." logging_desc = "Shuttle full of spiders" -/datum/shuttle_loan_situation/spider_gift/spawn_items(list/spawn_list, list/empty_shuttle_turfs) +/datum/shuttle_loan_situation/spider_gift/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/imports/specialops] pack.generate(pick_n_take(empty_shuttle_turfs)) @@ -213,3 +213,82 @@ for(var/i in 1 to 5) var/turf/web_turf = pick_n_take(empty_shuttle_turfs) new /obj/structure/spider/stickyweb(web_turf) + +#define DENT_WALL "dent" +#define CHANGE_WALL "change" +#define DISMANTLE_WALL "dismantle" + +#define BREAK_TILE "break" +#define PLATING_TILE "plating" +#define RUST_TILE "rust" + +/** + * A special shuttle loan situation enabled by the 'mail blocked' station trait. + * It sends back a lot of mail to the station, at the cost of wrecking the cargo shuttle a little. + */ +/datum/shuttle_loan_situation/mail_strike + sender = "Spinward Mail Workers Union" + announcement_text = "The Mail Workers Union wants to borrow your cargo shuttle to employ \"advanced union strike tactics\" with. Payment is strictly in mails." + bonus_points = 0 + thanks_msg = "The cargo shuttle should return in five minutes." + shuttle_transit_text = "Nothing stops the mail." + logging_desc = "Shuttle full of shady mail" + +/datum/shuttle_loan_situation/mail_strike/spawn_items(list/spawn_list, list/empty_shuttle_turfs, list/blocked_shutte_turfs) + for(var/i in 1 to rand(7, 12)) + var/turf/closed/wall/wall = pick_n_take(blocked_shutte_turfs) + if(!istype(wall)) + continue + var/static/list/wall_bad_stuff = list(DENT_WALL = 85, CHANGE_WALL = 13, DISMANTLE_WALL = 2) + var/static/list/possible_new_walls = list( + /turf/closed/wall/mineral/sandstone, + /turf/closed/wall/mineral/wood, + /turf/closed/wall/mineral/iron, + /turf/closed/wall/metal_foam_base, + /turf/closed/wall/r_wall, + ) + var/damage_done = pick_weight(wall_bad_stuff) + switch(damage_done) + if(DENT_WALL) + for(var/dent in 1 to rand(1, MAX_DENT_DECALS)) + wall.add_dent(prob(90) ? WALL_DENT_SHOT : WALL_DENT_HIT) + if(CHANGE_WALL) + wall.ChangeTurf(pick(possible_new_walls - wall.type)) + if(prob(25)) + for(var/dent in 1 to rand(1, MAX_DENT_DECALS)) + wall.add_dent(prob(90) ? WALL_DENT_SHOT : WALL_DENT_HIT) + if(DISMANTLE_WALL) + wall.dismantle_wall() + + for(var/i in 1 to rand(7, 12)) + var/turf/open/floor/floor = pick_n_take(empty_shuttle_turfs) + if(!istype(floor)) + continue + var/static/list/floor_bad_stuff = list(BREAK_TILE = 65, PLATING_TILE = 25, RUST_TILE = 10) + var/damage_done = pick_weight(floor_bad_stuff) + switch(damage_done) + if(BREAK_TILE) + if(prob(50)) + floor.break_tile() + else + floor.burn_tile() + if(PLATING_TILE) + if(prob(25)) + floor.remove_tile() + else + floor.make_plating() + if(RUST_TILE) + floor.ChangeTurf(/turf/open/floor/plating/rust) + if(prob(25)) + spawn_list += pick(/obj/effect/gibspawner/robot, /obj/effect/gibspawner/human) + + for(var/i in 1 to rand(4, 7)) + spawn_list += /obj/structure/closet/crate/mail/full/mail_strike + +#undef BREAK_TILE +#undef PLATING_TILE +#undef RUST_TILE + +#undef DENT_WALL +#undef CHANGE_WALL +#undef DISMANTLE_WALL diff --git a/code/modules/events/shuttle_loan/shuttle_loan_event.dm b/code/modules/events/shuttle_loan/shuttle_loan_event.dm index 6eeddea0214..99e70e39495 100644 --- a/code/modules/events/shuttle_loan/shuttle_loan_event.dm +++ b/code/modules/events/shuttle_loan/shuttle_loan_event.dm @@ -8,7 +8,8 @@ description = "If cargo accepts the offer, fills the shuttle with loot and/or enemies." ///The types of loan events already run (and to be excluded if the event triggers). admin_setup = list(/datum/event_admin_setup/listed_options/shuttle_loan) - var/list/run_situations = list() + ///A list of normally unavailable (or already run) situations datums + var/list/unavailable_situations = list(/datum/shuttle_loan_situation/mail_strike) /datum/round_event_control/shuttle_loan/can_spawn_event(players_amt, allow_magic = FALSE) . = ..() @@ -28,14 +29,14 @@ var/datum/round_event_control/shuttle_loan/loan_control = control //by this point if situation is admin picked, it is a type, not an instance. if(!situation) - var/list/valid_situations = subtypesof(/datum/shuttle_loan_situation) - loan_control.run_situations + var/list/valid_situations = subtypesof(/datum/shuttle_loan_situation) - loan_control.unavailable_situations if(!valid_situations.len) //If we somehow run out of loans (fking campbell), they all become available again - loan_control.run_situations.Cut() + loan_control.unavailable_situations.Cut() valid_situations = subtypesof(/datum/shuttle_loan_situation) situation = pick(valid_situations) - loan_control.run_situations.Add(situation) + loan_control.unavailable_situations.Add(situation) situation = new situation() /datum/round_event/shuttle_loan/announce(fake) @@ -76,10 +77,12 @@ //get empty turfs var/list/empty_shuttle_turfs = list() + var/list/blocked_shutte_turfs = list() var/list/area/shuttle/shuttle_areas = SSshuttle.supply.shuttle_areas for(var/area/shuttle/shuttle_area as anything in shuttle_areas) for(var/turf/open/floor/shuttle_turf in shuttle_area) if(shuttle_turf.is_blocked_turf()) + blocked_shutte_turfs += shuttle_turf continue empty_shuttle_turfs += shuttle_turf if(!empty_shuttle_turfs.len) @@ -87,7 +90,7 @@ //let the situation spawn its items var/list/spawn_list = list() - situation.spawn_items(spawn_list, empty_shuttle_turfs) + situation.spawn_items(spawn_list, empty_shuttle_turfs, blocked_shutte_turfs) var/false_positive = 0 while(spawn_list.len && empty_shuttle_turfs.len) @@ -103,7 +106,7 @@ /datum/event_admin_setup/listed_options/shuttle_loan/get_list() var/datum/round_event_control/shuttle_loan/loan_event = event_control - var/list/valid_situations = subtypesof(/datum/shuttle_loan_situation) - loan_event.run_situations + var/list/valid_situations = subtypesof(/datum/shuttle_loan_situation) - loan_event.unavailable_situations return valid_situations /datum/event_admin_setup/listed_options/shuttle_loan/apply_to_event(datum/round_event/shuttle_loan/event) diff --git a/icons/obj/storage/crates.dmi b/icons/obj/storage/crates.dmi index 274af66c820a482c6798b6fb1bc0ec8e169b8919..9bc8f4d2c27e90caca91cd6b22ec035d1fdc34a7 100644 GIT binary patch literal 40702 zcmdSA_di@;^e=n{iC!Z_mq>z$5~7z8(V~;+VU!4>chN={qC`Y*K@ibeb%YhmrZxhpbonB)}P76W>}-_`s*YO)aIc%cF3G5n7E3cw{l= z8IkZ~eN==zu1+9ho0d@fm>8km+YzG0OlrX4=*q}VJ>@W!`$jAzWR_c3KCWZc{9XmI zc4*)c;lou6-PAzhr#sIgXYR~~uMcr5(U~v?xT_32bnGMHdw1@l;U4*0G=h0HQ28!0Dw|1taM4f}mBp*Sf6 zM{nyH$-h+JN6aoPnzL!6k2WAvuT0aNs`F6vOp4tM!42|pcxfuf`%^ko1>_lltNjs; zo(KaK0+RhU^SYl+F^Lz3vXJqPa{0@{PcrZKbh(1ezLe8!uUJpWNYW;7N)1$N#Q64W z5-lavlzjCiB7UAyP7z!TXc`FB~&M`R7Y_#B!B2_7jeco13788?}?W&>+oqYqDI9E&yN! zUdg_A827)M=1wg&c?yE}j#fvg0+OB*|66nHNv@RoeLA^$Zo$&dly^@~jkXW*ubOxPD( z>6p^vr~8G_M55(cu0J-JbwsF5{h>VlC!;BGaS z50Y)u=E8hqXoFusK(oytb^P}k#5oH)`b=A}=1 z z6VkzDx~IxTjj_yVnLM_tVRr75EVdVvHw!8A%)D#evC-pPxJ(yz9_Gjt0Z_=|uOcq@ zSN09h_&gRW!mR(SuvPI*pUAN!jZ9V?O}1ICyb@APYE4h^c`c2%3NxE1NYz!vN`pE&>SFqM@2Z6g=Fzc(LWX6~ z`A*bHgNSem+i(@d&uN1JD*La|D%0LY0wnm@$EST*9 z9;-wC4?sf|i7Hi)LL>|gw>|MGZld-2!Nvgp?}xeoUU_MQdjW1Iu`Dlu8zUciai2|v zV*kZ!@HSV)s)}1`rNfuQM_B~_+e1K&{a<$ks>T02bTgeaRmgj<$Lnvt+Qcl|xAYP0 zzBv28AHEfWs^w3)x8a+fC5l)#{G5v&(So~bwU(urvH;(Y*F860eR!Wi$Zq{dWD5J5 zbq|494tB}>-{$-tkxIiUnH2Zl&d>-nmp7D5N%N_?GMYs!qi;@P$xG9~_CN*W^#*x5 zq0MMk>W4m)WOTv#&&3b#TRN*R$6Iju%#mg;6=C3MB7=|jW~v+x?WTo4xcAw-+n@Q| z@9QmReObwNv7^Z;o^JnF^V$^m5{LCBX0&aj4T!G@>c49K+Wc6Vb8r)$wfJBHanZ0j zpNuvbgHH}JAwSa2+0OjJkgjwdPgW6p0oM|juYGk(w>Y~B8`JMMwmt-Q?V!zs{ug}c z7j5V19-bHN%@~2TmM2aOs04$Xm4Hke^Ko@AO|SI|69II3VKK! zhWbWL!}p)#JiZ29?k1L5-E=pEi`~dOmlKlX=_`se(TG8aMNCej&Ku_= zZS_l&y#A%F2tU|S|IZy+D&8H*1kuPGBC^@GTb}&oZ-e{1gVs)`i2D9AT}|TJvi1jU z&C9$!Z(ufgHZGd@7l*pCn*aPM)KwyJrs2X|(;#iptB}|sY7QNDked&ox-m_y;2ght zSC1UXeCUlcy|4n*hcrFDi5^BzBN|aM|4SQSj31^3J=C!?dSJ=@V81k3R5h@UkuvmL z+<6Li6Wy0?_oL9G1aU_#KEqx~(|^BU=EpPhfKPp)<>oF;HSwQ*N0ydGmhrkyn6VJF zrAkOuuwW-+!Tn)#m>?>KSD|fQC{QIs!xBbk79mX`+x4Se4H8M33ia{Wi+Bp_$%MLN z4(~SlvM(e)HEv46^^av!Kw8(%dle3~Eg&**&qI9jgd1rPUJO|ngeULV*Nd+3m9foe zBOdCvCv_ycBaIl&p75(v;!b{ynACmEUv);S+q&A5byMO)!}po|%T15Na79FfZ2f-m zruko(4TqxCN2;ZcXoo*X@ozApH8Uxv=yq0X+3 zcU203Jipp7($gc5W+XhMF(B|IKFWj8Y;y_TU9{6<@wpa786b>Be4a9ZF7OR|-1#z? zU}(`9kJa-HL&{eM3fIT70~ijo|Fjx~ftYmc-_=JjUe_{UgTN8E-OfvRo2SFHkNx;= z^sL-J9dh-v1n}?gS1DBhf>B=dtux|~B86Fl;kgFbe8OJz)hgop#;J|<1AHH!|JYU3 z-#XsTMQ;sO?vD>+L7$U5t^SGaex|!TC%o`tBH-G`z$mt(q`9*8_mp zR(dI1+MCGliC}~flYTFqzy%P7pBGg>W_$r9d5GcLqUl(hEHSW)JL_I?xjTs!Qf1U~ z*Fm`X0`}t`@_uUWCGXI6;lerah>EhBiIbt(T3P{1D8b?jseySZY?md}?C<(7;mL@D zy)pRtfQRgBAo=pltfzwZ?j-DF7l+|uaE!Ls;~xaIKYwn$R!V*pe}wN3RrOZ89Sp&4_*T1onY!-Viyonjwq*hR8l&JS?~E zI7S;xV26L_T%Cr$Oc1?#>8BvKCiSo3UtWphwSP0ZT?@aF8@qSv@bhuYOCFqu1h5qw zb1qpf-+IPuh|*!F*^A;{%fGiKa;zQ^1LJLz2QAg*d)>&J2v2)-diFB#@YekEvtY}t zAb)~3xo(sVuEDiBMahdBJjX=u{D+`TkfhOl59!7Nf;OMtY}y3p`KjAUV_bB~G`v+# zdWr~#wU$QHJM6Q!^*Ec1BANY=PS?&qm!hF%pI;T^BT) zh+a9y$lTm^lt{TRzVCzW>gi-KE+2f~*1ogf`sx}5rCAAyibd_fN)-|}DZ~Z$Tne%w z-o5@E=enlyGqSM~+@g@K7A(8vbqK2yHqQ1^a}=8tQOLaapbR;G~4GfTTM@pxDlY=PqM9~iCQF|HUnUEr%)o~kjd z7pMFQ24duJ(QNk7z!_)VPGnH>qwYgEe9rOn{_hcQ$GO8D3dUvy?VDf8n1I zS92W}+O2yD3CKX;&_ErMyY?xPpz9AIeD!aQ9TrNRkf1Dfo8Qi{pKv%BS3}3Nt&nR1 zd0twgQF~23uU#uy-P8R^R=$%?b2_$20^`+PWBf!p@=q&+w*4rnBHZ$X<<{>Oq9Gd_ z1&D}w>izJV6R6&#e-Q5hO|C^!G;$J3hfnN$Ri>34$ zsnvJAzXUy=Yvze5ubDCZ0(YZWp(@o2rbM1K)`98PY9EKBTo zdxUR_8PDC;HUUvgG;w_o7=z3=YFuae)V$HDDuNMxI@*(qamA@}=YwOy^z9cms@ym# z+wr^cy2Uc+IE<2U>BTXv5PWcK@`=(V^ctFKhe<0a)!w|!jC8u=Ky#`)aEalZraM)B z=Bg2q-7Rea1HnMrX27st4=!bC+v+p?n59n5@EV(qgEB$0L43oHX4y|{9?#?De zg8^N_d4Uq#LuQt^1XkO0AD#Xf{)W4_#S2$B^nV2(%{*bhKK%)0$nxHfFOz#s=07iK z@?YaCc=NWpCyS~m;C23gI{tz#`GO;F&fz}3{_p0=LQL@a$T!^Y9^^^jlfX7uDf-TQ z*n$tQM8xFZ?)0_|WpX`Yg^{nAA1$RP9_t*&9G86 z!pZq#i2oYL{G9kG1Tf4HXwfW)>CACBCrD%%YSxGfDy78*_CNk>qH@_qrCP)+pN8T; zJymawHsfw73sL974meMb3g)b~hzwHwy=MNGqX$Z}K#Q)-@g#1!2vDEV98GUwrnJ;j z#g^1w8J~f}Zw*B+tM(P(06(Jdb#9!tR528=g=S$Nt>u$Un`>be|A9C#7b+exS#Z2+ z^uxwBvOUKW4Dx@#MP2~`Ld>k83m6%MF9r?4T?*!!X8%sMPGOXcN#aRi%NPw*5LO&3 z>BoCI;#vPRU(xq@h6fJgZ$w&#-}n=7!49HsOkl?lE+hj@^^hOatv;xZm^JoQf3OAc zt-udY&1R1)b}0S9d9$64pw1Kned@te0ezGBt)q-~ivAy6$aH&QJJoFE(>zJxA-?It z`HW)|GFX3dF5o^)BcyyIeA2|sq&+d^6UpULkTX7t^aBj}F~JTWEiCoG%Es;{h9 zd*&{I7q5wY-dZJ?Kv70z&ieG==}ka8KZ?OD|6xwZ|LuE~)2FKJ%*zNR9n`;`3pkm~ zz+ic-S4$=LNPY~w?YB6gC{0q?JJ<@arU{RP1}R6F75p%&&814}i~?L(0v!U|FIi_U+$^iN7!gmVBU z()U*(x3QoQ%iv$bDxOt%N%=GPNnAY!Z;wdmlHt2rh!}mf0Q>KeD};azp@gLRitVM6 z{AnA%wGGu=1fHwx^?2~fWWvoPspW7aq9#r}@YhL1f@n^lu7@1X>Tfe;UY2X;m7k3#73TgfnR za6sBgyZPS>D_+C5+A*kZjc*ChO_!^$pB+u#6>$9~#IWpuJsar4>3doDP2GU`-2xoKUeFnr{q=;{Xs}n%9edEk%6j zN-d)lV;Eo&*AB6RuH9%nd&C>mGRq^ACEu)A-jZJmwr?rq+3$T+Fq!(2@hPTCQeBoB zk|cS~2}rvc3GCN3AS4H(_Pm=5o%ongSBV<3u0(jiI~M5j_pb+=&rY;4=+6A7mlfV8 zcG{})Mi)}!(^?Fpumv=^-K^0Qt#)wAv6}B> ztY6&$B@U2^_34Idu=G7wwtcG}smAvpr~8jMF>n}mpYuj@nz%G{BCe~9?^P9-^6v%X z0n+**gpD3QR+>Eq!YG^g3%T5FZ|@sUX@W@g6N=cBNec!{GBVlo&l-C zSI6PFihXnex==y5pG%kFS!=5LGMDb&Lj>k!Khi(oS5^M)n^Ofy0{n1TSaH$^F@EYA z>9-7dH6gxF_+J&_#vI-=PVbCGX53iH}pxF@=<6n46|1v3~8e&PE7lB96frIy?h z)AkYWm-5}$YjLXJ38R=ZS$pWopL(z87!qn-2YjG@r3Jv-UMM@cpvo;cx zxl~co>3{rL#2;q4Z(x#q3H6=0zUAY=-Mw7e_e5ork$W%d(Ww^A`#1y6UsWa4pt6^$ zt8>1%wPo9wZhgdvT?S?F)Y_?n%kwYx!PWxhiNhCLwjJ4L6>1_0;G(=14_QoaCl%4Q z)8EybGZ=uuwJe(n_y_Z%UXOQxt#P*PzZ*RNDF&3DkTde(DAY1aTNpnEOa@H*PSkrs zbc#fGW4;n^tKbS|-V1MqjBdTkM{VUn3Z-Ne-_H(@GgCa5EQV)b-TMzad;g4G?|`;N~=V+zij8xaZRxo z&5RD`c3@pbkoWzG0|@jMpO+`El;-v`giOtWlx>`l>8?iV^ZG6#%Xe$xz46*fU(%+E z^rRk2b)yd7r#{!e$nSVf0U9mpl5Lq6KArLqGwpS^&hey+F9s*xk-4<^ZkWFS|ATU` zjB1|??M)ZmX{l+aQ;9Y8uV25aqq+WKH?Bvs`ofqAG*MF~dt30b5(qh&UC?kDw($=V z`(XB#<6;%1{~q=HoY9?U*|lE_nuVHN>Rvp*&YKzEV5FRV zf3i>Ih_9QD?(P)JIO2Az5YFN9*L=ItDKzB1Q?202N=VSrHpvk^Ao{I0^O;ME!YVO* zHYUB?XZV>86bIsPE3BhVn8MPOG+qQxriotJ{_D8!`m98}^(Y$caZlOrD( zb;q{m@DK^=6laHd<&zIUx&bdsQ0!NEqKx}ii9ybL-I=3mACTS*tV@e^1(HTwJ-EI* zK0F|~xdmhl62)&aC=eh|y*bl-29SL9<{e1NOAz~ac|TOAr6w#c%r(^YorHht${yggQNx%I*)C5Bwerky z&j7qeR&t5^n7SXMLajfI*~-`B3sT~+`=P37wKb5zv=YgSp_UWEd{>6=;tzkk4NuHy zF%&?4{9lpx0ASddGXce&{A`hbzyF&?-2`1xIjr!dy-b6BR| z$YPH~AnQrg`;6P3$jw_Lwb73|KAxtIX#B;n^BLju-1fU zjbwNoqzhf7O3f2hBda$_n#z43!etJ19DAN6Ye!R04?OKjG5l*}sc05oRQ=CLH%Ze} z5Z1x`nsDT8#02;1ag@0{+dvPLl{n#1?uf^ePKVQrX z-ihzIvsp@rzgQcYd1Tl*lwI|5#_(dtG}-!B->$G{#kO5TL?xQn+oD{RVP~S$O(`$o zgtxme{`s^_@P)^MeQFEaHIDm_zS^aqzOb)w1X*8#oz`2w(dHWKh5e^(wc_!$FRa2U zi0&90-N#@h>-WSk=t8#42;_U^s@T~0u*jzyez;YE)-Z14`9vNiE|HXOmc~7H(0I&JFPS#lMN`Q$=%!cpj21Y63Y>`P58QKI*f1i-CO+vLc4%_h;n{nj6X_ z3}*OwMaDSqp}4Lq3-uSS?$^3HZ$t19D7(&Va$9n+Tc-vF8|&%3}m1!BpVM zdZaKd#;8m2Uld030=C*6Z|}AG2RKm$v*j1oVG~AQt@s3#Sa% zBWUTW1J=JYS1O@CN#uJFoT zKbfT0x;;DHZMZSh=n*WSaMbX5meU7ubye+1&3mIzT%b?0Dz{_Yr*msQAGNd8j{ceF zW9t*Vt67DhhwK=^-Kh^SLE-?Aqt$ghxho}Z$)$znN>#4bg}>SMykTVoaZGM|PbD!p zSuLCc{-);ke~#YvU7$a#_lQCam>_oOT?YH@OowM>y4AhYFMItB^Yz6Em1fFAnK~N1 z!`AqU7hTqnpo5!3aNk%j^BW#1<61 z)fyR>537#YKXt%5d!e-pQ3i1E*l?!n(TQnpaRexw9}MhU`zrN55e-)8>GjRcxr(kL zZe=Jn2st@NU@FL3(}#WuZ@c}$6?n|xCyb`g3|kD@G=e)Ix8WG`F9yPkoK+{RtbnJ* zsZ!9X0Yv>lHCaIVpGodc{(;vT_I|8AKaw(ZZQuPBg z*Ke`0gC{pT+7qSt^q|t)20rvAnnq>1Yp+Bh{iuAVCjVCjb8>_Jg8iajxZ08Wbf&3V z_{de=vG3oTXfEywc9;I7Tss9Q;HSQdulB>|QWKVrpKeKUa(2DrSSk)1R1(8^dJTT! z_zzT9_GgNx?ohM2Cm7Gz)z=KV&^}Vfl|Xgi{g_9j!%rU)x4=5+{EDb@Nw-d*eFHI1 z`hr&SA=`5B#+SN!#EoSB-;T_;CI}RM@6PK_$q1@1*Tf|qB!JHye17)kmFdZ@Fj-~ZfvikSR+1po=069< zlx^i_HVySWg#tEWsD`$xC>y`K#SV_aqp^q-8%P!MqB6u`{w*mvn6I8#SmFVsp;>nK zy(Tk6txy51pqqf;P-2-9W(2_z!J_v#@&*9)Hoj8;~qiI*i%|P@wb#kQhFYKZTiM-sL z;3B#8vD$OJ-rD_mZ(MzgB_vQ{jkvAp1?EBw)8u!*%f-e~;@l;*Vn|9nzJ*0-U7myi z_o-nGVYsAN&xASS^tmK*XtH3++YJmdzf;oLzue=7Z@&dSgDR)}LO1v0#2Vw#V9Vd> z(owvEi6!p>ertY<-Pd4B3q*{b2Xp8D5kb9AR6LzAY(jQT4QAY83JgrWN@|e``XM#9 zA$h*lD0>w1mGB($l3gl%-){U}E{Q{sbtYlm4cF93cddH);b=BH)o$AJ<14X9b4G=> zsywJFq)yt}Ns!sk^)?(kv2*Z`)AynryGUm1wZRI9p8kHra@KiyBmD&2imqoMh5t`j zvu2EV=(#lZ+lz{eJ}EVYcK=tcyx8`k{0O;^bK(paO)awz4+u8iv9xdKZ`h6gd*y$& z&2uTjbfmiwwhY6B5nGtCO*dD@4tbv$&#+i!`Q&Z@-R0g2Vjx4&zo33kd`!)H*?FZg zTXIV1;2|99WB~<*ki-FQ*5`M_sg2X(qLft5YSS8_;>NtQb?x_uY+7C2(cj{kwb-h) z=F@TQ(OQ_V(~Y( z4Il~x3x|7y4?ut^!b2kMs^%hoE96nc_C{vR3frv-loDLNHi>Wb9ZRL*d+a=H7`Ii> zcUf)=+%SH5HHsRw zeJmVJ*d9>(LDQ>^YU_}Dk^6kGR&p2zrM8YV-~*aBIZ3cxy-<(w}@v z5F9!%|HN}?GjXY(!*dQ@olSuP4R>WcmrKrKw+AdTl}HsT-Vx`56=3wko@TUsX_1m3 zZx7>SAhc42D^DTBD_ow)<#+>A*gJgN)5eNhERRxVXdm>~>aqatKR&njw^;}6rYZGs z;t2Vgbe{G3jSHqzPu3=6g5U{$FA?Buw;woqyTx)**!A!z25|pVE8Y<{mbAuINDPQS zI$;rh`!DXOAKACJ4$pAQfPPJsbYy@0lmLwEin4V6jy?FhWfD7H6Lw-UN>V@vGQ{m$ zH*X=I>B*sS_VXhipbvYR>|<^D-9t;_>z$QH$3;Eey_K<f7u>fx@Jk*`pUVxV%u`I7Hh)#zF zk+>$8o{JfOwWy&&ddld}c|dUI-k&X+9#;Uh`?pvqifChK&vZ!fNqoyvv4_v&%wk#! z1U`raQQRw*rQP@v`A~rjt^2<3pA#cL#EwFVz(dK`p&7U%zJn{%cj~7}t1i|v& z`{o|gs}5*SF5U%WUvK1EWaF2sW4C)?>?_3DIJKoEPu6Zc16 zTfytH39+IWAj$qB+y_W{_Sc;>+VMKD5IN8}(7&}yff0MI%m^_$8hM)9(01YCJtgo} zX$`xVYiJTxyPA47j?*3m7KDI4#=DDz|V7TpgB3 zuZwk$1g2bnN4p-8N4x34N)U}m$mep8YJ_;%R-l82eZ{MD8pOPuiQQ~*xzM1}wk!38 zZ38QtO|fc2t;UC4$q+4b7tx!V5&SRqar@k3W0^FN27lqGW}4X4_DN!pzCp-5i7cTO zj4TG(qW09zjA3T5F(dS*(!=%(f3_Bzjp;{0h4~x)#>@Yv70`=5u^?VAqD6}G=ba(- zQ_rGF&p^&+nBjj>J5rtw0_@YbJ*F%4SW9XfW&oC?Xa7vn)sVhi|D6}6gb)SfdDHz_ zhNZi;Va;fx#*U?N?3IEG^5*RD8bLbj*5DS^&Q+-UK@AhZp6?hwGFrGZ9xS=E%J1Z7`R*~EQ%`CS-lfH|6h$F zSl9f?tK8y-%wiQI`TwNk84uNfi?{UY=Hyzw)0hFX)F^xkmh!}`xv;xLD?`*v=XZ~= z*eK=4&gZ<->(vX%l3P2Xz)uG&nUP#26>k)aeUH%YbhUDPG-WV5>Lgcm_Q%*hM*;YH z#g%)*n~5^<*E*lUxf3PcW7^lG1H)+&b~}t|UGn~Fz4_?g?1nY$ZB1rwS{BPlPGvS4 ze=sq8f83owh$p!_ejG>p@nVQzh8s?BD7=3&mV=9{y(f-c^Q~40T};zrg)LZSsd}^@ zxRnh@e;TIHV>sPL-|lHp>K*iP3VICZOFm+Wy|<<*ijU;#Asprt$eSO6NWXCnRyDSe z6MRzm0d)y3X{vX<7jQVA7nOqT50Qrr4zuv`@0jx?jW3C8`M0*>9eMv|#Ia-yxX}Q> zD%cCVnvyN4fuPR4h7^FaAEg_iBy>0cDB4R4i$}oX?!U^P1vc*g2)}azQT%X>&q%FT zN5tI-sL4*l;KaG$>ymvo{^g0tSNnk+=3i7Bnk$?r@1qVAUvGQpJW4t`pt%z&D6YO( z?u7fsZsCp{)i%HR_Vw(kaLn&<-Kakmv=hj!{_Y{G=MdobpX8QHcAmR4vn`XxLQh7i zUU|76v7y!`Rr-^>p!wSD{&ap>BSV}*J7#v9F9U6{=aBF9_4;oz#_|0_Cxj4tH!D0S z0n+Q#_U=Fw< z(MLe0Fe?v1PH78OdkJIoOYcg5N$-oMkx3Zg?!V7;kKVIG5>=+)a|9~&2kJM|Kp1gX z`0T%nrrW5@b!&p0p9{2_@UgPCn&qXWrjATZw=G;=Bu|#tR#)F|T~L3cqnJ|wVgFpH zIWrqN9V*n}Yt9CLzgnoGR**;kbeH!zCi2IRhwnC48^(A<0s8Ekw%~H|NaWARIhNgX ztIOa^>TjRJ=;zG(nbSv4AvfDTLlMu&v!6vj*P~9qU1EaCLz1D)t>MK`97FgY|2oz* z4(sJgHQQ@SpbXnU>60>ys8+|{0A2K=p0deljG5Uy$TI#d>@xmnasvguXn8P<;X~m))Z9Cv+YrBn+;jT zC`PsgTq!k{g7bKX5@(Iq7F_>$9r0oJ)k2u$)}^e=RWox^a8nZwCo4NKkYOg_^UX*j88)kMTQwN+JzSs0z@mnJ5xuu!`5i3ysK?gbM*{}mC`#l?Nr z)=c#~VnnLNr-$dShw${&@jX*PvA0!Eo9=x1_AU4q{YG}M|7|7!&}(GFKUR1(bS%;r zajok4&IfL5ES9>%0lvAQ7k7^-8a%kix*rC%>ze+MzNgBX-zrMO?VGSOUdVt%5|zDM z;_ql-Dw+5zU{}n|caMaCgz)y{ED0PAuc~p%rffc)g}b;2T+QSYlTgJ%>aF}6%R&NT z92G-`SEGO{5g=THfh^zh&zpVA$}{L=$DcL-CT6gF zz4}g`*JPg1^9_JN^Dm*vmpj8p1mU}p%(3e>1@V}Ygz+b~&v~EEgCWnUra!pSV!d8V zq14%qDmodQ2~U%z!}1@FzMkYQOk+ zzGRiF<}YZpe6WuA!J_p91bC|EpJK<)-bx9_UamZ-FKw<-I!gT4P%?_{NxxiCv5(ez z#zSfG>GhjITJ%o3{WDX7ov%OZe6Tz`-O^HItGd}XKI9u*JD-{)j&T~qAI}Y5TO&O+ z8)n5P3w4Dt=;&9qE}F4RKH^FyYV8>(zS+3GQ>Podtl!UW`D=zczVS;ZWNr0fp^JVP z9^{`Surx>q$mC>FvGnBER@F>@BRxE)9oJmJlgb)7pf1{_6e@~tWb@;uG}b14qn%T2 zgQN2JPH$fykhE{QzRof`2gjif6gVT-$C1_hel@)fgH zT?cXFlg1fT!KVwbQ|PO?p>J!88L4@7Y@PQF5tkZ5Lz8IY@XrLX1LpXb9KVw*5W#kH z;*N)wtGb@=tA)gEIa;!BTjpW$TOY-AJH_8sS6htH2A=aAvYT_PePN1=nK+uPg2jp`0k%}q^={vS^co_x(@6lj`j8-vH# zMwXN8tg9^g)m!ZtH3XKW7nUB@8VWs~{ zg4t}H6Iq}23;52R%d>P!mW{@}&0F0|D*D`CVVXgg%xOU=uCE$CM^B@fB_n>tg}t#! zWfHvV{?6=);;5^=4Wqh_D+Pg*N7o_qCe5ABQU(r=()cE*a|xqmpNe}Q!2xtg3@lSz z{q;ap#j%uYunOz6yO zZr))C1>kVGX#e3&{9E)CQwRbLtCRSQj`r={Pvr(qM>VD#tpYc`pn z3j(0Nn~FoLGv zZBbD#)_<+*LM5=nEOm+V7@gDD<5H?lm=Y$#0U?WY+)$6bD+g%ZCaK~qYvd1wMs01Y zb$pGw(xN4A^*L;t`sti{wR@-QE}b!~H&fyxKP{C5+^aQ?@8V@B$?wa9mIF$l8$+}v<3>Ri$2{y3bPx@ti$%_Rf)DNjjwV}AA3_hGe1)W4EWXmLzxP5muc?L* zelaB6E$K#&pD^fbkTQ? za7fGGxAX>3wsb2YAn=DfKBV92_1t)IkIrhvmiFjbJFmqFBq_>QnV6)wn4{?DVw9h) zG>~HRf#M!>bXx>bQcCK@RapxCjY2D1pg8UAN8ldQ=x`^dpl6x(O;SIlf7n5DIPT)e z7T}FM$JCK~!<)igF%7k$CQ{ z+yOFu%~{~Y*^?jV%hl-}j;B)ODt<=%Elm?m#ZT8a!=|t^-c13}A;5KQAPad$PTM&7H!{ zZAWl;zR`XmgFECWeB)gw_jQeUf7%RMDjW$33g%Q7-%?c_P-GP9e6VVj_b=J1JYAsW z!4smn)Ktm|9%%nUCd&u|F0NcB6JUmmL%oLUUrvMeA@U)N<*Z$EZOu zqdCoYSpmMO^TK~Bw8UGp3%lAF`!yTb8CzBLZz8v18Ht802gUTK~auXODS5Pn+T*zNc zgbk2=b>xN4~_p8Y-+z*mm#o22~hhwi&l;7j#*Ia=| z&~M`@CZG$4?CMWt%Bjmua&r^xzcap|pr-eq5b9g}bU6gVaZ9#yZtE(6=45|VZk16asQRcn1J3)?b}h=m@jE1HAnli$fBxEx zEFcnHNtBZc-wnxeOc;`%X_Meg)A!s^z7Q0w-kdDujeKdxwj?=1m)Cx~Mlz&gwl8KAV5P6Ln*}Rg@{wZ zln;%xTezqszUSiL&f#x-Yrr37lA!~V8swHkG$OONH@Pm3G);dx*vh-+OIOuYXUUbJ zN?np-Gl@)Eav>0im0b}I@Vut#6Z4=FdMAMo>^wcPEyXIIPx!uP{%KK1gY= z6`C$tO%xK6spIWl?W}|(9o4ICGNwJjDYDq$;NBArj=BjQ_gkgHg6sI62!z>SXkK6 z9**?AY>m{pHim;T>PjEY`dz-ySGzQ>OiUe<@gEepOEQIqX5D=pt`?A8j@MNmr;ag7 zS4UfdKe?r%Bo9j8s3uhY`0=BO0QmRsA8}f-jS#vu`Ew8I!;EGmog{R{iR}^}bbaQM>HUIXh>jr>Cd;(>*;(Cm^~Y7P%eze&F%|y5hPK+FErk@0ez2 z(362PBHqyH@Txt?QlGNB;oKL~MlJVvCXEt^=zFBNmSX6Cg-w+H0-9wsc+0^R)%gSp zdwUYqe7c`eu1o9KKj1(z01bSwJY|Q|>18><-y<-O=<<5SV_hKoQ=sDQ@aQ0zIS?F- z>w44^AS)+*pO|mYmVlV#gEw1=>S@r@lKdyG&03e?wcLl4LP7dX0Ii?PdJLd&3x*l_q^AdcA6A*89|LH&t8mrfZ8WE??W^jA|JlC ze28Pk`QGz@)F_cX@iv^WMa6G+&Oj0^o`Y@%Ej0uPSmgANpQ$#HXs6_=F-wEX^k zg-lLn;OFL6If6c5E~N)O%&WXZhh3SB0l-^MG7Pb}q>d7R?P*x0=>SutLh% zB4IKOEcIB=CuOEsQP6N-`e9tQ)L%&uy!$>lhHgoM6KdiEXeWpqJu&z#bsU|wKK#o) z`4*_=3yRiqz!B^?7z`>{KFsBxoG}eGsFRKSKs;GBVOdjN|L+ks;Use1e&M zF;Y8o6i@xHOhy;m6W-ZtBZC(~U;5NBW)IKT5n5VlJ(ns>Xx%Y*mRcvLgESvvDXY)H zcs@_#xI3(>d3l= z?-G{U4F_al_ryw;K)q#?E5{8Dv)POf>ip%Dn14SD&x&3d`8(4WJ7GMdk0Po$SfOX~ zwblhB!x?Wa9t=z2@s*ZlZv}yNQD`{+(FPeHZx^v=D8Tja-&1<(KoEC|R^eptI$&h# z6WAmpr`o_Ktm7@Rej*$~(Rf$pxF$m}!n2r@TgOcK$6 zAC)unD68EG5qUsip<^iYdd0J}fGBhp2UK+>5jk@!r}e=H+n6D<)>+$vlLXQ_i0*W(=f;|v*i*CYD>~RL-b((X|S=% zg|c!hV?oT>S*<_Z|J|QEL4tkj4?nlmqw#jr|+DTEL%O;uWNP7I!J8c0l$2EeT@8Qc7ph%=S(83srIxD>7f>0->% zI^Vl~?tW&dsvl~aH&s7L-92B+9*h-uoky{hF8p`k6B%t>GtQ5&l zM;$uSg)rnbSTaHZBL`>o^B!7>Kz(e_-dt6n1bN) z&{rve5xV_LvY^oO_kfR&2Oq|9fNTHVHajo27D zwcowNSoTPJM1HVF{Keb_BtOq2#+T#o$XrtFaUN0&XyO#|As!NOtj|&P)MTD{AOCdtSd+bE%J!qfrl$Op_pCu+ ztg_|EPX%o$oDJ>$4lr&C$gM5NU1}}hUP^}=?+>Cre8=!|&rPVkass1#W@cXwf#CkA zA;#@OEj=3b+*FO#+-g|iR!qyZ*>!u;OzeKN@Gxf*&Zf`|N@B*3VFbw%c~mE>`}~2< zQ&P}*ITNNbUN_stzx0lib@d=zw$jq>gQ&nWl=>lco?3eu0Emd!-|J%tTVH?UK}xP{ z@l!4()p$0C(DAbBkM^(~XYkC%T&mHmOHo%Sv;^Ieg{n&7Hj^bxp(i0Ex?DNk`dA}U zCxy=v-VjHsg@jF~TJBWisqHZa6tTL%b4Asa}Eyg-lf`VL`b!2gB&i;j(^ZfALwpFem;$Ze z^IZDnS$g_W;cbJk8Z2=#kyA+0B%zD^Pcao9E{EIW@wS<}Ulo1elt6gw&}&@3j`D9r zI7s!D5eCf8t^RmqXjg-GlQ8w_L3ivX>s=3y*Ncguy6u;6fI)Y|=D}+GO@R zlJ@M&s+3{_1yw~9e40htLagmEij5mO9;D&(vc+<;%=8=M#K~cd;^t7Icc{SHFnX4g z&DHJ=*1I%YcFPdcM3(Q)>F3pj7HA3icfzi#ygx_FZm|+f^wqbFT-bbW@vP_p*A4V1 z4uLdw(r;@qv)|$s+1KBbM9-2XJj(gC}jANAYRFNd!Y0~^9h_0sf#&x@ktm|4v^O# zQd8#C|8)?6_NLdouoF@1rv!vYGD0O7jKo5DGt$~{bpPS#R?EoT6Y2W1VhucJHhCAv z%$(|y^|$#=_v`jzE~JiT(`Pb@VDIqKD)F5M$J3lpoI~UN;F)33m)CdY7vgR*Ki%wb zq@IjXx_6UKEL%zGe~bSAnP2RAU=xJ{=*(+^j*5jarN3y)I6Y$l#>GXlHeYh(%b=*r zd%3~pMf4NY-vgMFG*|mR1a-!0t&VTUvH1O+bia9lpghBqx5OWLc<%CdMO;kqpEo%C zXRphg%O-GB`E0|p8F*$R{+$Fofs!L_e2bpAy9}VOrLV6~*U<1YXnu1v>v2fnfE!Hk zm+s%hOHA{@RgmfJfmKFp6#75L-N~nV%L342B}K}Vc_5a z?7T*TRM+O%BPsW*Fa`{bPYB&jGhsjd@}DRL?l1H>7)Ya!2+Xzj+5Q06!6z)v&$>D~ z?syVV*Rjd7Ar=k81)@|q6@&3Az1H04I8V&-9{@{q1p*1aZ`F&uFNRL%?-MHuH#C#U z_j*klQ(a>p|KUjJB@#6IP z>~z7fYl{nRC?$o&U3>*W6E|Qg8~!}UpYff)J@YIz-ER0ym)L(XK(BccVlpx%4Gl8j zq!3}3a1dC1yz;Smd+bxFCg%4)-|gCIu5s?YpE!oA(kqjEsoi~5mE zvAV0fQwU$4Kt2E;&~xIarnhYo`=RUnOLb#vX#M(1rG8DoEH0h zcKpw$Z8sN$8R>`8mr9}q;}0luSMlTlTQ7cdR6v~S>W~`xbJCJp2?dPWxrc|iO=5lE z2PYG1&ctr|XVOCL;MV!>Kl6GgR_yG?H@u(sQNvLJoKuLuB(~{+LOH7UF2dPeMu(}g z@@zI)W*I38v~l!3lnk%`FdgS`c7d5S6=QzpSw?i11wB%e89W};er}Sa%e-RdR1$UlruA}_IAsH)^P9N9{U$7VLgDIk9v-Qp!V`1U% zjwX42lY9TxYP_Q1)`X`?xIbOTZ-CtX8MncHg*RzP{hgj^sq4*&y(vT(SZr4{1sjxQTbg~oWjC|@FmmRJ}Z2- zb8CMYU&aLMhNb!6U0Pb#eJZ@_784XVEPG83^FupF$kZ|Cg>+e6l&l>(|7I&y@MGy4 z!)4D*4-MOnd?1~^_4T~zT&&+GzgxEZQ#$-zP&7y!JprAF*Y zEv(*q;}~=%?aU&Cmpnx+y0Ga5(!#Vyi!kBQ+WL=s4@FUm;VN3l3@dQsgY@71EJ)Ma zlRod#WkRmb<*DhHug1lEo&|Uq5dY_U+3PeJFqsTu@fMO*8S0#!g2!Rv(M=t;=q^wT zV)rj)rJpro2nYzCrh3zPdU|focOR3zF*BotOJCXgC}P%vr-kCEuz2vSoW=(aeQ6*# zr+Z{SnGF8Su%GC`i3W{(oeYhp_>#wBt6YHDik@$*yGBLbvAYnqytmH-^C zz(BxZy6Te-6)|y~zm|rE5*Vg1Gc)6GJopqdL~qtycqJLw78$c~mf58A`s=TLmw$)F zT;>|j%&+4%Tb2vzU)wk3{X;72FK}PYgbSWIZ@6^pcrOkO4D`Q*o-_7utvj`_7>%08 zz)bqu>`nAF6kUauS4`cvX(a$fB`N^f`A*3k;ozGSnq#kFWPCm6$K0kwzIlf!;y37l z31`qX$r&IaZuTHy4nW<~41iQOnA!crS-MO3;tt#p3B4N20selCxAyD%Ss>V7BVhh0 z;b8YP(9@S&>4Euk`9Qhtot;q-kVl1Q!ppMtHouP$LBvaz#_(`)sc+v7-roKI29IQc z!46PS26CVC{I#Candpl;NGNu&iTG7DYUYsguE^=WMcl`7O7R*B8+6{B=c#IX41rHt)S?j~bWQ zQD+OGloYZ`DAv1SNBd;%w{C!Y$X*Pg=ybyxDKkhyo|g zluS%mn3$M!)9QdARjA_0qW$Q~(Aras2Q?wT^Wsi-6j51+!O2h%Mm)lcdVJFFU4WL> zM;_mI^le+!Lwo$X{fG90S(V+T`e!dhh*;7ePn?wt7f6;^J5w4w{}ZkRKiB;Q6HThd z#CYhXfP3EcgY8bKjBVkJuMF|vX~9?T@E&bb*x7wh&MTrgS|S7p@vl?cPj5#0a{lX4 zJ&%UZ{8U?33lcjkb#nONS4lMN>u%69E3d@+995y*mK=ng1Vk)wMk0k(cj_0q6E93| zdCKQJ$#FHfLmPpctwMO~*0>OdLQVswCZU*1!2H zJn>`8DEsYMydXKBJ5=O1{AZHvwcIL)$R<<4X=m5aY)CD+|HI46CT_fWwzl?m*Nb^? zvOaOAxrk_Haoh-^d&@yaz|I8D5j=J$S@PDcTgfthb)EJ}Y%=^?Y`G%SO~DvfArq(1 zyk+V7&a;gDdzVO@=sW1Lz%;Fe^@iV62BcZ_L!Sb$*TFi8SDA8fsSBJ2=ayZ>r`x+k z4%n_Cw))VQyYtS-=XVPiN`b^1t;!ROB?$-LjepWr95yF!>? zt@X2=;VoTV4~CTk5y$tIXB)D|ft~Jr->3Cpxw+3?u>;H2Ia+B@O-=HlWP*EEHZON} z&OUZ@tE}|V_Cunq^lnM*Tq4D$|MCP@Z^+av|4`(({_YGD*3OJok^uZ?e4SSV7R-|6 zAkC&L*Wa_*nOyNdq6wnd@D@o0KWgUK$-sE;(#0A|4f~Yb%F5aRlEs9puK>Y|Q7yYB z6%?OQjJ4I($^pwxt?hwqNPVX3qq)P8{RdJ3eYqJ1KV;4rH>BPiUi%oa15Yk?J9}1B z8_=0lyKp$OW|LY+-)<4~!G(Af%)JCz1cd6{>fgG=S?v4H`=#eMw?li&UMloUU9i?_M}^W%~0hSpVEQN+K^%N>E5<=xLpb-a>3jz{N0Vc)(;0&qFDhH0)VE?UnA zMTL0Ko*xo#VZZmh#jCXO$GhCy5`C6ir6`=CRg+v)_a#oJIpD8D!;H)vx>#`{L?MY0 zn+5>9=$G)ESfs&^T5D9*4AXlu!Xm>=Ioiq;7CDXgc{|)zMH1e(>J6U0dHEuIL@2V^ zM26X9Gg;Y;>y6039`tQz{nX{I>0E)Zhw}B>v#oPE-R#LU0o{D=+m)a`!b_i($>~ivEkV0Xl3i1%G8-M zen8bC-4RlK#Ql-b%(|)^A7akFG6Dw0>&g5vYui?xYnCF?b)7 zIp#RFaxH#sy(-P^B9S1A3-#X*<#Fn~D=oyC&ZniJt@G=oo<~5f?s_8c{<$Cc_$h)Ov#pZ%uR&b%>TyG0g0g*!|b} z$bu_ji|j;qvY%1rAxmQZy*IyB#5Z)Wi1~>(`zj!<>VXFX1BefKi_as2KndV=U}egQ z`n`@wl0gJD?NL!us<^sV_NF4~OPA)nApZ<2$29F691=VNtgUm@G=jEDWax-bYq7{D z?%U~MV`rK#^@inD);-W%PGtd@G_?8%%=*;w#RjkV9;>ZO_hx&ro6Zg%yu`4&`BA^l z&lYXWbz!+wNZ&C{vZ#GxC%fL>)%w`!M0&C6eB;N{*vO@Io<%7vuYQ@&!%id~yvNt~ zX#&6HFHwT_bA_g5^Y?j>m`?{CEUv5mJX?imy_ep}{_1FPF3<2q6TjUJZ>T|4f3qx% zA4b;6mOFK@S;uuVv{|Eef*()q_7V0e@AlbY&E5wK*^`^|P4&4aqD;{cQ^0|}d0ZfF z4~q41+!ZvPX2+z4=jR1I5(XC`j&qoXXCt8MV@L`#YG|TJry`HI| zfisxxihrf4;u}8br!&YDn{I>(GN4#%JZVa;u$62vRPwD@u zK8eq`&PNMmhQ$FvdG`_uytnCc9F+ut!>FwlK1nN$lLOdqyDvBZu78<=64{DRQu+MS z2y-Ft8INYN1-J{lJ**cK_IPb3V}b`nSH?r;asC4bQJb=>(cs)9+Q4`9RQR8=LTXar z1|U-Wqzn89@^}=Ady^?SSoiLon;}tOhn2#IG(X99YxcN>@tN4Gc z!kE$rgFtMD>gEi{uIPk64`CZ#L z?12n@@9te3P?cfVKSyq4a*B!3c`x`D44xRukmBAvv(4QHPu|*^6C8FMHw!rOxzqJj zt)HV=VM7B$XQxVm^8xavjS3A^Wn}Q#+2K`r-zi@+t}$yaF0SWVTB6hS8z_yW85WrJ zO&>YZx>8{@^av{2H6F)+GQ*RM&CcA6|Kv+_{C>0Mbw^;-nSe&DUYbT{ovMz|2Yxh)=T{YX7JJ+ zCV}9DZ^8yI)a>hvQFk8l8TLQap%wP&||wTWW&CHM(XD>|tso^0?sMS(lSU~YF$ON6|ivWg{~!j&#O z3rF4)eu~lKmAlREpNiSof_x?biHD;zgKcFN@Ei2S(Bg@7`7K!om;+-3 z9Nvd(zYfeta2I2ABrY|cu3({sHs{WdB}suz8V?fS(8&VdDm&-aojVcXY#H`HIY9Pp z3%H@?WegFuBs<{4BTCyHP%eKnNcw4ax^J6M1J)<9sq_^}1|7mEwh1yYsp^H6tEs~SFdGN`j;ROLv)Gf1T4U_AFV%0< zwfR>J$(A2*j!mpZWS)LH>`u_=mU z{#}roOh{2j3jl2PWt~m89~(TiPPr@CLv>dMmv5psMT7wmbeg<{I&#C@p)m&Z2w>;fdO7oPyh_P9a zpLCdx0w+h|zCYfc1Fi~~yD&*xjkgoo^ZDhj_@r$-Ua_aq;}lGVMw9$y4;t+^Ted85 z!|d%Nq4*+VW*xcJA4^tPQ|oO?=>gQp5B$qPLxGxTrVf_Jl3!#Mk`ArfZBV?q%ryAV zRA+ZdiMMV={L~I_v^SCFw)vjQ!d|~a92|`LO6x`O#5$xx_Lum1Eii0SxV-)DlWB;W z;TqWZ?lRY-=R-Y8ny(&sN3V1DlijVnf-t3i^|EJ4T+P4%(kLmPna0V1^pg*S2~33g zEXgOxwU9@{v&1Yuy7TFKYemq5H!6S^|9-PR?8(Tn`z)+7^zxKwTfpMII{RaRaU7se z(eLMz9(E0P?REr$zCYwo9Q{)4K!)W52O{qJaaYeIB0o#tEJ_Tf#UO>@b3t|NiUXEG z?dtJ0<@f0lYXNIj$^;Yry{jRM{ZoS}81F+Etoq7n;PV z^}KcCeLdj2M&Ec9U)6VuhW5jS@%+}JymZyZ zgTE-rxb?{(+33N|v8gBkYOXmkX{DA*rJ{V%@fN}dUOu$3!{^@l@is#BgHglI<6fDN ziV=&ZvwlUt#jV{HgYDU%ycSl5LRetX71`m%MQ6vAoR9d6V}4SZ6EbY3ag4 zNF9mKVB(+&do`Ea7qU1#lR&?2?TQpWCjmUCi0XdiVXRbS!5*j*EzTU6SMmWDSjYUk zvixQ*=S#83sYq7Jo(y-FDUP4QLV~_>>+DcWZ<5!?&C#D3m0cV-pq@Y zdt&l#dG*3y6+D#GSrWGjuBzmj)DE5|hwl1vxZsl60OE9-Ul8@Ot2Xcm&!RE?5G0xe z`o$!HyQ#&4U#mv&Dd4h@>{MLyPxu)7Y_-%RK^W(26EX&7K>ulxK!K8HXie?T(a=tL zws$7Ot904+@2OJk=duNllVd+HhPV071nBHE9bfA^032Po&T^4T*L9c;YXP{3OV5`b zzJ{NFnDE_Y5oN?nN${#SI!_ys=o8(8(T#n{|-L=$c-#5s&0aR4M#AR zvONsKJU`h1P|XZHi0KYFMtD-zEwBI{l=3mZ7gqiH>lUHKH>{Cl6Bs}=`-0xJbpFcw z^2(yfnP_pR^C@zO8}k`>0$84tDPBpIWCZ`ONx(S!S-a-OV9Hl32#w0U2h zY%}2qN(lZ~t2K%9Q}O${b37v&gOu{P5732x#~ArTDjKpFfp|RkpZOU(xW!}j9FG%_ za>*Kh@j}-0NJqDY}ZaPm=tA*DHkoZ5A=4=B~o9wqm?h z{TEO4FC)H<-GHf!;?1|>sNL&rBfgJnX`(t`S{h@Tz?s_uDjS{kKn3K=!OA@Ir^dJV zt6i=KJ?t-*24;_QOWd58fg0Ok_rbIi(w(omhB1}jZ45-X*-k{1zJ8yImvWwL@EPDO z>27ZO2*|&>tc@Ur(altEaBX>qnn!Xq+K!C=kftYqZ*(x`&NC4K&!rY30%n+^#xvR= z?Kxj3VC)kn?Bs#IvuYYK3NuG4xvb6|pe$`VV{R+&JZ>AaW0(pbqk1S6o%e76E{l=%1Q$^1S@b-S1lrR`{28I2YCGj-HcL|Y-H2ziRb1l8lU}9_YFdo zfwkAk4D3N_e454da*K}JEEMhgScNg2;{$jGUT=RZlv@#u@z=H=EJ(( zayXOOz0&F{C8iY3Zx**$a5uLF?>)iqpN)1#IlyOA+?o1)Ki8aZo)rE1cW)&!eX7z) zCU9uoluY}9a(w6=!OtJuv_kbjh5QRQ$v;UxuT3xG^!3E_zzr3xZ@q#Nwr4Vqu!1vF zB$`(i074Z2IQfCnbMa9Qcr)$Kq9Vp{4fO^mTp@lj)2<^L(We1z$vkibVIckjX4o>S zT}#fN5-xF{g}U4}AU#s6Z7DMG)U~cPcL-1F$Fn9->tmp9Yu4J8o(46*!3UBit*m|) zw&}gn0Obz5AZwpNwK3IC_Y$aJ4y@@I7qfu~`&%_OSD7;ZG2R#09rYH?6)2-(V9hi* zm+kj=q~$*PW`>jy1Q}J!2!4rkIGm16%H6JRw;(cYX^Rft8k-up-+KI?dook87T+v<)yh#U$sm`;(+LIukChR(L8??;u*0La^jr>8%Qdfp za9o5}Dk*;&6@0IyYBB15nk7^pqc}5jmhJgel{V`;M2Lm!ze2$D9sp>D0CXChcr01S zVD`YeA)QI;srKWuyv@nufHET=YYs`>iRlfefC1X8Cf~_<3g;+!=Ho@4kKp&Ad-bx| z>x)qE&HGKJ92Gw7`iti#a1u7m-KrfGyXa=|q(9o!BHqZqkxp=8i&gGLh!Nij)XFdM zlEJ41^Rr*S!Ls6g0IR{@X+%aMOFLI<%$NP%H8@M5kXI1j`;#Rjc+2IVnY*CE?dj5P zk#yx{(TKqX)+sWzf?01dwynWex1vlf`ez{xbQMwR>2D#%uRsH@(uSyOPEy_Dk;w$I z;TKiQuSC~i(7LOCN?Tt1Uv4=<^NInBuudJxVpVXi`qV!RCc%~5a$gq2(Eg>kS$vl$ z1@cK!(%A#^KqgwFU3-JTAW!$nUZvyS%Z_U8?9A`CYgr6$z|1#Pt>=p+3^XzJGWwcK z=f(8X4e!m_06*`K z3_D%{5Nz2c26W%;=}Irg<9Z1pUtP;LzEDhy3#D8;?EQhS54#+as_pFWTX1Ug^~0>tOz+_@(FrF%Yg?BVp*|T!7^{ALn|e0rf5fEGO1WBS)fiFl;E)?Q?!FgEnTymB@74OYwBoEvf+CL^|-W~>rc?3>tX}X zc-ba#g-5@9Fy(!x5B*BcA;rv^RFzw+g5B3MiY^;D>lI>>hiuJKY)Jfh1r1l%wvchx~8~ zn*UC(>n9txbME%3nw}GsyWJobQTkgoKS0pr8dm+7u(bh#++V%rHrw$V!qU8EqbHV<(&)l?!7gIDrr8-KYdckih;^WV;13;rWtEE9y_EA$A3dX(^O(CKsDu zI~_bqIJt{1Rz-B!>%V#9HcKGd)oc97_!08o;bu-ODSwS+J7GLTVE)u%v2{_5 zF9ODUd0&i$cO+`{II>~fl@ZVChkg$D*@t$}r>^&C-OMU|(xokwBfA81FzK2S$-ii+>g9Bf;e4N+6N!z^cOJFm7ITcK{PLUp`;*wAr2)!gkmICh@l$2Vhw2P-CirOsd zxFX)?`-(B|AjUQI=D~U8YcIQPnu+CB5n!Ag)EVBvSijs!MRgAwMoo@IKk@I>hp(AV zN}yNfe_J}H3OuHEP2~x|!MQE-f6Lp^r;G zC>|S7$j-UnvG*ggwESn2aCV6I_i{QtXa)*}Ujp7qpJE*54DKw%t}Zor}~` zVYNLy129I}-IY!Ymph66>(%b;gO2=@SQ2=M>M$o_mWV3g#el!pe$KzMt5bB-`t`;z z-V#Ycffu@rP;O^VPw)5_BPg~=0Uv+V8vPvm^|)B{9ExY1*gcF z4EepQ#OII?8Tuf|6oOP*NWm*C`?ox+wez-8Ra35@A&@zi60omx5c~0D^50dU?TrqY zhJfjNd5PugWIB!5iEv8*G#{ck@x4{eE3dow(%G4rBf+32hiS#Hq9E>fXKKynfK{qB z8?Q(9l=qY(x=MmwPyI!L zj;U1?c*G`)MVFoi`Q*hOj|(N-&VS|0|2fFbIOS+EV(V+l3M;_V{#xa zhW~>EKbu@En!zXQ zur58T7sJ!&TQ4y4XF` zsc*=);K0m)eo>Uo^3%xfaxz-UXU1t`#$L&Yx9=De?%>}^WE0kGI1zJ_D}iSG9O?+qN`;_WDw(?2CCpOpxE zKFZiWc+jV$@b&$OUdC9+Y>dt{XVW^LcT@s8B}V=Rs_!Y1+!rfNSeR_m(s)Efg<2OY zWmcVE72_*<3xy3|9SI-5k4CN-Ao;mzh)yVz=?`TsipS+VZwz<8DFdmhcvI1T`!MT(^Be@nOuS^M|=GcJ8YX7QanTL`yU!i*zgKF^N%W3B{te*L>?~Hf=JLd;a9;d# zFGp}O>}h2CA@EZ&*cCp(QY+(s*wt_5o&oIyqL0ijlM(cA51bxWf1kbpx``u!6pWyL zSG_NY!}~~!{sVM5M*dk8ESF0B)^d6LaYSUCrL<;qHHSzG5A>4MuWyQtx@Qwa`ppix?#h=w@+#>X_t$zx-zhP3pl}3v@Xla@lJ~!kdxw+RU|`>_@Nnx3!E` zJGcF-HG1XU;@R}~$ZsZ~Xowxqud};q7a^~TTp`_X-b#aEci7F;oJ=VW*~PHtV2(Ls z$&JcS?tcQ9WKD#Marl{BLzeIUCp@0G~TrkV^E$GY5S*H+=Q`grd2cgb5r>ljVrPv*}ehIAU6?t8z(EZV4MXR2;Rpm@D&0Eyv1& z%0YHghanA#4QIhg5*Tt^lcnw^34JI5s8=9RgV+z-gmI)WiCH67TQD-O9dKRF7aK27!t8&fT=r^j$x?IOzjzN->n%5Im-SBj z)YPrGNY%rvYWlzD>Lp}SX<6a6^bWW+CW6uzTzVV8g*VAwjSF0OZ--NL?*Ea)sSu$- zKy60VS!5GNnV-lf?(`}sykHYiB3hYsu4;TT_T#c8K}$o}Ly+{#u}eQIr%h9S^^`Rf zyvNM{h_O`^b5{QSIg?mheqtkVZwwyvq1z?ti_U%iHh`c6r{ZmN5d8 zadEv}*7yzT_cQ#odoCWI;rNFR=tjP9`K=gE^iH}1y&`b$tpKF}VM4ZA+e%T<9CKmQ zUC8h@_PQHN|F{KmWj!{1~LDJO(C6Wx#g}q z4(f=AU@R-RJN!MGz*B6!M$#W5s|IEGd`tXGtln_~TCH7WF`kd{!9%{~KK@rox7qIc zy2$i(Y7(U|Lw~*fzVoC6x*uuIB<|PgMie7@L*b|2vkrRKp@Ag0(!T^kPKc8E1AWJ+ zG|I56$Ilg}jWzOG2sYzdI%~*&{>&vZt5U-L8~y}26PVY3g!FeuXQTY34-d%!;rr>> zW#LEy8>|u1x%Vp5X-IGj_d(xqx1L7m;IBl3^tzY2?}m}T+ADb=ZWRqF%PTVvy(C^mo>l zTDS6He`+6JZY0U_G^{iCBN9rmy@}-U{DHyQ($XhWW8cp7Tbk5ev`)ZG%1IxfM@yX9 zlm3es!*59x>pR|`*8)itDOT^OYn)y^R=OnQ5ruMaRsMaC_UsR}A3H#m^u9+gx7}8o zygZd-41Q9C#7pVGFE~SdG)^vg7#?6LOB2fa@Xk7L$IP01L>BCJtE(6kPWQR}6DfiOhJB^7@JkK)Ea<)sDN5-`j$x6voN|gP*iD)U4 zZLX@W-jlTaui0YzEhqz=K`RB?_pCir`dO*A1cZRVmaMP5WE3QXK>a37+0q|+?0c7P zL3k^=?dSrERyxFXj9nd+K@f{EmVqQG&!p>I%9c;X9ft%f+JWIna=d2nq%h0CYW9q* zr)Y14wzvTk;bcyIb34H9XT`SVZRHKX-6nSl2)$-$oYOu`-n5I@*5&E{#KvUrEFZpt zgFOUKus8jGkC*xX-V*YuX1+0H;Bs-*d}*`VKi>V;1dlObz)S2&GG?o}Cb>(@zzdmTOZCFH=d#`Iuyv#KCDxP)*hS4e|nwi>(6Ejoyi#m0oN(L`{%=-hXMWVdC(oQ1=4a`^$p$tll|CQ(L60isd_>Kht3QzT3PD zAQ&8J-K60`wNu}STnf;-Qm=kVfm`4;GxgNXn?0-DJ*?b2pDAG#f3MQqyp}>C>qO9N zVAf>1WtT_r$f~6i^m(Dn-igA;C8n*R&4&+(lVxlxTjz=p z;};*Dq?Qwo4AwKyBjl`6*ZD)MeX9Mc&)j4DF(N>(U*Ha|ip7uM&M`IF; z--(z7clt6lPZMtAgP~F20t2o%nv@9}r;BwfdgsY38Z4D2E?GKtZ>PBY!G&n=*MYj5 zyHZ@L-{0KF8h)cb(!buk>!c=UF=hs$28TCGVgi7pt4--fF#;k-z&!F~!mF=*W8 zbHZNzv{Oi5(Gm@=D*lw;|Jy2orwCH<7~LUg zKq5r-i{?3UX<8O(1jPZYiKyZ)f}dE#qP4C9E;Yq6+u)*-73Hp4tMGIqZ|DdT1(y=j3%7V7A@4ug}w5X!D`~kr@CLodq35 zHN~>uqnM!3cmU4oEUz90+P=M@WnFq+%qoh(P}Ty4Xo`scDa3*X^j_i7MFAba_ErwG zfI*YG_W$D&aYn+;UgGDV5&8|CQ4NM}3t0SLtzBn86U*A(5Sk#uK>_I~ReBKtDFJL0 zrFo8^fFKA+4@E#JL8=s`h!iP7MFCNI3oR4@F+e;N0Vx3#kQ$1F5|Z5E+1yY)Y`XKz*8e(;e$zeSjG9e`#b-Z$ zgaFo*inFX}J~ZlBA6#T7qt)b6Ntv?FPeyuPmskASyO|zcv7|g_AL(0_1Qk-%^^LF$ zryQee$0vI|(Mwa7=g73PYf1l5$*f?KpOayve*J0_&b)FA;dAiepR`8QAkMi^9CSiA zAL-ksV|G>#d)HArRNgD5HzE+?-Udkaj5Mx!;d53jbfXx^X8R1ICKoY@8~}%En_IPr zF*I#X_(LXZEj)MkJH8Z}P}Sv*>XEE0CU0TQw%OmC+(M{FZb1_p|A-*bE0%Q>Bfb*E z0de4~bF#1CIp*?c&@SFk(0>S^{-#@a|7oXF`M=uS?+#aYT~N@Pd%p5jVz=;982>?? zgxQU2?guW$F_v8ePB|2ZYhDgA^yfb(&XtW-qa1riDi_CQtMKO@td2GG{MaF?7thp& z?sMVZsZpt8@oo`eG|Jv>)0Wg98}iJiDe8B_M?QO-VEU*o)Pa$Al=oYBlxeIhVDWUx zw7g>-G@-GvRC~W-YdQczwtND9YFDOR0{ZtQvaPgVpT35Yqa)q>aYjhqV#m zS2))gMTD5OQju!s(nCDAu1g2kdMO|H7JPf3R)@N{`KF-a{xdx{4nmJId3YQmA$P5yY?-9)Be%pDJQg`1xlfjvVIx+uC6B`G|d*RbYE6vpQSBSAv zG10r&%9TJhqbkBcwif@1(S84I3TAnKjfF1F4ciEqY3Lmjrg_WFQF%xN9Wu`e1noIbxsGw?E?Cv*WPbciW9s*V2>9G_iHCbxy&| zNQHq+T3)NOue9SO1%vgKXGqq;34uW%|nywkJCL^On)w= zF%@nTE>rf^O?;Ax);FmYjM63A>!Gl3#B^()x90sxZ?s35JkO#VSI)a0em=W>*bA$9 z1t#?y)%sv~w16n(V3KP$|I+}9@HsfHIx_pa0R-M(eb_-4JitC<(5b3jt@id%^T1lc zESK@$xYrVFJXNk^qj~i#eVbszx8yiW+4Xuh7^9-erDbrLygGS=?3b!i*k zi|1`CxIoxY=n&2Aw6(mf^4=2f=3k%0JAIPX@!lle{xIzOf!Gf{?x>wxv>{d^lWF9J>83MrJ5ITi4tDt54hOhd+z9MwNYs~70%{#2i_!nr##8VC|kEs^$jyXmoVXQ>Mv z{<<7vnt)55Ss)J&}QY+Iub0#H|aC!jR?>^FGO zLP7hV;70406&3ZrMGbZq?e;`?R3Wfs2-%!5mt37}O%c^29ALq{c-TZ8e=tgRmPBj{ z%^Y6#us!#CrI+P&<9p)9vO*V@mVHH&x}#vlX2#->m1=?K64k)Kyg%^AMTmB(L1@~d$6!R|TFwNrk*zP4nIkX8(jEEGXjDzZQ)bNrW@T?J$s?VtOH6#mwVUU% zW3h7sHxDp&O@9do!JBeY@`G)SA5vt<%Crk! zsjcg2lt;~}$+S>;KL1O#GH@uBL7c7OwBdr9C41GV#q=5Sa)(z3;`ZloQqh+Ra@ zIo|cHx!(OlZ@P%{HlbDdZ(6@K$IbLCpw&JWI_-EZg5WTiCW^J;&Mu%#Uz@qffhWV|0*g`=#0~t{oI({TldZ(YoLSE z9I15@kH*glvo<=oV5VQ-r$pC=I!CE~&w6xTdmnUg;u_`%9XuS=3c@(CGQYR7#g)U- z=50q}PbBQ<{AYPV;dakpJMWb`8QJ0Qtx9(?J~aov5%Do7%C|{OR7eUZJiZNbw+E|A z+?QR1w|-NI8aay~2vI;MJ4$m@{wUC>;p8OvYVJ=|X51tAn`WsWC^TyrkFMW+7$bE< z-f%%VL}o}>mJ;$ItEEMesjgoDZl5T)Gp$ZW^fOW&Y#eUbWky;H=O$%OzLFn8SP~L{ zh=1_!DMdSqrXaV3 zRt(J>1O5*>0lbAGcSH2;?lBrzS4GnfR9s=xlFWiS&Ngg{pJaW0e&BMANC*RFH8CGR z61kH$a>py4O+J~s_7>4@sTsrCPkC5~6$^DYv3N%SYRZt!s}B+~j46kgOq1!Xy+>Ve%7t{vF-l$7%Q5YLL>ps-rS zNBYMo?H1Z~lRg8ZM&Ad$WEJEGVI#Y3q`Mvio2f#I z?xYJ5%I8pRyrF0CSY=xox`rLyC7gnf6TvAo3H*n~b-oHn{y7eoL(f_y{l^G+g62(nuCwUG>cqcncwdlcxrg8k*>B;gcf`U)0n)pa-_Q= z4c;2S^Mm{S@igm(r=l9rS6_~gIn6c8pRytq6$gZ!B>Npk;_&oyPjwB$Z8-wZ2kSqm z9~_hU4IH&o%KHPCD_>4zs|XwSPvv~T#mrJijwL*mKwh?!e!4W?4t&KJuhCxwx{4GF zX6l7t^V7oZNru1d(NPZexo>NngU+lIel(`GXdXI%F+xq`fQFX^L+Xk1`pXM@#1;luk+B>betd7%95(h1E2rrTte%-%XFAqLMk% zvI4Kl>D_`?w9ZL4-(N)pTdtjRjOMul#JHsYxl@ z;-fxZw3G?qIvyeaZzV}z+l*60FDO~bu`6hw8~A0NNrV6YIcoi%!c*PJFB1$&yrZk* zrN`wFyMr3vH>3Q7A6Ov|z&tLV(1KmFZS#Gc=S<4!%%NPLEj;p+C`FLS{wk3&XRrN4 zn}kREp{IBE*>y7B0}PPSw4d7+Aosu^c+oVz3N6CCJ;SEhk0uVqM%A)N9~&UUp%&b} z&;`yI`)}1`jN^E%=Or5ty93t=Vez=bJrk$(^eXR%>VCr_-U0SLoRz)^bw0_5f z_cq(ymO-Ir)%mjlTDw@Zs;wecqm+0%arO{9Xfmtx3G@bS&jf ztg+d{`irDsKc*)x$3$13ba>sMJj>n&K=CTjCqjU-&<>OZy-U;$faVHX4pMt`X!UaE zwmifvXv6pmh>oIX*Q(T@ z>k0|Lmi-yrgxOT&6Aam1XmJYMC@=)L)=9ySvVf-$eLkE^ELc z6LvM6`41D0tHORSK)$YCaL*(zw7k{)bkF=#jwekauh~<9LUj;w?BF zyj*+OML)U&T&kJQVofrGvsH#f$Nh;OTPOkoZp=$k6EB{K_q%frsq zZcYyi=j1RBxqjWR9%P8gyuOg3ah?v*b+ftDGPcE~I(3hd0V*rynQkc+iQ~41PlFUpQ z@Cjz}r->?I43^TnDoOB9U?Roq;uR!lZP%)HmY&3hB8L6!u-whh5-k^$$?(Vxy6R(Fbppf5g^ zddS{FTf8T#+BIu>*K!>DtiZd^&}i7yTEhR_+Q9z+AC92WROY1b&^Cy9E>f`W{f6vDp|MeWc4WcST;ZAgK$5 zb1=(ifm8CbbY;M5ps=;cRo3LSOS#AZP5UM&nwMu^?SQ<03dg$Gg+2Pk^%iSSm5$Vm zfyG=t*440WDsvgto2eu}BE}rS5y=YJITCT`o;-7gDjcWkI3Kq@je@|>@RG^JQhob~ Fe*t&G36cN+ literal 38239 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 UFLhv2z Date: Fri, 29 Dec 2023 19:26:09 +0100 Subject: [PATCH 112/166] Automatic changelog for PR #25890 [ci skip] --- html/changelogs/AutoChangeLog-pr-25890.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25890.yml diff --git a/html/changelogs/AutoChangeLog-pr-25890.yml b/html/changelogs/AutoChangeLog-pr-25890.yml new file mode 100644 index 00000000000..a6ceeb51d5f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25890.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "reduces lag in the tgui textarea input boxes" \ No newline at end of file From 22206c024a105e1d315ed114d92b531fdeacbe5b Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:26:38 +0100 Subject: [PATCH 113/166] Automatic changelog for PR #25891 [ci skip] --- html/changelogs/AutoChangeLog-pr-25891.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25891.yml diff --git a/html/changelogs/AutoChangeLog-pr-25891.yml b/html/changelogs/AutoChangeLog-pr-25891.yml new file mode 100644 index 00000000000..8f648c06e86 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25891.yml @@ -0,0 +1,4 @@ +author: "Ghommie, 13spacemen" +delete-after: True +changes: + - bugfix: "Signing or removing your candidature from ghost roles now properly updates the screen button for it." \ No newline at end of file From af922bf020da5d131f7c6e417af8839ca1ae9276 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:26:39 +0100 Subject: [PATCH 114/166] Automatic changelog for PR #25893 [ci skip] --- html/changelogs/AutoChangeLog-pr-25893.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25893.yml diff --git a/html/changelogs/AutoChangeLog-pr-25893.yml b/html/changelogs/AutoChangeLog-pr-25893.yml new file mode 100644 index 00000000000..a75c30cf329 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25893.yml @@ -0,0 +1,4 @@ +author: "ReturnToZender" +delete-after: True +changes: + - bugfix: "JSX files, when edited, cause TGUI to recompile on build" \ No newline at end of file From 55b76360af152ebedb9371775d99e38d09186beb Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:28:07 +0100 Subject: [PATCH 115/166] Automatic changelog for PR #25874 [ci skip] --- html/changelogs/AutoChangeLog-pr-25874.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25874.yml diff --git a/html/changelogs/AutoChangeLog-pr-25874.yml b/html/changelogs/AutoChangeLog-pr-25874.yml new file mode 100644 index 00000000000..54722f000d2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25874.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - rscadd: "Added a \"postal workers strike\" negative station trait. In the case of holidays and sunday though, it'll be a \"postal system overtime\" instead." \ No newline at end of file From 30208d384e007fbe8f9e269f6edc979776c3ad94 Mon Sep 17 00:00:00 2001 From: Useroth <37159550+Useroth@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:49:31 +0100 Subject: [PATCH 116/166] Adds a config entry for bypassing the veteran locks on jobs and quirks (#25895) Adds a config value for bypassing the veteran system for jobs and quirks. --- code/controllers/subsystem/job.dm | 2 +- code/modules/client/preferences/middleware/jobs.dm | 2 +- code/modules/client/preferences/middleware/quirks.dm | 4 ++-- code/modules/mob/dead/new_player/new_player.dm | 2 +- config/skyrat/skyrat_config.txt | 3 +++ .../player_ranks/code/player_rank_controller/config_entry.dm | 1 + tgstation.dme | 1 + 7 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 modular_skyrat/modules/player_ranks/code/player_rank_controller/config_entry.dm diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 72b9eb622ce..79ab2d2b5f3 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -917,7 +917,7 @@ SUBSYSTEM_DEF(job) return JOB_UNAVAILABLE_AGE //SKYRAT EDIT ADDITION BEGIN - CUSTOMIZATION - if(possible_job.veteran_only && !SSplayer_ranks.is_veteran(player.client)) + if(!CONFIG_GET(flag/bypass_veteran_system) && possible_job.veteran_only && !SSplayer_ranks.is_veteran(player.client)) JobDebug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_NOT_VETERAN)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]") return JOB_NOT_VETERAN diff --git a/code/modules/client/preferences/middleware/jobs.dm b/code/modules/client/preferences/middleware/jobs.dm index cee99bacec4..0c9177cddf3 100644 --- a/code/modules/client/preferences/middleware/jobs.dm +++ b/code/modules/client/preferences/middleware/jobs.dm @@ -101,7 +101,7 @@ /datum/preference_middleware/jobs/get_ui_static_data(mob/user) var/list/data = list() // SKYRAT EDIT - if(SSplayer_ranks.is_veteran(user.client)) + if(CONFIG_GET(flag/bypass_veteran_system) || SSplayer_ranks.is_veteran(user.client)) data["is_veteran"] = TRUE // SKYRAT EDIT END var/list/required_job_playtime = get_required_job_playtime(user) diff --git a/code/modules/client/preferences/middleware/quirks.dm b/code/modules/client/preferences/middleware/quirks.dm index 18ddf0aebab..c8a31c3f8a0 100644 --- a/code/modules/client/preferences/middleware/quirks.dm +++ b/code/modules/client/preferences/middleware/quirks.dm @@ -61,7 +61,7 @@ //SKYRAT EDIT ADDITION var/list/quirks = SSquirks.get_quirks() var/datum/quirk/quirk = quirks[quirk_name] - if(initial(quirk.veteran_only) && !SSplayer_ranks.is_veteran(preferences?.parent)) + if(!CONFIG_GET(flag/bypass_veteran_system) && initial(quirk.veteran_only) && !SSplayer_ranks.is_veteran(preferences?.parent)) return FALSE //SKYRAT EDIT END @@ -101,7 +101,7 @@ //SKYRAT EDIT ADDITION var/list/quirks = SSquirks.get_quirks() var/datum/quirk/quirk_datum = quirks[quirk] - if(initial(quirk_datum.veteran_only) && !SSplayer_ranks.is_veteran(preferences?.parent)) + if(!CONFIG_GET(flag/bypass_veteran_system) && initial(quirk_datum.veteran_only) && !SSplayer_ranks.is_veteran(preferences?.parent)) preferences.all_quirks -= quirk continue //SKYRAT EDIT END diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index b08fedcfddb..77733bce0b7 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -167,7 +167,7 @@ return JOB_UNAVAILABLE_LANGUAGE if(job.has_banned_quirk(client.prefs)) return JOB_UNAVAILABLE_QUIRK - if(job.veteran_only && !SSplayer_ranks.is_veteran(client)) + if(!CONFIG_GET(flag/bypass_veteran_system) && job.veteran_only && !SSplayer_ranks.is_veteran(client)) return JOB_NOT_VETERAN if(job.has_banned_species(client.prefs)) return JOB_UNAVAILABLE_SPECIES diff --git a/config/skyrat/skyrat_config.txt b/config/skyrat/skyrat_config.txt index 9b75cc925e9..018fe459940 100644 --- a/config/skyrat/skyrat_config.txt +++ b/config/skyrat/skyrat_config.txt @@ -148,3 +148,6 @@ VETERAN_LEGACY_SYSTEM ## How much time arrivals shuttle should stay at station after its engines recharged before returning to interlink. In deciseconds. 150 - 15 seconds. 0 - disables autoreturn. ARRIVALS_WAIT 150 + +## Uncomment to make veteran quirks and jobs available to everybody +#BYPASS_VETERAN_SYSTEM diff --git a/modular_skyrat/modules/player_ranks/code/player_rank_controller/config_entry.dm b/modular_skyrat/modules/player_ranks/code/player_rank_controller/config_entry.dm new file mode 100644 index 00000000000..224ea3805aa --- /dev/null +++ b/modular_skyrat/modules/player_ranks/code/player_rank_controller/config_entry.dm @@ -0,0 +1 @@ +/datum/config_entry/flag/bypass_veteran_system diff --git a/tgstation.dme b/tgstation.dme index a694eecd449..49d1b61bc7b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7778,6 +7778,7 @@ #include "modular_skyrat\modules\pixel_shift\code\pixel_shift_mob.dm" #include "modular_skyrat\modules\player_ranks\code\world_topic.dm" #include "modular_skyrat\modules\player_ranks\code\player_rank_controller\_player_rank_controller.dm" +#include "modular_skyrat\modules\player_ranks\code\player_rank_controller\config_entry.dm" #include "modular_skyrat\modules\player_ranks\code\player_rank_controller\donator_controller.dm" #include "modular_skyrat\modules\player_ranks\code\player_rank_controller\mentor_controller.dm" #include "modular_skyrat\modules\player_ranks\code\player_rank_controller\veteran_controller.dm" From 3453adb5ebd405565978c73391434cc4613abac8 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 20:15:39 +0100 Subject: [PATCH 117/166] Automatic changelog for PR #25895 [ci skip] --- html/changelogs/AutoChangeLog-pr-25895.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25895.yml diff --git a/html/changelogs/AutoChangeLog-pr-25895.yml b/html/changelogs/AutoChangeLog-pr-25895.yml new file mode 100644 index 00000000000..7e037e27feb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25895.yml @@ -0,0 +1,4 @@ +author: "Useroth" +delete-after: True +changes: + - rscadd: "Added a config entry for bypassing the veteran locks on jobs and quirks" \ No newline at end of file From 0ac46f4382060c15c75ca1764a530ea3a2949458 Mon Sep 17 00:00:00 2001 From: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> Date: Fri, 29 Dec 2023 19:27:29 +0000 Subject: [PATCH 118/166] Update TGS Tester script for TGS6 (#80558) [MISSED MIRROR] (#25896) Update TGS Tester script for TGS6 (#80558) Fix broken CI's Co-authored-by: Jordan Dominion --- .github/workflows/tgs_test.yml | 4 ++-- tools/tgs_test/Program.cs | 11 ++++++++--- tools/tgs_test/Tgstation.TgsTest.csproj | 9 +++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/tgs_test.yml b/.github/workflows/tgs_test.yml index 4925019bc6a..6a9316f493a 100644 --- a/.github/workflows/tgs_test.yml +++ b/.github/workflows/tgs_test.yml @@ -50,7 +50,7 @@ jobs: env: Database__DatabaseType: Sqlite Database__ConnectionString: Data Source=TGS_TGTest.sqlite3;Mode=ReadWriteCreate - General__ConfigVersion: 4.1.0 + General__ConfigVersion: 5.0.0 General__ApiPort: ${{ env.TGS_API_PORT }} General__SetupWizardMode: Never ports: @@ -59,7 +59,7 @@ jobs: - name: Setup dotnet uses: actions/setup-dotnet@v2 with: - dotnet-version: 7.0.x + dotnet-version: 8.0.x - name: Checkout Repository uses: actions/checkout@v3 diff --git a/tools/tgs_test/Program.cs b/tools/tgs_test/Program.cs index b8967dbc156..9b018be9516 100644 --- a/tools/tgs_test/Program.cs +++ b/tools/tgs_test/Program.cs @@ -11,6 +11,7 @@ using Tgstation.Server.Api.Models.Request; using Tgstation.Server.Api.Models; using Tgstation.Server.Api.Models.Response; using Tgstation.Server.Client; +using Tgstation.Server.Common.Extensions; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization; @@ -202,10 +203,14 @@ try default); Console.WriteLine("Installing BYOND..."); - var byondInstallJob = await instanceClient.Byond.SetActiveVersion( - new ByondVersionRequest + var byondInstallJob = await instanceClient.Engine.SetActiveVersion( + new EngineVersionRequest { - Version = targetByondVersion + EngineVersion = new EngineVersion + { + Version = targetByondVersion, + Engine = EngineType.Byond, + } }, null, default); diff --git a/tools/tgs_test/Tgstation.TgsTest.csproj b/tools/tgs_test/Tgstation.TgsTest.csproj index 0a641c269ab..967fbd42951 100644 --- a/tools/tgs_test/Tgstation.TgsTest.csproj +++ b/tools/tgs_test/Tgstation.TgsTest.csproj @@ -1,16 +1,17 @@ - 1.0.0 + 2.0.0 Exe - net7.0 + net8.0 enable enable - - + + + From 4e16771c86c9ab2581905cd817bc254ee0df5cfd Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 21:04:09 +0100 Subject: [PATCH 119/166] [MIRROR] Emergency DMAPI fix for downstreams still on TGS5 [MDB IGNORE] (#25897) * Emergency DMAPI fix for downstreams still on TGS5 (#80653) There was a double version bump on two branches that got merged, this feature flag should be in 8 * Emergency DMAPI fix for downstreams still on TGS5 --------- Co-authored-by: Jordan Dominion --- code/modules/tgs/v5/bridge.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/tgs/v5/bridge.dm b/code/modules/tgs/v5/bridge.dm index 60cbcbfb7df..a0ab3598767 100644 --- a/code/modules/tgs/v5/bridge.dm +++ b/code/modules/tgs/v5/bridge.dm @@ -48,7 +48,7 @@ var/json = CreateBridgeData(command, data, TRUE) var/encoded_json = url_encode(json) - var/api_prefix = interop_version.minor >= 7 ? "api/" : "" + var/api_prefix = interop_version.minor >= 8 ? "api/" : "" var/url = "http://127.0.0.1:[server_port]/[api_prefix]Bridge?[DMAPI5_BRIDGE_DATA]=[encoded_json]" return url From 994355eb897606daae45d83bc609f6438aadd7ca Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 22:11:30 +0100 Subject: [PATCH 120/166] [MIRROR] [NO GBP] Poll Alerts cleanup [MDB IGNORE] (#25899) * [NO GBP] Poll Alerts cleanup (#80572) ~Hopefully the candidates number and signed up overlay should show up for everyone now and be more responsive~ Ghommie tackled most of it in https://github.com/tgstation/tgstation/pull/80610 I think the candidate number overlay updating is done incorrectly in his PR though. Candidate number overlay should be updated for ALL candidates' poll alert buttons, whenever ANY candidate enters/leaves the poll * [NO GBP] Poll Alerts cleanup --------- Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com> --- code/_onclick/hud/alert.dm | 17 ++++++++--------- code/datums/candidate_poll.dm | 4 ++++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 210190faaeb..be94d82e516 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -844,6 +844,9 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." QDEL_NULL(stacks_overlay) QDEL_NULL(candidates_num_overlay) QDEL_NULL(signed_up_overlay) + if(poll) + poll.alert_buttons -= src + poll = null return ..() /atom/movable/screen/alert/poll_alert/add_context(atom/source, list/context, obj/item/held_item, mob/user) @@ -889,23 +892,19 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." if(LAZYACCESS(modifiers, CTRL_CLICK) && poll.jump_to_me) jump_to_pic_source() return - if(handle_sign_up()) - update_candidates_number_overlay() - update_signed_up_overlay() + handle_sign_up() /atom/movable/screen/alert/poll_alert/proc/handle_sign_up() if(owner in poll.signed_up) - return poll.remove_candidate(owner, src) - if(owner.ckey in GLOB.poll_ignore[poll.ignoring_category]) - return FALSE - if(poll.sign_up(owner)) - return poll.sign_up(owner) + poll.remove_candidate(owner) + else if(!(owner.ckey in GLOB.poll_ignore[poll.ignoring_category])) + poll.sign_up(owner) + update_signed_up_overlay() /atom/movable/screen/alert/poll_alert/proc/set_never_round() if(!(owner.ckey in GLOB.poll_ignore[poll.ignoring_category])) poll.do_never_for_this_round(owner) color = "red" - update_candidates_number_overlay() update_signed_up_overlay() return poll.undo_never_for_this_round(owner) diff --git a/code/datums/candidate_poll.dm b/code/datums/candidate_poll.dm index da646405fb2..1856858accd 100644 --- a/code/datums/candidate_poll.dm +++ b/code/datums/candidate_poll.dm @@ -64,6 +64,8 @@ for(var/datum/candidate_poll/existing_poll as anything in SSpolling.currently_polling) if(src != existing_poll && poll_key == existing_poll.poll_key && !(candidate in existing_poll.signed_up)) existing_poll.sign_up(candidate, TRUE) + for(var/atom/movable/screen/alert/poll_alert/linked_button as anything in alert_buttons) + linked_button.update_candidates_number_overlay() return TRUE /datum/candidate_poll/proc/remove_candidate(mob/candidate, silent = FALSE) @@ -86,6 +88,8 @@ for(var/datum/candidate_poll/existing_poll as anything in SSpolling.currently_polling) if(src != existing_poll && poll_key == existing_poll.poll_key && (candidate in existing_poll.signed_up)) existing_poll.remove_candidate(candidate, TRUE) + for(var/atom/movable/screen/alert/poll_alert/linked_button as anything in alert_buttons) + linked_button.update_candidates_number_overlay() return TRUE /datum/candidate_poll/proc/do_never_for_this_round(mob/candidate) From 28740666ce68a871798a490b6385a5255e9dc236 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 22:17:23 +0100 Subject: [PATCH 121/166] Automatic changelog for PR #25899 [ci skip] --- html/changelogs/AutoChangeLog-pr-25899.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25899.yml diff --git a/html/changelogs/AutoChangeLog-pr-25899.yml b/html/changelogs/AutoChangeLog-pr-25899.yml new file mode 100644 index 00000000000..9d369c4ebe4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25899.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "Poll alert buttons candidate number should be more responsive" \ No newline at end of file From c959960c7b9a8e3b0ad88c60b06b8c38e7a14aab Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 23:22:27 +0100 Subject: [PATCH 122/166] [MIRROR] Fixed atmospherics components air relocation and unsafe pressure release [MDB IGNORE] (#25901) * Fixed atmospherics components air relocation and unsafe pressure release (#80244) ## About The Pull Request At present - If user deconstructs/unwrenches something from [/obj/machinery/atmospherics/components](https://github.com/tgstation/tgstation/blob/master/code/modules/atmospherics/machinery/components/components_base.dm) - all air inside it disappear. (only unary, binary, trinary devices). - [/obj/machinery/atmospherics/components/unsafe_pressure_release()](https://github.com/tgstation/tgstation/blob/f9a5502f78263690378ca01f660b1cfb2886efd1/code/modules/atmospherics/machinery/components/components_base.dm#L175) doesn't work at all. - HFR UI has the problem of [activation request message](https://github.com/tgstation/tgstation/blob/f9a5502f78263690378ca01f660b1cfb2886efd1/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm#L209C3-L209C3) constantly repeating if the user forcefully switches off the machine (e.g. unscrewed one of the components). - Thermomachine and Bluespace sender do not connect to pipes when panel is open. - Crystallizer does not move air from node after rotation. Now - Each [/obj/machinery/atmospherics/components](https://github.com/tgstation/tgstation/blob/master/code/modules/atmospherics/machinery/components/components_base.dm) deconstruction will move air into connected pipeline if any, otherwise it will be released from open nodes, HFR internals or if there is portable connector that has no device connected will also release air outside. The user will also be notified of deconstruction and if pressure inside is safe for action. - The [/obj/machinery/atmospherics/components/unsafe_pressure_release()](https://github.com/tgstation/tgstation/blob/f9a5502f78263690378ca01f660b1cfb2886efd1/code/modules/atmospherics/machinery/components/components_base.dm#L175) will act like a normal pipe [unsafe_pressure_release()](https://github.com/tgstation/tgstation/blob/f9a5502f78263690378ca01f660b1cfb2886efd1/code/modules/atmospherics/machinery/atmosmachinery.dm#L447C1-L447C1) if there is an empty node with air. - When HFR interface is turned off - UI will be closed. - Thermomachine and Bluespace sender will always try to connect to pipe if they are anchored. - Air inside of nodes will move to connected pipenet after the machinery is rotated. ## Why It's Good For The Game This fixes things that essentially had to exist at the same time adding new possibilities for realization. Even though these aren't critical bugs, it's still unpleasant enough to lose air. ## Changelog :cl: mogeoko fix: Atmospherics components will now move air into connected pipeline on deconstruction if possible. Otherwise, air will be released to the outside from open nodes. fix: Unsafe pressure release on atmos components will now work the same way it does in the normal pipes if there is an empty node with air. fix: The HFR user interface would close when the machine is shut down. fix: Atmospherics machinery will now share air from nodes after being rotated and reconnected to pipenet. /:cl: --------- Co-authored-by: san7890 * Fixed atmospherics components air relocation and unsafe pressure release --------- Co-authored-by: mogeoko <109075486+mogeoko@users.noreply.github.com> Co-authored-by: san7890 --- .../atmospherics/machinery/atmosmachinery.dm | 10 ++ .../machinery/components/components_base.dm | 110 ++++++++++++++---- .../machinery/components/fusion/hfr_core.dm | 15 +++ .../machinery/components/fusion/hfr_parts.dm | 21 +--- .../gas_recipe_machines/crystallizer.dm | 42 ++----- .../unary_devices/bluespace_sender.dm | 28 +++-- .../components/unary_devices/cryo.dm | 38 +++++- .../unary_devices/machine_connector.dm | 20 ++++ .../components/unary_devices/thermomachine.dm | 15 +-- 9 files changed, 198 insertions(+), 101 deletions(-) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 8dfe81c7b27..fe6806c9b58 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -398,6 +398,9 @@ var/datum/gas_mixture/gas_mix = all_gas_mixes[gas_mix_number] if(!gas_mix.total_moles()) empty_mixes++ + if(!nodes[gas_mix_number] || (istype(nodes[gas_mix_number], /obj/machinery/atmospherics/components/unary/portables_connector) && !portable_device_connected(gas_mix_number))) + var/pressure_delta = all_gas_mixes[gas_mix_number].return_pressure() - env_air.return_pressure() + internal_pressure = internal_pressure > pressure_delta ? internal_pressure : pressure_delta if(empty_mixes == device_type) empty_pipe = TRUE if(!int_air.total_moles()) @@ -629,6 +632,13 @@ src.pipe_color = uppertext(pipe_colour) update_name() +/// Return TRUE if there is device connected to portables_connector +/obj/machinery/atmospherics/proc/portable_device_connected(node) + var/obj/machinery/atmospherics/components/unary/portables_connector/portable_devices_connector = nodes[node] + if(portable_devices_connector.connected_device) + return TRUE + return FALSE + #undef PIPE_VISIBLE_LEVEL #undef PIPE_HIDDEN_LEVEL #undef VENT_SOUND_DELAY diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index 9e1f4f0de21..1aae85d2a14 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -105,6 +105,10 @@ . = ..() update_parents() +/obj/machinery/atmospherics/components/on_deconstruction() + relocate_airs() + return ..() + /obj/machinery/atmospherics/components/rebuild_pipes() . = ..() if(update_parents_after_rebuild) @@ -172,31 +176,6 @@ /obj/machinery/atmospherics/components/replace_pipenet(datum/pipeline/Old, datum/pipeline/New) parents[parents.Find(Old)] = New -/obj/machinery/atmospherics/components/unsafe_pressure_release(mob/user, pressures) - . = ..() - - var/turf/current_turf = get_turf(src) - if(!current_turf) - return - //Remove the gas from airs and assume it - var/datum/gas_mixture/environment = current_turf.return_air() - var/lost = null - var/times_lost = 0 - for(var/i in 1 to device_type) - var/datum/gas_mixture/air = airs[i] - lost += pressures*environment.volume/(air.temperature * R_IDEAL_GAS_EQUATION) - times_lost++ - var/shared_loss = lost/times_lost - - var/datum/gas_mixture/to_release - for(var/i in 1 to device_type) - var/datum/gas_mixture/air = airs[i] - if(!to_release) - to_release = air.remove(shared_loss) - continue - to_release.merge(air.remove(shared_loss)) - current_turf.assume_air(to_release) - // Helpers /** @@ -245,6 +224,69 @@ /obj/machinery/atmospherics/components/return_analyzable_air() return airs +/** + * Handles machinery deconstruction and unsafe pressure release + */ +/obj/machinery/atmospherics/components/proc/crowbar_deconstruction_act(mob/living/user, obj/item/tool, internal_pressure = 0) + if(!panel_open) + balloon_alert(user, "open panel!") + return ITEM_INTERACT_SUCCESS + + var/unsafe_wrenching = FALSE + var/filled_pipe = FALSE + var/datum/gas_mixture/environment_air = loc.return_air() + + for(var/i in 1 to device_type) + var/datum/gas_mixture/inside_air = airs[i] + if(inside_air.total_moles() > 0 || internal_pressure) + filled_pipe = TRUE + if(!nodes[i] || (istype(nodes[i], /obj/machinery/atmospherics/components/unary/portables_connector) && !portable_device_connected(i))) + internal_pressure = internal_pressure > airs[i].return_pressure() ? internal_pressure : airs[i].return_pressure() + + if(!filled_pipe) + default_deconstruction_crowbar(tool) + return ITEM_INTERACT_SUCCESS + + to_chat(user, span_notice("You begin to unfasten \the [src]...")) + + internal_pressure -= environment_air.return_pressure() + + if(internal_pressure > 2 * ONE_ATMOSPHERE) + to_chat(user, span_warning("As you begin deconstructing \the [src] a gush of air blows in your face... maybe you should reconsider?")) + unsafe_wrenching = TRUE + + if(!do_after(user, 2 SECONDS, src)) + return + if(unsafe_wrenching) + unsafe_pressure_release(user, internal_pressure) + tool.play_tool_sound(src, 50) + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/atmospherics/components/default_change_direction_wrench(mob/user, obj/item/I) + . = ..() + if(!.) + return FALSE + set_init_directions() + for(var/i in 1 to device_type) + var/obj/machinery/atmospherics/node = nodes[i] + if(node) + if(src in node.nodes) + node.disconnect(src) + nodes[i] = null + if(parents[i]) + nullify_pipenet(parents[i]) + for(var/i in 1 to device_type) + var/obj/machinery/atmospherics/node = nodes[i] + atmos_init() + node = nodes[i] + if(node) + node.atmos_init() + node.add_member(src) + update_parents() + SSair.add_to_rebuild_queue(src) + return TRUE + /** * Disconnects all nodes from ourselves, remove us from the node's nodes. * Nullify our parent pipenet @@ -286,3 +328,21 @@ /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) + +/** + * Handles air relocation to the pipenet/environment + */ +/obj/machinery/atmospherics/components/proc/relocate_airs(datum/gas_mixture/to_release) + var/turf/local_turf = get_turf(src) + for(var/i in 1 to device_type) + var/datum/gas_mixture/air = airs[i] + if(!nodes[i] || (istype(nodes[i], /obj/machinery/atmospherics/components/unary/portables_connector) && !portable_device_connected(i))) + if(!to_release) + to_release = air + continue + to_release.merge(air) + continue + var/datum/gas_mixture/parents_air = parents[i].air + parents_air.merge(air) + if(to_release) + local_turf.assume_air(to_release) diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_core.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_core.dm index 2d7db14ef07..6d3d5d31a16 100644 --- a/code/modules/atmospherics/machinery/components/fusion/hfr_core.dm +++ b/code/modules/atmospherics/machinery/components/fusion/hfr_core.dm @@ -199,3 +199,18 @@ QDEL_NULL(soundloop) machine_parts = null return..() + +/obj/machinery/atmospherics/components/unary/hypertorus/core/on_deconstruction() + var/turf/local_turf = get_turf(loc) + var/datum/gas_mixture/to_release = moderator_internal || internal_fusion + if(to_release == moderator_internal) + to_release.merge(internal_fusion) + if(to_release) + local_turf.assume_air(to_release) + return ..() + +/obj/machinery/atmospherics/components/unary/hypertorus/core/crowbar_deconstruction_act(mob/living/user, obj/item/tool, internal_pressure = 0) + internal_pressure = max(internal_fusion.return_pressure(), moderator_internal.return_pressure()) + if(internal_pressure) + say("WARNING - Core can contain hazardous gases, deconstruct with caution!") + return ..(user, tool, internal_pressure) diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm index 96423f9f770..86f2e3dddf5 100644 --- a/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm +++ b/code/modules/atmospherics/machinery/components/fusion/hfr_parts.dm @@ -40,8 +40,6 @@ return if(default_change_direction_wrench(user, I)) return - if(default_deconstruction_crowbar(I)) - return return ..() /obj/machinery/atmospherics/components/unary/hypertorus/welder_act(mob/living/user, obj/item/tool) @@ -55,22 +53,8 @@ cracked = FALSE update_appearance() -/obj/machinery/atmospherics/components/unary/hypertorus/default_change_direction_wrench(mob/user, obj/item/I) - . = ..() - if(.) - set_init_directions() - var/obj/machinery/atmospherics/node = nodes[1] - if(node) - node.disconnect(src) - nodes[1] = null - if(parents[1]) - nullify_pipenet(parents[1]) - atmos_init() - node = nodes[1] - if(node) - node.atmos_init() - node.add_member(src) - SSair.add_to_rebuild_queue(src) +/obj/machinery/atmospherics/components/unary/hypertorus/crowbar_act(mob/living/user, obj/item/tool) + return crowbar_deconstruction_act(user, tool) /obj/machinery/atmospherics/components/unary/hypertorus/update_icon_state() if(panel_open) @@ -207,6 +191,7 @@ ui.open() else to_chat(user, span_notice("Activate the machine first by using a multitool on the interface.")) + ui.close() /obj/machinery/hypertorus/interface/proc/gas_list_to_gasid_list(list/gas_list) var/list/gasid_list = list() diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm index 8a9deaf5dea..a005caf86b9 100644 --- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm +++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm @@ -40,6 +40,12 @@ internal = new register_context() +/obj/machinery/atmospherics/components/binary/crystallizer/on_deconstruction() + var/turf/local_turf = get_turf(loc) + if(internal.total_moles()) + local_turf.assume_air(internal) + return ..() + /obj/machinery/atmospherics/components/binary/crystallizer/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]" @@ -58,42 +64,10 @@ return if(default_change_direction_wrench(user, I)) return - if(default_deconstruction_crowbar(I)) - return return ..() -/obj/machinery/atmospherics/components/binary/crystallizer/default_change_direction_wrench(mob/user, obj/item/I) - . = ..() - if(!.) - return FALSE - set_init_directions() - var/obj/machinery/atmospherics/node1 = nodes[1] - var/obj/machinery/atmospherics/node2 = nodes[2] - if(node1) - if(src in node1.nodes) //Only if it's actually connected. On-pipe version would is one-sided. - node1.disconnect(src) - nodes[1] = null - if(node2) - if(src in node2.nodes) //Only if it's actually connected. On-pipe version would is one-sided. - node2.disconnect(src) - nodes[2] = null - - if(parents[1]) - nullify_pipenet(parents[1]) - if(parents[2]) - nullify_pipenet(parents[2]) - - atmos_init() - node1 = nodes[1] - if(node1) - node1.atmos_init() - node1.add_member(src) - node2 = nodes[2] - if(node2) - node2.atmos_init() - node2.add_member(src) - SSair.add_to_rebuild_queue(src) - return TRUE +/obj/machinery/atmospherics/components/binary/crystallizer/crowbar_act(mob/living/user, obj/item/tool) + return crowbar_deconstruction_act(user, tool, internal.return_pressure()) /obj/machinery/atmospherics/components/binary/crystallizer/update_overlays() . = ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm b/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm index 3d3c4d9c05a..269e0943004 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm @@ -49,10 +49,6 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component register_context() /obj/machinery/atmospherics/components/unary/bluespace_sender/Destroy() - if(bluespace_network.total_moles()) - var/turf/local_turf = get_turf(src) - local_turf.assume_air(bluespace_network) - GLOB.bluespace_senders -= src return ..() @@ -75,6 +71,11 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component context[SCREENTIP_CONTEXT_RMB] = "[anchored ? "Unan" : "An"]chor" return CONTEXTUAL_SCREENTIP_SET +/obj/machinery/atmospherics/components/unary/bluespace_sender/is_connectable() + if(!anchored) + return FALSE + . = ..() + /obj/machinery/atmospherics/components/unary/bluespace_sender/update_icon_state() if(panel_open) icon_state = "[base_icon_state]_open" @@ -101,6 +102,12 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component bluespace_network.temperature = T20C update_parents() +/obj/machinery/atmospherics/components/unary/bluespace_sender/relocate_airs() + if(bluespace_network.total_moles() > 0) + airs[1].merge(bluespace_network) + airs[1].garbage_collect() + return ..() + /obj/machinery/atmospherics/components/unary/bluespace_sender/screwdriver_act(mob/living/user, obj/item/tool) if(on) balloon_alert(user, "turn off!") @@ -108,17 +115,13 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component if(!anchored) balloon_alert(user, "anchor!") return ITEM_INTERACT_SUCCESS - if(default_deconstruction_screwdriver(user, "[base_icon_state]_open", "[base_icon_state]", tool)) - change_pipe_connection(panel_open) + if(default_deconstruction_screwdriver(user, "[base_icon_state]_open", "[base_icon_state]_off", tool)) return ITEM_INTERACT_SUCCESS /obj/machinery/atmospherics/components/unary/bluespace_sender/crowbar_act(mob/living/user, obj/item/tool) - default_deconstruction_crowbar(tool, custom_deconstruct = bluespace_network.total_moles() > 0 ? TRUE : FALSE) - say("WARNING - Bluespace network can contain hazardous gases, deconstruct with caution!") - if(!do_after(user, 3 SECONDS, src)) - return - tool.play_tool_sound(src, 50) - deconstruct(TRUE) + if(panel_open && bluespace_network.total_moles() > 0 && !nodes[1]) + say("WARNING - Bluespace network can contain hazardous gases, deconstruct with caution!") + return crowbar_deconstruction_act(user, tool) /obj/machinery/atmospherics/components/unary/bluespace_sender/multitool_act(mob/living/user, obj/item/item) var/obj/item/multitool/multitool = item @@ -134,6 +137,7 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component balloon_alert(user, "open panel!") return if(default_unfasten_wrench(user, tool)) + change_pipe_connection(!anchored) return ITEM_INTERACT_SUCCESS return diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 0ae93c05831..ab3d53adacf 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -456,9 +456,45 @@ /obj/machinery/cryo_cell/crowbar_act(mob/living/user, obj/item/tool) if(on || state_open) return FALSE - if(default_pry_open(tool) || default_deconstruction_crowbar(tool)) + if(!panel_open) + balloon_alert(user, "open panel!") return ITEM_INTERACT_SUCCESS + var/unsafe_wrenching = FALSE + var/filled_pipe = FALSE + var/datum/gas_mixture/environment_air = loc.return_air() + var/datum/gas_mixture/inside_air = internal_connector.gas_connector.airs[1] + var/obj/machinery/atmospherics/node = internal_connector.gas_connector.nodes[1] + var/internal_pressure = 0 + + if(istype(node, /obj/machinery/atmospherics/components/unary/portables_connector)) + var/obj/machinery/atmospherics/components/unary/portables_connector/portable_devices_connector = node + internal_pressure = !portable_devices_connector.connected_device ? 1 : 0 + + if(inside_air.total_moles() > 0) + filled_pipe = TRUE + if(!node || internal_pressure > 0) + internal_pressure = inside_air.return_pressure() - environment_air.return_pressure() + + if(!filled_pipe) + default_deconstruction_crowbar(tool) + return ITEM_INTERACT_SUCCESS + + to_chat(user, span_notice("You begin to unfasten \the [src]...")) + + if(internal_pressure > 2 * ONE_ATMOSPHERE) + to_chat(user, span_warning("As you begin deconstructing \the [src] a gush of air blows in your face... maybe you should reconsider?")) + unsafe_wrenching = TRUE + + if(!do_after(user, 2 SECONDS, src)) + return + if(unsafe_wrenching) + internal_connector.gas_connector.unsafe_pressure_release(user, internal_pressure) + + tool.play_tool_sound(src, 50) + deconstruct(TRUE) + return ITEM_INTERACT_SUCCESS + /obj/machinery/cryo_cell/wrench_act(mob/living/user, obj/item/tool) if(on || occupant || state_open) return FALSE diff --git a/code/modules/atmospherics/machinery/components/unary_devices/machine_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/machine_connector.dm index 49103c7729e..b1e2567f82f 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/machine_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/machine_connector.dm @@ -75,6 +75,7 @@ */ /datum/gas_machine_connector/proc/deconstruct_connected_machine() SIGNAL_HANDLER + relocate_airs() disconnect_connector() SSair.stop_processing_machine(connected_machine) unregister_from_machine() @@ -106,4 +107,23 @@ if(node) node.atmos_init() node.add_member(gas_connector) + gas_connector.update_parents() SSair.add_to_rebuild_queue(gas_connector) + +/** + * Handles air relocation to the pipe network/environment + */ +/datum/gas_machine_connector/proc/relocate_airs(mob/user) + var/turf/local_turf = get_turf(connected_machine) + var/datum/gas_mixture/inside_air = gas_connector.airs[1] + if(inside_air.total_moles() > 0) + if(!gas_connector.nodes[1]) + local_turf.assume_air(inside_air) + return + var/datum/gas_mixture/parents_air = gas_connector.parents[1].air + if(istype(gas_connector.nodes[1], /obj/machinery/atmospherics/components/unary/portables_connector)) + var/obj/machinery/atmospherics/components/unary/portables_connector/portable_devices_connector = gas_connector.nodes[1] + if(!portable_devices_connector.connected_device) + local_turf.assume_air(inside_air) + return + parents_air.merge(inside_air) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 2a3ac2bb082..5067dcddae2 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -63,7 +63,7 @@ return CONTEXTUAL_SCREENTIP_SET /obj/machinery/atmospherics/components/unary/thermomachine/is_connectable() - if(!anchored || panel_open) + if(!anchored) return FALSE . = ..() @@ -78,7 +78,6 @@ if(check_pipe_on_turf()) set_anchored(FALSE) set_panel_open(TRUE) - change_pipe_connection(TRUE) icon_state = "thermo-open" balloon_alert(user, "the port is already in use!") @@ -208,14 +207,14 @@ balloon_alert(user, "anchor!") return ITEM_INTERACT_SUCCESS if(default_deconstruction_screwdriver(user, "thermo-open", "thermo-0", tool)) - change_pipe_connection(panel_open) + update_appearance() return ITEM_INTERACT_SUCCESS /obj/machinery/atmospherics/components/unary/thermomachine/wrench_act(mob/living/user, obj/item/tool) return default_change_direction_wrench(user, tool) /obj/machinery/atmospherics/components/unary/thermomachine/crowbar_act(mob/living/user, obj/item/tool) - return default_deconstruction_crowbar(tool) + return crowbar_deconstruction_act(user, tool) /obj/machinery/atmospherics/components/unary/thermomachine/multitool_act(mob/living/user, obj/item/multitool/multitool) if(!panel_open) @@ -226,13 +225,6 @@ update_appearance() return ITEM_INTERACT_SUCCESS -/obj/machinery/atmospherics/components/unary/thermomachine/default_change_direction_wrench(mob/user, obj/item/I) - if(!..()) - return FALSE - set_init_directions() - update_appearance() - return TRUE - /obj/machinery/atmospherics/components/unary/thermomachine/multitool_act_secondary(mob/living/user, obj/item/tool) if(!panel_open) balloon_alert(user, "open panel!") @@ -257,6 +249,7 @@ visible_message(span_warning("A pipe is hogging the port, remove the obstruction or change the machine piping layer.")) return ITEM_INTERACT_SUCCESS if(default_unfasten_wrench(user, tool)) + change_pipe_connection(!anchored) return ITEM_INTERACT_SUCCESS return From 60503f6e14e3d999e761f451ca1a1320478519c9 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 23:22:49 +0100 Subject: [PATCH 123/166] Automatic changelog for PR #25901 [ci skip] --- html/changelogs/AutoChangeLog-pr-25901.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25901.yml diff --git a/html/changelogs/AutoChangeLog-pr-25901.yml b/html/changelogs/AutoChangeLog-pr-25901.yml new file mode 100644 index 00000000000..1846094769a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25901.yml @@ -0,0 +1,7 @@ +author: "mogeoko" +delete-after: True +changes: + - bugfix: "Atmospherics components will now move air into connected pipeline on deconstruction if possible. Otherwise, air will be released to the outside from open nodes." + - bugfix: "Unsafe pressure release on atmos components will now work the same way it does in the normal pipes if there is an empty node with air." + - bugfix: "The HFR user interface would close when the machine is shut down." + - bugfix: "Atmospherics machinery will now share air from nodes after being rotated and reconnected to pipenet." \ No newline at end of file From 71c7d18b9ab669e3cbbdae76f08f80b2ce094165 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Dec 2023 23:23:09 +0100 Subject: [PATCH 124/166] [MIRROR] Deletes roundstart chemical reaction callback thing [MDB IGNORE] (#25884) * Deletes roundstart chemical reaction callback thing * Update recipes.dm --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> --- code/modules/reagents/chemistry/recipes.dm | 16 ---------------- .../reagents/chemistry/recipes/pyrotechnics.dm | 15 ++++++++------- 2 files changed, 8 insertions(+), 23 deletions(-) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 93bd1dcf39c..1c8d0604b43 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -59,7 +59,6 @@ ///Tagging vars ///A bitflag var for tagging reagents for the reagent loopup functon var/reaction_tags = NONE - //SKYRAT EDIT ADDITION ///If defined, it'll emitt that pollutant on reaction var/pollutant_type @@ -67,21 +66,6 @@ var/pollutant_amount = 1 //SKYRAT EDIT END -/datum/chemical_reaction/New() - . = ..() - SSticker.OnRoundstart(CALLBACK(src, PROC_REF(update_info))) - -/** - * Updates information during the roundstart - * - * This proc is mainly used by explosives but can be used anywhere else - * You should generally use the special reactions in [/datum/chemical_reaction/randomized] - * But for simple variable edits, like changing the temperature or adding/subtracting required reagents it is better to use this. - */ -/datum/chemical_reaction/proc/update_info() - return - - ///REACTION PROCS /** diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 78942431bb8..8e74b0ad6f8 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -77,8 +77,9 @@ required_temp = 450 strengthdiv = 3 -/datum/chemical_reaction/reagent_explosion/tatp/update_info() - required_temp = 450 + rand(-49, 49) //this gets loaded only on round start +/datum/chemical_reaction/reagent_explosion/tatp/New() + . = ..() + required_temp = 450 + rand(-49, 49) /datum/chemical_reaction/reagent_explosion/tatp/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) if(holder.has_reagent(/datum/reagent/exotic_stabilizer, created_volume / 50)) // we like exotic stabilizer @@ -93,12 +94,12 @@ /datum/chemical_reaction/reagent_explosion/tatp_explosion/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) var/strengthdiv_adjust = created_volume / ( 2100 / initial(strengthdiv)) - strengthdiv = max(initial(strengthdiv) - strengthdiv_adjust + 1.5 ,1.5) //Slightly better than nitroglycerin - . = ..() - return + strengthdiv = max(initial(strengthdiv) - strengthdiv_adjust + 1.5, 1.5) //Slightly better than nitroglycerin + return ..() -/datum/chemical_reaction/reagent_explosion/tatp_explosion/update_info() - required_temp = 550 + rand(-49,49) +/datum/chemical_reaction/reagent_explosion/tatp_explosion/New() + . = ..() + required_temp = 550 + rand(-49, 49) /datum/chemical_reaction/reagent_explosion/penthrite_explosion_epinephrine required_reagents = list(/datum/reagent/medicine/c2/penthrite = 1, /datum/reagent/medicine/epinephrine = 1) From f10799daae8465a39caa60eee7dba88440e512ed Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 30 Dec 2023 00:32:43 +0000 Subject: [PATCH 125/166] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-25874.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25890.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25891.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25893.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25895.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25899.yml | 4 ---- html/changelogs/AutoChangeLog-pr-25901.yml | 7 ------- html/changelogs/archive/2023-12.yml | 21 +++++++++++++++++++++ 8 files changed, 21 insertions(+), 31 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-25874.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25890.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25891.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25893.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25895.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25899.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-25901.yml diff --git a/html/changelogs/AutoChangeLog-pr-25874.yml b/html/changelogs/AutoChangeLog-pr-25874.yml deleted file mode 100644 index 54722f000d2..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25874.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "Added a \"postal workers strike\" negative station trait. In the case of holidays and sunday though, it'll be a \"postal system overtime\" instead." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25890.yml b/html/changelogs/AutoChangeLog-pr-25890.yml deleted file mode 100644 index a6ceeb51d5f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25890.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "reduces lag in the tgui textarea input boxes" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25891.yml b/html/changelogs/AutoChangeLog-pr-25891.yml deleted file mode 100644 index 8f648c06e86..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25891.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie, 13spacemen" -delete-after: True -changes: - - bugfix: "Signing or removing your candidature from ghost roles now properly updates the screen button for it." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25893.yml b/html/changelogs/AutoChangeLog-pr-25893.yml deleted file mode 100644 index a75c30cf329..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25893.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ReturnToZender" -delete-after: True -changes: - - bugfix: "JSX files, when edited, cause TGUI to recompile on build" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25895.yml b/html/changelogs/AutoChangeLog-pr-25895.yml deleted file mode 100644 index 7e037e27feb..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25895.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Useroth" -delete-after: True -changes: - - rscadd: "Added a config entry for bypassing the veteran locks on jobs and quirks" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25899.yml b/html/changelogs/AutoChangeLog-pr-25899.yml deleted file mode 100644 index 9d369c4ebe4..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25899.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Poll alert buttons candidate number should be more responsive" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-25901.yml b/html/changelogs/AutoChangeLog-pr-25901.yml deleted file mode 100644 index 1846094769a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25901.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "mogeoko" -delete-after: True -changes: - - bugfix: "Atmospherics components will now move air into connected pipeline on deconstruction if possible. Otherwise, air will be released to the outside from open nodes." - - bugfix: "Unsafe pressure release on atmos components will now work the same way it does in the normal pipes if there is an empty node with air." - - bugfix: "The HFR user interface would close when the machine is shut down." - - bugfix: "Atmospherics machinery will now share air from nodes after being rotated and reconnected to pipenet." \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index adcb9478105..977fd03fbd7 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -1034,3 +1034,24 @@ - bugfix: ai can now tell if it is in a do_after for resisting and will not interrupt it. monkeys also now don't freeze up when aggressively grabbed and will resist out of those and cuffs. +2023-12-30: + Ghommie, 13spacemen: + - bugfix: Signing or removing your candidature from ghost roles now properly updates + the screen button for it. + ReturnToZender: + - bugfix: JSX files, when edited, cause TGUI to recompile on build + SkyratBot: + - bugfix: reduces lag in the tgui textarea input boxes + - rscadd: Added a "postal workers strike" negative station trait. In the case of + holidays and sunday though, it'll be a "postal system overtime" instead. + - bugfix: Poll alert buttons candidate number should be more responsive + Useroth: + - rscadd: Added a config entry for bypassing the veteran locks on jobs and quirks + mogeoko: + - bugfix: Atmospherics components will now move air into connected pipeline on deconstruction + if possible. Otherwise, air will be released to the outside from open nodes. + - bugfix: Unsafe pressure release on atmos components will now work the same way + it does in the normal pipes if there is an empty node with air. + - bugfix: The HFR user interface would close when the machine is shut down. + - bugfix: Atmospherics machinery will now share air from nodes after being rotated + and reconnected to pipenet. From a5227a07e5f7014bef5e3cd6f35c974079627f1f Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 03:48:56 +0100 Subject: [PATCH 126/166] [MIRROR] Fix ashwalker copypaste error for magic mirror [MDB IGNORE] (#25903) * Fix ashwalker copypaste error for magic mirror (#80626) ## About The Pull Request Copy pasted bad for this ## Changelog :cl: Melbert fix: Lizards now show a proper description in the magic mirror /:cl: * Fix ashwalker copypaste error for magic mirror --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> --- .../mob/living/carbon/human/species_types/lizardpeople.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 45e34d96bfd..81b7d5d79f5 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -158,7 +158,7 @@ Lizard subspecies: ASHWALKERS BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/lizard, ) -/datum/species/lizard/get_physical_attributes() +/datum/species/lizard/ashwalker/get_physical_attributes() return "Ash Walkers are identical to lizardpeople in almost all aspects. \ Unlike them, they're always digitigrade, they can breathe Lavaland's often noxious atmosphere and resist viruses. They are usually illiterate." From a07989d69a3e6e211ce896b3ac8cf5a31e070ed2 Mon Sep 17 00:00:00 2001 From: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Date: Sat, 30 Dec 2023 02:49:16 +0000 Subject: [PATCH 127/166] Fix BYOND membership status available to non-members (#25902) * split byond member from server donator * Update preferences.dm * Update preferences.dm * Update player_ranks.dm * Update preferences.dm --- code/modules/client/preferences.dm | 5 +++-- .../master_files/code/modules/mob/login.dm | 2 +- .../modules/player_ranks/code/preferences.dm | 3 +++ .../code/subsystem/player_ranks.dm | 21 ++++++++++--------- tgstation.dme | 1 + 5 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 modular_skyrat/modules/player_ranks/code/preferences.dm diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 1811f3f8715..59dfe72b318 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -109,8 +109,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) load_path(parent.ckey) if(load_and_save && !fexists(path)) try_savefile_type_migration() - unlock_content = !!parent.IsByondMember() || GLOB.donator_list[parent.ckey] //SKYRAT EDIT - ADDED DONATOR CHECK - if(unlock_content) + unlock_content = !!parent.IsByondMember() + donator_status = !!GLOB.donator_list[parent.ckey] //SKYRAT EDIT ADD - DONATOR CHECK + if(unlock_content || donator_status) //SKYRAT EDIT - ADD DONATOR CHECK max_save_slots = 50 //SKYRAT EDIT - ORIGINAL 8 else CRASH("attempted to create a preferences datum without a client or mock!") diff --git a/modular_skyrat/master_files/code/modules/mob/login.dm b/modular_skyrat/master_files/code/modules/mob/login.dm index fbf57ccf0b5..96c9a6c2d2b 100644 --- a/modular_skyrat/master_files/code/modules/mob/login.dm +++ b/modular_skyrat/master_files/code/modules/mob/login.dm @@ -5,6 +5,6 @@ return FALSE if(SSplayer_ranks.initialized) - SSplayer_ranks.update_prefs_unlock_content(client?.prefs) + SSplayer_ranks.update_prefs_donator_status(client?.prefs) return TRUE diff --git a/modular_skyrat/modules/player_ranks/code/preferences.dm b/modular_skyrat/modules/player_ranks/code/preferences.dm new file mode 100644 index 00000000000..5a3f43dc8b1 --- /dev/null +++ b/modular_skyrat/modules/player_ranks/code/preferences.dm @@ -0,0 +1,3 @@ +/datum/preferences + /// Does this member have donator status on the server + var/donator_status = FALSE diff --git a/modular_skyrat/modules/player_ranks/code/subsystem/player_ranks.dm b/modular_skyrat/modules/player_ranks/code/subsystem/player_ranks.dm index 6e724e44dbc..64ce3304732 100644 --- a/modular_skyrat/modules/player_ranks/code/subsystem/player_ranks.dm +++ b/modular_skyrat/modules/player_ranks/code/subsystem/player_ranks.dm @@ -111,7 +111,7 @@ SUBSYSTEM_DEF(player_ranks) if(CONFIG_GET(flag/donator_legacy_system)) donator_controller.load_legacy() - update_all_prefs_unlock_contents() + update_all_prefs_donator_status() return if(!SSdbcore.Connect()) @@ -124,30 +124,31 @@ SUBSYSTEM_DEF(player_ranks) return load_player_rank_sql(donator_controller) - update_all_prefs_unlock_contents() + update_all_prefs_donator_status() /** * Handles updating all of the preferences datums to have the appropriate - * `unlock_content` and `max_save_slots` once donators are loaded. + * `donator_status` and `max_save_slots` once donators are loaded. */ -/datum/controller/subsystem/player_ranks/proc/update_all_prefs_unlock_contents() +/datum/controller/subsystem/player_ranks/proc/update_all_prefs_donator_status() for(var/ckey as anything in GLOB.preferences_datums) - update_prefs_unlock_content(GLOB.preferences_datums[ckey]) + update_prefs_donator_status(GLOB.preferences_datums[ckey]) /** - * Updates the `unlock_contents` and the `max_save_slots` + * Updates the `donator_status` and the `max_save_slots` * * Arguments: - * * prefs - The preferences datum to check the unlock_content eligibility. + * * prefs - The preferences datum to check the donator_status eligibility. */ -/datum/controller/subsystem/player_ranks/proc/update_prefs_unlock_content(datum/preferences/prefs) +/datum/controller/subsystem/player_ranks/proc/update_prefs_donator_status(datum/preferences/prefs) if(!prefs) return - prefs.unlock_content = !!prefs.parent.IsByondMember() || is_donator(prefs.parent) - if(prefs.unlock_content) + prefs.unlock_content = !!prefs.parent.IsByondMember() + prefs.donator_status = is_donator(prefs.parent) + if(prefs.unlock_content || prefs.donator_status) prefs.max_save_slots = 50 diff --git a/tgstation.dme b/tgstation.dme index 49d1b61bc7b..b4b43389d62 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7776,6 +7776,7 @@ #include "modular_skyrat\modules\pixel_shift\code\pixel_shift_component.dm" #include "modular_skyrat\modules\pixel_shift\code\pixel_shift_keybind.dm" #include "modular_skyrat\modules\pixel_shift\code\pixel_shift_mob.dm" +#include "modular_skyrat\modules\player_ranks\code\preferences.dm" #include "modular_skyrat\modules\player_ranks\code\world_topic.dm" #include "modular_skyrat\modules\player_ranks\code\player_rank_controller\_player_rank_controller.dm" #include "modular_skyrat\modules\player_ranks\code\player_rank_controller\config_entry.dm" From 0e60abb8d8459cbb792fd6312dcc60f29e1eb5ea Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 03:49:17 +0100 Subject: [PATCH 128/166] Automatic changelog for PR #25903 [ci skip] --- html/changelogs/AutoChangeLog-pr-25903.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25903.yml diff --git a/html/changelogs/AutoChangeLog-pr-25903.yml b/html/changelogs/AutoChangeLog-pr-25903.yml new file mode 100644 index 00000000000..8a018c6c943 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25903.yml @@ -0,0 +1,4 @@ +author: "Melbert" +delete-after: True +changes: + - bugfix: "Lizards now show a proper description in the magic mirror" \ No newline at end of file From 4fb2b79b5f7f3e2cf5fb411fd0ad8387ce87a0e7 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 03:49:38 +0100 Subject: [PATCH 129/166] Automatic changelog for PR #25902 [ci skip] --- html/changelogs/AutoChangeLog-pr-25902.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25902.yml diff --git a/html/changelogs/AutoChangeLog-pr-25902.yml b/html/changelogs/AutoChangeLog-pr-25902.yml new file mode 100644 index 00000000000..a8ca045992c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25902.yml @@ -0,0 +1,4 @@ +author: "LT3" +delete-after: True +changes: + - bugfix: "Fixed BYOND membership status being available to non-BYOND members" \ No newline at end of file From 495b3af91ec8103b02c8ef8844a75bdaf4f6ff09 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 03:49:46 +0100 Subject: [PATCH 130/166] [MIRROR] Bot launchpads also accept basic/bot [MDB IGNORE] (#25904) * Bot launchpads also accept basic/bot (#80627) ## About The Pull Request During a round, someone has made a row of bot launchpads with different bots. Altough they had issues to send a cleanbot and a medibot. I have figured that there was some PR that converted them into basic mobs and that may have been the issue. And I have found out that the remote was checking only for a simple_animal/bot when you pressed the button to launch. This was redundant to be specific as the machine already checks if the mob is a bot or not. I also clarified the message when failling to recall a bot to be different from when there is nothing on the pad. https://streamable.com/nzivs9?src=player-page-share ## Why It's Good For The Game Cleanbots and Medibots could be sent before from the bot launchpad. And they are still acting like bots in terms of functionnality. Also it makes it clearer that if we fail to recall a bot, it's likely because we didn't send any bot at first. not because the bot is absent from the pad. ## Changelog :cl: fix: Bot launchpads can deploy cleanbots and medibots again. spellcheck: Clarified the message when failling to recall a bot. /:cl: * Bot launchpads also accept basic/bot --------- Co-authored-by: Tristrian --- code/game/machinery/botlaunchpad.dm | 2 +- code/game/objects/items/botpad_remote.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/botlaunchpad.dm b/code/game/machinery/botlaunchpad.dm index 5c0ba432d35..0744954257a 100644 --- a/code/game/machinery/botlaunchpad.dm +++ b/code/game/machinery/botlaunchpad.dm @@ -56,7 +56,7 @@ /obj/machinery/botpad/proc/recall(mob/living/user) var/atom/our_bot = launched_bot?.resolve() if(isnull(our_bot)) - user.balloon_alert(user, "no bots detected on the pad!") + user.balloon_alert(user, "no bots sent from the pad!") return user.balloon_alert(user, "bot sent back to pad") if(isbasicbot(our_bot)) diff --git a/code/game/objects/items/botpad_remote.dm b/code/game/objects/items/botpad_remote.dm index eb8cf8bb905..ff77b088063 100644 --- a/code/game/objects/items/botpad_remote.dm +++ b/code/game/objects/items/botpad_remote.dm @@ -52,7 +52,7 @@ if(connected_botpad.panel_open) user?.balloon_alert(user, "close the panel!") return - if(!(locate(/mob/living/simple_animal/bot) in get_turf(connected_botpad))) + if(!(locate(/mob/living) in get_turf(connected_botpad))) user?.balloon_alert(user, "no bots detected on the pad!") return connected_botpad.launch(user) From 4b0bd4e16a31305a1f56405d66c352efd44879a0 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 04:01:10 +0100 Subject: [PATCH 131/166] Automatic changelog for PR #25904 [ci skip] --- html/changelogs/AutoChangeLog-pr-25904.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25904.yml diff --git a/html/changelogs/AutoChangeLog-pr-25904.yml b/html/changelogs/AutoChangeLog-pr-25904.yml new file mode 100644 index 00000000000..ac957161458 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25904.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "Bot launchpads can deploy cleanbots and medibots again." + - spellcheck: "Clarified the message when failling to recall a bot." \ No newline at end of file From 9f4c0e41f8318c70a1668e020c3c9d84c1ab6b93 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 04:24:33 +0100 Subject: [PATCH 132/166] [MIRROR] Unholy water double parent call fix [MDB IGNORE] (#25906) * Unholy water double parent call fix (#80641) ## About The Pull Request Unholy water now only calls parent in on_mob_life() once, instead of twice. The parent call would give you a small shot of toxin damage. Now you'll only get hit by it once, instead of twice. Neat! The linked issue mentions the double parent call on holy water too, but that seems to have been removed at some point. ## Why It's Good For The Game Closes #80511. ## Changelog :cl: Rhials code: Unholy water no longer calls parent twice in on_mob_life(). /:cl: * Unholy water double parent call fix --------- Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> --- code/modules/reagents/chemistry/reagents/other_reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 2b68aca1893..158df006cc5 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -506,7 +506,7 @@ /datum/reagent/fuel/unholywater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - . = ..() + var/need_mob_update = FALSE if(IS_CULTIST(affected_mob)) affected_mob.adjust_drowsiness(-10 SECONDS * REM * seconds_per_tick) From 97a75d32779ed2b90fbf4282fded716b677c5996 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 04:27:11 +0100 Subject: [PATCH 133/166] Automatic changelog for PR #25906 [ci skip] --- html/changelogs/AutoChangeLog-pr-25906.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25906.yml diff --git a/html/changelogs/AutoChangeLog-pr-25906.yml b/html/changelogs/AutoChangeLog-pr-25906.yml new file mode 100644 index 00000000000..75715c2334a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25906.yml @@ -0,0 +1,4 @@ +author: "Rhials" +delete-after: True +changes: + - code_imp: "Unholy water no longer calls parent twice in on_mob_life()." \ No newline at end of file From 1433ad9fa4816eb3a0420d0e4a09ba8545e86f84 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 04:46:54 +0100 Subject: [PATCH 134/166] [MIRROR] Fixes being able to fish up qdeleted spawners [MDB IGNORE] (#25908) * Fixes being able to fish up qdeleted spawners (#80646) ## About The Pull Request Fixes https://github.com/NovaSector/NovaSector/issues/152 This is mostly a downstream issue, I think, but should a spawner ever get added to the fish tables here this bug will be present. Basically spawners, when created, do their item spawning behavior on the src loc and then immediately qdel themselves. If you try to forceMove() the spawners out of nullspace, like what was happening with fishing, you'd end up with an unmovable broken item that cannot be easily admin deleted. This PR also adds a stack_trace when you forceMove() a qdeleted spawner, because this is not the first time I've seen this issue come up. It doesn't stop it from happening, though, because it's easier to visually see the bug that way. This just provides some useful feedback as to why the bug is happening should you check the debug logs. ## Why It's Good For The Game Fixes a bug ## Changelog :cl: fix: fishing up a spawner will now give you the spawned item instead of a broken, undeletable spawner object code: adds a warning to the stack trace when something tries to forceMove() a qdeleted spawner /:cl: * Fixes being able to fish up qdeleted spawners --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- code/game/objects/effects/misc.dm | 5 +++++ code/modules/fishing/sources/_fish_source.dm | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index 5a23ff32b09..2b8abcb1728 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -38,6 +38,11 @@ moveToNullspace() return QDEL_HINT_QUEUE +/obj/effect/spawner/forceMove(atom/destination) + if(destination && QDELETED(src)) // throw a warning if we try to forceMove a qdeleted spawner to somewhere other than nullspace + stack_trace("Warning: something tried to forceMove() a qdeleted [src]([type]) to non-null destination [destination]([destination.type])!") + return ..() + /obj/effect/list_container name = "list container" diff --git a/code/modules/fishing/sources/_fish_source.dm b/code/modules/fishing/sources/_fish_source.dm index 5061d84a018..120348038f1 100644 --- a/code/modules/fishing/sources/_fish_source.dm +++ b/code/modules/fishing/sources/_fish_source.dm @@ -170,10 +170,13 @@ GLOBAL_LIST_INIT(specific_fish_icons, zebra_typecacheof(list( var/atom/movable/reward = spawn_reward(reward_path, fisherman, fishing_spot) if(!reward) //balloon alert instead - fisherman.balloon_alert(fisherman,pick(duds)) + fisherman.balloon_alert(fisherman, pick(duds)) return if(isitem(reward)) //Try to put it in hand INVOKE_ASYNC(fisherman, TYPE_PROC_REF(/mob, put_in_hands), reward) + else if(istype(reward, /obj/effect/spawner)) // Do not attempt to forceMove() a spawner. It will break things, and the spawned item should already be at the mob's turf by now. + fisherman.balloon_alert(fisherman, "caught something!") + return else // for fishing things like corpses, move them to the turf of the fisherman INVOKE_ASYNC(reward, TYPE_PROC_REF(/atom/movable, forceMove), get_turf(fisherman)) fisherman.balloon_alert(fisherman, "caught [reward]!") From ba67877126027f333595a28bed05e16640b8ecfc Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 04:47:22 +0100 Subject: [PATCH 135/166] Automatic changelog for PR #25908 [ci skip] --- html/changelogs/AutoChangeLog-pr-25908.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-25908.yml diff --git a/html/changelogs/AutoChangeLog-pr-25908.yml b/html/changelogs/AutoChangeLog-pr-25908.yml new file mode 100644 index 00000000000..1d01a4a62d2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-25908.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "fishing up a spawner will now give you the spawned item instead of a broken, undeletable spawner object" + - code_imp: "adds a warning to the stack trace when something tries to forceMove() a qdeleted spawner" \ No newline at end of file From 8eeca186dfbc53bd4f4790bea2cb28013a65f5f1 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 07:21:26 +0100 Subject: [PATCH 136/166] [MIRROR] Cleans up some extra args in Destroy() [MDB IGNORE] (#25907) * Cleans up some extra args in Destroy() (#80642) ## About The Pull Request After https://github.com/tgstation/tgstation/pull/80628, these shouldn't be needed anymore right? ## Why It's Good For The Game Cleans up some vestigial code ## Changelog EDIT: Not player-facing. * Cleans up some extra args in Destroy() --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com> --- code/__HELPERS/heap.dm | 2 +- code/__HELPERS/paths/jps.dm | 2 +- code/__HELPERS/paths/path.dm | 2 +- code/_onclick/hud/radial.dm | 2 +- code/controllers/subsystem/spatial_gridmap.dm | 2 +- code/controllers/subsystem/statpanel.dm | 2 +- code/datums/ai/_ai_controller.dm | 2 +- code/datums/armor/_armor.dm | 2 +- code/datums/greyscale/_greyscale_config.dm | 2 +- code/datums/lazy_template.dm | 2 +- code/datums/memory/_memory.dm | 2 +- code/datums/mergers/_merger.dm | 2 +- code/datums/mocking/client.dm | 2 +- code/datums/mood.dm | 2 +- code/datums/quirks/_quirk_constant_data.dm | 2 +- code/datums/wounds/_wound_static_data.dm | 2 +- code/datums/wounds/scars/_scars.dm | 2 +- code/game/machinery/camera/trackable.dm | 2 +- .../game/machinery/computer/orders/order_items/order_datum.dm | 2 +- code/modules/admin/verbs/highlander_datum.dm | 2 +- code/modules/admin/verbs/lua/lua_editor.dm | 2 +- code/modules/admin/view_variables/color_matrix_editor.dm | 2 +- .../admin/view_variables/nobody_wants_to_learn_matrix_math.dm | 2 +- code/modules/antagonists/_common/antag_team.dm | 2 +- code/modules/antagonists/heretic/heretic_knowledge.dm | 2 +- code/modules/antagonists/heretic/influences.dm | 2 +- code/modules/antagonists/heretic/knowledge/rust_lore.dm | 2 +- .../knowledge/sacrifice_knowledge/sacrifice_knowledge.dm | 2 +- code/modules/antagonists/separatist/separatist.dm | 2 +- code/modules/antagonists/traitor/traitor_objective.dm | 2 +- code/modules/antagonists/traitor/uplink_handler.dm | 2 +- code/modules/basketball/controller.dm | 2 +- code/modules/capture_the_flag/ctf_controller.dm | 4 ++-- code/modules/cargo/order.dm | 4 ++-- code/modules/client/preferences.dm | 2 +- code/modules/escape_menu/escape_menu.dm | 2 +- code/modules/explorer_drone/manager.dm | 2 +- code/modules/explorer_drone/scanner_array.dm | 2 +- code/modules/fishing/fishing_minigame.dm | 2 +- code/modules/forensics/_forensics.dm | 2 +- code/modules/interview/interview_manager.dm | 2 +- code/modules/mafia/abilities/abilities.dm | 2 +- code/modules/mafia/controller.dm | 2 +- code/modules/mafia/roles/roles.dm | 2 +- code/modules/mapping/verify.dm | 2 +- code/modules/mining/equipment/monster_organs/monster_organ.dm | 2 +- code/modules/procedural_mapping/mapGenerator.dm | 2 +- code/modules/procedural_mapping/mapGeneratorModule.dm | 2 +- code/modules/requests/request_manager.dm | 2 +- code/modules/spells/spell_types/right_and_wrong.dm | 2 +- code/modules/spells/spell_types/tower_of_babel.dm | 2 +- code/modules/tgui_input/alert.dm | 2 +- code/modules/tgui_input/checkboxes.dm | 2 +- code/modules/tgui_input/list.dm | 2 +- code/modules/tgui_input/number.dm | 2 +- code/modules/tgui_input/text.dm | 2 +- code/modules/tooltip/tooltip.dm | 2 +- code/modules/tutorials/_tutorial.dm | 4 ++-- code/modules/tutorials/tutorials/drop.dm | 2 +- code/modules/tutorials/tutorials/switch_hands.dm | 2 +- 60 files changed, 63 insertions(+), 63 deletions(-) diff --git a/code/__HELPERS/heap.dm b/code/__HELPERS/heap.dm index 363fbbb80d6..eeabfa6a20b 100644 --- a/code/__HELPERS/heap.dm +++ b/code/__HELPERS/heap.dm @@ -10,7 +10,7 @@ L = new() cmp = compare -/datum/heap/Destroy(force, ...) +/datum/heap/Destroy(force) for(var/i in L) // because this is before the list helpers are loaded qdel(i) L = null diff --git a/code/__HELPERS/paths/jps.dm b/code/__HELPERS/paths/jps.dm index 6a86f6ebe62..2dc46dea1b7 100644 --- a/code/__HELPERS/paths/jps.dm +++ b/code/__HELPERS/paths/jps.dm @@ -38,7 +38,7 @@ f_value = number_tiles + heuristic // otherwise, no parent node means this is from a subscan lateral scan, so we just need the tile for now until we call [datum/jps/proc/update_parent] on it -/datum/jps_node/Destroy(force, ...) +/datum/jps_node/Destroy(force) previous_node = null return ..() diff --git a/code/__HELPERS/paths/path.dm b/code/__HELPERS/paths/path.dm index 14241ef8e70..28ef66aa45e 100644 --- a/code/__HELPERS/paths/path.dm +++ b/code/__HELPERS/paths/path.dm @@ -97,7 +97,7 @@ /// Datum that holds the canpass info of this pathing attempt. This is what CanAstarPass sees var/datum/can_pass_info/pass_info -/datum/pathfind/Destroy(force, ...) +/datum/pathfind/Destroy(force) . = ..() SSpathfinder.active_pathing -= src SSpathfinder.currentrun -= src diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index ba1ccbd5d47..d5a1d105337 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -396,7 +396,7 @@ GLOBAL_LIST_EMPTY(radial_menus) /// If provided, will display an info button that will put this text in your chat var/info -/datum/radial_menu_choice/Destroy(force, ...) +/datum/radial_menu_choice/Destroy(force) . = ..() QDEL_NULL(image) diff --git a/code/controllers/subsystem/spatial_gridmap.dm b/code/controllers/subsystem/spatial_gridmap.dm index 64f7994a1fe..81ae29f6bad 100644 --- a/code/controllers/subsystem/spatial_gridmap.dm +++ b/code/controllers/subsystem/spatial_gridmap.dm @@ -44,7 +44,7 @@ client_contents = dummy_list atmos_contents = dummy_list -/datum/spatial_grid_cell/Destroy(force, ...) +/datum/spatial_grid_cell/Destroy(force) if(force)//the response to someone trying to qdel this is a right proper fuck you stack_trace("dont try to destroy spatial grid cells without a good reason. if you need to do it use force") return diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index 3f155695257..e31b193f8a8 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -341,7 +341,7 @@ SUBSYSTEM_DEF(statpanels) . = ..() src.parent = parent -/datum/object_window_info/Destroy(force, ...) +/datum/object_window_info/Destroy(force) atoms_to_show = null atoms_to_images = null atoms_to_imagify = null diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm index 04dc7901c85..a13cc8b36fa 100644 --- a/code/datums/ai/_ai_controller.dm +++ b/code/datums/ai/_ai_controller.dm @@ -67,7 +67,7 @@ multiple modular subtrees with behaviors if(!isnull(new_pawn)) // unit tests need the ai_controller to exist in isolation due to list schenanigans i hate it here PossessPawn(new_pawn) -/datum/ai_controller/Destroy(force, ...) +/datum/ai_controller/Destroy(force) set_ai_status(AI_STATUS_OFF) UnpossessPawn(FALSE) set_movement_target(type, null) diff --git a/code/datums/armor/_armor.dm b/code/datums/armor/_armor.dm index bfd15af4189..616ad00c324 100644 --- a/code/datums/armor/_armor.dm +++ b/code/datums/armor/_armor.dm @@ -42,7 +42,7 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) /// A version of armor that cannot be modified and will always return itself when attempted to be modified /datum/armor/immune -/datum/armor/Destroy(force, ...) +/datum/armor/Destroy(force) if(!force && tag) return QDEL_HINT_LETMELIVE diff --git a/code/datums/greyscale/_greyscale_config.dm b/code/datums/greyscale/_greyscale_config.dm index 9d3099d770b..1ef5e68510e 100644 --- a/code/datums/greyscale/_greyscale_config.dm +++ b/code/datums/greyscale/_greyscale_config.dm @@ -71,7 +71,7 @@ if(!name) stack_trace("Greyscale config object [DebugName()] is missing a name, make sure `name` has been assigned a value.") -/datum/greyscale_config/Destroy(force, ...) +/datum/greyscale_config/Destroy(force) if(!force) return QDEL_HINT_LETMELIVE return ..() diff --git a/code/datums/lazy_template.dm b/code/datums/lazy_template.dm index e3006e13056..0a5e8e53314 100644 --- a/code/datums/lazy_template.dm +++ b/code/datums/lazy_template.dm @@ -18,7 +18,7 @@ reservations = list() ..() -/datum/lazy_template/Destroy(force, ...) +/datum/lazy_template/Destroy(force) if(!force) stack_trace("Something is trying to delete [type]") return QDEL_HINT_LETMELIVE diff --git a/code/datums/memory/_memory.dm b/code/datums/memory/_memory.dm index 57312774776..0656d32006a 100644 --- a/code/datums/memory/_memory.dm +++ b/code/datums/memory/_memory.dm @@ -71,7 +71,7 @@ // This happens after everything's all set, remember this for New overrides generate_memory_name() -/datum/memory/Destroy(force, ...) +/datum/memory/Destroy(force) memorizer_mind = null return ..() diff --git a/code/datums/mergers/_merger.dm b/code/datums/mergers/_merger.dm index 8014b6419fc..6816d415a89 100644 --- a/code/datums/mergers/_merger.dm +++ b/code/datums/mergers/_merger.dm @@ -28,7 +28,7 @@ src.attempt_merge_proc = attempt_merge_proc Refresh() -/datum/merger/Destroy(force, ...) +/datum/merger/Destroy(force) for(var/atom/thing as anything in members) RemoveMember(thing) return ..() diff --git a/code/datums/mocking/client.dm b/code/datums/mocking/client.dm index 418f5cfb8db..dc1db213f34 100644 --- a/code/datums/mocking/client.dm +++ b/code/datums/mocking/client.dm @@ -39,7 +39,7 @@ GLOB.directory[ckey] = src #endif -/datum/client_interface/Destroy(force, ...) +/datum/client_interface/Destroy(force) GLOB.directory -= ckey return ..() diff --git a/code/datums/mood.dm b/code/datums/mood.dm index 76f08641ecb..c500dbaaf45 100644 --- a/code/datums/mood.dm +++ b/code/datums/mood.dm @@ -67,7 +67,7 @@ mob_parent = null -/datum/mood/Destroy(force, ...) +/datum/mood/Destroy(force) STOP_PROCESSING(SSmood, src) QDEL_LIST_ASSOC_VAL(mood_events) return ..() diff --git a/code/datums/quirks/_quirk_constant_data.dm b/code/datums/quirks/_quirk_constant_data.dm index 977c52a6837..1984acecec0 100644 --- a/code/datums/quirks/_quirk_constant_data.dm +++ b/code/datums/quirks/_quirk_constant_data.dm @@ -58,7 +58,7 @@ GLOBAL_LIST_INIT_TYPED(all_quirk_constant_data, /datum/quirk_constant_data, gene /datum/quirk_constant_data/proc/is_customizable() return LAZYLEN(customization_options) > 0 -/datum/quirk_constant_data/Destroy(force, ...) +/datum/quirk_constant_data/Destroy(force) var/error_message = "[src], a singleton quirk constant data instance, was destroyed! This should not happen!" if (force) error_message += " NOTE: This Destroy() was called with force == TRUE. This instance will be deleted and replaced with a new one." diff --git a/code/datums/wounds/_wound_static_data.dm b/code/datums/wounds/_wound_static_data.dm index 7a59ea57413..f996bb258c7 100644 --- a/code/datums/wounds/_wound_static_data.dm +++ b/code/datums/wounds/_wound_static_data.dm @@ -185,7 +185,7 @@ return new wound_path_to_generate -/datum/wound_pregen_data/Destroy(force, ...) +/datum/wound_pregen_data/Destroy(force) var/error_message = "[src], a singleton wound pregen data instance, was destroyed! This should not happen!" if (force) error_message += " NOTE: This Destroy() was called with force == TRUE. This instance will be deleted and replaced with a new one." diff --git a/code/datums/wounds/scars/_scars.dm b/code/datums/wounds/scars/_scars.dm index e650899be29..2fdd92b82d0 100644 --- a/code/datums/wounds/scars/_scars.dm +++ b/code/datums/wounds/scars/_scars.dm @@ -30,7 +30,7 @@ /// If false, we will only check to see if a limb has ALL our biostates, instead of just any. var/check_any_biostates -/datum/scar/Destroy(force, ...) +/datum/scar/Destroy(force) if(limb) LAZYREMOVE(limb.scars, src) if(victim) diff --git a/code/game/machinery/camera/trackable.dm b/code/game/machinery/camera/trackable.dm index 8aedd1b80a8..884f38f750b 100644 --- a/code/game/machinery/camera/trackable.dm +++ b/code/game/machinery/camera/trackable.dm @@ -26,7 +26,7 @@ tracking_holder = source RegisterSignal(tracking_holder, COMSIG_MOB_RESET_PERSPECTIVE, PROC_REF(cancel_target_tracking)) -/datum/trackable/Destroy(force, ...) +/datum/trackable/Destroy(force) tracking_holder = null tracked_mob = null STOP_PROCESSING(SSprocessing, src) diff --git a/code/game/machinery/computer/orders/order_items/order_datum.dm b/code/game/machinery/computer/orders/order_items/order_datum.dm index e7bb3c35e56..13684fc742b 100644 --- a/code/game/machinery/computer/orders/order_items/order_datum.dm +++ b/code/game/machinery/computer/orders/order_items/order_datum.dm @@ -22,7 +22,7 @@ if(!desc) desc = initial(item_path.desc) -/datum/orderable_item/Destroy(force, ...) +/datum/orderable_item/Destroy(force) if(item_path) qdel(item_path) return ..() diff --git a/code/modules/admin/verbs/highlander_datum.dm b/code/modules/admin/verbs/highlander_datum.dm index b32ac2d962d..ad8f75bca82 100644 --- a/code/modules/admin/verbs/highlander_datum.dm +++ b/code/modules/admin/verbs/highlander_datum.dm @@ -38,7 +38,7 @@ GLOBAL_DATUM(highlander_controller, /datum/highlander_controller) robot.make_scottish() addtimer(CALLBACK(SSshuttle.emergency, TYPE_PROC_REF(/obj/docking_port/mobile/emergency, request), null, 1), 50) -/datum/highlander_controller/Destroy(force, ...) +/datum/highlander_controller/Destroy(force) . = ..() UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) diff --git a/code/modules/admin/verbs/lua/lua_editor.dm b/code/modules/admin/verbs/lua/lua_editor.dm index ea052509779..03f6e07cac0 100644 --- a/code/modules/admin/verbs/lua/lua_editor.dm +++ b/code/modules/admin/verbs/lua/lua_editor.dm @@ -29,7 +29,7 @@ ui.set_autoupdate(FALSE) ui.open() -/datum/lua_editor/Destroy(force, ...) +/datum/lua_editor/Destroy(force) . = ..() if(current_state) LAZYREMOVEASSOC(SSlua.editors, text_ref(current_state), src) diff --git a/code/modules/admin/view_variables/color_matrix_editor.dm b/code/modules/admin/view_variables/color_matrix_editor.dm index 7fde4c24590..ea1278901f3 100644 --- a/code/modules/admin/view_variables/color_matrix_editor.dm +++ b/code/modules/admin/view_variables/color_matrix_editor.dm @@ -27,7 +27,7 @@ proxy_view.color = current_color proxy_view.display_to(owner.mob) -/datum/color_matrix_editor/Destroy(force, ...) +/datum/color_matrix_editor/Destroy(force) QDEL_NULL(proxy_view) return ..() diff --git a/code/modules/admin/view_variables/nobody_wants_to_learn_matrix_math.dm b/code/modules/admin/view_variables/nobody_wants_to_learn_matrix_math.dm index 872bd27d627..fa5fde1f20e 100644 --- a/code/modules/admin/view_variables/nobody_wants_to_learn_matrix_math.dm +++ b/code/modules/admin/view_variables/nobody_wants_to_learn_matrix_math.dm @@ -15,7 +15,7 @@ src.target = target testing_matrix = matrix(target.transform) -/datum/nobody_wants_to_learn_matrix_math/Destroy(force, ...) +/datum/nobody_wants_to_learn_matrix_math/Destroy(force) QDEL_NULL(testing_matrix) return ..() diff --git a/code/modules/antagonists/_common/antag_team.dm b/code/modules/antagonists/_common/antag_team.dm index 902456d909b..29f94b040ec 100644 --- a/code/modules/antagonists/_common/antag_team.dm +++ b/code/modules/antagonists/_common/antag_team.dm @@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(antagonist_teams) else add_member(starting_members) -/datum/team/Destroy(force, ...) +/datum/team/Destroy(force) GLOB.antagonist_teams -= src members = null objectives = null diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm index 1cbf98585a3..2e747342412 100644 --- a/code/modules/antagonists/heretic/heretic_knowledge.dm +++ b/code/modules/antagonists/heretic/heretic_knowledge.dm @@ -226,7 +226,7 @@ /// A list of weakrefs to all items we've created. var/list/datum/weakref/created_items -/datum/heretic_knowledge/limited_amount/Destroy(force, ...) +/datum/heretic_knowledge/limited_amount/Destroy(force) LAZYCLEARLIST(created_items) return ..() diff --git a/code/modules/antagonists/heretic/influences.dm b/code/modules/antagonists/heretic/influences.dm index 74a851e7fb7..41370cf6980 100644 --- a/code/modules/antagonists/heretic/influences.dm +++ b/code/modules/antagonists/heretic/influences.dm @@ -21,7 +21,7 @@ /// List of minds with the ability to see influences var/list/datum/mind/tracked_heretics = list() -/datum/reality_smash_tracker/Destroy(force, ...) +/datum/reality_smash_tracker/Destroy(force) if(GLOB.reality_smash_track == src) stack_trace("[type] was deleted. Heretics may no longer access any influences. Fix it, or call coder support.") message_admins("The [type] was deleted. Heretics may no longer access any influences. Fix it, or call coder support.") diff --git a/code/modules/antagonists/heretic/knowledge/rust_lore.dm b/code/modules/antagonists/heretic/knowledge/rust_lore.dm index 3bf980eb466..6817dc9de44 100644 --- a/code/modules/antagonists/heretic/knowledge/rust_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/rust_lore.dm @@ -345,7 +345,7 @@ rusted_turfs += centre START_PROCESSING(SSprocessing, src) -/datum/rust_spread/Destroy(force, ...) +/datum/rust_spread/Destroy(force) centre = null edge_turfs.Cut() rusted_turfs.Cut() diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm index d9858cc3ac8..797d754ea0b 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -27,7 +27,7 @@ /// An assoc list of [ref] to [timers] - a list of all the timers of people in the shadow realm currently var/list/return_timers -/datum/heretic_knowledge/hunt_and_sacrifice/Destroy(force, ...) +/datum/heretic_knowledge/hunt_and_sacrifice/Destroy(force) heretic_mind = null LAZYCLEARLIST(target_blacklist) return ..() diff --git a/code/modules/antagonists/separatist/separatist.dm b/code/modules/antagonists/separatist/separatist.dm index 6830cba8aef..932a3d577e1 100644 --- a/code/modules/antagonists/separatist/separatist.dm +++ b/code/modules/antagonists/separatist/separatist.dm @@ -14,7 +14,7 @@ src.potential_recruits = potential_recruits src.department = department -/datum/team/nation/Destroy(force, ...) +/datum/team/nation/Destroy(force) department = null UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) . = ..() diff --git a/code/modules/antagonists/traitor/traitor_objective.dm b/code/modules/antagonists/traitor/traitor_objective.dm index 6fa5c0d8dbf..d60820c3fce 100644 --- a/code/modules/antagonists/traitor/traitor_objective.dm +++ b/code/modules/antagonists/traitor/traitor_objective.dm @@ -134,7 +134,7 @@ maximum_progression ) -/datum/traitor_objective/Destroy(force, ...) +/datum/traitor_objective/Destroy(force) handler = null return ..() diff --git a/code/modules/antagonists/traitor/uplink_handler.dm b/code/modules/antagonists/traitor/uplink_handler.dm index 5d164d8d3d9..aa26b360a75 100644 --- a/code/modules/antagonists/traitor/uplink_handler.dm +++ b/code/modules/antagonists/traitor/uplink_handler.dm @@ -59,7 +59,7 @@ . = ..() maximum_potential_objectives = CONFIG_GET(number/maximum_potential_objectives) -/datum/uplink_handler/Destroy(force, ...) +/datum/uplink_handler/Destroy(force) can_replace_objectives = null replace_objectives = null return ..() diff --git a/code/modules/basketball/controller.dm b/code/modules/basketball/controller.dm index 53726c57389..53e89d182a3 100644 --- a/code/modules/basketball/controller.dm +++ b/code/modules/basketball/controller.dm @@ -49,7 +49,7 @@ GLOBAL_VAR(basketball_game) GLOB.basketball_game = src map_deleter = new -/datum/basketball_controller/Destroy(force, ...) +/datum/basketball_controller/Destroy(force) . = ..() GLOB.basketball_game = null end_game() diff --git a/code/modules/capture_the_flag/ctf_controller.dm b/code/modules/capture_the_flag/ctf_controller.dm index a38937db301..b5df4981c9f 100644 --- a/code/modules/capture_the_flag/ctf_controller.dm +++ b/code/modules/capture_the_flag/ctf_controller.dm @@ -29,7 +29,7 @@ src.game_id = game_id GLOB.ctf_games[game_id] = src -/datum/ctf_controller/Destroy(force, ...) +/datum/ctf_controller/Destroy(force) GLOB.ctf_games[game_id] = null return ..() @@ -207,7 +207,7 @@ team_span = spawner.team_span ///If the team is destroyed all players in that team need their componenet removed. -/datum/ctf_team/Destroy(force, ...) +/datum/ctf_team/Destroy(force) for(var/player in team_members) var/datum/component/ctf_player/ctf_player = team_members[player] ctf_player.end_game() diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index 309567d51e9..3f8ceb5ca02 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -85,7 +85,7 @@ src.manifest_can_fail = manifest_can_fail src.can_be_cancelled = can_be_cancelled -/datum/supply_order/Destroy(force, ...) +/datum/supply_order/Destroy(force) QDEL_NULL(applied_coupon) return ..() @@ -208,7 +208,7 @@ /// Custom type of order who's supply pack can be safely deleted /datum/supply_order/disposable -/datum/supply_order/disposable/Destroy(force, ...) +/datum/supply_order/disposable/Destroy(force) QDEL_NULL(pack) return ..() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 59dfe72b318..ba610c347f3 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -88,7 +88,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) /// If set to TRUE, will update character_profiles on the next ui_data tick. var/tainted_character_profiles = FALSE -/datum/preferences/Destroy(force, ...) +/datum/preferences/Destroy(force) QDEL_NULL(character_preview_view) QDEL_LIST(middleware) value_cache = null diff --git a/code/modules/escape_menu/escape_menu.dm b/code/modules/escape_menu/escape_menu.dm index 3aa17832e3c..dca5ad63cae 100644 --- a/code/modules/escape_menu/escape_menu.dm +++ b/code/modules/escape_menu/escape_menu.dm @@ -50,7 +50,7 @@ GLOBAL_LIST_EMPTY(escape_menus) if (!isnull(ckey)) GLOB.escape_menus[ckey] = src -/datum/escape_menu/Destroy(force, ...) +/datum/escape_menu/Destroy(force) QDEL_NULL(base_holder) QDEL_NULL(page_holder) diff --git a/code/modules/explorer_drone/manager.dm b/code/modules/explorer_drone/manager.dm index 9ca85ca4a20..00909d03abf 100644 --- a/code/modules/explorer_drone/manager.dm +++ b/code/modules/explorer_drone/manager.dm @@ -79,7 +79,7 @@ /datum/adventure_browser/ui_assets(mob/user) return list(get_asset_datum(/datum/asset/simple/adventure)) -/datum/adventure_browser/Destroy(force, ...) +/datum/adventure_browser/Destroy(force) . = ..() QDEL_NULL(temp_adventure) diff --git a/code/modules/explorer_drone/scanner_array.dm b/code/modules/explorer_drone/scanner_array.dm index 2cfc6cbf814..05f1d9a8b8f 100644 --- a/code/modules/explorer_drone/scanner_array.dm +++ b/code/modules/explorer_drone/scanner_array.dm @@ -71,7 +71,7 @@ GLOBAL_LIST_INIT(scan_conditions,init_scan_conditions()) SEND_SIGNAL(src,COMSIG_EXOSCAN_INTERRUPTED) qdel(src) -/datum/exoscan/Destroy(force, ...) +/datum/exoscan/Destroy(force) . = ..() deltimer(scan_timer) diff --git a/code/modules/fishing/fishing_minigame.dm b/code/modules/fishing/fishing_minigame.dm index 7744bcc01be..81e8b3a6943 100644 --- a/code/modules/fishing/fishing_minigame.dm +++ b/code/modules/fishing/fishing_minigame.dm @@ -199,7 +199,7 @@ bait_height -= difficulty bait_pixel_height = round(MINIGAME_BAIT_HEIGHT * (bait_height/initial(bait_height)), 1) -/datum/fishing_challenge/Destroy(force, ...) +/datum/fishing_challenge/Destroy(force) if(!completed) complete(win = FALSE) if(fishing_line) diff --git a/code/modules/forensics/_forensics.dm b/code/modules/forensics/_forensics.dm index 5936ce4b5c4..75cbc55df28 100644 --- a/code/modules/forensics/_forensics.dm +++ b/code/modules/forensics/_forensics.dm @@ -66,7 +66,7 @@ src.fibers = LAZY_LISTS_OR(src.fibers, fibers) check_blood() -/datum/forensics/Destroy(force, ...) +/datum/forensics/Destroy(force) var/atom/parent_atom = parent.resolve() if (!isnull(parent_atom)) UnregisterSignal(parent_atom, list(COMSIG_COMPONENT_CLEAN_ACT)) diff --git a/code/modules/interview/interview_manager.dm b/code/modules/interview/interview_manager.dm index 4832e51f341..b5d39961b58 100644 --- a/code/modules/interview/interview_manager.dm +++ b/code/modules/interview/interview_manager.dm @@ -18,7 +18,7 @@ GLOBAL_DATUM_INIT(interviews, /datum/interview_manager, new) /// Ckeys which are currently in the cooldown system, they will be unable to create new interviews var/list/cooldown_ckeys = list() -/datum/interview_manager/Destroy(force, ...) +/datum/interview_manager/Destroy(force) QDEL_LIST(open_interviews) QDEL_LIST(interview_queue) QDEL_LIST(closed_interviews) diff --git a/code/modules/mafia/abilities/abilities.dm b/code/modules/mafia/abilities/abilities.dm index 3c8e643a427..deba0f670ff 100644 --- a/code/modules/mafia/abilities/abilities.dm +++ b/code/modules/mafia/abilities/abilities.dm @@ -24,7 +24,7 @@ RegisterSignal(game, action_priority, PROC_REF(perform_action_target)) RegisterSignal(game, COMSIG_MAFIA_NIGHT_END, PROC_REF(clean_action_refs)) -/datum/mafia_ability/Destroy(force, ...) +/datum/mafia_ability/Destroy(force) host_role = null target_role = null return ..() diff --git a/code/modules/mafia/controller.dm b/code/modules/mafia/controller.dm index 007e0b5e456..f6b46c3430d 100644 --- a/code/modules/mafia/controller.dm +++ b/code/modules/mafia/controller.dm @@ -104,7 +104,7 @@ GLOBAL_LIST_INIT(mafia_role_by_alignment, setup_mafia_role_by_alignment()) GLOB.mafia_game = src map_deleter = new -/datum/mafia_controller/Destroy(force, ...) +/datum/mafia_controller/Destroy(force) . = ..() end_game() player_role_lookup.Cut() diff --git a/code/modules/mafia/roles/roles.dm b/code/modules/mafia/roles/roles.dm index f301a8ac02a..ab1a1cc0e45 100644 --- a/code/modules/mafia/roles/roles.dm +++ b/code/modules/mafia/roles/roles.dm @@ -57,7 +57,7 @@ role_unique_actions += new abilities(game, src) role_unique_actions -= abilities -/datum/mafia_role/Destroy(force, ...) +/datum/mafia_role/Destroy(force) UnregisterSignal(body, COMSIG_MOB_SAY) QDEL_NULL(mafia_alert) QDEL_NULL(mafia_panel) diff --git a/code/modules/mapping/verify.dm b/code/modules/mapping/verify.dm index 60067bc5db7..c9347c7ecdb 100644 --- a/code/modules/mapping/verify.dm +++ b/code/modules/mapping/verify.dm @@ -16,7 +16,7 @@ GLOBAL_LIST_EMPTY(map_reports) original_path = map.original_path || "Untitled" GLOB.map_reports += src -/datum/map_report/Destroy(force, ...) +/datum/map_report/Destroy(force) GLOB.map_reports -= src return ..() diff --git a/code/modules/mining/equipment/monster_organs/monster_organ.dm b/code/modules/mining/equipment/monster_organs/monster_organ.dm index 8c1b031171f..d8e4bfae986 100644 --- a/code/modules/mining/equipment/monster_organs/monster_organ.dm +++ b/code/modules/mining/equipment/monster_organs/monster_organ.dm @@ -65,7 +65,7 @@ . = ..() decay_timer = addtimer(CALLBACK(src, PROC_REF(go_inert)), time_to_decay, TIMER_STOPPABLE) -/obj/item/organ/internal/monster_core/Destroy(force, silent) +/obj/item/organ/internal/monster_core/Destroy(force) deltimer(decay_timer) return ..() diff --git a/code/modules/procedural_mapping/mapGenerator.dm b/code/modules/procedural_mapping/mapGenerator.dm index 8408e1d97b7..420ac9c8d79 100644 --- a/code/modules/procedural_mapping/mapGenerator.dm +++ b/code/modules/procedural_mapping/mapGenerator.dm @@ -16,7 +16,7 @@ buildmode_name = copytext_char("[type]", 20) // / d a t u m / m a p g e n e r a t o r / = 20 characters. initialiseModules() -/datum/map_generator/Destroy(force, ...) +/datum/map_generator/Destroy(force) . = ..() QDEL_LIST(modules) diff --git a/code/modules/procedural_mapping/mapGeneratorModule.dm b/code/modules/procedural_mapping/mapGeneratorModule.dm index aa3f0f0e93c..7bf32d15195 100644 --- a/code/modules/procedural_mapping/mapGeneratorModule.dm +++ b/code/modules/procedural_mapping/mapGeneratorModule.dm @@ -8,7 +8,7 @@ var/clusterCheckFlags = CLUSTER_CHECK_SAME_ATOMS var/allowAtomsOnSpace = FALSE -/datum/map_generator_module/Destroy(force, ...) +/datum/map_generator_module/Destroy(force) mother = null return ..() diff --git a/code/modules/requests/request_manager.dm b/code/modules/requests/request_manager.dm index 41e46aa53c2..dd6d8d42a48 100644 --- a/code/modules/requests/request_manager.dm +++ b/code/modules/requests/request_manager.dm @@ -25,7 +25,7 @@ GLOBAL_DATUM_INIT(requests, /datum/request_manager, new) /// List where requests can be accessed by ID var/list/requests_by_id = list() -/datum/request_manager/Destroy(force, ...) +/datum/request_manager/Destroy(force) QDEL_LIST(requests) return ..() diff --git a/code/modules/spells/spell_types/right_and_wrong.dm b/code/modules/spells/spell_types/right_and_wrong.dm index 6168e94af55..27662943af0 100644 --- a/code/modules/spells/spell_types/right_and_wrong.dm +++ b/code/modules/spells/spell_types/right_and_wrong.dm @@ -265,7 +265,7 @@ GLOBAL_LIST_INIT(summoned_magic_objectives, list( /datum/summon_things_controller/New() RegisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED, PROC_REF(on_latejoin)) -/datum/summon_things_controller/Destroy(force, ...) +/datum/summon_things_controller/Destroy(force) . = ..() UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) diff --git a/code/modules/spells/spell_types/tower_of_babel.dm b/code/modules/spells/spell_types/tower_of_babel.dm index 3c652579b7f..618711a8d95 100644 --- a/code/modules/spells/spell_types/tower_of_babel.dm +++ b/code/modules/spells/spell_types/tower_of_babel.dm @@ -29,7 +29,7 @@ GLOBAL_DATUM(tower_of_babel, /datum/tower_of_babel) curse_of_babel(target) -/datum/tower_of_babel/Destroy(force, ...) +/datum/tower_of_babel/Destroy(force) . = ..() UnregisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED) diff --git a/code/modules/tgui_input/alert.dm b/code/modules/tgui_input/alert.dm index 0ea9c45d310..4749ef27872 100644 --- a/code/modules/tgui_input/alert.dm +++ b/code/modules/tgui_input/alert.dm @@ -77,7 +77,7 @@ start_time = world.time QDEL_IN(src, timeout) -/datum/tgui_alert/Destroy(force, ...) +/datum/tgui_alert/Destroy(force) SStgui.close_uis(src) state = null QDEL_NULL(buttons) diff --git a/code/modules/tgui_input/checkboxes.dm b/code/modules/tgui_input/checkboxes.dm index 9204e67ba36..53b264038dc 100644 --- a/code/modules/tgui_input/checkboxes.dm +++ b/code/modules/tgui_input/checkboxes.dm @@ -70,7 +70,7 @@ start_time = world.time QDEL_IN(src, timeout) -/datum/tgui_checkbox_input/Destroy(force, ...) +/datum/tgui_checkbox_input/Destroy(force) SStgui.close_uis(src) state = null QDEL_NULL(items) diff --git a/code/modules/tgui_input/list.dm b/code/modules/tgui_input/list.dm index 18525e6b10a..174f16fc7b5 100644 --- a/code/modules/tgui_input/list.dm +++ b/code/modules/tgui_input/list.dm @@ -94,7 +94,7 @@ start_time = world.time QDEL_IN(src, timeout) -/datum/tgui_list_input/Destroy(force, ...) +/datum/tgui_list_input/Destroy(force) SStgui.close_uis(src) state = null QDEL_NULL(items) diff --git a/code/modules/tgui_input/number.dm b/code/modules/tgui_input/number.dm index e0a3f1951e5..68998acb033 100644 --- a/code/modules/tgui_input/number.dm +++ b/code/modules/tgui_input/number.dm @@ -92,7 +92,7 @@ if(default > max_value) CRASH("Default value is greater than max value.") -/datum/tgui_input_number/Destroy(force, ...) +/datum/tgui_input_number/Destroy(force) SStgui.close_uis(src) state = null return ..() diff --git a/code/modules/tgui_input/text.dm b/code/modules/tgui_input/text.dm index f78ededab5d..f97e0326d58 100644 --- a/code/modules/tgui_input/text.dm +++ b/code/modules/tgui_input/text.dm @@ -90,7 +90,7 @@ start_time = world.time QDEL_IN(src, timeout) -/datum/tgui_input_text/Destroy(force, ...) +/datum/tgui_input_text/Destroy(force) SStgui.close_uis(src) state = null return ..() diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index 6d6505d1dc5..22027a3cf8e 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -100,7 +100,7 @@ Notes: /datum/tooltip/proc/do_hide() winshow(owner, control, FALSE) -/datum/tooltip/Destroy(force, ...) +/datum/tooltip/Destroy(force) last_target = null return ..() diff --git a/code/modules/tutorials/_tutorial.dm b/code/modules/tutorials/_tutorial.dm index 3baa9ad148b..7819a9e2b85 100644 --- a/code/modules/tutorials/_tutorial.dm +++ b/code/modules/tutorials/_tutorial.dm @@ -16,7 +16,7 @@ RegisterSignal(user, COMSIG_QDELETING, PROC_REF(destroy_self)) RegisterSignal(user.client, COMSIG_QDELETING, PROC_REF(destroy_self)) -/datum/tutorial/Destroy(force, ...) +/datum/tutorial/Destroy(force) user.client?.screen -= instruction_screen QDEL_NULL(instruction_screen) @@ -163,7 +163,7 @@ ASSERT(ispath(tutorial_type, /datum/tutorial)) src.tutorial_type = tutorial_type -/datum/tutorial_manager/Destroy(force, ...) +/datum/tutorial_manager/Destroy(force) if (!force) stack_trace("Something is trying to destroy [type], which is a singleton") return QDEL_HINT_LETMELIVE diff --git a/code/modules/tutorials/tutorials/drop.dm b/code/modules/tutorials/tutorials/drop.dm index de692edab43..06980b28848 100644 --- a/code/modules/tutorials/tutorials/drop.dm +++ b/code/modules/tutorials/tutorials/drop.dm @@ -12,7 +12,7 @@ var/atom/movable/screen/drop_preview var/obj/last_held_item -/datum/tutorial/drop/Destroy(force, ...) +/datum/tutorial/drop/Destroy(force) last_held_item = null user.client?.screen -= drop_preview QDEL_NULL(drop_preview) diff --git a/code/modules/tutorials/tutorials/switch_hands.dm b/code/modules/tutorials/tutorials/switch_hands.dm index bf27a9e9d83..f1bcbbb3b71 100644 --- a/code/modules/tutorials/tutorials/switch_hands.dm +++ b/code/modules/tutorials/tutorials/switch_hands.dm @@ -19,7 +19,7 @@ hand_to_watch = (user.active_hand_index % user.held_items.len) + 1 -/datum/tutorial/switch_hands/Destroy(force, ...) +/datum/tutorial/switch_hands/Destroy(force) user.client?.screen -= hand_preview QDEL_NULL(hand_preview) From 80e6cc8c479c17de86388f561cf9242a93865d47 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 30 Dec 2023 14:56:11 +0100 Subject: [PATCH 137/166] [MIRROR] Makes ListInputModal autofocus [MDB IGNORE] (#25909) * Makes ListInputModal autofocus (#80647) ## About The Pull Request What it says on the tin. You would have to click on the window and press enter or make your selections, this just lets you skip the clicking step. ## Why It's Good For The Game Just makes it a bit nicer to use these.
No clicking involved ![oPuiZ3rl3x](https://github.com/tgstation/tgstation/assets/13398309/c5aa70d2-d6a1-4ba8-a64e-805259b0d345)
## Changelog :cl: qol: makes modal list uis autofocus /:cl: * Makes ListInputModal autofocus --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- tgui/packages/tgui/interfaces/ListInputModal.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tgui/packages/tgui/interfaces/ListInputModal.tsx b/tgui/packages/tgui/interfaces/ListInputModal.tsx index f200d17b367..e45e5736507 100644 --- a/tgui/packages/tgui/interfaces/ListInputModal.tsx +++ b/tgui/packages/tgui/interfaces/ListInputModal.tsx @@ -7,7 +7,7 @@ import { KEY_Z, } from '../../common/keycodes'; import { useBackend, useLocalState } from '../backend'; -import { Button, Input, Section, Stack } from '../components'; +import { Autofocus, Button, Input, Section, Stack } from '../components'; import { Window } from '../layouts'; import { InputButtons } from './common/InputButtons'; import { Loader } from './common/Loader'; @@ -196,6 +196,7 @@ const ListDisplay = (props) => { return (
+ {filteredItems.map((item, index) => { return (